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