[西门子] 步进/伺服定位控制时死机解决技巧

[复制链接]
查看140 | 回复0 | 2024-6-26 09:18:08 | 显示全部楼层 |阅读模式
>导读:相信很多小伙伴在编写西门子PLC定位控制程序时,会出现位置数据给定到指令中去了、也触发了定位控制指令的管脚,但是PLC却出现“死”机(不动作)的现象。那么本文就一起解决这个问题。
一、控制需求
1.按下启动按钮后,步进电机以设定的速度到达抓取点位置
2.步进电机到达抓取点位置后,又以设定的速度到达放置点位置
3.抓取、放置两点循环往复

二、程序设计
1.在这个案例中,明显是抓取、放置两点往复定位。而在西门子PLC定位时,当达到抓取位置后,使用定位完成位来触发下一段位置的定位需要延时一段时间触发“Execute”管脚(如图1所示),也就是需要错开扫描周期,才能正常定位,否则会不动作会出现“死机”现象。

图1

2.如果要实现这种到达一个位置后,再延时触发让步进去下一个位置的话有两种方法。
方法一:定位完成位接通后,延时触发下一个位置
1.程序段1时实现轴使能功能,程序段2实现轴的回原点功能


2.程序段3是轴点动功能。当按下启动按钮“McXAsix. XAsixStart” 后,将“1”传入到寄存器“McXAsix. XAsixNum”中。当按下停止后,将0传过去。
程序段4是调用绝对定位指令,只有寄存器中的值等于1和2时才调用。


3.程序段5,等寄存器的值等于1时将位置和速度数据给到绝对定位指令中,延时100ms后触发定位指令的Execute管脚。
程序段6是反方向控制,原理一样的,在此不赘述。


注意:那如果使用这种方法的话,定位的点位比较多,那就需要大量的定时器,给我们编程带来很多重复的劳动,那接下来看第二种方法!!!
方法二:使用置位和复位指令来错开扫描周期
1.新建一个FB块,定义接口变量

2.程序段1:一直复位一个标志位,用于错开扫描周期。
程序段2:在自动模式下,按下启动按钮后,启动标志位接通,将“1”给到“步序”这个寄存器中,否则为0。

3.程序段3:当步序等于1时,给定抓取位置数据和速度,同时置位“#S_定位触发[0]”标志位(这个位在下个扫描周期将复位,因为程序段1复位了)。当定位完成了后“I_定位完成”位接通,将“2”给到步序中。
程序段4的是反方向定位程序


4.主程序中调用FB程序

5.把“FB2008”上的“DB_轴数据”.绝对行走、“DB_轴数据”.绝对位置给定参数、“DB_轴数据”.绝对位置运行速度关联到绝对定位指令的管脚“Execute”和“Position”、“Velocity”管脚中即可!
写在最后:如果文章对您有帮助,帮忙点个“赞”和“在看”呗!!!


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

本帖子中包含更多资源

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

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

本版积分规则