plc10ms定时器(plc定时器100ms定时范围)

plc10ms定时器(plc定时器100ms定时范围)hr 今天在设计一个 200ms 循环标志位时 发现循环时间很快 dbug 一下有 80ms 远小于 200ms 发现代码逻辑是无问题的 那么究竟是什么问题呢 二 分析 逻辑上没有问题 只需要等 TimerBase100 是 2 的倍数 标志位就会有变化 1 但是实际上标志位变化的快的多 那么是什么问题呢 自我解析的原因 本人程序的时基是用的滴答计时器的中断 周期为 100us

大家好,我是讯享网,很高兴认识大家。



 <hr /> 

讯享网

今天在设计一个200ms循环标志位时,发现循环时间很快,dbug一下有80ms,远小于200ms,发现代码逻辑是无问题的,那么究竟是什么问题呢?


讯享网

二、分析

逻辑上没有问题,只需要等TimerBase100ms  是2的倍数,标志位就会有变化1,但是实际上标志位变化的快的多,那么是什么问题呢?

自我解析的原因:


讯享网

本人程序的时基是用的滴答计时器的中断,周期为100us,也就是每过100us就会触发中断,执行一个500us标志计时,100ms标志计时。(当然也有一些必要功能的标志位设置,这里就不贴出来,只贴计时标志位)。注意:声明定义这里没有张贴,中断中记得使用volatile关键词

 

我想如果在进行模运算(%),这时CPU需要执行额外的计算,这会增加CPU的负担,从而影响系统的实时性和准确性。此外,模运算本身也需要一定的计算时间,大家也知道汇编语言中,至少需要三句语句,才能完成赋值存储等功能,而如果在计算的过程中进入中断,就会打断其过程,从而导致计算失败,值不变。

因此将本文第一个代码块现在改为:

讯享网

那么时基运算完美

小讯
上一篇 2025-05-24 18:08
下一篇 2025-05-05 20:02

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/167337.html