高速计数器HC0 ,是用向导进行设置的程序。设置值达到时,有时候不产生中断,请问有遇到过的吗?是怎么回事,监控发现数值已经超过我设定的值,仍然不产生中断。
问题补充:
真抱歉第一次也没有把程序贴出来。
现在也终于知道为什么有时候好用,有时候又不能产生中断了:我做了很多次试验,发现下载完程序后,第一次使用时是正常的。第二次改变了预设值VD354之后,就不要正常了。经过多次研究发现,第二次使用时设置值没有传送到SMD42中。因为高速计数的子程序是上电调用一次的,所以参数没有被传递到SMD42。这样只好再次用上升沿调用一次,参数就写进了SMD42,程序就可以在实际值与设置值相等时,产生中断了。
见程序贴图
另:如果把高速计数程序的预设值(VD354)设为0,是不是下次使用时不必重新调用高速计数的子程序?
图片说明:
钻石用户推荐最佳答案
这个问题有一些蹊跷了,怎么理解有时候不中断呢?
你可以这样检测,假设你设置的是当前值等于预设值中断,你转动编码器或者其它高速输入工具,来测试当前值等于预设值是否被执行中断,如何检测可以在中断子程序中进行中断次数的累加来验证。如果你初始化高速计数器的中断,那么,这个中断会一直被调用,你还是倾向于你的高速计数器中断做连接的中断子程序里面的问题,或许是逻辑没有做完整。
补充问题回复:
你的问题实际上出在用向导做高速计数器,为什么呢?因为用向导做就对高速计数器的控制字节各位的含义变的模糊了。
第一次初始化高速计数器,当前值等于预设值产生一个中断后,你需要重新等于预设值,可以在连接的中断子程序中重新等于高速计数器的预设值,修改高速计数器的初始化值后,必须重新启动计数器,并开中断一次。
允许高速计数器多次初始化的操作,但必须满足初始化高速计数器后,重新启动高速计数器,开中断。
提问者对于答案的评价:
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc284973.html