技术论坛

 使用循环中断和读取循环时间作为定时器

返回主题列表
作者 主题
1Shadow1
侠士

经验值:1130
发帖数:81
精华帖:4
楼主    2024-01-24 11:39:26
主题:使用循环中断和读取循环时间作为定时器 精华帖 

测试环境:TIA V16+PLCSIM

  1. 第一种思路是每次读取一次程序运行的cycle time ,然后用PT 时间去除一下,得到需要运行的次数;





  2.         第一种方法因为会有累积误差,所以只适合时间比较短的场合,比如1分钟内。后面也是针对此缺陷的改进。

            第一种改进是把过去的所有循环时间进行累积,误差就被控制在了最后的一次比较上了,然后和目标值进行比较;结果有明显改善;

            第二种改进是通过相同的中断间隔时间来代替不那么稳定的cycletime来计时;理论上来说,2种改进的方法应该可以把误差控制在5ms 内,然并*;




  3.         第三种更直接一点,直接用循环中断的方式,通过中断的次数来计算,需要注意的是不是设定的时间越小越准,因为要考虑中断程序的处理时间,同时减少使用浮点数的运算;






          可以看到几种的ET 时间比较,时间还是比较接近的,但是也没有那么完美,可能有2个原因:

    1:用的模拟的PLC;

    2 :没有用一个绝对准确的时间参照物(是的,我有点怀疑系统的定时器准不准了);

           再说一个额外的发现,我用手机定时作为参照物发现,发现PLCSIM 的TON 定时器大约慢15s/5min,也就是大约每20min 慢1 min;

           对于长时间的定时,可以通过读取系统时间+NTP 服务器同步的方式来确保误差在可以接受的范围内;以上只是为了拓展思路,不拘泥于现有条件;

           有兴趣的可以拿实际的PLC 试一下;








谋定而后动,精益求精。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。