还是说说200 smart定时器的刷新机制
昨天在测试modbus rtu通讯时,突然萌生出一个“奇怪”的想法。都在说(官方系统手册)200smart的10mS(包含100mS)时基的定时器是异步刷新的工作机制,自己在做项目中也一直沿用这个理论,我萌生的想法:是否可以通过PLC来自己检测官方所说的异步刷新的工作原理?
检测理论:
做一个检测扫描周期个数的寄存器,目的是分先后启动定时器,让其中一个定时器先行运行,假设先让T37“飞”100mS(1~3mS/个周期估算,按最大周期时间大概34个周期),然后 ,让另一个定时器T38再触发运行,定时器定时数据均暂定为2S。如果plc是按异步刷新机制工作的,那么接下来我调用的间隔定时器就没有时间数据。因为是测试,我让其中一个定时器做多个扫描周期先“飞行”的测试,另一个紧跟,然后测试它们之间的时间间隔,以求证异步刷新的工作机制。
测试程序:



将测试程序编译,保存后下载,状态图表监控:

测试了几次(主要还是对程序扫描时间的不确定性原因),有几次可以测试到VD8中的时间间隔,大部分次数VD8中没有值。启动定时器间隔周期为34(实际差33个周期,按最大扫描周期3mS计)的原因是定时器时基最小单位为100mS,低于这个间隔很难有区分了。看到这里,可能有人要说话了,你没有做这2个定时器的异步刷新啊。我的理论在于当这个测试间隔小于扫描周期间隔的33个周期,那么,这2个定时器的差值将无法被plc设别到,也就是说这个我理解的异步刷新原理就在此。当然,这个测试也算是随机性的,因为还是每一个扫描周期无法确定一致性造成的更本原因。
我测试的程序没有其它程序内容编写,监控plc的扫描周期在1 ~ 3mS,图示:

测试可能存在的误差:
1) 扫描周期的不确定性;
2) 间隔定时器的精度(最小间隔时间为1mS)低;
3) 因为调用了M0.1线圈,断开线圈受T38刷新影响。可能会产生最大2个周期的影响;
之前,也看到几个大侠对此的讨论贴,因为没有想到这个问题点子上,也纯粹是“凑热闹,打打酱油”的,今天再拿出来再次说此事,不对之处请指正。