以下圖片中的幀解析都不含站號(hào)和校驗(yàn)碼
01讀線圈
在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼讀取線圈的 1 至 2000 連續(xù)狀態(tài)。請(qǐng)求 PDU (功能碼-地址-數(shù)據(jù))詳細(xì)說明了起始地址,即指定的第一個(gè)線圈地址和線圈編號(hào)。從零開始尋址線圈。因此尋址線圈 1-16 為 0-15(PLC地址一般也是這樣,寄存器1在modbus協(xié)議中地址編號(hào)為0)。
根據(jù)數(shù)據(jù)域的每個(gè)比特將響應(yīng)報(bào)文中的線圈分成為一個(gè)線圈。指示狀態(tài)為 1= ON 和 0= OFF。第一個(gè)數(shù)據(jù)字節(jié)的 LSB(最低有效位)包括在詢問中尋址的輸出。其它線圈依次類推,一直到這個(gè)字節(jié)的高位端為止,并在后續(xù)字節(jié)中從低位到高位的順序。
如果返回的輸出數(shù)量不是八的倍數(shù),將用零填充最后數(shù)據(jù)字節(jié)中的剩余比特(一直到字節(jié)的高位端)。字節(jié)數(shù)量域說明了數(shù)據(jù)的完整字節(jié)數(shù)。
*N=輸出數(shù)量/8,如果余數(shù)不等于 0,那么N = N+1
將輸出 27-20 的狀態(tài)表示為十六進(jìn)制字節(jié)值 CD,或二進(jìn)制 1100 1101。輸出 27 是這個(gè)字節(jié)的MSB,輸出 20 是 LSB。
通常,將一個(gè)字節(jié)內(nèi)的比特表示為 MSB 位于左側(cè),LSB 位于右側(cè)。第一字節(jié)的輸出從左至右為 27 至 20。下一個(gè)字節(jié)的輸出從左到右為 35 至 28。當(dāng)串行發(fā)射比特時(shí),從 LSB 向 MSB 傳輸:20 . . .27、28 . . . 35 等等。
在最后的數(shù)據(jù)字節(jié)中,將輸出狀態(tài) 38-36 表示為十六進(jìn)制字節(jié)值 05,或二進(jìn)制 0000 0101。輸出38 是左側(cè)第六個(gè)比特位置,輸出 36 是這個(gè)字節(jié)的 LSB。用零填充五個(gè)剩余高位比特。
注:用零填充五個(gè)剩余比特(一直到高位端)。
02讀離散輸入
在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼讀取離散量輸入的 1 至 2000 連續(xù)狀態(tài)。請(qǐng)求 PDU 詳細(xì)說明了起始地址,即指定的第一個(gè)輸入地址和輸入編號(hào)。從零開始尋址輸入。因此尋址輸入 1-16 為 0-15。
根據(jù)數(shù)據(jù)域的每個(gè)比特將響應(yīng)報(bào)文中的離散量輸入分成為一個(gè)輸入。指示狀態(tài)為 1= ON 和 0=OFF。第一個(gè)數(shù)據(jù)字節(jié)的 LSB(最低有效位)包括在詢問中尋址的輸入。其它輸入依次類推,一直到這個(gè)字節(jié)的高位端為止,并在后續(xù)字節(jié)中從低位到高位的順序。
如果返回的輸入數(shù)量不是八的倍數(shù),將用零填充最后數(shù)據(jù)字節(jié)中的剩余比特(一直到字節(jié)的高位端)。字節(jié)數(shù)量域說明了數(shù)據(jù)的完整字節(jié)數(shù)。將離散量輸入狀態(tài) 204-197 表示為十六進(jìn)制字節(jié)值 AC,或二進(jìn)制 1010 1100。輸入 204 是這個(gè)字節(jié)的 MSB,輸入 197 是這個(gè)字節(jié)的 LSB。
將離散量輸入狀態(tài) 218-213 表示為十六進(jìn)制字節(jié)值 35,或二進(jìn)制 0011 0101。輸入 218 位于左側(cè)第 3 比特,輸入 213 是 LSB。
注:用零填充 2 個(gè)剩余比特(一直到高位端)。
03讀保持寄存器
在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼讀取保持寄存器連續(xù)塊的內(nèi)容。請(qǐng)求 PDU 說明了起始寄存地址和寄存器數(shù)量。從零開始尋址寄存器。因此,尋址寄存器 1-16 為 0-15。
將響應(yīng)報(bào)文中的寄存器數(shù)據(jù)分成每個(gè)寄存器有兩字節(jié),在每個(gè)字節(jié)中直接地調(diào)整二進(jìn)制內(nèi)容。
對(duì)于每個(gè)寄存器,第一個(gè)字節(jié)包括高位比特,并且第二個(gè)字節(jié)包括低位比特。
將寄存器 108 的內(nèi)容表示為兩個(gè)十六進(jìn)制字節(jié)值 02 2B,或十進(jìn)制 555。將寄存器 109-110 的內(nèi)
容分別表示為十六進(jìn)制 00 00 和 00 64,或十進(jìn)制 0 和 100。
04讀輸入寄存器
在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼讀取 1 至大約 125 的連續(xù)輸入寄存器。請(qǐng)求 PDU 說明了起始地址和寄存器數(shù)量。從零開始尋址寄存器。因此,尋址輸入寄存器 1-16 為 0-15。
將響應(yīng)報(bào)文中的寄存器數(shù)據(jù)分成每個(gè)寄存器為兩字節(jié),在每個(gè)字節(jié)中直接地調(diào)整二進(jìn)制內(nèi)容。
對(duì)于每個(gè)寄存器,第一個(gè)字節(jié)包括高位比特,并且第二個(gè)字節(jié)包括低位比特。
將輸入寄存器 9 的內(nèi)容表示為兩個(gè)十六進(jìn)制字節(jié)值 00 0A,或十進(jìn)制 10。
05寫單個(gè)線圈
在一個(gè)遠(yuǎn)程設(shè)備上,使用該功能碼寫單個(gè)輸出為 ON 或 OFF。
請(qǐng)求數(shù)據(jù)域中的常量說明請(qǐng)求的 ON/OFF 狀態(tài)。十六進(jìn)制值 FF 00 請(qǐng)求輸出為 ON。十六進(jìn)制值00 00 請(qǐng)求輸出為 OFF。其它所有值均是非法的,并且對(duì)輸出不起作用。
請(qǐng)求 PDU 說明了強(qiáng)制的線圈地址。從零開始尋址線圈。因此,尋址線圈 1 為 0。線圈值域的常量說明請(qǐng)求的 ON/OFF 狀態(tài)。十六進(jìn)制值 0XFF00 請(qǐng)求線圈為 ON。十六進(jìn)制值 0X0000 請(qǐng)求線圈為OFF。其它所有值均為非法的,并且對(duì)線圈不起作用。
正常響應(yīng)是請(qǐng)求的應(yīng)答,在寫入線圈狀態(tài)之后返回這個(gè)正常響應(yīng)。
06寫單個(gè)寄存器
在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼寫單個(gè)保持寄存器。
請(qǐng)求 PDU 說明了被寫入寄存器的地址。從零開始尋址寄存器。因此,尋址寄存器 1 為 0。
正常響應(yīng)是請(qǐng)求的應(yīng)答,在寫入寄存器內(nèi)容之后返回這個(gè)正常響應(yīng)。
15寫多個(gè)線圈
在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼強(qiáng)制線圈序列中的每個(gè)線圈為 ON 或 OFF。請(qǐng)求 PDU 說明了強(qiáng)制的線圈參考。從零開始尋址線圈。因此,尋址線圈 1 為 0。
請(qǐng)求數(shù)據(jù)域的內(nèi)容說明了被請(qǐng)求的 ON/OFF 狀態(tài)。域比特位置中的邏輯“1”請(qǐng)求相應(yīng)輸出為ON。域比特位置中的邏輯“0”請(qǐng)求相應(yīng)輸出為 OFF。
正常響應(yīng)返回功能碼、起始地址和強(qiáng)制的線圈數(shù)量。
這是一個(gè)請(qǐng)求從線圈 20 開始寫入 10 個(gè)線圈的實(shí)例:
請(qǐng)求的數(shù)據(jù)內(nèi)容為兩個(gè)字節(jié):十六進(jìn)制 CD 01 (二進(jìn)制 1100 1101 0000 0001)。使用下列方法,二進(jìn)制比特對(duì)應(yīng)輸出。
傳輸?shù)牡谝蛔止?jié)(十六進(jìn)制 CD)尋址為輸出 27-20,在這種設(shè)置中,最低有效比特尋址為最低輸
出(20)。
傳輸?shù)南乱蛔止?jié)(十六進(jìn)制 01)尋址為輸出 29-28,在這種設(shè)置中,最低有效比特尋址為最低輸出
(28)。
應(yīng)該用零填充最后數(shù)據(jù)字節(jié)中的未使用比特。文章來源:http://www.zghlxwxcb.cn/news/detail-441583.html
16寫多個(gè)寄存器
在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼寫連續(xù)寄存器塊(1 至約 120 個(gè)寄存器)。
在請(qǐng)求數(shù)據(jù)域中說明了請(qǐng)求寫入的值。每個(gè)寄存器將數(shù)據(jù)分成兩字節(jié)。
正常響應(yīng)返回功能碼、起始地址和被寫入寄存器的數(shù)量。文章來源地址http://www.zghlxwxcb.cn/news/detail-441583.html
到了這里,關(guān)于Modbus-RTU功能碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!