S7-200的I0.0外部上升沿触发中断计数问题

1:PLC是224XP,利用I0.0上升沿触发中断进行计数,
 //初始化程序
 LD SM0.1
 ATCH INT-0,0
 ENI
 2.在中断程序中,进行定时和计数,INT-0程序如下:
 LD SM0.0
 INCD VD0     //当前计数器VD0
 TON T32,32767 //当前定时器T32

 LDW>  T32,300
 MOVD VD0,VD4  //读出当前计数值到VD4
 MOW  T32,VW8   //读出当前定时器的值到VW8
 MOVD 0,VD0        //VD0计数器清零
 R   T32,1               //T32定时器复位
 3.问题:当程序运行时,每次读到的当前的计数值比定时器的最大值大1(VD4=VD0max+1,当VD0max=4时,VD4=5;VD0max=6时,VD4=7)
 请问这是什么原因或问题在哪?请各位老师指点.谢谢.

问题补充:
1.我之前在做其它定时器,遇到也发现了此问题,是可以预设大的定时值;
 2.我此程序的目的,是在此定时范围内,得到I0.0的脉冲个数,读到的计数个数,始终比当前计数个数多一个,这样计数出来的频率时,就会比原来的大,我用信号发生做过好多边测试,现在我在算频率时,人为减掉一,得到的频率正好吻合信号发生器的频率值.

最佳答案

1毫秒分辨率:
 因为可在1毫秒内的任意时刻启动定时器,预设值必须设为比最小要求定时器间隔大一个时间间隔。例如,使用1毫秒定时器时,为了保证时间间隔至少为56毫秒,则预设时间值应设为57。

提问者对于答案的评价:
1.谢谢LiaoHuai.问题找到了.
 2.工控少年:我按你的方法,在I0.0的上升沿来读高速计数,不成功.

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日
下一篇 2021年7月4日

相关推荐

发表回复

登录后才能评论
;ATCH INT-0,0 …", "datePublished": "2021-07-04T23:38:55", "dateModified": "2021-07-04T23:38:55", "author": {"@type":"Person","name":"ximenziask","url":"https://www.zhaoplc.com/grzx/1","image":"//www.zhaoplc.com/wp-content/uploads/2023/04/gravatar.png"} }