我们设备上有段程序:
L #Motor_Encoder_value //来自S120的参数 r482,即电机增量编码器位置值
L DW#16#FFFFFF
AD
L DW#16#7FFFFF
>D
= #Turn_pulse //每圈一次为TRUE
我整个程序的控制过程分析,这段应该是通过电机增量编码器使每圈获取一个脉冲。STARTER中编码器设置见附图,它每圈是发出一个零脉冲,按照编码器的细分设置,r482 = 1024 x 2048 = 2097152,但我实在是搞不懂程序是如何获取这个零脉冲的,请各位大侠帮忙解答一下,谢谢了。
问题补充:
我们这个设备已运行多年,所以它的程序是可以实现的,只不过现在我还没弄懂人家的原理。电机编码器是有零脉冲,它通过SMC30接到S120上,如果把编码器的Z相接到PLC输入通道,当然是可以接收到零脉冲,但是现在电机转速很高,估计丢脉冲会很严重,无法实现目的,需要添加另外的高速计数器模块才行。
图片说明:
最佳答案
了解r482的组成你就知道什么意思了!见条目3,即实际脉冲数,处以单圈脉冲即可得到圈数。
S120 装置中参数r0482可显示编码器的实际增量值。r2521是驱动在激活基本定位功能后的实际位置值,单位是LU。r0482 是32位的双字,参考S120 List manual中的功能图4704:
可以通过拆解r0482 的方法得到实时的脉冲数。具体方法如下:
1.从bit0 – bitn-1 表示脉冲细分补全码,即当实际位置处于两个脉冲之间时,对其进行细分,从而代表的两个脉冲间的位置值。当下一个脉冲到达后,向上进位且重新计数;
2.从bitn – bitn+m-1表示编码器一转以内的整脉冲个数;
3.从bitn+m到bit31为当前实际转数,编码器每旋转一周由整脉冲数向上进位得到;
4.m为p0408编码器脉冲数对应的2进制位数,如2048对应m=11;n 为 p0418中设定的脉冲细分率。
详细见链接
https://support.industry.siemens.com/cs/document/79633691/s120-%E5%A6%82%E4%BD%95%E8%AF%BB%E5%8F%96%E7%BC%96%E7%A0%81%E5%99%A8%E7%9A%84%E5%AE%9E%E9%99%85%E8%84%89%E5%86%B2%E6%95%B0?dti=0&lc=zh-CN
参考以前的一个问答
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=223045&cid=1077
图片说明:
提问者对于答案的评价:
解答非常详尽,谢谢大神!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc287551.html