>
题目: 要求 1)上使能 2)回原点 3)按下启动,以30mm/s的速度绝对运动运行至150mm处;以30mm/s的速度相对运动运行150mm;以30mm/s的速度相对运动运行-300mm;以15mm/s速度定速正向运动10s;以30mm/s的速度绝对运动运行至0mm处;正向点动运行5是停止。 4)断使能 分析:在EPOS模式运行中,可以将上使能、回原点这两个动作跟连续运行的动作独立开来,具体程序如下: 上使能: 直接在指令引脚上定义变量即可。 回原点: 点动运动: 启动程序: 逻辑动作程序,即要求3运动动作程序如下: //启动 #R_TRIG_Instance(CLK:=#启动); IF #R_TRIG_Instance.Q AND #流程=0 THEN #流程 := 1; END_IF; //以30mm/s的速度绝对运动运行至150mm处 IF #流程 = 1 THEN #运行位置 := 150.0; #运行速度 := 30.0; #SinaPos_Instance.ModePos := 2; END_IF; #T10(IN:=#流程 = 1, PT:=T#500MS); IF #T10.Q THEN #SinaPos_Instance.ExecuteMode := 1; END_IF; #T11(IN := #T10.Q, PT := T#2S); IF #T11.Q AND #SinaPos_Instance.AxisPosOk THEN #SinaPos_Instance.ExecuteMode := 0; #流程 := 2; END_IF; //以30mm/s的速度相对运动运行150mm IF #流程 = 2 THEN #运行位置 := 150.0; #运行速度 := 30.0; #SinaPos_Instance.ModePos := 1; END_IF; #T12(IN := #流程 = 2, PT := T#500MS); IF #T12.Q THEN #SinaPos_Instance.ExecuteMode := 1; END_IF; #T13(IN := #T12.Q, PT := T#2S); IF #T13.Q AND #SinaPos_Instance.AxisPosOk THEN #SinaPos_Instance.ExecuteMode := 0; #流程 := 3; END_IF; //以30mm/s的速度相对运动运行-300mm IF #流程 = 3 THEN #运行位置 := -300.0; #运行速度 := 30.0; #SinaPos_Instance.ModePos := 1; END_IF; #T14(IN := #流程 = 3, PT := T#500MS); IF #T14.Q THEN #SinaPos_Instance.ExecuteMode := 1; END_IF; #T15(IN := #T14.Q, PT := T#2S); IF #T15.Q AND #SinaPos_Instance.AxisPosOk THEN #SinaPos_Instance.ExecuteMode := 0; #流程 := 4; END_IF; //以15mm/s速度定速正向运动10s IF #流程 = 4 THEN #运行速度 := 15.0; #SinaPos_Instance.ModePos := 3; #SinaPos_Instance.Positive := 1; END_IF; #T16(IN := #流程 = 4, PT := T#500MS); IF #T16.Q THEN #SinaPos_Instance.ExecuteMode := 1; END_IF; #T17(IN := #T16.Q, PT := T#10S); IF #T17.Q THEN #停止 := 1; #SinaPos_Instance.ExecuteMode := 0; #SinaPos_Instance.Positive := 0;
END_IF; #T18(IN:=#T17.Q, PT:=T#500MS); IF #T18.Q THEN #停止 := 0; #流程 := 6; END_IF; //以30mm/s的速度绝对运动运行至0mm处 IF #流程 = 6 THEN #运行位置 := 0.0; #运行速度 := 30.0; #SinaPos_Instance.ModePos := 2; END_IF; #T19(IN := #流程 = 6, PT := T#500MS); IF #T19.Q THEN #SinaPos_Instance.ExecuteMode := 1; END_IF; #T20(IN := #T19.Q, PT := T#2S); IF #T20.Q AND #SinaPos_Instance.AxisPosOk THEN #SinaPos_Instance.ExecuteMode := 0; #流程 := 7; END_IF; //正向点动运行5是停止/断使能 #T21(IN:=#流程 = 7, PT:=T#2S); IF #T21.Q THEN #点动正转 := 1; END_IF; #T22(IN:=#T21.Q, PT:=T#5S); IF #T22.Q THEN #点动正转 := 0; #上使能 := 0; #流程 := 0; #启动 := 0; END_IF;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |