在部分行業(yè)的自動控制工藝中,多個PLC控制系統(tǒng)的時間同步尤為重要,部分事件的觸發(fā),必須同時進行;進行故障分析時,事件發(fā)生的時間戳要進行交叉對比;這些事件都要求把時間誤差控制在有限的范圍內(nèi)。
這其實跟我們生活中的時間同步要求類似,早晚上下班時間、火車的發(fā)到站時間、航班時間、乃至我們跟朋友約會的時間,統(tǒng)統(tǒng)需要統(tǒng)一!在戰(zhàn)爭中,部隊在行動之前要先對表,保證用同一個時間來實施軍事行動。這一切,如果沒有一個統(tǒng)一的時間系統(tǒng),那就會出大問題。
01
在計算機和網(wǎng)絡業(yè)界也在致力于解決以太網(wǎng)的定時同步能力不足的問題,首先開發(fā)出了一種軟件方式的網(wǎng)絡時間協(xié)議(NTP),但是精度有限,仍然不能滿足測量儀器和工業(yè)控制所需的準確度。
為了提高精度,2000年底成立網(wǎng)絡精密時鐘同步委員會,2001年中獲得IEEE儀器和測量委員會美國標準技術研究所(NIST)的支持,該委員會起草的規(guī)范在2002年底獲得IEEE標準委員會支持并通過,IEEE1588標準誕生。
IEEE1588是網(wǎng)絡測量和控制系統(tǒng)的精密時鐘同步協(xié)議標準,采用PTP(精確時鐘同步)協(xié)議,精度可以達到微秒級。
02
時間同步,其實我們每個人每天都在用,電腦上會自動運行同步時鐘,幾乎人手一部的手機,同樣也在進行時間同步,這就保證了晚上的約會你不會姍姍來遲,導致女朋友很森氣。
大道理說了一大堆,下面我們看下IEEE1588是如何工作的。
我們假設有兩個設備需要做時間同步,我們叫這兩個設備為主時鐘和從時鐘,套用軍事題材中的對時步驟,我們稱主時鐘為司令部,從時鐘稱為團長。
精簡版對時:緊張的總攻即將開始,司令部接通了團長的電話:
“洞拐,我是洞幺?!?/P>
“洞幺,洞拐收到!”
“洞拐,我的表是八點一刻?!?/P>
“洞幺,已對時?!?/P>
掛電話!
03
復雜版IEEE1588對時:
第一步,在八點一刻(T1),司令部向團長發(fā)送第一個電報(sync同步報文),告訴他我們要對時了;
第二步,緊跟著又發(fā)送第二個電報(Follow_up跟隨報文),把T1的準確時間在這個報文里發(fā)給團長;
第三步,團長記錄下第一個電報達到團部的準確時間T2;
第四步,團長向司令部發(fā)送第三個電報(delay_req報文),記錄下發(fā)送時間T3;
第五步,司令部記錄下第三個電報的準確到達時間T4;
第六步,司令部把T4時間通過第四個電報(delay_resp報文)發(fā)給團長。
這頓操作下來,團長這里就有了四個時間,T1,T2,T3和T4。因為是精確對時,就要考慮兩個時間,一個是團長的表和司令部的表之間的差,我們叫時鐘差(offset),還有一個時間就是電報在從司令部發(fā)到團長那里所耗費的時間,就是在路上的時間(delay)。
根據(jù)下圖,做個簡單的計算,那就可以通過這四個時間,算出來offset和delay,然后團長就知道表跟司令部的表差多少了(offset)。
圖源:來自CSDN
圖源:來自CSDN
04
了解了對時原理,我們就可以在PLCnext中編程了,同樣在這里有主PLC(司令部)和從PCL(團長),二者通過UDP_SOCKET功能塊來收發(fā)數(shù)據(jù)。具體的運算步驟完全按照IEEE1588的六個步驟來做,我們特別用示波器進行了數(shù)據(jù)的同步驗證,兩個PLC按照約定的時間同時發(fā)出一個信號,兩個信號的時間差保持在1ms的級別。
此功能滿足了很多特殊行業(yè)及應用對時間系統(tǒng)同步的要求,為PLCnext在其中的應用添加了更有力的功能,其他新鮮功能持續(xù)開發(fā)中,請保持關注哦!
(轉(zhuǎn)載)