Modbus常用功能碼協議詳解

Endv發表於2018-03-26

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)響應:

相關文章