一、簡介
Modbus是一種串行通信協議,是Modicon公司於(yu) 1979年為(wei) 使用可編程邏輯控製器PLC通信而發表。Modbus是工業(ye) 領域通信協議的業(ye) 界標準,是工業(ye) 電子設備之間常用的連接方式。Modbus在工業(ye) 控製領域通信協議中被廣泛使用基於(yu) 以下幾個(ge) 特點:
- 公開發表並且無版權要求;
- 易於部署和維護;
- 對供應商來說,修改移動本地的比特或字節沒有很多限製。
二、Modbus通訊方式
- 以太網上的 TCP/IP ;
- 各種媒體(有線:EIA/TIA-232-E、EIA-422、EIA/TIA-485-A ;光纖、無線等)上的異步串行傳輸;Modbus RTU和Modbus ASCII通訊既是采用該方式;
- Modbus Plus,一種高速令牌傳遞網絡。
三、協議描述
Modbus協議定義(yi) 了一個(ge) 控製器能認識使用的消息結構,而不管它們(men) 是經過何種網絡進行通信的。它描述了一控製器請求訪問其它設備的過程,如果回應來自其它設備的請求,以及怎樣偵(zhen) 測錯誤並記錄。它製定了消息域格局和內(nei) 容的公共格式。
通過此協議,控製器相互之間、或控製器經由網絡(如以太網)可以和其它設備之間進行通信。Modbus協議使用的是主從(cong) 通訊技術,即由主設備主動查詢和操作從(cong) 設備。一般將主控設備方所使用的協議稱為(wei) Modbus Master,從(cong) 設備方使用的協議稱為(wei) Modbus Slave。典型的主設備包括工控機和工業(ye) 控製器等;典型的從(cong) 設備如PLC可編程控製器等。Modbus通訊物理接口可以選用串口(包括RS232、RS485和RS422),也可以選擇以太網口。其通信遵循以下的過程:
- 主設備(客戶機)向從設備(服務器)發送請求;
- 從設備(服務器)分析並處理主設備(客戶機)的請求,然後向主設備(客戶機)發送結果;
- 如果出現任何差錯,從設備(服務器)將返回一個異常功能碼 。
當在一Modbus網絡上通信時,此協議決(jue) 定了每個(ge) 控製器須要知道它們(men) 的設備地址,識別按地址發來的消息,決(jue) 定要產(chan) 生何種行動。如果需要回應,控製器將生成反饋信息並用Modbus協議發出。在其它網絡上,包含了Modbus協議的消息轉換為(wei) 在此網絡上使用的幀或包結構。這種轉換也擴展了根據具體(ti) 的網絡解決(jue) 節地址、路由路徑及錯誤檢測的方法。
Modbus的工作方式是請求/應答,每次通訊都是主站先發送指令,可以是廣播,或是向特定從(cong) 站單播,從(cong) 站響應指令,並按要求應答,或者報告異常;當主站不發送請求時,從(cong) 站不會(hui) 自己發出數據,從(cong) 站和從(cong) 站之間不能直接通訊。
Modbus協議能夠應用在不同類型的總線或者網絡。對應不同的總線或網絡,Modbus協議引入一些附加域映射成應用數據單元(ADU),即ADU = 附加域 + PDU。例如:
- RS232 / RS485 ADU = 253 字節+服務器地址(1 byte) + CRC (2 字節) = 256 字節 ;
- TCP MODBUS ADU = 249 字節+ MBAP (7 字節) = 256 字節 。
四、數據編碼
MODBUS 使用一個(ge) ‘big-Endian’ 表示地址和數據項。這意味著當發射多個(ge) 字節時,首先發送最高有效位。 例如:
Register size : 16 - bits |
value: 0x1234 |
the first byte sent is : 0x12 |
then: 0x34 |
五、數據模型
MODBUS 以一係列具有不同特征表格上的數據模型為(wei) 基礎。四個(ge) 基本表格為(wei) :
六、功能碼
有三類Modbus功能碼。分別是:
1.公共功能碼:
- 是較好地被定義的功能碼 ;
- 保證是唯一的;
- MODBUS 組織可改變的 ;
- 公開證明的 ;
- 具有可用的一致性測試 ;
- MB IETF RFC 中證明的 ;
- 包含已被定義的公共指配功能碼和未來使用的未指配保留供功能碼 。
2.用戶定義(yi) 功能碼:
- 有兩個用戶定義功能碼的定義範圍,即 65 至 72 和十進製 100 至 110 ;
- 用戶沒有 MODBUS 組織的任何批準就可以選擇和實現一個功能碼 ;
- 不能保證被選功能碼的使用是唯一的 ;
- 如果用戶要重新設置功能作為一個公共功能碼,那麽用戶必須啟動 RFC,以便將改變引入公共分類中,並且指配一個新的公共功能碼 。
3.保留功能碼:
- 一些公司對傳統產品通常使用的功能碼,並且對公共使用是無效的功能碼 。
4.公共功能碼定義(yi) 如下表所示: