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

已锁定

1Shadow1

  • 帖子

    155
  • 精华

    6
  • 被关注

    72

论坛等级:侠士

注册时间:2013-12-11

钻石 钻石 如何晋级?

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

18476

57

2024-01-24 11:39:26

star star star star

测试环境: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 试一下;








使用循环中断和读取循环时间作为定时器 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10590条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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