基于linux 的多功能網關的設
4 多功能網關軟件設計
4.1 modbus tcp 與modbus rtu 協議轉換
由上可知,modbus tcp 與modbus rtu 的協議轉換的核心即為數據幀的解封裝與封裝。 Modbus 最初在串行鏈路上的實現(最大RS485ADU=256 字節(jié))限制了Modbus PDU 的長度。 因此,對串行鏈路通信來說,Modbus PDU=256-服務器地址(1 字節(jié))-CRC(2 字節(jié))=253字節(jié)。從而:RS232 / RS485 ADU = 253 字節(jié)+服務器地址(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 與自定義串口協議轉換
自定義串口協議與 modbus rtu 類似,但由于其協議為自定義的,導致ADU 的格式并不 固定,這就需要定制該函數。本文目前只針對單一設備的情況,因此采取將串口數據幀直接 作為modbus tcp 的PDU,而MBAP 采用固定格式處理,完成了對單一串口單臺設備連接的 透明處理。
5 結束語
Frenic-Mini 為富士的一款變頻器,支持簡易的modbus 的協議。本設計利用Frenic-mini 連接三相異步電機,采用modbus rtu 與moxa 7402-LX 通信,成功地實現了遠程變頻器停啟 及頻率讀取。如下圖4 所示,為測試連接圖。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)tcp/ip相關文章:tcp/ip是什么
評論