胡 凱, 薛凌云, 陳慶光
(杭州電子科技大學 生命信息與儀器工程學院,浙江 杭州 310018)
隨著工業自動化的發展,多軸運動控制系統被廣泛應用于數控機床、仿生機器人、印刷設備等領域[1,2],且正朝著網絡化方向發展[3]。以太網由于具有低成本、開放性好等特點被廣泛研究,而傳統以太網是一種非確定性的通信調度方式[4],無法滿足多軸運動控制系統中數據傳輸的確定性和實時性要求。美國開發的CSMA/DCR和佩特雷大學研發的GIT-CSMA/CD等協議能夠實現確定性通信,但需要修改以太網的MAC層協議[5];通過硬件改進以太網不確定性的方法會使成本大大增加[6]。由于多軸運動控制系統中各節點采用的時鐘源不同,節點間時鐘同步的精度對提升多軸協同性能具有重要作用[7],在時鐘同步算法中,IEEE 1588中的PTP(precision timing protocol)[8]具有易于實現、占用資源少等優點,被廣泛應用,但當采用純軟件方法實現時,數據傳輸時的網卡緩存效應(數據在網絡中傳輸時,首先存在源節點網卡的緩存中,并在網絡空閑時發送至目的節點網卡的緩沖區)會影響報文接收時間測量的精確性,導致主從節點時鐘同步失敗[9]。
本文采取的方法是在以太網MAC層上通過軟件調度來達到實時以太網的確定性和實時性通信。采用改進的IEEE 1588中的PTP實現主從節點間的時鐘同步,將通信宏周期劃分為周期性報文傳輸時間片和非周期性報文傳輸時間片,按照時隙劃分策略完成分時發送的確定性網絡通信,避免了報文沖突造成的不確定延時。
運動控制系統是采用一個主節點個人電腦(PC)協調控制多個從節點(運動控制器),主節點與從節點通過自定義總線連接成分布式網絡,網絡拓撲圖如圖1所示。規劃控制層中的PC負責網絡數據管理以及主從節點間確定性的任務調度,其為系統中任務創建相應的線程,通過管理它們的觸發條件,狀態轉換過程來實現系統任務的有序執行,并對產生的數據進行存儲;網絡傳輸層中的數據傳輸通道,負責數據的發送與接收;運動控制層中的運動控制器通過以太網與主節點連接,其與驅動執行層中的執行機構共同組成了運動控制系統中的一個軸。

圖1 系統網絡拓撲結構
根據系統任務的時間特性,將其分為周期性任務和非周期性任務,周期性任務指執行時間和觸發時刻都被嚴格約束的任務類型,如主節點發送運動控制指令和從節點反饋運動信息;非周期性任務指沒有固定的觸發時刻,隨機發生的任務類型,如告警事件等。采用傳輸速度較快、可靠性較低的用戶數據報協議(user datagram protocol,UDP)進行周期性報文的傳輸,必須避免數據傳輸沖突,文中采用時隙劃分的策略避免了沖突。
為了進行有效的時隙劃分,主從節點的高精度時鐘同步是必要前提。本文采用的時鐘同步算法是在IEEE 1588中的PTP基礎上進行改進的。應用PTP實現主從時鐘同步主要是通過主節點與從節點進行報文傳輸,并在發送時刻和接收時刻打上時間戳,由接收方根據時間戳信息計算出主從時鐘偏差Offset和網絡傳輸時延Delay并據此完成時鐘校正。PTP定義了4種類型報文:Sync(同步報文)、Follow-Up(跟隨報文)、Delay-Req(延時測量報文)、Delay-Resp(延時測量響應報文),具體的報文傳輸流程如圖2(a)所示,從節點根據時間戳ti(i=1,2,3,4)并通過式(1)、式(2)計算求得Offset和Delay的值,從節點通過對從時鐘加上Offset值以實現主從時鐘的一致性
Delay=((t2-t1)+(t4-t3))/2
(1)
Offset=((t2-t1)-(t4-t3))/2
(2)
為了解決網卡緩存效應帶來的問題,本文采用握手機制和阻塞的SOCKET套接字進行時鐘同步算法中的報文傳輸,即在連續發送的兩條報文之間增加一條接收確認報文,如圖2(b)所示,主節點向從節點發送Sync報文并且收到接收確認報文Sync-Ack之后,才會向從節點發送Follow-Up報文,避免了從節點同時接收到兩條報文。經過以上過程即完成了一次主從時鐘同步,使主時鐘和從時鐘近似相等,其偏差的大小取決于獲取時間戳的精度和網絡的穩定性等因素。隨著時間的推移,主從時鐘偏差會不斷增大,可通過周期性地進行上述過程,保持主從時鐘同步,周期時間的取值由系統對時鐘同步精度的需求決定,本文的研究中以1s為周期。對于高精度時間戳的獲取,通過Windows平臺下的API接口函數QueryPerformancePrequency()和QueryPerformanceCounter()完成,可以達到1 μs的精度。

圖2 改進前后時鐘同步原理
在多軸運動控制系統中,為了保證數據傳輸的確定性,本文通過時隙劃分使得各軸的數據傳輸分別位于不同的時隙中,確保每個時刻只有一個從節點與主節點進行網絡通信,按照時隙劃分的策略實現系統確定性的任務調度。
在運動控制網絡中,針對周期性任務和非周期性任務并存的特點,將每個通信宏周期劃分為周期性數據通信時間片和非周期性數據通信時間片,其中周期性數據通信時間片用于主節點向從節點發送運動控制指令和從節點向主節點反饋運動信息;通信宏周期的其余部分為非周期性數據通信時間片,用于非周期性任務發生時的數據傳輸。下一周期發送的指令需要根據上一周期反饋的數據生成,把從節點向主節點反饋數據時間片配置在宏周期的末段,距離下一周期的主節點向從節點發送指令時間片最近,如圖3所示,使得新指令的生成能充分利用實時的運動反饋信息,達到更精確的控制效果。在一個主節點與多個從節點通信時,將周期性數據通信時間片按從節點次序劃分,只有在每個從節點所屬的時間片內,主節點才會與之進行網絡通信,避免數據傳輸沖突。

圖3 系統通信網絡的時隙劃分示意
由于主從節點的時鐘同步是包含一定誤差的,導致其時標存在偏差,為了保證在每個時隙中主節點和各從節點數據傳輸不發生沖突,在時隙劃分時,必須對時隙留以保護時間,即從時隙起始到數據開始發送之間的發送起始保護時間,以及從數據發送完成到時隙結束之間的發送完成保護時間,各保護時間確保了每個時隙中只有一個從節點和主節點進行網絡通信。即
Ts+Te+Td=Td·α
(3)
式中Ts為發送起始保護時間;Te為發送完成保護時間;Td為網絡傳輸時間;α為裕度系數,取大于1的值,反映了時隙的大小,根據經驗和大量實驗得出。時隙兩端的時標影響因素近似相同,有
(4)
任務調度就是按照上述時隙劃分策略,由時間觸發和事件觸發任務有序高效執行的過程。主節點向從節點發送運動控制指令以及從節點向主節點反饋數據由定時線程觸發,報文處理任務由事件觸發,其事件為成功接收到從節點反饋的運動信息,時鐘再同步任務由時間和事件共同觸發,當到達再同步的時間且無更高優先級的事件發生時,進行時鐘再同步,否則在下一個通信宏周期中滿足觸發條件時進行。系統啟動后,對各節點進行配置并完成系統初始化,完成主從時鐘同步后,啟動定時線程,當各從節點的發送指令時間片到來時,主節點向相應從節點發送運動控制指令;在非周期性數據通信時間片內,對非周期性任務按照優先級進行響應處理;當各從節點的反饋數據時間片到來時,主節點被觸發接收相應從節點的反饋數據;經過報文解析及處理后,生成新的運動控制指令,并在下一個通信宏周期中發送至各從節點。按照通信宏周期周期性地執行任務。任務調度機制如圖4所示,Periodic Task指被安排在周期性數據通信時間片中執行的周期性任務,Aperiodic Task指被安排在非周期性數據通信時間片中執行的非周期性任務,系統按照任務的類型及優先級進行調度。

圖4 任務調度機制
本文針對不同類型的任務,系統創建不同的工作線程,使線程間具有較高的獨立性并且減少線程的任務量。系統中主要包含時鐘同步類線程、數據通信類線程、數據處理類線程、定時類線程。時鐘同步類線程執行的任務是通過采用改進的IEEE 1588中的PTP進行主從時鐘同步,在系統初次進行主從時鐘同步和滿足時鐘再同步條件時,觸發該類線程的執行;數據通信類線程的任務是實現各節點間數據的交互,當發送指令時間片或反饋數據時間片到達時,觸發線程的執行;數據處理類線程的任務是根據反饋的運動信息生成新的運動控制指令;定時類線程的任務是按照系統配置,當到達預設的時刻時,觸發相應任務的執行,其控制著整個系統的執行順序。
為驗證運動控制網絡性能,搭建了如圖5所示的兩軸跟隨平臺。實驗系統為1個主節點和2個從節點組成的多軸運動控制系統。其中,主節點為PC,Windows 7操作系統,處理器為Intel Core i3,CPU主頻為2.40 GHz,從節點為運動控制器,通過驅動器控制電機運動。分別進行以下實驗,本文開發平臺為Visual Studio 2013。

圖5 實驗裝置
1)時鐘同步性能實驗
采用改進的IEEE 1588中的PTP進行主從時鐘同步,主節點以1 s為周期與從節點進行周期性時鐘同步,共進行500次實驗,時鐘同步后主從時鐘偏差(Offset)的波動和頻率分布如圖6所示,Offset在一定范圍內波動,平均值為5.79 μs,標準差為7.43 μs,同步性能可靠,可有效應用于多軸運動控制系統中。

圖6 時鐘同步性能實驗結果
2)傳輸時延測量實驗
在主節點和從節點分別記錄數據發送和接收時刻的時間戳,其差值作為傳輸時延的測量值,分別進行500次實驗,時延結果波動如圖7所示,其均值為255.8 μs,標準差為5.24 μs,滿足系統實時性要求。

圖7 傳輸時延波動
3)兩軸同步跟隨性能實驗
實驗選定正弦曲線作為運動軌跡,由從節點2對從節點1進行運動跟隨,效果如圖8所示,圖中右上角部分為跟隨起始階段的局部放大圖。用節點1與節點2的各點運動位置做差值運算,計算得出平均跟隨誤差為0.63 rad,具有良好的跟隨性能。

圖8 2個從節點的跟隨曲線
為了解決多軸運動控制網絡中數據傳輸的不確定性和非實時性,本文提出了一種基于時隙劃分的確定性任務調度方案,并對IEEE 1588中的PTP進行了改進,實現主從節點時鐘同步。通過時鐘同步性能實驗和兩個從節點的跟隨實驗等驗證了文中調度方案的有效性。