我的S7-200 挂了两个电机带编码器的 现在两个编码器怎么比较计数差值达到一个脉冲值的时候产生的状态位
问题补充:
现在电机速度是每秒 转10R 编码器是600P/r
最佳答案
电机速度是每秒 转10R 编码器是600P/r说明PLC输入接收的脉冲是6000P/S。你可以设定一个脉冲数值,不如达到10000个脉冲的时候就输出为1,同时复位计数器,复位计数器将重新计数,当然电机还是在转,只是重新计数而已或者继续计数。
可以采用向导来做高速计数器。
参考一下:
程序通过先设定计数器的值,本例中设定值为10;按设备启动按钮I0.1启动设备,运行后通过信号输入点I0.0进行计数,当计数当前值等于设定值10时,输出点断开,设备运行停止。I0.2为设备停止按钮。 程序如下:
LD SM0.1
MOVB 16#C8, SMB37
HDEF 0, 0
MOVD +0, SMD38
HSC 0
上述程序注解:(1)对高数记数器HSC0初始化,写入控制字节(16#C8含义为:要求进行初始值设定;不装入预设值;运行中不要求更改计数方向;计数器类型为增。) (2)执行HDEF指令,进行高速计数器工作模式的选定设置(计数器为HSC0;模式为0) (3)初始值设定:装载高数记数器初始值为0 (4)执行HSC指令,写入HSC0设置。 LDN M14.0
EU MOVB
16#C8, SMB37
MOVD +0, SMD38
HSC 0
上述程序注解:当记速值达到要求值时,M14.0复位,高速计数器计数将复位为初始值,以备下次计数使用。
LDD< HC0, +10
= M14.0
上述程序注解:当计数器值小于10 时,M14.0始终处于置位状态。
LD I0.1
O Q0.0
AN I0.2
A M14.0
= Q0.0
上述程序注解:I0.1为设备启动信号;I0.2为设备停止信号。高速计数器累计值达到10 时,设备运行停止
参考链接:
http://www.ad.siemens.com.cn/service/answer/solved_89590_1028.html
《西门子 S7-200?LOGO!?SITOP 参考》V0.92版(更新版)(2008.02.15) 下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0136
高速计数器的使用方法,连接:
http://blog.sina.com.cn/s/blog_5d7ca9d90100cesx.html
http://www.plc100.com/siemens/shili/yingyong.htm
一个高速计数器的例子:
LD SM0.1
MOVB 16#FC, SMB37
HDEF 0, 9
MOVD VD100, SMD38
MOVD 16#FFFFFFFF, SMD42
ATCH 长度到达:INT1, 12
ENI
HSC 0
使用时将HSC0的值做相应的计算;比较。
可参考:
http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=60718_1028.html
参考资料:http://www.ad.siemens.com.cn/service/answer/solved_79333_1028.html
提问者对于答案的评价:
试了下不断中断的话可以实现就是有误差
专家置评
已阅,最佳答案正确。高速计数器记值是不走扫描周期的,那么进行两个高速计数器差值比较,容易产生误差。建议使用大于等于作为比较条件。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc293853.html