在部分行业的自动控制工艺中,多个PLC控制系统的时间同步尤为重要,部分事件的触发,必须同时进行;进行故障分析时,事件发生的时间戳要进行交叉对比;这些事件都要求把时间误差控制在有限的范围内。
这其实跟我们生活中的时间同步要求类似,早晚上下班时间、火车的发到站时间、航班时间、乃至我们跟朋友约会的时间,统统需要统一!在战争中,部队在行动之前要先对表,保证用同一个时间来实施军事行动。这一切,如果没有一个统一的时间系统,那就会出大问题。
01
在计算机和网络业界也在致力于解决以太网的定时同步能力不足的问题,首先开发出了一种软件方式的网络时间协议(NTP),但是精度有限,仍然不能满足测量仪器和工业控制所需的准确度。
为了提高精度,2000年底成立网络精密时钟同步委员会,2001年中获得IEEE仪器和测量委员会美国标准技术研究所(NIST)的支持,该委员会起草的规范在2002年底获得IEEE标准委员会支持并通过,IEEE1588标准诞生。
IEEE1588是网络测量和控制系统的精密时钟同步协议标准,采用PTP(精确时钟同步)协议,精度可以达到微秒级。
02
时间同步,其实我们每个人每天都在用,电脑上会自动运行同步时钟,几乎人手一部的手机,同样也在进行时间同步,这就保证了晚上的约会你不会姗姗来迟,导致女朋友很森气。
大道理说了一大堆,下面我们看下IEEE1588是如何工作的。
我们假设有两个设备需要做时间同步,我们叫这两个设备为主时钟和从时钟,套用军事题材中的对时步骤,我们称主时钟为司令部,从时钟称为团长。
精简版对时:紧张的总攻即将开始,司令部接通了团长的电话:
“洞拐,我是洞幺。”
“洞幺,洞拐收到!”
“洞拐,我的表是八点一刻。”
“洞幺,已对时。”
挂电话!
03
复杂版IEEE1588对时:
第一步,在八点一刻(T1),司令部向团长发送第一个电报(sync同步报文),告诉他我们要对时了;
第二步,紧跟着又发送第二个电报(Follow_up跟随报文),把T1的准确时间在这个报文里发给团长;
第三步,团长记录下第一个电报达到团部的准确时间T2;
第四步,团长向司令部发送第三个电报(delay_req报文),记录下发送时间T3;
第五步,司令部记录下第三个电报的准确到达时间T4;
第六步,司令部把T4时间通过第四个电报(delay_resp报文)发给团长。
这顿操作下来,团长这里就有了四个时间,T1,T2,T3和T4。因为是精确对时,就要考虑两个时间,一个是团长的表和司令部的表之间的差,我们叫时钟差(offset),还有一个时间就是电报在从司令部发到团长那里所耗费的时间,就是在路上的时间(delay)。
根据下图,做个简单的计算,那就可以通过这四个时间,算出来offset和delay,然后团长就知道表跟司令部的表差多少了(offset)。
图源:来自CSDN
图源:来自CSDN
04
了解了对时原理,我们就可以在PLCnext中编程了,同样在这里有主PLC(司令部)和从PCL(团长),二者通过UDP_SOCKET功能块来收发数据。具体的运算步骤完全按照IEEE1588的六个步骤来做,我们特别用示波器进行了数据的同步验证,两个PLC按照约定的时间同时发出一个信号,两个信号的时间差保持在1ms的级别。
此功能满足了很多特殊行业及应用对时间系统同步的要求,为PLCnext在其中的应用添加了更有力的功能,其他新鲜功能持续开发中,请保持关注哦!