Modbus以太网传输方式
通信結構
MODBUS TCP/IP 的通信系統可以包括不同類型的設備:
- 502端口是為MODBUS通信保留的,在缺省狀態下,強制偵聽這個口。
- 連接至TCP/IP 網絡的MODBUS TCP/IP 客戶機和服務器設備
- 互連設備,例如:在TCP/IP網絡和串行鏈路子網之間互連的網橋、路由器或網關,聯接,該子網允許將MODBUS 串行鏈路客戶機和服務器終端設備連接起來。
?
?
?
報文幀
modbus tcp用MBAP報文頭中的單個字節單元標識符取代MODBUS串行鏈路上通常使用的MODBUS從地址域。
報文頭為7 個字節長:
- 事務處理標識符:用于事務處理配對。在響應中,MODBUS服務器復制請求的事務處理標識符。
- 協議標識符:用于系統內的多路復用。通過值0 識別MODBUS 協議。
- 長度:長度域是下一個域的字節數,包括單元標識符和數據域。
- 單元標識符:為了系統內路由,使用這個域。專門用于通過以太網TCP-IP網絡和MODBUS串行鏈路之間的網關對MODBUS或MODBUS+串行鏈路從站的通信。MODBUS客戶機在請求中設置這個域,在響應中服務器必須利用相同的值返回這個域。
?
網絡配置
SO-RCVBUF, SO-SNDBUF:
這些參數允許為發送和接收用套接字接口設定高限位。可以通過調整這些參數來實現流量控制管理。接收緩存區的的大小即為每個連接advertised window的最大值。為了提高性能,必須增加套接字緩存區的大小。否則,這些值必須小于內部驅動器的資源,以便在內部驅動器的資源耗盡之前關閉TCP 窗口。
接收緩存區大小取決于TCP窗口大小、TCP最大段的大小和接收輸入幀所需的時間。由于最大段的尺寸為300個字(一個MODBUS請求需要最大256字+MBAP報文頭),如果需要3 幀進行緩存,可將套接字緩存區大小調整為900字。為了滿足最大的緩存需求和預定的時間,可以增加TCP 窗口的大小。
?
TCP-NODELAY:
通常,小報文(稱為:tinygrams)在局域網(LAN)上的傳輸不會產生問題,因為多數局域網是不擁堵的,但是,這些tinygrams 在廣域網上將會造成擁堵。一個稱為“NAGLE 算法”的簡單方案是:收集小量的數據,當前面報文的TCP 確認到達時再用單個進行發送。
為了獲得更好的實時特性,建議:將小量的數據直接發送,而不要試圖將其收集到一個段內再發送。這就是為什么建議強制TCP-NODELAY 選項,這個選項禁用客戶機和服務器連接的“NAGLE算法”。
?
SO-REUSEADDR:
當 MODBUS 服務器關閉一個由遠端客戶啟動的TCP 連接時,在這個連接處于“時間等待”狀態(兩個MSL:最大段壽命)的過程中,該連接所用的本地口號不能被再次用來打開一個新的連接。
建議:為每個客戶機和服務器連接,指明SO-REUSEADDR 選項,以迂回這個限制。此選項允許為自身分配一個口號,它作為連接的一部分在2MSL期間內等待客戶機并偵聽套接字接口。
?
SO-KEEPALIVE:
TCP/IP 協議缺省狀態下,不通過空閑的TCP 連接發送數據。因此,如果在TCP 連接端這個過程沒有發送數據,在兩個TCP 模塊間就沒有交換任何數據。這就假設客戶機端應用和服務器端應用均采用計數器來探測連接的存活性,以便關閉連接。
建議:在客戶機與服務器連接兩端均采用KEEPALIVE 選項,以便查詢另一端得知對方是否故障并死機,或故障并重新啟動。
然而,我們必須牢記,采用KEEPALIVE 可能引起一個非常良好的連接,在瞬間故障時通信中斷,如果保持連接計時器計時周期太短,將占用不必要的網絡帶寬。
總結
以上是生活随笔為你收集整理的Modbus以太网传输方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uboot启动内核
- 下一篇: 2017 年度书单 Top 10