6 Programming
6.6.2. Example "SyncArc" with coordinated synchronized movement
3HAC021272-001 Revision: H72
© Copyright 2004-2008 ABB. All rights reserved.
PROC SyncMove()
MoveJ p200, v1000, z50, tool2;
WaitSyncTask sync1, all_tasks;
MoveL p201, v500, fine, tool2 \WObj:=wobj_stn1;
SyncMoveOn sync2, all_tasks;
MoveL p202\ID:=10, v300, z10, tool2 \WObj:=wobj_stn1;
MoveC p203, p204\ID:=20, v300, z10, tool2 \WObj:=wobj_stn1;
MoveL p205\ID:=30, v300, z10, tool2 \WObj:=wobj_stn1;
MoveC p206, p201\ID:=40, v300, fine, tool2 \WObj:=wobj_stn1;
SyncMoveOff sync3;
MoveL p299, v1000, fine, tool2;
UNDO
SyncMoveUndo;
ENDPROC
ENDMODULE
T_STN1 task program
MODULE module3
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PERS tasks all_tasks{3} :=
[["T_ROB1"],["T_ROB2"],["T_STN1"]];
CONST jointtarget angle_neg20 :=
[ [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9],
[ -20, 9E9, 9E9, 9E9, 9E9, 9E9] ];
...
CONST jointtarget angle_340 :=
[ [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9],
[ 340, 9E9, 9E9, 9E9, 9E9, 9E9] ];
PROC main()
...
SyncMove;
...
ENDPROC
PROC SyncMove()
MoveExtJ angle_neg20, vrot50, fine;
WaitSyncTask sync1, all_tasks;
! Wait for the robots
SyncMoveOn sync2, all_tasks;
MoveExtJ angle_20\ID:=10, vrot100, z10;
MoveExtJ angle_160\ID:=20, vrot100, z10;
MoveExtJ angle_200\ID:=30, vrot100, z10;
MoveExtJ angle_340\ID:=40, vrot100, fine;
SyncMoveOff sync3;
Continued
Continues on next page