今天在设计一个200ms循环标志位时,发现循环时间很快,dbug一下有80ms,远小于200ms,发现代码逻辑是无问题的,那么究竟是什么问题呢?
二、分析
逻辑上没有问题,只需要等TimerBase100ms 是2的倍数,标志位就会有变化1,但是实际上标志位变化的快的多,那么是什么问题呢?
自我解析的原因:
本人程序的时基是用的滴答计时器的中断,周期为100us,也就是每过100us就会触发中断,执行一个500us标志计时,100ms标志计时。(当然也有一些必要功能的标志位设置,这里就不贴出来,只贴计时标志位)。注意:声明定义这里没有张贴,中断中记得使用volatile关键词
我想如果在进行模运算(%),这时CPU需要执行额外的计算,这会增加CPU的负担,从而影响系统的实时性和准确性。此外,模运算本身也需要一定的计算时间,大家也知道汇编语言中,至少需要三句语句,才能完成赋值存储等功能,而如果在计算的过程中进入中断,就会打断其过程,从而导致计算失败,值不变。
因此将本文第一个代码块现在改为:
那么时基运算完美
到此这篇plc10ms定时器(plc定时器100ms定时范围)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/28765.html