Modbus常用功能碼解釋及示例(1)
Modbus在工業(yè)通信中有著廣泛的應(yīng)用,接下來的幾篇文章,我們將給大家詳細(xì)介紹下Modbus常用功能碼的指令定義并給出示例。今天先來介紹下功能碼01H和02H(名稱中的H表示16進(jìn)制數(shù))。

1、功能碼:01H
1)功能:讀取從站(遠(yuǎn)程設(shè)備)的1~2000個(gè)連續(xù)線圈的狀態(tài)數(shù)值;讀取采用起始地址+線圈數(shù)量的方式;
2)操作方式:位操作;
3)說明:Modbus1號線圈的地址為0,2號線圈的地址為1,以此類推;因此,假設(shè)要讀取1~10號線圈的值,其寄存器地址范圍為:0~9;
4)發(fā)送指令示例:
假設(shè)從站地址為0x03,要讀取編號從33~42的10個(gè)連續(xù)線圈的狀態(tài)值,其寄存器地址范圍為:0x0020~0x0029,則發(fā)送指令下圖所示:

5)應(yīng)答格式:
應(yīng)答數(shù)據(jù)包括:從站地址+功能碼+返回字節(jié)數(shù)+數(shù)據(jù)值+校驗(yàn)碼
其中,線圈的狀態(tài)以位的形式返回。狀態(tài)為ON時(shí),其值為1;狀態(tài)為OFF時(shí),其值為0;
數(shù)據(jù)以小端(Little Endian)的形式進(jìn)行組織。即先存放LSB(最低權(quán)重位),再存放MSB。
每8個(gè)位組成一個(gè)字節(jié),當(dāng)線圈的數(shù)量不是8的倍數(shù)時(shí),剩余的位數(shù)添0補(bǔ)位。
本例程讀取10個(gè)線圈,10/8商1余2,因此需要2個(gè)字節(jié)存放應(yīng)答數(shù)據(jù)。
字節(jié)1存放線圈編號33~40的數(shù)值(小端字節(jié)序,線圈40的值存放在bit7,線圈33的值存放在bit0);
字節(jié)2存放線圈編號41~42的數(shù)值,剩余位數(shù)添0補(bǔ)位;
假設(shè)線圈狀態(tài)及數(shù)值如下面兩種圖所示:


則,應(yīng)答字節(jié)1的值為:11001011=0xCB;
應(yīng)答字節(jié)2的值為:10=0x02
應(yīng)答消息幀下圖所示:

2、功能碼:02H
1)功能:讀取從站1~2000個(gè)連續(xù)離散量輸入的狀態(tài)值;讀取采用起始地址+通道數(shù)量的方式;
2)操作方式:位操作;
3)離散量輸入通道地址編號從1開始,寄存器地址編號從0開始;
4)發(fā)送指令示例:
假設(shè)要讀取從站地址為0x03的第110~119個(gè)數(shù)字量輸入通道的數(shù)值,則發(fā)送指令如下圖所示:

5)應(yīng)答:應(yīng)答格式與功能碼01H類似
應(yīng)答數(shù)據(jù)包括:從站地址+功能碼+返回字節(jié)數(shù)+數(shù)據(jù)值+校驗(yàn)碼
假設(shè)應(yīng)答字節(jié)1的數(shù)據(jù)如下圖所示:

應(yīng)答字節(jié)2的內(nèi)容如下圖所示:

應(yīng)答消息幀如下圖所示:

好了,關(guān)于Modbus功能碼01H和02H就先介紹到這里。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計(jì)算焓和比熱容 2020-08-31
-
Aspen Plus安裝過程中RMS License證書安裝失敗的解決方法,親測有效! 2021-10-15
-
CAD外部參照無法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
