胡 凱, 薛凌云, 陳慶光
(杭州電子科技大學(xué) 生命信息與儀器工程學(xué)院,浙江 杭州 310018)
隨著工業(yè)自動(dòng)化的發(fā)展,多軸運(yùn)動(dòng)控制系統(tǒng)被廣泛應(yīng)用于數(shù)控機(jī)床、仿生機(jī)器人、印刷設(shè)備等領(lǐng)域[1,2],且正朝著網(wǎng)絡(luò)化方向發(fā)展[3]。以太網(wǎng)由于具有低成本、開(kāi)放性好等特點(diǎn)被廣泛研究,而傳統(tǒng)以太網(wǎng)是一種非確定性的通信調(diào)度方式[4],無(wú)法滿(mǎn)足多軸運(yùn)動(dòng)控制系統(tǒng)中數(shù)據(jù)傳輸?shù)拇_定性和實(shí)時(shí)性要求。美國(guó)開(kāi)發(fā)的CSMA/DCR和佩特雷大學(xué)研發(fā)的GIT-CSMA/CD等協(xié)議能夠?qū)崿F(xiàn)確定性通信,但需要修改以太網(wǎng)的MAC層協(xié)議[5];通過(guò)硬件改進(jìn)以太網(wǎng)不確定性的方法會(huì)使成本大大增加[6]。由于多軸運(yùn)動(dòng)控制系統(tǒng)中各節(jié)點(diǎn)采用的時(shí)鐘源不同,節(jié)點(diǎn)間時(shí)鐘同步的精度對(duì)提升多軸協(xié)同性能具有重要作用[7],在時(shí)鐘同步算法中,IEEE 1588中的PTP(precision timing protocol)[8]具有易于實(shí)現(xiàn)、占用資源少等優(yōu)點(diǎn),被廣泛應(yīng)用,但當(dāng)采用純軟件方法實(shí)現(xiàn)時(shí),數(shù)據(jù)傳輸時(shí)的網(wǎng)卡緩存效應(yīng)(數(shù)據(jù)在網(wǎng)絡(luò)中傳輸時(shí),首先存在源節(jié)點(diǎn)網(wǎng)卡的緩存中,并在網(wǎng)絡(luò)空閑時(shí)發(fā)送至目的節(jié)點(diǎn)網(wǎng)卡的緩沖區(qū))會(huì)影響報(bào)文接收時(shí)間測(cè)量的精確性,導(dǎo)致主從節(jié)點(diǎn)時(shí)鐘同步失敗[9]。
本文采取的方法是在以太網(wǎng)MAC層上通過(guò)軟件調(diào)度來(lái)達(dá)到實(shí)時(shí)以太網(wǎng)的確定性和實(shí)時(shí)性通信。采用改進(jìn)的IEEE 1588中的PTP實(shí)現(xiàn)主從節(jié)點(diǎn)間的時(shí)鐘同步,將通信宏周期劃分為周期性報(bào)文傳輸時(shí)間片和非周期性報(bào)文傳輸時(shí)間片,按照時(shí)隙劃分策略完成分時(shí)發(fā)送的確定性網(wǎng)絡(luò)通信,避免了報(bào)文沖突造成的不確定延時(shí)。
運(yùn)動(dòng)控制系統(tǒng)是采用一個(gè)主節(jié)點(diǎn)個(gè)人電腦(PC)協(xié)調(diào)控制多個(gè)從節(jié)點(diǎn)(運(yùn)動(dòng)控制器),主節(jié)點(diǎn)與從節(jié)點(diǎn)通過(guò)自定義總線(xiàn)連接成分布式網(wǎng)絡(luò),網(wǎng)絡(luò)拓?fù)鋱D如圖1所示。規(guī)劃控制層中的PC負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)管理以及主從節(jié)點(diǎn)間確定性的任務(wù)調(diào)度,其為系統(tǒng)中任務(wù)創(chuàng)建相應(yīng)的線(xiàn)程,通過(guò)管理它們的觸發(fā)條件,狀態(tài)轉(zhuǎn)換過(guò)程來(lái)實(shí)現(xiàn)系統(tǒng)任務(wù)的有序執(zhí)行,并對(duì)產(chǎn)生的數(shù)據(jù)進(jìn)行存儲(chǔ);網(wǎng)絡(luò)傳輸層中的數(shù)據(jù)傳輸通道,負(fù)責(zé)數(shù)據(jù)的發(fā)送與接收;運(yùn)動(dòng)控制層中的運(yùn)動(dòng)控制器通過(guò)以太網(wǎng)與主節(jié)點(diǎn)連接,其與驅(qū)動(dòng)執(zhí)行層中的執(zhí)行機(jī)構(gòu)共同組成了運(yùn)動(dòng)控制系統(tǒng)中的一個(gè)軸。
圖1 系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
根據(jù)系統(tǒng)任務(wù)的時(shí)間特性,將其分為周期性任務(wù)和非周期性任務(wù),周期性任務(wù)指執(zhí)行時(shí)間和觸發(fā)時(shí)刻都被嚴(yán)格約束的任務(wù)類(lèi)型,如主節(jié)點(diǎn)發(fā)送運(yùn)動(dòng)控制指令和從節(jié)點(diǎn)反饋運(yùn)動(dòng)信息;非周期性任務(wù)指沒(méi)有固定的觸發(fā)時(shí)刻,隨機(jī)發(fā)生的任務(wù)類(lèi)型,如告警事件等。采用傳輸速度較快、可靠性較低的用戶(hù)數(shù)據(jù)報(bào)協(xié)議(user datagram protocol,UDP)進(jìn)行周期性報(bào)文的傳輸,必須避免數(shù)據(jù)傳輸沖突,文中采用時(shí)隙劃分的策略避免了沖突。
為了進(jìn)行有效的時(shí)隙劃分,主從節(jié)點(diǎn)的高精度時(shí)鐘同步是必要前提。本文采用的時(shí)鐘同步算法是在IEEE 1588中的PTP基礎(chǔ)上進(jìn)行改進(jìn)的。應(yīng)用PTP實(shí)現(xiàn)主從時(shí)鐘同步主要是通過(guò)主節(jié)點(diǎn)與從節(jié)點(diǎn)進(jìn)行報(bào)文傳輸,并在發(fā)送時(shí)刻和接收時(shí)刻打上時(shí)間戳,由接收方根據(jù)時(shí)間戳信息計(jì)算出主從時(shí)鐘偏差Offset和網(wǎng)絡(luò)傳輸時(shí)延Delay并據(jù)此完成時(shí)鐘校正。PTP定義了4種類(lèi)型報(bào)文:Sync(同步報(bào)文)、Follow-Up(跟隨報(bào)文)、Delay-Req(延時(shí)測(cè)量報(bào)文)、Delay-Resp(延時(shí)測(cè)量響應(yīng)報(bào)文),具體的報(bào)文傳輸流程如圖2(a)所示,從節(jié)點(diǎn)根據(jù)時(shí)間戳ti(i=1,2,3,4)并通過(guò)式(1)、式(2)計(jì)算求得Offset和Delay的值,從節(jié)點(diǎn)通過(guò)對(duì)從時(shí)鐘加上Offset值以實(shí)現(xiàn)主從時(shí)鐘的一致性
Delay=((t2-t1)+(t4-t3))/2
(1)
Offset=((t2-t1)-(t4-t3))/2
(2)
為了解決網(wǎng)卡緩存效應(yīng)帶來(lái)的問(wèn)題,本文采用握手機(jī)制和阻塞的SOCKET套接字進(jìn)行時(shí)鐘同步算法中的報(bào)文傳輸,即在連續(xù)發(fā)送的兩條報(bào)文之間增加一條接收確認(rèn)報(bào)文,如圖2(b)所示,主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送Sync報(bào)文并且收到接收確認(rèn)報(bào)文Sync-Ack之后,才會(huì)向從節(jié)點(diǎn)發(fā)送Follow-Up報(bào)文,避免了從節(jié)點(diǎn)同時(shí)接收到兩條報(bào)文。經(jīng)過(guò)以上過(guò)程即完成了一次主從時(shí)鐘同步,使主時(shí)鐘和從時(shí)鐘近似相等,其偏差的大小取決于獲取時(shí)間戳的精度和網(wǎng)絡(luò)的穩(wěn)定性等因素。隨著時(shí)間的推移,主從時(shí)鐘偏差會(huì)不斷增大,可通過(guò)周期性地進(jìn)行上述過(guò)程,保持主從時(shí)鐘同步,周期時(shí)間的取值由系統(tǒng)對(duì)時(shí)鐘同步精度的需求決定,本文的研究中以1s為周期。對(duì)于高精度時(shí)間戳的獲取,通過(guò)Windows平臺(tái)下的API接口函數(shù)QueryPerformancePrequency()和QueryPerformanceCounter()完成,可以達(dá)到1 μs的精度。
圖2 改進(jìn)前后時(shí)鐘同步原理
在多軸運(yùn)動(dòng)控制系統(tǒng)中,為了保證數(shù)據(jù)傳輸?shù)拇_定性,本文通過(guò)時(shí)隙劃分使得各軸的數(shù)據(jù)傳輸分別位于不同的時(shí)隙中,確保每個(gè)時(shí)刻只有一個(gè)從節(jié)點(diǎn)與主節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)通信,按照時(shí)隙劃分的策略實(shí)現(xiàn)系統(tǒng)確定性的任務(wù)調(diào)度。
在運(yùn)動(dòng)控制網(wǎng)絡(luò)中,針對(duì)周期性任務(wù)和非周期性任務(wù)并存的特點(diǎn),將每個(gè)通信宏周期劃分為周期性數(shù)據(jù)通信時(shí)間片和非周期性數(shù)據(jù)通信時(shí)間片,其中周期性數(shù)據(jù)通信時(shí)間片用于主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送運(yùn)動(dòng)控制指令和從節(jié)點(diǎn)向主節(jié)點(diǎn)反饋運(yùn)動(dòng)信息;通信宏周期的其余部分為非周期性數(shù)據(jù)通信時(shí)間片,用于非周期性任務(wù)發(fā)生時(shí)的數(shù)據(jù)傳輸。下一周期發(fā)送的指令需要根據(jù)上一周期反饋的數(shù)據(jù)生成,把從節(jié)點(diǎn)向主節(jié)點(diǎn)反饋數(shù)據(jù)時(shí)間片配置在宏周期的末段,距離下一周期的主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送指令時(shí)間片最近,如圖3所示,使得新指令的生成能充分利用實(shí)時(shí)的運(yùn)動(dòng)反饋信息,達(dá)到更精確的控制效果。在一個(gè)主節(jié)點(diǎn)與多個(gè)從節(jié)點(diǎn)通信時(shí),將周期性數(shù)據(jù)通信時(shí)間片按從節(jié)點(diǎn)次序劃分,只有在每個(gè)從節(jié)點(diǎn)所屬的時(shí)間片內(nèi),主節(jié)點(diǎn)才會(huì)與之進(jìn)行網(wǎng)絡(luò)通信,避免數(shù)據(jù)傳輸沖突。
圖3 系統(tǒng)通信網(wǎng)絡(luò)的時(shí)隙劃分示意
由于主從節(jié)點(diǎn)的時(shí)鐘同步是包含一定誤差的,導(dǎo)致其時(shí)標(biāo)存在偏差,為了保證在每個(gè)時(shí)隙中主節(jié)點(diǎn)和各從節(jié)點(diǎn)數(shù)據(jù)傳輸不發(fā)生沖突,在時(shí)隙劃分時(shí),必須對(duì)時(shí)隙留以保護(hù)時(shí)間,即從時(shí)隙起始到數(shù)據(jù)開(kāi)始發(fā)送之間的發(fā)送起始保護(hù)時(shí)間,以及從數(shù)據(jù)發(fā)送完成到時(shí)隙結(jié)束之間的發(fā)送完成保護(hù)時(shí)間,各保護(hù)時(shí)間確保了每個(gè)時(shí)隙中只有一個(gè)從節(jié)點(diǎn)和主節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)通信。即
Ts+Te+Td=Td·α
(3)
式中Ts為發(fā)送起始保護(hù)時(shí)間;Te為發(fā)送完成保護(hù)時(shí)間;Td為網(wǎng)絡(luò)傳輸時(shí)間;α為裕度系數(shù),取大于1的值,反映了時(shí)隙的大小,根據(jù)經(jīng)驗(yàn)和大量實(shí)驗(yàn)得出。時(shí)隙兩端的時(shí)標(biāo)影響因素近似相同,有
(4)
任務(wù)調(diào)度就是按照上述時(shí)隙劃分策略,由時(shí)間觸發(fā)和事件觸發(fā)任務(wù)有序高效執(zhí)行的過(guò)程。主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送運(yùn)動(dòng)控制指令以及從節(jié)點(diǎn)向主節(jié)點(diǎn)反饋數(shù)據(jù)由定時(shí)線(xiàn)程觸發(fā),報(bào)文處理任務(wù)由事件觸發(fā),其事件為成功接收到從節(jié)點(diǎn)反饋的運(yùn)動(dòng)信息,時(shí)鐘再同步任務(wù)由時(shí)間和事件共同觸發(fā),當(dāng)?shù)竭_(dá)再同步的時(shí)間且無(wú)更高優(yōu)先級(jí)的事件發(fā)生時(shí),進(jìn)行時(shí)鐘再同步,否則在下一個(gè)通信宏周期中滿(mǎn)足觸發(fā)條件時(shí)進(jìn)行。系統(tǒng)啟動(dòng)后,對(duì)各節(jié)點(diǎn)進(jìn)行配置并完成系統(tǒng)初始化,完成主從時(shí)鐘同步后,啟動(dòng)定時(shí)線(xiàn)程,當(dāng)各從節(jié)點(diǎn)的發(fā)送指令時(shí)間片到來(lái)時(shí),主節(jié)點(diǎn)向相應(yīng)從節(jié)點(diǎn)發(fā)送運(yùn)動(dòng)控制指令;在非周期性數(shù)據(jù)通信時(shí)間片內(nèi),對(duì)非周期性任務(wù)按照優(yōu)先級(jí)進(jìn)行響應(yīng)處理;當(dāng)各從節(jié)點(diǎn)的反饋數(shù)據(jù)時(shí)間片到來(lái)時(shí),主節(jié)點(diǎn)被觸發(fā)接收相應(yīng)從節(jié)點(diǎn)的反饋數(shù)據(jù);經(jīng)過(guò)報(bào)文解析及處理后,生成新的運(yùn)動(dòng)控制指令,并在下一個(gè)通信宏周期中發(fā)送至各從節(jié)點(diǎn)。按照通信宏周期周期性地執(zhí)行任務(wù)。任務(wù)調(diào)度機(jī)制如圖4所示,Periodic Task指被安排在周期性數(shù)據(jù)通信時(shí)間片中執(zhí)行的周期性任務(wù),Aperiodic Task指被安排在非周期性數(shù)據(jù)通信時(shí)間片中執(zhí)行的非周期性任務(wù),系統(tǒng)按照任務(wù)的類(lèi)型及優(yōu)先級(jí)進(jìn)行調(diào)度。
圖4 任務(wù)調(diào)度機(jī)制
本文針對(duì)不同類(lèi)型的任務(wù),系統(tǒng)創(chuàng)建不同的工作線(xiàn)程,使線(xiàn)程間具有較高的獨(dú)立性并且減少線(xiàn)程的任務(wù)量。系統(tǒng)中主要包含時(shí)鐘同步類(lèi)線(xiàn)程、數(shù)據(jù)通信類(lèi)線(xiàn)程、數(shù)據(jù)處理類(lèi)線(xiàn)程、定時(shí)類(lèi)線(xiàn)程。時(shí)鐘同步類(lèi)線(xiàn)程執(zhí)行的任務(wù)是通過(guò)采用改進(jìn)的IEEE 1588中的PTP進(jìn)行主從時(shí)鐘同步,在系統(tǒng)初次進(jìn)行主從時(shí)鐘同步和滿(mǎn)足時(shí)鐘再同步條件時(shí),觸發(fā)該類(lèi)線(xiàn)程的執(zhí)行;數(shù)據(jù)通信類(lèi)線(xiàn)程的任務(wù)是實(shí)現(xiàn)各節(jié)點(diǎn)間數(shù)據(jù)的交互,當(dāng)發(fā)送指令時(shí)間片或反饋數(shù)據(jù)時(shí)間片到達(dá)時(shí),觸發(fā)線(xiàn)程的執(zhí)行;數(shù)據(jù)處理類(lèi)線(xiàn)程的任務(wù)是根據(jù)反饋的運(yùn)動(dòng)信息生成新的運(yùn)動(dòng)控制指令;定時(shí)類(lèi)線(xiàn)程的任務(wù)是按照系統(tǒng)配置,當(dāng)?shù)竭_(dá)預(yù)設(shè)的時(shí)刻時(shí),觸發(fā)相應(yīng)任務(wù)的執(zhí)行,其控制著整個(gè)系統(tǒng)的執(zhí)行順序。
為驗(yàn)證運(yùn)動(dòng)控制網(wǎng)絡(luò)性能,搭建了如圖5所示的兩軸跟隨平臺(tái)。實(shí)驗(yàn)系統(tǒng)為1個(gè)主節(jié)點(diǎn)和2個(gè)從節(jié)點(diǎn)組成的多軸運(yùn)動(dòng)控制系統(tǒng)。其中,主節(jié)點(diǎn)為PC,Windows 7操作系統(tǒng),處理器為Intel Core i3,CPU主頻為2.40 GHz,從節(jié)點(diǎn)為運(yùn)動(dòng)控制器,通過(guò)驅(qū)動(dòng)器控制電機(jī)運(yùn)動(dòng)。分別進(jìn)行以下實(shí)驗(yàn),本文開(kāi)發(fā)平臺(tái)為Visual Studio 2013。
圖5 實(shí)驗(yàn)裝置
1)時(shí)鐘同步性能實(shí)驗(yàn)
采用改進(jìn)的IEEE 1588中的PTP進(jìn)行主從時(shí)鐘同步,主節(jié)點(diǎn)以1 s為周期與從節(jié)點(diǎn)進(jìn)行周期性時(shí)鐘同步,共進(jìn)行500次實(shí)驗(yàn),時(shí)鐘同步后主從時(shí)鐘偏差(Offset)的波動(dòng)和頻率分布如圖6所示,Offset在一定范圍內(nèi)波動(dòng),平均值為5.79 μs,標(biāo)準(zhǔn)差為7.43 μs,同步性能可靠,可有效應(yīng)用于多軸運(yùn)動(dòng)控制系統(tǒng)中。
圖6 時(shí)鐘同步性能實(shí)驗(yàn)結(jié)果
2)傳輸時(shí)延測(cè)量實(shí)驗(yàn)
在主節(jié)點(diǎn)和從節(jié)點(diǎn)分別記錄數(shù)據(jù)發(fā)送和接收時(shí)刻的時(shí)間戳,其差值作為傳輸時(shí)延的測(cè)量值,分別進(jìn)行500次實(shí)驗(yàn),時(shí)延結(jié)果波動(dòng)如圖7所示,其均值為255.8 μs,標(biāo)準(zhǔn)差為5.24 μs,滿(mǎn)足系統(tǒng)實(shí)時(shí)性要求。
圖7 傳輸時(shí)延波動(dòng)
3)兩軸同步跟隨性能實(shí)驗(yàn)
實(shí)驗(yàn)選定正弦曲線(xiàn)作為運(yùn)動(dòng)軌跡,由從節(jié)點(diǎn)2對(duì)從節(jié)點(diǎn)1進(jìn)行運(yùn)動(dòng)跟隨,效果如圖8所示,圖中右上角部分為跟隨起始階段的局部放大圖。用節(jié)點(diǎn)1與節(jié)點(diǎn)2的各點(diǎn)運(yùn)動(dòng)位置做差值運(yùn)算,計(jì)算得出平均跟隨誤差為0.63 rad,具有良好的跟隨性能。
圖8 2個(gè)從節(jié)點(diǎn)的跟隨曲線(xiàn)
為了解決多軸運(yùn)動(dòng)控制網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)牟淮_定性和非實(shí)時(shí)性,本文提出了一種基于時(shí)隙劃分的確定性任務(wù)調(diào)度方案,并對(duì)IEEE 1588中的PTP進(jìn)行了改進(jìn),實(shí)現(xiàn)主從節(jié)點(diǎn)時(shí)鐘同步。通過(guò)時(shí)鐘同步性能實(shí)驗(yàn)和兩個(gè)從節(jié)點(diǎn)的跟隨實(shí)驗(yàn)等驗(yàn)證了文中調(diào)度方案的有效性。