modbus協(xié)議報(bào)文分析

讀線圈狀態(tài)

讀取從設(shè)備的線圈或離散量輸出狀態(tài)登馒,即DO(Discrete Output,離散輸出)
請(qǐng)求碼:01
地址范圍:00000~00016
報(bào)文如下:Tx:006700-44 D4 00 00 00 06 01 01 00 00 00 11
從起始地址0000開始讀取17個(gè)線圈的狀態(tài)
44 D4:標(biāo)識(shí)傳輸標(biāo)識(shí)
00 00:協(xié)議標(biāo)識(shí)
00 06:長(zhǎng)度標(biāo)識(shí)
01:?jiǎn)挝粯?biāo)識(shí)(從站標(biāo)識(shí))
01:功能碼
00 00:起始地址
00 11:線圈數(shù)量
響應(yīng)報(bào)文:Rx:006701-44 D4 00 00 00 06 01 01 03 AB 92 00
如果查詢正確且成功咆槽,響應(yīng)中功能碼與請(qǐng)求中功能碼相同陈轿,否則功能碼+0x80返回。其中03代表長(zhǎng)度秦忿,后面三個(gè)字節(jié)麦射,將AB 92 00轉(zhuǎn)成2進(jìn)制為:
101010111001001000000000
響應(yīng)報(bào)文中每個(gè)線圈占用一個(gè)bit,一個(gè)寄存器占16位兩個(gè)字節(jié)長(zhǎng)度灯谣,即一個(gè)字節(jié)表示8個(gè)線圈的狀態(tài)潜秋,1=on,0=off胎许。Modbus使用低位保存在高位地址的方式峻呛,所以AB 92 00應(yīng)轉(zhuǎn)換為:110101010100100100000000


讀取離散量輸入值

讀取離散輸入DI(Discrete Input)的on/off狀態(tài),可讀取的1-2000個(gè)連續(xù)的離散輸入量狀態(tài)辜窑。
請(qǐng)求碼:02
請(qǐng)求報(bào)文:Tx:006706-55 07 00 00 00 06 01 02 00 00 00 11
響應(yīng)報(bào)文:001-Rx:00 01 00 00 00 06 01 02 03 AB 92 00
查詢某個(gè)線圈的狀態(tài)钩述,例如:查詢地址為00009線圈的狀態(tài)00 01 00 00 00 06 01 02 00 09 00 01;
響應(yīng):003-Rx:00 01 00 00 00 04 01 02 01 01



讀取保持寄存器值

讀取保持寄存器的內(nèi)容穆碎。寄存器數(shù)量占兩個(gè)字節(jié)牙勘,取值范圍0x0001~0x007D(125)最多讀取連續(xù)125個(gè)寄存器的內(nèi)容。Modbus的保持寄存器和輸入寄存器以字為單位所禀。
請(qǐng)求碼:03
請(qǐng)求報(bào)文:000-Tx:00 01 00 00 00 06 01 03 00 00 00 11方面,讀取17個(gè)寄存器的數(shù)值
響應(yīng)報(bào)文:001-Rx:00 01 00 00 00 25 01 03 22 00 0F 00 0E 00 0D 00 0C 00 0B 00 0A 00 09 00 08 00 07 00 06 00 05 00 04 00 03 00 02 00 01 00 01 00 02
其中功能碼后面的數(shù)字代表返回的位數(shù)0x22 = 34個(gè)字節(jié)放钦,共34/2=17個(gè)寄存器,每個(gè)寄存器的值由兩個(gè)字標(biāo)識(shí)葡幸。


讀取輸入寄存器值

讀取從設(shè)備輸入寄存器的內(nèi)容最筒。
請(qǐng)求碼:04
請(qǐng)求報(bào)文:010-Tx:00 01 00 00 00 06 01 04 00 00 00 11,讀取17個(gè)寄存器的值蔚叨。
響應(yīng):011-Rx:00 01 00 00 00 25 01 04 22 00 DF 12 23 34 56 1F 43 00 11 11 22 33 44 55 66 77 88 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
響應(yīng)報(bào)文中的字段含義同上床蜘。


寫單個(gè)線圈

用于將單個(gè)線圈寄存器(或離散輸入)設(shè)置為ON或則OFF狀態(tài),支持廣播模式蔑水。在廣播模式下所有從站設(shè)備的同一地址的值將被統(tǒng)一修改邢锯。
請(qǐng)求碼:05
請(qǐng)求報(bào)文:080-Tx:00 01 00 00 00 06 01 05 00 09 FF 00 ,起始地址由兩個(gè)字節(jié)構(gòu)成搀别;目標(biāo)數(shù)據(jù)也由兩個(gè)字節(jié)構(gòu)成丹擎,只能取值:0xFF00或0x0000
響應(yīng)報(bào)文:081-Rx:00 01 00 00 00 06 01 05 00 09 FF 00(如果設(shè)置成功,響應(yīng)報(bào)文與查詢報(bào)文相同)


寫單個(gè)保持寄存器

更新從設(shè)備的單個(gè)保持寄存器的值歇父,支持廣播模式蒂培。
請(qǐng)求碼:06
請(qǐng)求報(bào)文:008-Tx:00 01 00 00 00 06 01 06 00 09 09 03榜苫,將地址為00009的寄存器設(shè)置為09 03。
響應(yīng)報(bào)文:設(shè)置成功后媳荒,響應(yīng)報(bào)文和請(qǐng)求報(bào)文內(nèi)容相同驹饺。例如:



寫多個(gè)線圈

將連續(xù)的多個(gè)線圈或離散輸出設(shè)置為on/off狀態(tài)。支持廣播模式鱼炒。起始地址兩個(gè)字節(jié)蝌借,寄存器數(shù)量由兩個(gè)字節(jié)構(gòu)成。
請(qǐng)求碼:15(0x0F)
測(cè)試內(nèi)容:設(shè)置從00005開始到00016的狀態(tài)如下(使用大端字符序存儲(chǔ))



由于一共12位硬爆,所以需要2個(gè)字節(jié)16位存儲(chǔ)缀磕,起始地址從00005開始計(jì)算,所以二進(jìn)制表示為10101011 00000111糟把,十六進(jìn)制為AB 07牲剃。
請(qǐng)求報(bào)文:017-Tx:00 01 00 00 00 09 01 0F 00 05 00 0C 02 AB 07
0F:請(qǐng)求碼,一個(gè)字節(jié)
00 05:寄存器起始地址缠犀,2個(gè)字節(jié)
00 0C:寄存器個(gè)數(shù)聪舒,2個(gè)字節(jié)
02:后續(xù)字節(jié)數(shù)
AB 07:具體設(shè)置的狀態(tài)值。
響應(yīng)報(bào)文:018-Rx:00 01 00 00 00 06 01 0F 00 05 00 0C(如果設(shè)置成功箱残,響應(yīng)報(bào)文包括請(qǐng)求碼,起始地址和寄存器個(gè)數(shù))


寫多個(gè)保持寄存器

用于設(shè)置或?qū)懭霃脑O(shè)備保持寄存器的多個(gè)連續(xù)的地址快(1123)燎悍,支持廣播模式盼理。起始地址由2個(gè)字節(jié);寄存器數(shù)量2個(gè)字節(jié)勾哩,取值范圍0x00010x007B举哟。
請(qǐng)求碼:10
測(cè)試內(nèi)容:測(cè)試地址從00010開始到00016結(jié)束迅矛。設(shè)置00010~00016地址范圍內(nèi)寄存器的值如下


請(qǐng)求報(bào)文:033-Tx:00 01 00 00 00 13 01 10 00 0A 00 06 0C 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F
00 13:后續(xù)字節(jié)長(zhǎng)度(換算為十進(jìn)制19)
01:?jiǎn)挝粯?biāo)識(shí)
10:請(qǐng)求碼
00 0A:寄存器起始地址
00 06:寫入寄存器數(shù)量
0C:后續(xù)字節(jié)長(zhǎng)度
響應(yīng)報(bào)文:034-Rx:00 01 00 00 00 06 01 10 00 0A 00 06(設(shè)置成功后響應(yīng)報(bào)文中包含功能碼秽褒,起始地址,寄存器個(gè)數(shù))


掩碼寫入寄存器

使用AND掩碼和OR掩碼更新指定寄存器的內(nèi)容庐椒÷煊唬可以用來(lái)設(shè)置或者清除寄存器中各個(gè)位。
請(qǐng)求碼:22(0x16)
請(qǐng)求報(bào)文:Tx:000176-2D 79 00 00 00 08 01 16 00 00 F9 5A FF AA
16:請(qǐng)求碼
00 00:寄存器地址
F9 5A:and掩碼
FF AA:or 掩碼
通過(guò)and和or的計(jì)算公式:
Result = (Current Contents AND And_Mask) OR (Or_Mask AND (NOT And_Mask))
響應(yīng)報(bào)文:001-Rx:00 01 00 00 00 08 01 16 00 00 F9 5A FF AA(設(shè)置成功后響應(yīng)報(bào)文中包含功能碼棱诱,寄存器地址,and掩碼和or掩碼)


讀寫多個(gè)寄存器

將讀和寫功能放在同一個(gè)modbus會(huì)話里炬灭。
請(qǐng)求碼:23(0x17)
請(qǐng)求報(bào)文:Tx:000190-35 2B 00 00 00 1B 01 17 00 00 00 08 00 00 00 08 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
17:功能碼
00 00:讀寄存器的起始地址靡菇,占2字節(jié)
00 08:讀寄存器的個(gè)數(shù),占2字節(jié)
00 00:寫寄存器的起始地址提前,占2字節(jié)
00 08:寫寄存器的個(gè)數(shù)泳唠,占2字節(jié)
10:后續(xù)字節(jié),1個(gè)字節(jié)
00 00 00 00 00 00…:從起始地址開始每個(gè)寄存器設(shè)置的值拓哺,占2字節(jié)。
響應(yīng)報(bào)文:001-Rx:00 01 00 00 00 13 01 17 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00(設(shè)置成功后響應(yīng)報(bào)文中包含功能碼呻征,后續(xù)字節(jié)數(shù)烤礁,每個(gè)寄存器的值脚仔。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鲤脏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子猎醇,更是在濱河造成了極大的恐慌努溃,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沦疾,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡煌茬,警方通過(guò)查閱死者的電腦和手機(jī)彻桃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)眠屎,“玉大人肆饶,你說(shuō)我怎么就攤上這事『剑” “怎么了板惑?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)洽胶。 經(jīng)常有香客問(wèn)我裆馒,道長(zhǎng),這世上最難降的妖魔是什么翔横? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任绒窑,我火速辦了婚禮舔亭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钦铺。我一直安慰自己,他們只是感情好洼哎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锭沟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪族淮。 梳的紋絲不亂的頭發(fā)上凭涂,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天切油,我揣著相機(jī)與錄音,去河邊找鬼澎胡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛岛琼,可吹牛的內(nèi)容都是我干的巢株。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼困檩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼那槽!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起糟趾,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤甚牲,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后非驮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雏赦,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芙扎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年戒洼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了施逾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡汉额,死狀恐怖蠕搜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妓灌,我是刑警寧澤蜜宪,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站掉伏,受9級(jí)特大地震影響澳窑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜摊聋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一麻裁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧煎源,春花似錦、人聲如沸脚草。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)姑隅。三九已至,卻和暖如春讲仰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鄙陡。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工趁矾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毫捣。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓蔓同,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親斑粱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348