通过I0.0输入脉冲信号,统计计数有多少脉冲信号,计数值以变量存起来,这个功能。
我想到的就是ADD,IN1 赋值1,输出out再发给IN2,一个脉冲加1。请问还有什么好办法吗?
传统的CTU计数器,好像也办不到这功能,脉冲到达预设值pv触发,也实现不了实时计数功能啊
最佳答案
想要实事计数只能用中断,普通计数器是无法真实记录高速脉冲数据的,因为普通计数器遵循的程序扫描机理。
给一个参考程序:
LD SM0.1
MOVB 16#FC, SMB37
HDEF 0, 9
MOVD VD1490, SMD38
MOVD 16#FFFFFFFF, SMD42
ATCH 长度到达:INT1, 12
ENI
HSC 0
定义高速计数器的9#模式(MODE)。
控制字节=SMB37 (FC=11111100) SM37.0=0(复位高低有效控制位,高电平有效);SM37.1=0(启动高低有效控制位,高电平有效);SM37.2=1(正交计数速率选择位,1倍频计数);SM37.3=1(计数方向控制位,增计数);SM37.4=1(写计数方向允许控制,更新计数方向);SM37.5=1(写入预设值允许控制,更新预设值);SM37.6=1(写入当前值允许控制,更新当前值);SM37.7=1(HSC指令执行允许控制,允许HSC)
当前值双字=SMD38
预设值双字=SMD42
这样当脉冲数达到预设值触发中断,你可以在中断中使用加一程序,以达到脉冲计数的目的。
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。
建议用高速计数器-进行脉冲个数测量,如果超过hsc最大值,清0从新计数,同时将一个计数器加1。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc199911.html