1 引言
隨著世界范圍內(nèi)網(wǎng)絡(luò)和信息技術(shù)的日趨成熟,,在工業(yè)通信和自動化應(yīng)用中日益采用以太 網(wǎng)和TCP/IP 協(xié)議作為最主要的通信接口和手段,,向網(wǎng)絡(luò)化、標準化,、開放性方向發(fā)展將是 各種控制系統(tǒng)技術(shù)發(fā)展的主要潮流,。然而,采用串口進行通信的現(xiàn)場設(shè)備仍然大量存在,,且 必將在相當長的一段時間內(nèi)存在,。因此,在串口設(shè)備和工業(yè)以太網(wǎng)之間就需要有一個橋梁,, 來消除工業(yè)現(xiàn)場中的“信息孤島”,。
Modbus/TCP 是Modbus 的延伸,它基于以太網(wǎng)和標準TCP/IP 協(xié)議,,直接應(yīng)用第四層,。 它定義了一個結(jié)構(gòu)簡單的、開放和廣泛應(yīng)用的傳輸協(xié)議,,用于主從式通信,。Modbus TCP/IP 基本上用簡單方式將Modbus 幀嵌入TCP 幀,是一種面向連接的傳送,,它需要響應(yīng),。在TCP 幀中使用開放的Modbus 提供了一種系統(tǒng)規(guī)模可伸縮的方案,,由10 個節(jié)點到100 個網(wǎng)絡(luò)節(jié) 點,。Modbus TCP/IP 在工業(yè)現(xiàn)場得到了廣泛的應(yīng)用,是目前工業(yè)以太網(wǎng)通信的事實上的標準,。
本文以 MOXA 的嵌入式工控機UC7402-LX 為平臺,,在深入研究MODBUS 通信協(xié)議的 基礎(chǔ)上,設(shè)計了一款多功能網(wǎng)關(guān),,既可以實現(xiàn)MODBUS/TCP 與MODBUS/RTU 的雙向轉(zhuǎn)換,, 同時也可以實現(xiàn)MODBUS/TCP 與自定義串口通信協(xié)議的雙向轉(zhuǎn)換。
2 硬件平臺簡介
MOXA UC7402-LX 采用Intel Xscale IXP-422 266Mhz 處理器,,內(nèi)嵌Apache 網(wǎng)頁服務(wù)器 支持PHP 和XML,,低功耗和無風扇的設(shè)計使其結(jié)構(gòu)緊湊,非常適合在工業(yè)環(huán)境當中使用,。 MOXA UC7402-LX 配備有2 個10/100 Mbps 網(wǎng)口和8 個可通過軟件設(shè)置的RS-232/485/422 串口,,并預(yù)裝有linux 系統(tǒng)。
3 MODBUS 協(xié)議
MODBUS是 MODICNO公司最先倡導的一種通信協(xié)議,,經(jīng)過許多公司的實際應(yīng)用,,逐漸被認 可,,成為一種應(yīng)用于工業(yè)控制器上的標準通信協(xié)議,由于其功能比較完善而且協(xié)議開放,,因此,,被廣泛應(yīng)用于工業(yè)現(xiàn)場,在微機化測量設(shè)備之間實現(xiàn)雙向串行多節(jié)點數(shù)字通信,。它連接 單個分散的測量控制設(shè)備,,使之可以相互溝通信息、共同完成自控任務(wù)的網(wǎng)絡(luò)系統(tǒng)與控制系 統(tǒng),,具有分散控制,、使用簡單、簡化系統(tǒng)結(jié)構(gòu),、數(shù)據(jù)易于處理,、節(jié)約硬件設(shè)備、易于安裝和 維護等優(yōu)點,。
3.1 MODBUS RTU
MODBUS有兩種串行傳輸模式,,即RTU模式和ASCII模式。RTU模式以十六進制傳送數(shù)據(jù),, 每個8bit字節(jié)包含兩個4bit的十六進制字符,。而ASCII模式是將一個字節(jié)分為兩個ASCII字符 發(fā)送,。因而在同樣的波特率下,,RTU模式比ASCII模式具有更高的吞吐率。大多數(shù)工業(yè)控制器 采用RTU模式,。
MODBUS RTU的報文幀和字節(jié)長度如表1所示,,報文總是由起始位、設(shè)備地址,、功能碼,、 數(shù)據(jù)域、校驗域和結(jié)束位組成,。
3.2 MODBUS TCP
Modbus TCP 只是在 TCP/IP 協(xié)議的基礎(chǔ)上進一步進行了modbus 報文的封裝,,其數(shù)據(jù)幀 如圖1 所示,包含了報文頭,,功能代碼和數(shù)據(jù)三部分,,其中MBAP 報文頭各域及所占字節(jié)長 度如表2 所示。
4 多功能網(wǎng)關(guān)軟件設(shè)計
4.1 modbus tcp 與modbus rtu 協(xié)議轉(zhuǎn)換
由上可知,,modbus tcp 與modbus rtu 的協(xié)議轉(zhuǎn)換的核心即為數(shù)據(jù)幀的解封裝與封裝,。 Modbus 最初在串行鏈路上的實現(xiàn)(最大RS485ADU=256 字節(jié))限制了Modbus PDU 的長度。 因此,,對串行鏈路通信來說,,Modbus PDU=256-服務(wù)器地址(1 字節(jié))-CRC(2 字節(jié))=253字節(jié),。從而:RS232 / RS485 ADU = 253 字節(jié)+服務(wù)器地址(1 字節(jié)) + CRC (2 字節(jié))= 256 字節(jié)。 TCP Modbus ADU = 253 字節(jié)+ MBAP (7 字節(jié)) = 260 字節(jié),。如圖3 所示為modbus RTU 為 master 時的軟件流程圖,,部分代碼摘錄如下:
4.2 modbus tcp 與自定義串口協(xié)議轉(zhuǎn)換
自定義串口協(xié)議與 modbus rtu 類似,但由于其協(xié)議為自定義的,,導致ADU 的格式并不 固定,,這就需要定制該函數(shù)。本文目前只針對單一設(shè)備的情況,,因此采取將串口數(shù)據(jù)幀直接 作為modbus tcp 的PDU,,而MBAP 采用固定格式處理,完成了對單一串口單臺設(shè)備連接的 透明處理,。
5 結(jié)束語
Frenic-Mini 為富士的一款變頻器,,支持簡易的modbus 的協(xié)議。本設(shè)計利用Frenic-mini 連接三相異步電機,,采用modbus rtu 與moxa 7402-LX 通信,,成功地實現(xiàn)了遠程變頻器停啟 及頻率讀取。如下圖4 所示,,為測試連接圖,。