MODULE MainModule
CONST robtarget pHome:=[[329.55,-26.08,334.47],[0.000108947,-0.556346,-0.830951,-8.14346E-05],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget pHome2:=[[491.93,-26.07,230.36],[0.000135218,-0.556332,-0.83096,-5.93678E-05],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p10:=[[-32,-442,7],[1.84964E-05,-0.650831,-0.759223,-2.51296E-05],[-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p20:=[[476.85,-432.45,413.36],[4.38213E-05,-0.556315,-0.830971,-8.55472E-05],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p30:=[[615,-459.90,332.39],[2.28305E-06,-0.326002,-0.945369,-9.10512E-07],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget con_end:=[[616,-16,130],[7.02875E-06,0.103828,-0.994595,2.62461E-08],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget metal_box:=[[394.80,326.41,102.30],[2.7142E-05,0.103895,-0.994588,-2.8837E-05],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget b_p_box:=[[394.84,426.36,102.29],[7.57723E-06,0.103902,-0.994588,-4.6509E-05],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget w_p_box:=[[394.86,542.55,102.27],[5.74707E-06,-0.10393,0.994585,6.29787E-05],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget store1:=[[-37,604.81,257.58],[0.42092,-0.561505,0.571821,0.424923],[1,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR num x_pos :=0;
VAR num y_pos :=0;
VAR num tw_pos :=0;
VAR num ct_st :=0;
VAR intnum interrupt_sign;
PROC main()
CONNECT interrupt_sign WITH E_STOP;
ISignalDI di09_interrupt, high, interrupt_sign;
IWatch interrupt_sign;
AccSet 1, 1;
MoveJ pHome, v200, fine, tool2_ej;
WHILE TRUE DO
IF di02_ma_none = 1 AND di07_running=0 THEN
pick_plate;
PulseDO\PLength:=0.2,do02_plcstart;
ENDIF
IF di06_arrive = 1 THEN
con_end_proc;
IF di03_metal = 1 THEN
PulseDO\PLength:=0.2,do03_reset_jedg;
metal_proc;
ELSEIF di04_plastic_black = 1 THEN
PulseDO\PLength:=0.2,do03_reset_jedg;
b_p_proc;
ELSEIF di05_plastic_white = 1 THEN
PulseDO\PLength:=0.2,do03_reset_jedg;
w_p_proc;
ENDIF
MoveJ pHome2, v200, fine, tool2_ej;
ENDIF
ENDWHILE
ENDPROC
PROC metal_proc()
MoveJ Offs(metal_box,0,0,60), v200, z30, tool2_ej;
MoveL metal_box, v30, fine, tool2_ej;
grip_off;
MoveL metal_box, v100, z30, tool2_ej;
ENDPROC
PROC b_p_proc()
MoveJ Offs(b_p_box,0,0,60), v200, z30, tool2_ej;
MoveL b_p_box, v30, fine, tool2_ej;
grip_off;
MoveL b_p_box, v100, z30, tool2_ej;
ENDPROC
PROC w_p_proc()
MoveJ RelTool(store1,-20,0,-200), v200, z30, tool2_ej;
pos7:
IF di16_st07 = 0 THEN
ct_st := 0;
ELSEIF di17_st08 = 0 THEN
ct_st := -50;
ELSEIF di18_st09 = 0 THEN
ct_st := -100;
ENDIF
MoveJ RelTool(store1,-20,ct_st,-200), v200, z30, tool2_ej;
MoveL RelTool(store1,-20,ct_st,-50), v100, fine, tool2_ej;
MoveL RelTool(store1,-20,ct_st,0), v20, fine, tool2_ej;
MoveL RelTool(store1,0,ct_st,0), v20, fine, tool2_ej;
grip_off;
MoveL RelTool(store1,0,ct_st,-200), v200, fine, tool2_ej;
IF di19_storeA = 1 THEN
PulseDO\PLength:=0.2,do04_buzzer;
WaitDI di08_restart,1;
GOTO pos7;
ENDIF
!MoveJ Offs(w_p_box,0,0,60), v200, z30, tool2_ej;
!MoveL w_p_box, v30, fine, tool2_ej;
!grip_off;
!MoveL w_p_box, v100, z30, tool2_ej;
ENDPROC
PROC con_end_proc()
MoveJ Offs(con_end,0,0,60), v200, z30, tool2_ej;
MoveL con_end, v30, fine, tool2_ej;
grip_on;
MoveL Offs(con_end,0,0,60), v100, z30, tool2_ej;
ENDPROC
PROC grip_on()
PulseDO\PLength:=0.2,do00_gripon;
WaitDI di00_grip_on_sen,1;
ENDPROC
PROC grip_off()
PulseDO\PLength:=0.2,do01_gripoff;
WaitDI di01_grip_off_sen,1;
ENDPROC
PROC rout1()
MoveJ P20, v200, z50, tool2_ej;
MoveJ Offs(p30,0,0,50),v200,z20,tool2_ej;
MoveL p30, v30, fine, tool2_ej;
grip_off;
MoveL Offs(p30,0,0,50), v100, z20, tool2_ej;
MoveJ P20, v200, z50, tool2_ej;
ENDPROC
PROC pick_plate()
x_pos := 0;
y_pos := 0;
tw_pos := 0;
FOR ct2 FROM 1 TO 2 DO
FOR ct1 FROM 1 TO 3 DO
MoveJ Offs(p10,x_pos,y_pos+tw_pos,100),v200,z30,tool2_ej;
MoveL Offs(p10,x_pos,y_pos+tw_pos,0), v30, fine, tool2_ej;
grip_on;
MoveL Offs(p10,x_pos,y_pos+tw_pos,100), v100, z30, tool2_ej;
rout1;
IF di02_ma_none = 1 THEN
PulseDO\PLength:=0.2,do04_buzzer;
WaitDI di08_restart,1;
MoveL pHome, v200, fine, tool2_ej;
RETURN;
ENDIF
x_pos := x_pos+110;
tw_pos := tw_pos+2;
ENDFOR
x_pos := 0;
tw_pos := 0;
y_pos := y_pos-110;
ENDFOR
ENDPROC
TRAP E_STOP
VAR robtarget e_stop_pos;
StopMove;
StorePath;
e_stop_pos := CRobT();
MoveJ pHome, v200, z50, tool2_ej;
WaitDi di09_interrupt,0;
MoveJ e_stop_pos,v200, fine, tool2_ej;
RestoPath;
StartMove;
ENDTRAP
ENDMODULE
Comments