鐘朝勇,胡 波
(寧波中國科學(xué)院信息技術(shù)應(yīng)用研究院,浙江 寧波 315100)
隨著智能終端的不斷涌現(xiàn),以及相關(guān)龍頭企業(yè)在工業(yè)互聯(lián)網(wǎng)領(lǐng)域不斷發(fā)聲,使得工業(yè)互聯(lián)網(wǎng)的熱度持續(xù)攀升,逐漸走入大眾視野。工業(yè)互聯(lián)網(wǎng)將工業(yè)制造、工業(yè)經(jīng)濟與互聯(lián)網(wǎng)等新興技術(shù)融合,形成智能化產(chǎn)業(yè)生態(tài)鏈,通過數(shù)字技術(shù)與工業(yè)相連接,為工業(yè)制造轉(zhuǎn)型、數(shù)字化升級、信息化建設(shè)提供強有力的基礎(chǔ),為新型產(chǎn)業(yè)的孵化奠定基礎(chǔ)。隨著數(shù)據(jù)量的增長,信息復(fù)雜程度越來越高,為提高運營效率,選擇合適的通信協(xié)議至關(guān)重要。本文首先對Modbus與PowerLink通信協(xié)議進行介紹,再針對其消息格式、數(shù)據(jù)傳輸特點及安全性進行對比,并分析它們各自所適用的工業(yè)互聯(lián)網(wǎng)場景。
Modbus與PowerLink是目前應(yīng)用比較廣泛的開源實時通信協(xié)議,常用于工業(yè)電子設(shè)備之間的通信。
Modbus協(xié)議是由Modicon于1979年發(fā)明的首款服務(wù)于工業(yè)生產(chǎn)的標準總線通信協(xié)議。該通信協(xié)議可擴展、開源,優(yōu)點包括但不限于強大的適應(yīng)性、友好的開源性、協(xié)議格式易懂等,在工業(yè)生產(chǎn)總線中具有舉足輕重的作用。
Modbus協(xié)議采用主從通信模式(Master-Slaver),主機將消息幀發(fā)送給從機,從機收到消息后作出應(yīng)答,返回應(yīng)答幀,并通過串行協(xié)議進行封裝。在通過Modbus網(wǎng)絡(luò)傳輸數(shù)據(jù)時,Modbus PDU由主機構(gòu)建。當前操作類型由PDU中的功能代碼表示,數(shù)據(jù)字段指代執(zhí)行該功能所需的參數(shù)。ADU通過主機在PDU上添加其他所需數(shù)據(jù)特征字段而形成,包含一個地址字段,表示從機地址,這使得從主機到從機的尋址更加容易。隊列包含一個驗證代碼,用于驗證消息內(nèi)容的冗余性,用來保證數(shù)據(jù)傳輸?shù)臏蚀_性。最后,在收到主機請求后,從機處理數(shù)據(jù)的同時反饋響應(yīng)幀。響應(yīng)幀中,ADU與PDU的信息格式與發(fā)送幀一致,數(shù)據(jù)字段涵蓋了從機操作后的結(jié)果。若從機在Response或Request的過程中發(fā)生錯誤,會反饋異常報文。該異常報文包括異常功能碼和其他異常碼,為完成后續(xù)的處理,需要提供這部分異常碼,便于主機識別異常。Modbus事務(wù)處理圖如圖1所示。
圖1 Modbus事務(wù)處理圖
PowerLink是在標準以太網(wǎng)協(xié)議IEEE802.3之上制定的Master-Slave運作方式的工業(yè)網(wǎng)絡(luò)通信協(xié)議,其具有傳輸速率快、免費開源等特征,在CNC、機器人、城市交通等領(lǐng)域應(yīng)用廣泛。主站負責(zé)時間段的分配和從站的網(wǎng)絡(luò)管理,還被稱為管理節(jié)點(Management Node, MN)。從站將全過程的PowerLink通信周期稱為同步通信階段、異步通信階段和空閑階段。在同步通信階段,主站使每個從站的高精度時鐘同步,再基于網(wǎng)絡(luò)配置polling從站。只有當從站接收到polling請求后,數(shù)據(jù)才能傳輸。PowerLink通信周期如圖2所示。
圖2 PowerLink通信周期
PowerLink協(xié)議的實現(xiàn)方法有許多種,通過查閱相關(guān)文獻得到以下幾種實現(xiàn)方式。
(1)通過ZYNQ平臺實現(xiàn)。將ZYNQ作為硬件平臺基礎(chǔ),在平臺上建立2個MicroBlaze軟核,用以承載互相獨立的2個PowerLink協(xié)議。通過雙網(wǎng)絡(luò)平臺復(fù)用,達到PowerLink站點隨意組合的效果,以完善網(wǎng)絡(luò)結(jié)構(gòu)、減少費用開支??赏ㄟ^Wireshark軟件接入網(wǎng)絡(luò)進行測試,查看具體的網(wǎng)絡(luò)運行情況。
(2)通過FPGA平臺實現(xiàn)。采用C語言編程,在FPGA硬件平臺上嵌入NIOS II軟核CPU,并啟用C代碼所在區(qū)域;在PowerLink網(wǎng)絡(luò)接口通過以太網(wǎng)控制芯片用作配置結(jié)點和受控結(jié)點的通信,以實現(xiàn)高性能網(wǎng)絡(luò)化自動控制,保證PowerLink受控結(jié)點的實時性與確定性。
(3)通過VxWorks平臺實現(xiàn)。VxWorks RTOS的價值在工業(yè)控制領(lǐng)域被愈發(fā)重視。在VxWorks網(wǎng)絡(luò)協(xié)議棧的Data Link Layer與網(wǎng)絡(luò)協(xié)議層中嵌入MUX層,實現(xiàn)4個功能函數(shù)。將PowerLink嵌入其中,并初始化創(chuàng)建網(wǎng)絡(luò)內(nèi)存池,利用muxbind命令與協(xié)議棧進行整合,調(diào)用相關(guān)函數(shù)對數(shù)據(jù)幀進行處理。
(1)Modbus/ASCII
當Modbus總線進行通信時,協(xié)議數(shù)據(jù)負載中每8 Byte轉(zhuǎn)化為2個ASCII字符,字符傳輸時間在小于1 s的情況下不會產(chǎn)生誤差。數(shù)據(jù)錯誤校驗為縱向冗余校驗(LRC)。
(2)Modbus/RTU
RTU模式下,信息幀每8 Byte拆成2個4 Byte十六進制的字符進行通信。Modbus/RTU通信采用循環(huán)冗余校驗(Cyclic Redundancy Check, CRC)方式,主機向從機發(fā)送信息幀時,攜帶CRC碼傳輸。當從機收到請求時,先消除傳輸信息中攜帶的CRC校驗碼,接著重新核算CRC校驗碼后與主機發(fā)送的CRC碼比對,兩者相同則代表信息傳輸正確。
(3)Modbus/TCP
Modbus/TCP協(xié)議通信通過連接建立,連接過程包括建立連接、進行通信及釋放連接。Modbus/TCP協(xié)議以位于數(shù)據(jù)鏈路層的Modbus RTU串行鏈路協(xié)議為基礎(chǔ),物理層采用以太網(wǎng)接口,網(wǎng)絡(luò)層采用IP協(xié)議,傳輸層采用TCP協(xié)議,無會話層和表示層。在應(yīng)用層將特定的報文頭添加到標準的Modbus RTU協(xié)議報文,然后插入TCP協(xié)議報文中,Modbus/TCP協(xié)議報文即可借助TCP/IP協(xié)議在以太網(wǎng)中傳輸。
現(xiàn)代網(wǎng)絡(luò)采用分層結(jié)構(gòu)體系,按照不同功能進行層次劃分。國際化標準組織(ISO)在開放系統(tǒng)互聯(lián)(OSI)參考模型中將網(wǎng)絡(luò)系統(tǒng)體系劃分為7層,見表1所列。
表1 ISO/OSI模型分層
Modbus串行鏈路協(xié)議位于OSI模型的第二層,即數(shù)據(jù)鏈路層,通過異步方式傳輸信息。在物理層中,Modbus串行鏈路協(xié)議可采用TIA/EIA-485或TIA/EIA-232等物理接口,如RS 485。串行鏈路的Modbus協(xié)議模型如圖3所示。
圖3 Modbus協(xié)議模型
PowerLink協(xié)議在3個分層上作了相應(yīng)改動,包括物理層、數(shù)據(jù)鏈路層和應(yīng)用層。PowerLink物理層基于標準以太網(wǎng),遵循IEEE 802. 3快速以太網(wǎng)標準。PowerLink主要作用于數(shù)據(jù)鏈路層,以有效改善通信質(zhì)量,提高通信速度。應(yīng)用層依照CANopen標準制定。CANopen是應(yīng)用層協(xié)議,提供統(tǒng)一的對外接口供其他應(yīng)用使用,其他終端的應(yīng)用能夠通過該接口與應(yīng)用程序通信。PowerLink協(xié)議模型如圖4所示。
圖4 PowerLink協(xié)議模型
PowerLink數(shù)據(jù)幀嵌合在標準以太網(wǎng)數(shù)據(jù)信息中,與標準以太網(wǎng)一致,數(shù)據(jù)幀長度最長為1 518 Byte,最短為64 Byte。PowerLink數(shù)據(jù)幀結(jié)構(gòu)如圖5所示,其中0~13 Byte是標準Ethernet的幀頭,+1~+4為CRC校驗序列,14~Byte是PowerLink數(shù)據(jù)幀信息。
圖5 PowerLink數(shù)據(jù)幀
相較于PowerLink,Modbus/TCP模式下的協(xié)議幀更為緊湊、簡潔。為使報文能夠在TCP/IP協(xié)議上傳輸,Modbus/TCP需要在Modbus/RTU串行鏈路上添加MBAP報文頭。該報文頭攜帶了長度信息,即使數(shù)據(jù)被分割傳輸也能夠識別相應(yīng)請求,且由于TCP/IP自身的優(yōu)勢,使得Modbus/TCP進行CRC校驗便可保證其傳輸準確性。圖6所示為Modbus/TCP的數(shù)據(jù)幀格式。
圖6 Modbus/TCP數(shù)據(jù)幀格式
PowerLink與Modbus均采用Master-Slave模式通信,不同的是,Modbus主站不僅可單獨與從站進行信息傳輸,也能以廣播方式和從站通信。在單獨傳輸時,將返回一個Message作為回應(yīng)。采用廣播方式通信時,從設(shè)備無應(yīng)答。PowerLink需要主站在同步階段與其他各從站進行高精度時鐘同步,依據(jù)主站配置進行輪詢,在接收到請求后,做出應(yīng)答,進行數(shù)據(jù)傳輸。PowerLink支持異步通信,可進行非實時性數(shù)據(jù)傳輸。
PowerLink協(xié)議具有以下特性:
(1)開放性:具有開源的協(xié)議代碼,可在多種硬件平臺上實現(xiàn);
(2)實時性:在FPGA硬件平臺上,最快通信循環(huán)周期小于 100 μs;
(3)抖動范圍:網(wǎng)絡(luò)抖動范圍為50~70 ns;
(4)支持多種網(wǎng)絡(luò)拓撲結(jié)構(gòu);
(5)支持PowerLink網(wǎng)絡(luò)中各節(jié)點之間的交叉通信。
Modbus協(xié)議的特性包括如下幾方面:
(1)標準、開放:使用者無需繳納許可費,不會涉及知識產(chǎn)權(quán)問題,具有國家標準;
(2)協(xié)議產(chǎn)品成本低:Modbus協(xié)議攜帶有報文信息,支持多種電氣API,信息傳輸能夠使用的媒介多,購買方便;
(3)Modbus協(xié)議幀簡單、緊湊、高效,易于用戶理解使用,開發(fā)便捷。
工業(yè)通信協(xié)議活躍在工業(yè)、建筑、基礎(chǔ)設(shè)施等領(lǐng)域,由于其開放性,使用范圍還在不斷擴張。
將Modbus協(xié)議作為通信協(xié)議,為Gateway添加監(jiān)聽功能,不僅能夠?qū)χ髡景l(fā)送的數(shù)據(jù)信息進行監(jiān)聽,同時也能夠接收由從站發(fā)出的響應(yīng)數(shù)據(jù)。
Gateway監(jiān)聽過程:主站使用Modbus總線對收到的數(shù)據(jù)報文進行解析,獲取主站Request信息,從站在響應(yīng)由主站發(fā)送的數(shù)據(jù)報文后將其與主站信息進行關(guān)聯(lián),同時對所要監(jiān)控的Modbus從站設(shè)備進行數(shù)據(jù)讀寫以及分析處理。
以PowerLink協(xié)議作為通信協(xié)議,網(wǎng)關(guān)到LAN接口的緩沖數(shù)據(jù)長度為lenP,通過后臺程序LanReader()函數(shù)監(jiān)聽lenP數(shù)值的變化,一旦發(fā)現(xiàn)非零就通過函數(shù)將數(shù)據(jù)發(fā)送給遠程主機;當遠程主機將信息發(fā)送給PowerLink網(wǎng)絡(luò)中某從站時,就將數(shù)據(jù)寫入對應(yīng)變量(對象字典中的某個對象),主站按照對象字典將數(shù)據(jù)發(fā)送到指定從站。
從上述舉例可以看出,在網(wǎng)關(guān)實現(xiàn)的過程中,Modbus實現(xiàn)相比更簡單,可以同時從主站發(fā)出請求與接收從站響應(yīng),這使得通信過程中的兼容性大大提高。PowerLink更注重實效性,通過緩沖數(shù)據(jù)的變化對請求作出響應(yīng)。如果工業(yè)互聯(lián)網(wǎng)需要靈活、實時性好的通信協(xié)議,那么Modbus是較好的選擇。如果需要完成非實時性數(shù)據(jù)傳輸或異步傳輸,則選用PowerLink協(xié)議作為通信協(xié)議比較可靠。
從王林浩等人智能斷路器中Modbus/TCP協(xié)議的實時性測試研究中可以得出,當寄存器個數(shù)不同時,Modbus/TCP信息傳輸?shù)臅r延比較小且變化不大,以此證明實時性這一特征為Modbus所擁有。圖7為該研究中不同個數(shù)寄存器下測得的通信時延信息。
圖7 不同個數(shù)寄存器下測得的通信時延信息
對于PowerLink的通信性能測試可從李駿杰等人對于PowerLink多客戶端通信系統(tǒng)的設(shè)計中得出。將數(shù)據(jù)差為2的連續(xù)數(shù)據(jù)從主站發(fā)送給從站,在從站收到數(shù)據(jù)后再以數(shù)據(jù)差為1的連續(xù)數(shù)據(jù)返回主站。最后通過Wireshark進行數(shù)據(jù)驗證,其中驗證指標包括測試時間、傳輸時間、丟包率以及誤碼率。表2為測試結(jié)果。
表2 性能測試結(jié)果
由該測試結(jié)果可知,通過PowerLink協(xié)議進行多端通信非常穩(wěn)定,丟包率為0,隨著測試時間增長,誤碼率變高,但仍在可允許范圍內(nèi),這對于數(shù)據(jù)精度要求較高的工業(yè)互聯(lián)網(wǎng)通信具有較大幫助。
本文從目前應(yīng)用比較廣泛的工業(yè)互聯(lián)網(wǎng)通信協(xié)議Modbus與PowerLink入手,首先,對其進行了簡要介紹,再對其實現(xiàn)方式進行描述。接著,對兩者的網(wǎng)絡(luò)模型、協(xié)議幀結(jié)構(gòu)、協(xié)議特性進行對比分析,通過特點差異來介紹他們適合的應(yīng)用場景。最后,通過其他協(xié)議性能研究案例體現(xiàn)在不同環(huán)境和測試壓力下2種通信協(xié)議性能的優(yōu)劣。