基于linux 的多功能網(wǎng)關(guān)的設(shè)
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é)議為自定義的,導(dǎo)致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 所示,為測試連接圖。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)tcp/ip相關(guān)文章:tcp/ip是什么
評論