[西门子] 西门子V90伺服EPOS模式如何写连续运动

[复制链接]
查看169 | 回复0 | 2024-11-19 13:27:28 | 显示全部楼层 |阅读模式
>

题目:

要求

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;



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则