MODBUS通訊協議 |
|
Modbus是一種串列通信協議,是Modicon於1979年,為使用可程式邏輯控制器(PLC)而發表的。事實上,它已經成為工業領域通信協議標準,並且現在是工業電子設備之間相當常用的連接方式。Modbus比其他通信協議使用的更廣泛的主要原因有:
Modbus允許多個設備連接在同一個網路上進行通信,舉個例子,一個由測量溫度和濕度的裝置,並且將結果發送給計算機。在數據採集與監視控制系統(SCADA)中,Modbus通常用來連接監控計算機和remote terminal unit (RTU)。 |
|
協議版本 |
|
Modbus協議目前存在用於串口、乙太網以及其他支持網際網路協議的網路的版本。 大多數Modbus設備通信通過串口EIA-485物理層進行[1]。 對於串列連接,存在兩個變種,它們在數值數據表示不同和協議細節上略有不同。Modbus RTU是一種緊湊的,採用二進制表示數據的方式,Modbus ASCII是一種人類可讀的,冗長的表示方式。這兩個變種都使用串列通訊(serial communication)方式。RTU格式後續的命令/數據帶有循環冗餘校驗的校驗和,而ASCII格式採用縱向冗餘校驗的校驗和。被配置為RTU變種的節點不會和設置為ASCII變種的節點通信,反之亦然。 對於通過TCP/IP(例如乙太網)的連接,存在多個Modbus/TCP變種,這種方式不需要校驗和的計算。 對於所有的這三種通信協議在數據模型和功能調用上都是相同的,只有封裝方式是不同的。 Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+),不過此協定是Modicon專有的,和 Modbus不同。它需要一個專門的協處理器來處理類似HDLC的高速令牌旋轉。它使用1Mbit/s的雙絞線,並且每個節點都有轉換隔離裝置,是一種採用轉換/邊緣觸發而不是電壓/水平觸發的裝置。連接Modbus Plus到計算機需要特別的介面,通常是支持ISA(SA85),PCI或者PCMCIA匯流排的板卡。 |
|
通信和設備 |
|
Modbus協議是一個 master/slave 架構的協議。有一個節點是 master 節點,其他使用Modbus協議參與通信的節點是 slave 節點。每一個 slave 設備都有一個唯一的地址。在串列和MB+網路中,只有被指定為主節點的節點可以啟動一個命令(在乙太網上,任何一個設備都能發送一個Modbus命令,但是通常也只有一個主節點設備啟動指令)。 一個ModBus命令包含了打算執行的設備的Modbus地址。所有設備都會收到命令,但只有指定位置的設備會執行及回應指令(地址 0例外,指定地址 0 的指令是廣播指令,所有收到指令的設備都會執行,不過不回應指令)。所有的Modbus命令包含了檢查碼,以確定到達的命令沒有被破壞。基本的ModBus命令能指令一個RTU改變它的暫存器的某個值,控制或者讀取一個I/O埠,以及指揮設備回送一個或者多個其暫存器中的數據。 有許多modems和網關支持Modbus協議,因為Modbus協議很簡單而且容易複製。它們當中一些為這個協議特別設計的。有使用有線、無線通信甚至短消息和GPRS的不同實現。不過設計者需要克服一些包括高延遲和時序的問題。 |
|
實現 |
|
幾乎所有的實現都是官方標準的某種變體。不同的供應商設備之間可能無法正確的通信。一些主要的變化有:
|
|
限制 |
|
|
|
|
|