Modbus是一種序列通訊協議,是Modicon於1979年,為使用可程式設計邏輯控制器(PLC)而發表的。Modbus是工業領域通訊協議的業界標準,並且現在是工業電子裝置之間相當常用的連線方式。Modbus比其他通訊協議使用的更廣泛的主要原因有:
【1】公開發表並且無版稅要求
【2】相對容易的工業網路部署
【3】對供應商來說,修改移動原生的位元或位元組沒有很多限制
圖1 modbus結構示意圖——來自
2.協議整理連結
下表列出MODBUS支援的部分功能程式碼:以十進位制表示。
表1.1 MODBUS部分功能碼
程式碼 |
中文名稱 |
暫存器PLC地址 |
位操作/字操作 |
運算元量 |
01 |
讀線圈狀態 |
00001-09999 |
位操作 |
單個或多個 |
02 |
讀離散輸入狀態 |
10001-19999 |
位操作 |
單個或多個 |
03 |
讀保持暫存器 |
40001-49999 |
字操作 |
單個或多個 |
04 |
讀輸入暫存器 |
30001-39999 |
字操作 |
單個或多個 |
05 |
寫單個線圈 |
00001-09999 |
位操作 |
單個 |
06 |
寫單個保持暫存器 |
40001-49999 |
字操作 |
單個 |
15 |
寫多個線圈 |
00001-09999 |
位操作 |
多個 |
16 |
寫多個保持暫存器 |
40001-49999 |
字操作 |
多個 |
功能碼可以分為位操作和字操作兩類。位操作的最小單位為BIT,字操作的最小單位為兩個位元組。
【位操作指令】 讀線圈狀態01H,讀(離散)輸入狀態02H,寫單個線圈06H和寫多個線圈0FH。
【字操作指令】 讀保持暫存器03H,寫單個暫存器06H,寫多個保持暫存器10H。
表1.2 MODBUS暫存器地址分配
暫存器PLC地址 |
暫存器協議地址 |
適用功能 |
暫存器種類 |
讀寫狀態 |
00001-09999 |
0000H-FFFFH |
01H 05H 0FH |
線圈狀態 |
可讀可寫 |
10001-19999 |
0000H-FFFFH |
02H |
離散輸入狀態 |
可讀 |
30001-39999 |
0000H-FFFFH |
04H |
輸入暫存器 |
可讀 |
40001-49999 |
0000H-FFFFH |
03H 06H 0FH |
保持暫存器 |
可讀可寫 |
表1.3 MODBUS暫存器種類說明
暫存器種類 |
說明 |
PLC類比 |
舉例說明 |
線圈 狀態 |
輸出埠。可設定埠的輸出狀態,也可以讀取該位的輸出狀態。可分為兩種不同的執行狀態,例如保持型或邊沿觸發型。 |
DO 數字量輸出 |
電磁閥輸出,MOSFET輸出,LED顯示等。 |
離散 輸入狀態 |
輸入埠。通過外部設定改變輸入狀態,可讀但不可寫。 |
DI 數字量輸入 |
撥碼開關,接近開關等。 |
保持 暫存器 |
輸出引數或保持引數,控制器執行時被設定的某些引數。可讀可寫。 |
AO 模擬量輸出 |
模擬量輸出設定值,PID執行引數,變數閥輸出大小,感測器報警上限下限。 |
輸入 暫存器 |
輸入引數。控制器執行時從外部裝置獲得的引數。可讀但不可寫。 |
AI 模擬量輸入 |
模擬量輸入 |
PLC地址可以理解為協議地址的變種,在觸控式螢幕和PLC程式設計中應用較為廣泛。
暫存器PLC地址指存放於控制器中的地址,這些控制器可以是PLC,也可以使觸控式螢幕,或是文字顯示器。PLC地址一般採用10進位制描述,共有5位,其中第一位程式碼暫存器型別。第一位數字和暫存器型別的對應關係如表1所示。PLC地址例如40001、30002等。
暫存器協議地址指指通訊時使用的暫存器地址,例如PLC地址40001對應定址地址0x0000,40002對應定址地址0x0001,暫存器定址地址一般使用16進位制描述。再如,PLC暫存器地址40003對應協議地址0002,PLC暫存器地址30003對應協議地址0002,雖然兩個PLC暫存器暫存器通訊時使用相同的地址,但是需要使用不同的命令訪問,所以訪問時不存在衝突。