智趣黃sir
級(jí)別: 正式會(huì)員
![]() |
1,采用匯川的EASy521,程序想實(shí)現(xiàn)自動(dòng)切手動(dòng),只動(dòng)氣缸,怕操作者移動(dòng)軸,因?yàn)檩S如果移動(dòng)的話,沒法監(jiān)測(cè)到是否移動(dòng),再切回自動(dòng)的話,會(huì)導(dǎo)致撞車。 本人的思路是如以下程序,切到手動(dòng)的M3下降沿,記錄當(dāng)前位置,再切回自動(dòng),進(jìn)行差值計(jì)算,只能實(shí)現(xiàn)部分,還請(qǐng)各位大神指點(diǎn)。M3是自動(dòng)模式,M4是自動(dòng)運(yùn)行中,F(xiàn)在的問題是可以實(shí)現(xiàn)部分功能,但是拍急停的話,就會(huì)出現(xiàn)報(bào)警,因?yàn)榧蓖E南潞,各個(gè)軸就立即停止。 自動(dòng)模式下降沿(CLK := M3,Q => ); IF 自動(dòng)模式下降沿.Q THEN X自動(dòng)前位置old:=X_Axis.fActPosition; Y自動(dòng)前位置old:=Y_Axis.fActPosition; Z自動(dòng)前位置old:=Z_Axis.fActPosition; L自動(dòng)前位置old:=Lift_Axis.fActPosition; END_IF; 自動(dòng)模式上升沿(CLK := M4 ,Q => ); IF 自動(dòng)模式上升沿.Q then X自動(dòng)前位置new:=X_Axis.fActPosition; Y自動(dòng)前位置new:=Y_Axis.fActPosition; Z自動(dòng)前位置new:=Z_Axis.fActPosition; L自動(dòng)前位置new:=Lift_Axis.fActPosition; X自動(dòng)前位置差值:=X自動(dòng)前位置new-X自動(dòng)前位置old; X自動(dòng)前位置點(diǎn)位差值:=X自動(dòng)前位置new-POSTION_X[X_Axis_AutoAbNum]; X自動(dòng)前位置差值絕對(duì)值:=ABS(X自動(dòng)前位置差值); X自動(dòng)前位置點(diǎn)位差值絕對(duì)值:=ABS(X自動(dòng)前位置點(diǎn)位差值); Y自動(dòng)前位置差值:=Y自動(dòng)前位置new-Y自動(dòng)前位置old; Y自動(dòng)前位置點(diǎn)位差值:=Y自動(dòng)前位置new-POSTION_Y[Y_Axis_AutoAbNum]; Y自動(dòng)前位置差值絕對(duì)值:=ABS(Y自動(dòng)前位置差值); Y自動(dòng)前位置點(diǎn)位差值絕對(duì)值:=ABS(Y自動(dòng)前位置點(diǎn)位差值); Z自動(dòng)前位置差值:=Z自動(dòng)前位置new-Z自動(dòng)前位置old; Z自動(dòng)前位置點(diǎn)位差值:=Z自動(dòng)前位置new-POSTION_Z[Z_Axis_AutoAbNum]; Z自動(dòng)前位置差值絕對(duì)值:=ABS(Z自動(dòng)前位置差值); Z自動(dòng)前位置點(diǎn)位差值絕對(duì)值:=ABS(Z自動(dòng)前位置點(diǎn)位差值); L自動(dòng)前位置差值:=L自動(dòng)前位置new-L自動(dòng)前位置old; L自動(dòng)前位置差值絕對(duì)值:=ABS(L自動(dòng)前位置差值); END_IF; IF M4=true AND X自動(dòng)前位置差值絕對(duì)值>E0.5 AND X自動(dòng)前位置點(diǎn)位差值絕對(duì)值>E0.5 THEN Alarm[86]:=TRUE; END_IF; IF M4=true AND Y自動(dòng)前位置差值絕對(duì)值>E0.5 AND Y自動(dòng)前位置點(diǎn)位差值絕對(duì)值>E0.5 THEN Alarm[87]:=TRUE; END_IF; IF M4=true AND Z自動(dòng)前位置差值絕對(duì)值>E0.5 AND Z自動(dòng)前位置點(diǎn)位差值絕對(duì)值>E0.5 THEN Alarm[88]:=TRUE; END_IF; IF M4=true AND L自動(dòng)前位置差值絕對(duì)值>E0.5 THEN Alarm[89]:=TRUE; END_IF; |
---|---|
|