当前位置:网站首页 > C++编程 > 正文

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




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


 
    

二、分析

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

自我解析的原因:

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

 
    

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

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

 
    

那么时基运算完美

到此这篇plc10ms定时器(plc定时器100ms定时范围)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • com串口线(串口com3)2025-08-31 14:18:08
  • cp1300色带多久换一次(cp1300色带要关机拿出来吗)2025-08-31 14:18:08
  • console是什么意思啊英语(英文console是什么意思)2025-08-31 14:18:08
  • kubelet启动不起来l拉取不到镜像(kubectl拉取镜像)2025-08-31 14:18:08
  • conda虚拟环境列表(conda建立虚拟环境)2025-08-31 14:18:08
  • 编程入门先学什么scratch(一年级编程入门先学什么)2025-08-31 14:18:08
  • console口权限设置(如何设置console口密码)2025-08-31 14:18:08
  • consoles(console是什么键)2025-08-31 14:18:08
  • kubectl logs查看日志(kubectl logs查看日志关键字)2025-08-31 14:18:08
  • 返回上一层的cmd命令(返回上一层目录使用下面哪个指令)2025-08-31 14:18:08
  • 全屏图片