Modbus常用功能碼協議詳解

2022-05-07 17:57:10 字數 1740 閱讀 6154

01h-讀線圈狀態

1)描述:讀從機線圈暫存器,位操作,可讀單個或者多個; 

2)傳送指令: 

假設從機位址位0x01,暫存器開始位址0x0023,暫存器結束抵制0x0038,總共讀取21個線圈。協議圖如下: 

3)響應: 

返回資料的每一位對應線圈狀態,1-on,0-off,如下圖; 

上表中data1表示0x0023-0x002a的線圈狀態,data1的最低位代表最低位址的線圈狀態,可以理解為小端模式;

data3表示位址0x0034-0x0038的線圈狀態,不夠8位,位元組高位填充為0,如下表:

02h-讀離散輸入狀態

1):讀離散輸入暫存器,位操作,可讀單個或多個,協議類似功能碼0x01協議,此處省;

03h-讀保持暫存器

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-寫多個保持暫存器

3)響應:

Modbus常用功能碼簡介

下面記錄下常用modbus常用功能碼,以備後面查詢。日常開發常用的功能碼就那幾個,基本都是讀取感測器資料,配置引數。其它的功能很少用。對主裝置來說,外部輸入的變數,如開關量,感測器的資料都是唯讀的,因為這些取決於外部條件。但對從裝置來說是可以讀寫的 寫暫存器變數 因為主裝置和具體的執行裝置之間還隔了...

ModBus常用功能碼 功能碼為10進製

modbus常用功能碼 功能碼為10進製 01 read coil status 讀線圈暫存器 02 read input status 讀狀態暫存器 03 read holding register 讀保持暫存器 04 read input register 讀輸入暫存器 05 write sin...

MODBUS常用功能碼學習及例項

雖然modbus支援諸多功能碼,但其中只涉及到四種暫存器 線圈暫存器 離散輸入暫存器 保持暫存器 輸入暫存器。只要搞清楚暫存器的本質和功能碼的聯絡,其實理解功能碼就很簡單。暫存器種類 讀寫狀態 位操作字操作 適用功能碼 線圈暫存器 讀 寫位 01h 讀 05h 寫單個位 0fh 寫多個位 離散輸入暫...