下表列出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寄存器寄存器通信時使用相同的地址,但是需要使用不同的命令訪問,所以訪問時不存在衝突。