<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Modbus協(xié)議的常用基本定義——(RS485總線(xiàn)系統應用之2)續

Modbus協(xié)議的常用基本定義——(RS485總線(xiàn)系統應用之2)續

作者: 時(shí)間:2016-12-15 來(lái)源:網(wǎng)絡(luò ) 收藏

當消息從主設備發(fā)往從設備時(shí),功能代碼域將告之從設備需要執行哪些行為。例如去讀取輸入的開(kāi)關(guān)狀態(tài),或讀一組寄存器的數據內容,或讀從設備的診斷狀態(tài),或允許在從設備中調入、記錄、校驗程序等。

當從設備回應時(shí),它使用功能代碼域來(lái)指示是正?;貞?無(wú)誤)還是有某種錯誤發(fā)生(稱(chēng)作異議回應)。對正?;貞?,從設備僅回應相應的功能代碼。對異議回應,從設備返回功能代碼的最高位為“1”。例如:

一條主設備發(fā)往從設備的消息要求讀一組保持寄存器,將產(chǎn)生如下功能代碼:

0 0 0 0 0 0 1 1(十六進(jìn)制03H)

對正?;貞?,從設備返回同樣的功能代碼。對異議回應,它將返回:

1 0 0 0 0 0 1 1(十六進(jìn)制83H)

除功能代碼因異議回應作了修改外,從設備還將一個(gè)獨特的代碼放到回應消息的數據域中,告訴主設備發(fā)生了什么錯誤。

主設備得到異議回應后,典型的處理過(guò)程是重發(fā)消息?;蛘哒埱蠹夹g(shù)員,幫助診斷發(fā)給從設備的消息是否有錯。

3.5數據域

根據網(wǎng)絡(luò )傳輸模式,數據域可以由若干個(gè)ASCII字符或RTU字節組成。數據域的值由十六進(jìn)制數構成,范圍為00H~FFH。

主設備發(fā)給從設備消息的數據域包含從設備必須完成的由功能代碼所定義的行為。其中包括了不連續的寄存器地址、要處理項的數目、域中實(shí)際數據字節數。

例如,如果主設備需要從從設備讀取一組保持寄存器(功能代碼03),則必須在數據域中指定起始寄存器地址以及要讀的寄存器個(gè)數。如果主設備需要向從設備寫(xiě)一組的寄存器(功能代碼10十六進(jìn)制),則必須在數據域中指明要寫(xiě)的寄存器起始地址、要寫(xiě)的寄存器個(gè)數以及要寫(xiě)入的數據。

在某種消息中,數據域可以是不存在的(0長(cháng)度)。例如,主設備要求從設備回應通信事件記錄(功能代碼0BH),從設備不需任何附加的信息。

3.6錯誤檢測域

標準的Modbus網(wǎng)絡(luò )有兩種錯誤檢測模式。錯誤檢測域的內容視所選的檢測模式而定。

ASCII模式:

當選用ASCII模式時(shí),錯誤檢測域包含兩個(gè)ASCII字符。這是使用LRC(縱向冗長(cháng)檢測)方法對消息內容計算得出的,不包括開(kāi)始的冒號符及回車(chē)換行符。LRC字符處在回車(chē)換行符前面。

RTU模式:

當選用RTU模式時(shí),錯誤檢測域包含一個(gè)16Bits值(用兩個(gè)8位的字符來(lái)實(shí)現)。錯誤檢測域的內容是通過(guò)CRC(循環(huán)冗長(cháng)檢測)方法得出的。CRC域附加在消息的最后,CRC的高位字節是發(fā)送消息的最后一個(gè)字節。

4. Modbus的錯誤檢測方法

標準的Modbus串行網(wǎng)絡(luò )采用兩種錯誤檢測方法。奇偶校驗對每個(gè)字符都可用,幀檢測(LRC或CRC)應用于整個(gè)消息。它們都是在消息發(fā)送前由主設備產(chǎn)生的,從設備在接收過(guò)程中檢測每個(gè)字符和整個(gè)消息幀。

用戶(hù)要給主設備配置一個(gè)預先定義的超時(shí)時(shí)間間隔,這個(gè)時(shí)間間隔要足夠長(cháng),以使任何從設備都能作出正常反應。如果從設備檢測到傳輸錯誤,消息將不會(huì )被接收,也不會(huì )向主設備作出回應。這樣產(chǎn)生的超時(shí)事件將觸發(fā)主設備來(lái)處理錯誤。發(fā)往不存在的從設備的地址也會(huì )產(chǎn)生超時(shí)。

4.1奇偶校驗

用戶(hù)可以配置控制器是奇校驗或偶校驗,也可以是無(wú)校驗。如果指定了奇或偶校驗,將計算每個(gè)字符(8個(gè)Bit)中“1”的位數(ASCII模式7個(gè)數據Bit,RTU中8個(gè)數據Bit)。例如字符C5H包含以下8個(gè)數據Bit:

1 1 0 0 0 1 0 1

整個(gè)字符“1”的位數是4個(gè)。如果便用了偶校驗,因為4是偶數,幀的奇偶校驗位將是0,使得整個(gè)幀的“1”的個(gè)數仍是偶數(4)。如果使用了奇校驗,幀的奇偶校驗位將是1,便得整個(gè)幀的“1”的個(gè)數是奇數(4+1=5)。

如果沒(méi)有指定奇偶校驗位,傳輸時(shí)就沒(méi)有校驗位,也不進(jìn)行校驗檢測。此時(shí),在要傳輸的字符幀中增加一個(gè)停止位。

4.2 LRC校驗

被應用于A(yíng)SCII模式,消息包括了一個(gè)基于LRC方法的錯誤檢測域。LRC域檢測了消息域中除開(kāi)始的冒號及結束的回車(chē)換行號以外的內容。

LRC域是一個(gè)包含8位二進(jìn)制值的字節。LRC值由發(fā)送設備計算并放到消息幀中,接收設備在接收消息的過(guò)程中重新計算LRC,并將它和接收消息中的LRC值比較,如果兩值不等,說(shuō)明有錯誤。

LRC方法是將消息中的8Bit的字節連續累加,丟棄了進(jìn)位。

4.3 CRC校驗

被應用于RTU模式,消息包括了一個(gè)基于CRC方法的錯誤檢測域。CRC域檢測了整個(gè)消息的內容。

CRC域是兩個(gè)字節,包含一個(gè)16位的二進(jìn)制值。它由傳輸設備計算后加入到消息中。接收設備重新計算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有誤。

CRC方法比LRC方法繁瑣得多,受篇幅限制在此不作介紹。如需了解,請參見(jiàn)本人發(fā)表的《CRC校驗原理與程序設計》一文。

一個(gè)通信實(shí)例:

表3是一個(gè)以RTU方式讀取整數數據的例子。主機向01H號從機發(fā)出04H號(讀取輸入寄存器)功能碼,要求讀取從0000H地址開(kāi)始的2個(gè)(16Bit)輸入寄存器的值。CB71H是01H、04H、00H、00H、00H、02H六個(gè)數據的CRC校驗值。從機應答時(shí)將地址和功能碼原樣發(fā)回,并將2個(gè)(16Bit)輸入寄存器的值0107H和0251H分成4個(gè)(8Bit)數據01H、07H、02H、51H發(fā)回。258BH是01H、04H、04H、01H、07H、02H、51H七個(gè)數據的CRC校驗值。

主機請求消息幀(8個(gè)字節)

地址

功能碼

被讀首個(gè)寄存器的高位地址

被讀首個(gè)寄存器的低位地址

被讀寄存器的數量的高位

被讀寄存器的數量的低位

CRC低位

CRC高位

01

04

00

00

00

02

71

CB

從機應答消息幀(9個(gè)字節)

地址

功能碼

數據個(gè)數

第1個(gè)數據

第2個(gè)數據

第3個(gè)數據

第4個(gè)數據

CRC低位

CRC高位

01

04

04

01

07

02

51

8B

25

表3.以RTU方式讀取整數數據

參考文獻:

①GB/T 19582.1-2008《基于Modbus協(xié)議的工業(yè)自動(dòng)化網(wǎng)絡(luò )規范》

②Modbus協(xié)議中文版可在互聯(lián)網(wǎng)上下載


上一頁(yè) 1 2 下一頁(yè)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>