Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PROC main()
CONST num NUM_PARTS := 4;
VAR string str_data;
VAR string str_data_tmp;
VAR pos pos_recv{NUM_PARTS}; ! Store the 4 received positions, starting with the
largest part
VAR bool ok;
CONST NUM zP:=0;
SocketCreate client_socket;
SocketConnect client_socket, "127.0.0.1", 1024;
WHILE TRUE DO
! Expected string example:
! P1=(02.1,08.9,33.0),P2=(18.8,02.2,66.0),P3=(10.5,06.7,83.5),P4=(27.4,07.8,73.0)
! This string as a fixed size, with a total of 4*20 - 1 + 1 = 80 characters
! Receive the entire string
SocketReceive client_socket \Str := str_data \ReadNoOfBytes := 80 \Time :=
WAIT_MAX;
! Process and store each data point, and act accordingly
IF i=1 THEN
PlacingPath1:
!ELSEIF i=2 THEN
! MoveJ WaitPoint,v600,z0,Gripper_TCP\WObj:=Workobject_Parts;
MoveL
PreAquisitionPoint,v600,z100,Gripper_TCP\WObj:=Workobject_Parts;
MoveL RelTool(ReferencePointParts,
pos_recv{i}.x*10,pos_recv{i}.y*10, 0
\Rz:=pos_recv{i}.z),v10,fine,Gripper_TCP\WObj:=Workobject_Parts;
SetDO doActivateGripper,1;
WaitDI diGripperClosed,1;
MoveL RelTool(ReferencePointParts,
pos_recv{i}.x*10,pos_recv{i}.y*10, -50
\Rz:=pos_recv{i}.z),v10,fine,Gripper_TCP\WObj:=Workobject_Parts;
PlacingPath2:
SetDO doActivateGripper,0;
WaitDI diGripperOpen,0;
MoveJ
PrePlacing,v100,z100,Gripper_TCP\WObj:=Workobject_Bases;
MoveJ WaitPoint,v100,z0,Gripper_TCP\WObj:=Workobject_Parts;
ELSEIF i=3 THEN
MoveJ WaitPoint,v600,z0,Gripper_TCP\WObj:=Workobject_Parts;
MoveL
PreAquisitionPoint,v600,z100,Gripper_TCP\WObj:=Workobject_Parts;
MoveL RelTool(ReferencePointParts,
pos_recv{i}.x*10,pos_recv{i}.y*10, 0
\Rz:=pos_recv{i}.z),v10,fine,Gripper_TCP\WObj:=Workobject_Parts;
SetDO doActivateGripper,1;
WaitDI diGripperClosed,1;
MoveL RelTool(ReferencePointParts,
pos_recv{i}.x*10,pos_recv{i}.y*10, -50
\Rz:=pos_recv{i}.z),v10,fine,Gripper_TCP\WObj:=Workobject_Parts;
PlacingPath3:
SetDO doActivateGripper,0;
WaitDI diGripperOpen,0;
MoveJ
PrePlacing,v100,z100,Gripper_TCP\WObj:=Workobject_Bases;
MoveJ WaitPoint,v100,z0,Gripper_TCP\WObj:=Workobject_Parts;
ELSEIF i=4 THEN
MoveJ WaitPoint,v600,z0,Gripper_TCP\WObj:=Workobject_Parts;
MoveL
PreAquisitionPoint,v600,z100,Gripper_TCP\WObj:=Workobject_Parts;
MoveL RelTool(ReferencePointParts,
pos_recv{i}.x*10,pos_recv{i}.y*10, 0
\Rz:=pos_recv{i}.z),v10,fine,Gripper_TCP\WObj:=Workobject_Parts;
SetDO doActivateGripper,1;
WaitDI diGripperClosed,1;
MoveL RelTool(ReferencePointParts,
pos_recv{i}.x*10,pos_recv{i}.y*10, -50
\Rz:=pos_recv{i}.z),v10,fine,Gripper_TCP\WObj:=Workobject_Parts;
PlacingPath4:
SetDO doActivateGripper,0;
WaitDI diGripperOpen,0;
MoveJ
PrePlacing,v100,z100,Gripper_TCP\WObj:=Workobject_Bases;
MoveJ WaitPoint,v100,z0,Gripper_TCP\WObj:=Workobject_Parts;
ENDIF
ENDFOR
ENDWHILE
ENDPROC
PROC PlacingPath1()
MoveJ WaitPoint,v600,z0,Gripper_TCP\WObj:=Workobject_Parts;
MoveJ PrePlacing,v600,z0,Gripper_TCP\WObj:=Workobject_Bases;
MoveL PlacingPoint,v50,fine,Gripper_TCP\WObj:=Workobject_Bases;
ENDPROC
PROC PlacingPath2()
MoveJ WaitPoint,v600,z0,Gripper_TCP\WObj:=Workobject_Parts;
MoveJ PrePlacing,v600,z0,Gripper_TCP\WObj:=Workobject_Bases;
MoveL Offs(PlacingPoint,0,0,zP),v50,fine,Gripper_TCP\WObj:=Workobject_Bases;
ENDPROC
PROC PlacingPath3()
CONST NUM zP:=-20;
MoveJ WaitPoint,v600,z0,Gripper_TCP\WObj:=Workobject_Parts;
MoveJ PrePlacing,v600,z0,Gripper_TCP\WObj:=Workobject_Bases;
MoveL Offs(PlacingPoint,0,0,zP),v50,fine,Gripper_TCP\WObj:=Workobject_Bases;
ENDPROC
PROC PlacingPath4()
CONST NUM zP:=-30;
MoveJ WaitPoint,v600,z0,Gripper_TCP\WObj:=Workobject_Parts;
MoveJ PrePlacing,v600,z0,Gripper_TCP\WObj:=Workobject_Bases;
MoveL Offs(PlacingPoint,0,0,zP),v50,fine,Gripper_TCP\WObj:=Workobject_Bases;
ENDPROC
PROC PlacingPath()
MoveJ WaitPoint,v600,z0,Gripper_TCP\WObj:=Workobject_Parts;
MoveJ PrePlacing,v600,z0,Gripper_TCP\WObj:=Workobject_Bases;
ENDPROC
ENDMODULE