什麼是 Modbus?
- Modbus是由Modicon公司(現為Schneider的 一個品牌)在1978年提出的
- Modbus由於易學易用,耗費系統資源極低, 是工業控制領域的一個通訊標準
- Modbus 被廣泛應用在 PLC 與 多功能電表等 設備中
- 1998年Schneider又推出了TCP/IP乙太網路的 ModbusTCP,使 MODBUS 應用更推向網際 網路。
- Modbus 是一種需求-回應協定,採用主從架構實作而成。
- Modbus允許多個 (大約240個) 裝置連接在同一個網路上進行通訊
- 舉個例子,一個由測量溫度和濕度的裝置,並且將結果傳送給電腦。在資料採集與監視控制系統(SCADA)中,Modbus通常用來連接監控電腦和遠端終端控制系統(RTU)
網路特性
- 按電氣特性可分為RS-232、RS-422與RS485。
- 按照資料流程的方向可分成兩種基本的傳送方 式:全雙工、半雙工。
- RS-485 半雙工通訊由於只需要兩條通訊線, 且通訊距離長,被廣泛用在分散式的控制網路 架構。
MODBUS 協定
- Modbus協定是主(Master)/僕(Slave)通訊協定; 網路上的每個 Slave 設備必須有唯一的位址(範圍從1到247)
- 主從架構的通訊作業會成雙成對的出現,必須有個裝置啟動需求並等候回應,也就是說,這個啟動需求的裝置 (主要裝置) 會負責啟動每一次互動。
- Slave 位址用於定址 Slave 設備,由Master發 起; 位址0用於廣播模式,不需要回應;
- 傳輸模式 依照編碼方式可以分為 RTU 與 ASCII模式
MODBUS RTU 模式
- 使用 16 進制編碼
- 使用兩個 Byte 的 CRC 校驗碼
- 相較於 ASCII 節省一半的通訊量
- CRC校驗遠較LRC運算嚴謹
- CRC為校驗和的一種,是兩個位元組資料流採用二進制除法(沒有進位,使用XOR來代替減法)相除所得到的餘數。
MODBUS ASCII 模式
- 封包必須以“ : ”開始,以“CR -LF”結束;
- 資料用十六進位 ASCII 碼值表示;
- 使用LRC進行錯誤校驗;
- 將所有位元組相加,捨去進位,然後取2的補數,即為 LRC 的演算法
- 相較於 RTU 模式可以直接由文字通訊程式進行傳輸
MODBUS TCP
- IANA (Internet Assigned Numbers Authority:網際網路編號分配管理機構)已為 Modbus協議指配TCP / UDP埠502
- Modbus TCP 資料封包包含了MBAP標頭,功能碼和資料三部分
- MBAP Modbus Application Protocol
Modbus 模擬情境:
- 像是一個部隊,有一位連長(Master),跟一群大頭兵(slave)
(Master只有一個.其他都是slave) - 操練中,只有連長(Master)可以說話,大頭兵(slave)不能主動說話,但可以回應。
(資料的傳送必須由Master開始,slave只是回應。) - 連長可傳送資訊給大頭兵,也可以問大頭兵的狀況
(Master可以送給slave資料,或是詢問slave的資料) - 大頭兵人多,每個人都有兵籍編號
(slave 是以站號來區別) - 連長在連集合場講話,或是大頭兵回話,不管連長或大頭兵都聽得到。
(Master 或Slave 通訊時,每一站都收得到。)
reference: