关于PLC时间机制的精度
今天在“找答案”栏目看到一则提问,说PLC时间机制中,定时器还是用系统时钟脉冲累加的“精度”到底是那一个精度高。之前,我记得有类似的帖子发过,也懒得再去找陈年的记录,好在手头上有一个200smart PLC,用来验证程序也非常方便的。
因为,需要找一个“相对”有一些精度的比较标准,所以,一开始就想到的定时中断时间累加作为我这次验证的“标准”,然后才是几个不同时基的定时器和系统时钟脉冲的累加。为了测试能够充分反应出精度问题,采用多次被测试定时器时间次数的累加,来区分它们之间的累加误差。
验证方式:
1) 定义一个定时中断,SMB34 = 100(mS)累加;
2) 采用系统时钟SM0.5(1S)脉冲累加;
3) 调用,T33(10mS)和T37(100mS)定时器的时间次数累加。
比较它们之间是否存在一些“差异”。
在验证前先说说西门子200(200smart)定时器刷新机制----异步刷新机制即定时器时间到达后需要等待到下一个周期才会被刷新状态。
程序:0.1S测试
定时中断初始化:定时中断100mS时基累加

T33和T37定时器累加程序:

将验证程序编译保存下载到PLC,创建一个“状态图表”监控它们之间的差异:

T33刷新比T37及定时中断的累加都要快一些,是因为定时器时基10mS相对于100mS时基定时器刷新周期短的原因。
将时间数据累加次数增加看差异会变大?并加入系统时钟SM0.5参与对时间精度的比较:

4种类型的PLC时间累加数据基本还是一致的。
因为,这个验证是相对简约化的程序,没有其它控制程序对网络或子程序中的刷新机制的影响,测试相对单一,如果在它们之间加入其它程序段,这些时间数据的累加存在差异是一定的,也印证了定时器异步刷新机制的工作原理。
再将定时中断设置为1mS,看它们之间的差异如何:

当随意取一个周期中的数据,定时器之间的差异基本一致。
将这些时间均设置到1S(累加后)再比较:

VW106(SM0.5系统时钟累加)优先于定时器这是因为不需要经过异步刷新过程。
验证小结:
1) 时基小的时间数据累加,刷新率优于时基相对大的定时器,这个实际上很容易理解,1mS的优先于10mS和100mS的定时器,同样,10mS的时基刷新率优先于100mS的时基定时器,原因是刷新时基的不同。
2) 定时器所在的网络段与刷新率有着极其重要的关系。
3) 定时中断的时间精度优先于其它类型的定时器,这是中断优先执行所赋予的刷新。
4) 系统时钟没有定时器类似的异步刷新过程。
比较精度:
客观的说,对应于定时中断的时间数据累加的精度是最高的,“优先权”放在那里。其次是系统时钟SM0.5,不需要扫描“刷新”机制。再次是时基10mS定时器精度高于100mS的定时器,刷新机制次数所定义的。