恭喜,你发布的帖子
发布于 2020-07-15 14:14:44
6楼
没有看到过西门子 IEC 定时器底层实现的原理资料,PLC内部应该有一个类似原子钟的东西 (独立于系统时钟),定时器开始运行时都是从这里获取一个标记暂存起来,以后要使用该定时器Q ,ET 再从原子钟里取数据,而后再与暂存值做运算来更新 Q ,ET 。也就是说定时器的更新并不是当程序扫描到定时器指令时才更新,一扫描周期可能会更新多次。IEC 定时器精确的,但可能不会按照你的定时逻辑去执行你的任务。比如你想在信号发出后的第10个毫秒去做一样事情,这样就有可能有时不会执行你要做的事情,除非你的扫描周期每次都不会大于 1 个毫秒。
差还是有差的,IEC定时器的帮助里面没提,就像1楼说的,我想那个缝还是避免不了的吧。
而且理论上的和项目中的情况会有些偏差。
下图是自己写的定时器,不带背景数据用得蛮方便的。用OB1的周期作为时基。每次扫到调用的地方,加上上一周期扫描时间。
理论上误差应该不超过一个扫描周期,IN导通的第一个周期的从OB1开头到FC调用之间的时间为a;IN导通的最后一个周期的从OB1开头到FC调用之间的时间为b。误差应该是|a-b|。
实际上,做过比较误差还是比较大的。大概两分钟差出去一秒吧。
请填写推广理由:
分享
只看
楼主