Modbus常用功能碼協議詳解
01H-讀線圈狀態
1)描述:讀從機線圈暫存器,位操作,可讀單個或者多個;
2)傳送指令:
假設從機地址位0x01,暫存器開始地址0x0023,暫存器結束抵制0x0038,總共讀取21個線圈。協議圖如下:
3)響應:
返回資料的每一位對應線圈狀態,1-ON,0-OFF,如下圖;
上表中data1表示0x0023-0x002a的線圈狀態,data1的最低位代表最低地址的線圈狀態,可以理解為小端模式;
data2表示地址0x002b-0x0033的線圈狀態,如下表:
data3表示地址0x0034-0x0038的線圈狀態,不夠8位,位元組高位填充為0,如下表:
02H-讀離散輸入狀態
1):讀離散輸入暫存器,位操作,可讀單個或多個,協議類似功能碼0X01協議,此處省;
03H-讀保持暫存器
1)描述:讀保持暫存器,位元組指令操作,可讀單個或者多個;
2)傳送指令:
從機地址0x01,保持暫存器起始地址0x0032,讀2個保持暫存器
3)響應:
資料儲存順序
04H-讀輸入暫存器
1)描述:讀輸入暫存器,位元組指令操作,可讀單個或者多個;
2)傳送指令:同03H;
3)響應:同03H;
05H-寫單個線圈
1)描述:寫單個線圈,位操作,只能寫一個,寫0xff00表示設定線圈狀態為ON,寫0x0000表示設定線圈狀態為OFF
2)傳送指令:
設定0x0032線圈為ON;
3)響應:
同傳送指令;
06H-寫單個保持暫存器
1)描述:寫單個保持暫存器,位元組指令操作,只能寫一個;
2)傳送指令:
寫0x0032保持暫存器為0x1232;
3)響應:同傳送指令;
0FH-寫多個線圈
1)描述:寫多個線圈暫存器。若資料區的某位值為“1”表示被請求的相應線圈狀態為ON,若某位值為“0”,則為狀態為OFF。
2)傳送指令:
線圈地址為0x04a5,寫12個線圈,
上圖中DATA1為0x0c,表示:
DATA2為0x02,不夠8位,位元組高位填充0:
3)響應:
10H-寫多個保持暫存器
1)描述:寫多個保持暫存器,位元組指令操作,可寫多個;
2)傳送指令:
保持暫存器起始地址為0x0034,寫2個暫存器4個位元組的資料;
3)響應: