新手求助帖:关于200 smart 运动功能的一些疑问

本人新手,最近入手一台smart,ST40,在使用运动功能时,有一些疑问如下:

问题一:利用运动向导创建子程序块,测量系统选择相对脉冲,单相P0输出,启用LMT+和LMT-功能(立即停止,高电平),在主程序中调用RUN 子程序,编译无误,下载调试,LMT+接通,运动轴立即停止,但是LMT-接通,运动轴没有立即停止,还是按设定的曲线输出脉冲,求解?

问题二:还是RUN 子程序,C_Pos端是运动轴的当前位置(脉冲数),地址VD300,每调用一次RUN子程序VD300的值就随着增大相应脉冲数,如果程序持续运行的话,早晚VD300会数据溢出,我想用MOV指令把VD300清零,但是好像没效果,清零后,再调用RUN,VD300还是在上次脉冲数的基础上增大,求解?

问题三:使用RUN子程序时,怎么控制方向?

再次声明:我是新手,也是第一次发帖救助各位,描述的问题有不明白的请指出来,我详细解释,谢谢!

图片说明:

新手求助帖:关于200 smart 运动功能的一些疑问    新手求助帖:关于200 smart 运动功能的一些疑问    新手求助帖:关于200 smart 运动功能的一些疑问   

最佳答案

您好,关于您的三个问题, 给您一些参考: 

问题一: 在程序中检查一下您的LMT-  I0.3这个点的状态为False还是True。

问题二:C_POS表示的是脉冲计数器的当前位置。您说的每调用一次RUN子程序C_POS值就随着增大相应脉冲数增大的说法是不准确的。它也可能减小,例如 方向控制信号为True时 ,电机反转,C_POS的值是会减少的。不会无限制的增大。
第二, 而且C_POS的数据类型是DINT/REAL, 32bit的。您实际的机械运动的范围也没这么大吧!
第三, C_POS不能通过MOVE指令清零, 如果要清零C_POS, 您可使用LDPOS指令,将运动轴中的当前位置更改为新值。

问题三:RUN指令执行的是运动包络, 也可以说是按照您指定的位置来运动。方向不是由RUN指令来控制的,方向由物理输出点Q点控制,例如轴1, 脉冲输出信号Q0.0,方向控制信号是Q0.2。

提问者对于答案的评价:
首先感谢zhuzhu367的回答,我先采纳了。
补充一下:
问题一:已经检查了,LMT-的输入没问题,而且PLC上的输入指示灯也是亮的,还是不知道原因是什么?怎么解决?
问题二:zhuzhu367说的用LDPOS子程序清零C_Pos的方法可行,我已经用了。但至于你说的我可以解释一下,我是使用的单相P0输出脉冲(Q0.0),方向是Q0.4单独控制的,所以C_Pos确实是一直增大的,即使反转,也只是Q0.4输出改变,对P0来说还是在输出脉冲,C_Pos的值是不会减小的,累计下去,即使我的机械行程不大,也是会溢出的。
问题三:我仔细研究了西门子的smart手册和伺服驱动手册,有这样的理解,不知道对不对:smart的运动方向控制是针对西门子自己的伺服驱动器(比如V90)来说的,因为V90就是用P0和P1的相位来控制电机方向的,但是对普通的步进或伺服驱动器来讲,只能使用单相P0输出,方向用其他输出口单独控制。不知道我这样理解的对不对?
以上问题还希望zhuzhu367帮忙看看,也欢迎各位大侠谈论解答,小弟感激不尽!

最佳答案作者回复:
1. 您在运动控制向导中选择的方向控制相位选择了单相(1输出)还是单相(2输出)?看您描述像选了第一个,而又没有使能方向控制点Q0.4
2. Smart 200 运动方向控制不仅仅是针对西门子自己的伺服驱动器,方向由哪点控制取决于您组态中的设置, 如1述
3. 单相(2输出),脉冲信号Q0.0,方向信号Q0.2,每个RUN指令对应不同的曲线, 如1曲线目标位置50000脉冲, 2曲线目标位置3000脉冲, 每次调用不同RUN指令,C_POS不会无限增大

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc158932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月8日 下午5:10
下一篇 2017年6月8日 下午5:10

相关推荐