<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Modbus協(xié)議的常用基本定義——(RS485總線系統(tǒng)應(yīng)用之2)續(xù)

          Modbus協(xié)議的常用基本定義——(RS485總線系統(tǒng)應(yīng)用之2)續(xù)

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

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

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

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

          0 0 0 0 0 0 1 1(十六進制03H)

          對正常回應(yīng),從設(shè)備返回同樣的功能代碼。對異議回應(yīng),它將返回:

          1 0 0 0 0 0 1 1(十六進制83H)

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

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

          3.5數(shù)據(jù)域

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

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

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

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

          3.6錯誤檢測域

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

          ASCII模式:

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

          RTU模式:

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

          4. Modbus的錯誤檢測方法

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

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

          4.1奇偶校驗

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

          1 1 0 0 0 1 0 1

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

          如果沒有指定奇偶校驗位,傳輸時就沒有校驗位,也不進行校驗檢測。此時,在要傳輸?shù)淖址麕性黾右粋€停止位。

          4.2 LRC校驗

          被應(yīng)用于ASCII模式,消息包括了一個基于LRC方法的錯誤檢測域。LRC域檢測了消息域中除開始的冒號及結(jié)束的回車換行號以外的內(nèi)容。

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

          LRC方法是將消息中的8Bit的字節(jié)連續(xù)累加,丟棄了進位。

          4.3 CRC校驗

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

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

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

          一個通信實例:

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

          主機請求消息幀(8個字節(jié))

          地址

          功能碼

          被讀首個寄存器的高位地址

          被讀首個寄存器的低位地址

          被讀寄存器的數(shù)量的高位

          被讀寄存器的數(shù)量的低位

          CRC低位

          CRC高位

          01

          04

          00

          00

          00

          02

          71

          CB

          從機應(yīng)答消息幀(9個字節(jié))

          地址

          功能碼

          數(shù)據(jù)個數(shù)

          第1個數(shù)據(jù)

          第2個數(shù)據(jù)

          第3個數(shù)據(jù)

          第4個數(shù)據(jù)

          CRC低位

          CRC高位

          01

          04

          04

          01

          07

          02

          51

          8B

          25

          表3.以RTU方式讀取整數(shù)數(shù)據(jù)

          參考文獻:

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

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


          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();