Modbus-RTU規(guī)約詳解_第1頁
Modbus-RTU規(guī)約詳解_第2頁
Modbus-RTU規(guī)約詳解_第3頁
Modbus-RTU規(guī)約詳解_第4頁
Modbus-RTU規(guī)約詳解_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第一章Modbus協(xié)議 介紹Modbus協(xié)議介紹 兩種串行傳輸模式 信息幀 錯誤檢查方法Modbus協(xié)議介紹Modbus可編程控制器之間可相互通訊,也可與不同網(wǎng)絡(luò)上的其他設(shè)備進行通訊,支撐網(wǎng)絡(luò)有Modicon的Modbus和Modbus+工業(yè)網(wǎng)絡(luò)。網(wǎng)絡(luò)信息存取可由控制器內(nèi)置的端口,網(wǎng)絡(luò)適配器以及Modicon提供的模塊選件和網(wǎng)關(guān)等設(shè)備實現(xiàn),對OEM(機械設(shè)備制造商)來說,Modicon可為合作伙伴提供現(xiàn)有的程序,可使Modbus+網(wǎng)絡(luò)緊密地集成到他們的產(chǎn)品設(shè)計中去。Modicon的各種控制器使用的公共語言被稱為 Modbus協(xié)議,該協(xié)議定義了控制器能識別和使用的信息結(jié)構(gòu)。當(dāng)在Modbus網(wǎng)絡(luò)上

2、進行通訊時,協(xié)議能使每一臺控制器知道它本身的設(shè)備地址,并識別對它尋址的數(shù)據(jù),決定應(yīng)起作用的類型,取出包含在信息中的數(shù)據(jù)和資料等,控制器也可組織回答信息,并使用Modbus協(xié)議將此信息傳送出去。在其他網(wǎng)絡(luò)上使用時,數(shù)據(jù)包和數(shù)據(jù)幀中也包含著Modbus協(xié)議。如,Modbus+或MAP網(wǎng)絡(luò)控制器中有相應(yīng)的應(yīng)用程序庫和驅(qū)動程序,實現(xiàn)嵌入式Modbus協(xié)議信息與此網(wǎng)絡(luò)中用子節(jié)點設(shè)備間通訊的特殊信息幀的數(shù)據(jù)轉(zhuǎn)換。該轉(zhuǎn)換也可擴展,處理節(jié)點地址,路由,和每一個特殊網(wǎng)絡(luò)的錯誤檢查方法。如包含在Modbus協(xié)議中的設(shè)備地址,在信息發(fā)送前就轉(zhuǎn)換成節(jié)點地址,錯誤檢查區(qū)也用于數(shù)據(jù)包,與每個網(wǎng)絡(luò)的協(xié)議一致,最后一點是需用

3、Modbus協(xié)議,寫入嵌入的信息,定義應(yīng)處理的動作。圖1說明了采用不同通訊技術(shù)的多層網(wǎng)絡(luò)中設(shè)備的互連方法。在信息交換中,嵌入到每個網(wǎng)絡(luò)數(shù)據(jù)包中的Modbus協(xié)議,提供了設(shè)備間能夠交換數(shù)據(jù)的公共的語言。984A/B 和S985AT/HC-984 和HOST/MMHIAT/HC-984 和HOST/MMHI(去MB+)S980(去MAP)編程器編程器4個Modus設(shè)備或網(wǎng)絡(luò)圖1:Modbus協(xié)議應(yīng)用示意圖* MB+為 ModbusModbus上的數(shù)據(jù)傳輸Modicon控制器上的標準Modbus端口是使用一個RS-232兼容的串行接口,定義了連接器,接線電纜,信號等級,傳輸波特率,和奇偶校驗,控制器

4、可直接或通過調(diào)制解調(diào)器(以后簡稱Modems)接入總線(網(wǎng)絡(luò))??刂破魍ㄓ嵤褂弥鲝募夹g(shù),即主機能起動數(shù)據(jù)傳輸,稱查詢。而其它設(shè)備(從機)應(yīng)返回對查詢作出的響應(yīng),或處理查詢所要求的動作。典應(yīng)的主機設(shè)備應(yīng)包括主處理器和編程器。典應(yīng)的從機包括可編程控制器。主機可對各從機尋址,發(fā)出廣播信息,從機返回信息作為對查詢的響應(yīng)。從機對于主機的廣播查詢,無響應(yīng)返回Modbus協(xié)議報據(jù)設(shè)備地址,請求功能代碼,發(fā)送數(shù)據(jù),錯誤校驗碼,建立了主機查詢格式,從機的響應(yīng)信息也用Modbus協(xié)議組織,它包括確認動作的代碼,返回數(shù)據(jù)和錯誤校驗碼。若在接收信息時出現(xiàn)一個錯誤或從機不能執(zhí)行要求的動作時,從機會組織一個錯誤信息。并向

5、主機發(fā)送作為響應(yīng)。在其它總線上傳輸數(shù)據(jù)除標準的Modbus功能外,有些Modcon控制器內(nèi)置端口或總線適配器,在Modbus+總線上實現(xiàn)通訊或使用網(wǎng)絡(luò)適配器,在MAP網(wǎng)絡(luò)上通訊。在這些總線上,控制器間采用對等的技術(shù)進行通訊,即任意一個控制器可向其它控制器啟動數(shù)據(jù)傳送。因此,一臺控制器既可作為從機,也可作為主機,常提供多重的內(nèi)部通道,允許并列處理主機和從機傳輸數(shù)據(jù)在信息級,盡管網(wǎng)絡(luò)通訊方法是對等的,但Modbus協(xié)議仍采用主從方式,若一臺控制器作為主機設(shè)備發(fā)送一個信息,則可從一臺從機設(shè)備返回一個響應(yīng),類似,當(dāng)一臺控制器接受信息時,它就組織一個從機設(shè)備的響應(yīng)信息,并返回至原發(fā)送信息的控制器。8 位

6、數(shù)據(jù)字節(jié)錯誤校驗功能代碼8 位數(shù)據(jù)字節(jié)設(shè)備地址功能代碼設(shè)備地址主機查詢信息查詢響應(yīng)周期:錯誤校驗從機響應(yīng)信息圖2:主從查詢響應(yīng)周期查詢:查詢中的功能代碼為被尋址的從機設(shè)備應(yīng)執(zhí)行的動作類型。數(shù)據(jù)字節(jié)中包含從機須執(zhí)行功能的各附加信息,如功能代碼03將查詢從機,并讀保持寄存器。并用寄存器的內(nèi)容作響應(yīng)。該數(shù)據(jù)區(qū)必須含有告之從機讀取寄存器的起始地址及數(shù)量,錯誤校驗區(qū)的一些信息,為從機提供一種校驗方法,以保證信息內(nèi)容的完整性。響應(yīng):從機正常響應(yīng)時,響應(yīng)功能碼是查詢功能碼的應(yīng)答,數(shù)據(jù)字節(jié)包含從機采集的數(shù)據(jù),如寄存器值或狀態(tài)。如出現(xiàn)錯誤,則修改功能碼,指明為錯誤響應(yīng)。并在數(shù)據(jù)字節(jié)中含有一個代碼,來說明錯誤,錯

7、誤檢查區(qū)允許主機確認有效的信息內(nèi)容。兩種串行傳輸模式控制器可使用ASCII或RTU通訊模式,在標準Modbus上通訊。在配置每臺控制器時,用戶須選擇通訊模式以及串行口的通訊參數(shù)。(波特率,奇偶校驗等),在Modbus總線上的所有設(shè)備應(yīng)具有相同的通訊模式和串行通訊參數(shù)。選擇ASCII或RTU模式用于標準的Modbus總線。它定義了總線上串行傳輸信息區(qū)的“位”的含義,決定信息打包及解碼方法。如在MAP和Modbus+總線上時,Modbus信息以幀的方式出現(xiàn),并與串行傳輸無關(guān),如請求讀保持寄存器可以在Modbus+上的兩個控制器之間處理,而與使用的控制器的Modbus端口無關(guān)。ASCII 模式當(dāng)控制

8、器以ASCII模式在Modbus總線上進行通訊時,一個信息中的每8位字節(jié)作為2個ASCII字符傳輸?shù)模@種模式的主要優(yōu)點是允許字符之間的時間間隔長達IS,也不會出現(xiàn)錯誤。ASCII碼每一個字節(jié)的格式:編碼系統(tǒng): 16進制,ASCII字符0-9,A-F 1個16進制 數(shù)據(jù)位: 1起始位7位數(shù)據(jù),低位先送奇/偶校驗時1位;無奇偶校驗時0位(LRC)1位帶校驗1停止位;無校驗2止位錯誤校驗區(qū): 縱向冗余校驗RTU模式控制器以RTU模式在Modbus總線上進行通訊時,信息中的每8位字節(jié)分成2個4位16進制的字符,該模式的主要優(yōu)點是在相同波特率下其傳輸?shù)淖址拿芏雀哂贏SCII模式,每個信息必須連續(xù)傳輸

9、。RTU模式中每個字節(jié)的格式: 編碼系統(tǒng):8位二進制,十六進制0-9,A-F數(shù)據(jù)位:1起始位8位數(shù)據(jù),低位先送奇/偶校驗時1位;無奇偶校驗時0位停止位1位(帶校驗);停止位2位(無校驗)帶校驗時1位停止位;無校驗時2位停止位錯誤校驗區(qū):循環(huán)冗余校驗(CRC)Modbus信息幀何論是ASCII模式還是RTU模式,Modbus信息以幀的方式傳輸,每幀有確定的起始點和結(jié)束點,使接收設(shè)備在信息的起點開始讀地址,并確定要尋址的設(shè)備 (廣播時對全部設(shè)備),以及信息傳輸?shù)慕Y(jié)束時間??蓹z測部分信息,錯誤可作為一種結(jié)果設(shè)定。對MAP或Modbus+協(xié)議可對信息幀的起始和結(jié)束點標記進行處理,也可管理發(fā)送至目的地的

10、信息,此時,信息傳輸中Modbus數(shù)據(jù)幀內(nèi)的目的地址已無關(guān)緊要,因為Modbus+地址已由發(fā)送者或它的網(wǎng)絡(luò)適配器把它轉(zhuǎn)換成網(wǎng)絡(luò)節(jié)點地址和路由。ASCII幀在ASCII模式中,以(:)號(ASCII3AH)表示信息開始,以回撤一換行鍵(CRLF) (ASCII OD和OAH)表示信息結(jié)束。對其它的區(qū),允許發(fā)送的字符為16進制字符0-9,A-F。網(wǎng)絡(luò)中設(shè)備連續(xù)檢測并接收一個冒號(:)時,每臺設(shè)備對地址區(qū)解碼,找出要尋址的設(shè)備。字符之間的最大間隔為1S,若大于1S,則接收設(shè)備認為出現(xiàn)了一個錯誤。典型的信息幀見下表開始地址功能數(shù)據(jù)縱向冗余檢查結(jié)束1字符:2字符2字符n字符2字符2字符圖3 ASCII信

11、息幀例外:對于584和984A/B/X控制器,一個ASCII信息可在LRC區(qū)后正常終止,而不需發(fā)送CRLF字符,此時出現(xiàn)>IS的時間間隔,控制器也將認為是正常中斷。RTU幀RTU模式中,信息開始至少需要有3.5個字符的靜止時間,依據(jù)使用的波特率,很容易計算這個靜止的時間(如下圖中的T1-T2-T3-T4)。接著,第一個區(qū)的數(shù)據(jù)為設(shè)備地址。各個區(qū)允許發(fā)送的字符均為16進制的0-9,A-F。網(wǎng)絡(luò)上的設(shè)備連續(xù)監(jiān)測網(wǎng)絡(luò)上的信息,包括靜止時間。當(dāng)接收第一個地址數(shù)據(jù)時,每臺設(shè)備立即對它解碼,以決定是否是自己的地址。發(fā)送完最后一個字符號后,也有一個3.5個字符的靜止時間,然后才能發(fā)送一個新的信息。整個

12、信息必須連續(xù)發(fā)送。如果在發(fā)送幀信息期間,出現(xiàn)大于1.5個字符的靜止時間時,則接收設(shè)備刷新不完整的信息,并假設(shè)下一個地址數(shù)據(jù)。同樣一個信息后,立即發(fā)送的一個新信息,(若無3。5個字符的靜止時間)這將會產(chǎn)生一個錯誤。是因為合并信息的CRC校驗碼無效而產(chǎn)生的錯誤。開始地址功能數(shù)據(jù)校驗終止T1-T2-T3-T48 B位S8 B位SN×8 B位S16B位 ST1-T2-T3T-4圖4 RTU信息幀Modbus信息幀(Continued)地址設(shè)置信息地址包括2個字符(ASCII)或8位(RTU),有效的從機設(shè)備地址范圍0-247,(十進制),各從機設(shè)備的尋址范圍為1-247。主機把從機地址放入信

13、息幀的地址區(qū),并向從機尋址。從機響應(yīng)時,把自己的地址放入響應(yīng)信息的地址區(qū),讓主機識別已作出響應(yīng)的從機地址。地址0為于廣播地址,所有從機均能識別。當(dāng)Modbus協(xié)議用于高級網(wǎng)絡(luò)時,則不允許廣播或其它方式替代。如Modbus+使用令牌循環(huán),自動更新共享的數(shù)據(jù)庫。功能碼設(shè)置信息幀功能代碼包括字符(ASCII)或8位(RTU)。有效碼范圍1-225(十進制),其中有些代碼適用全部型號的Modicon控制器,而有些代碼僅適用于某些型號的控制器。還有一些代碼留作將來使用,有關(guān)功能代替碼的設(shè)置將在第2章說明。當(dāng)主機向從句發(fā)送信息時,功能代碼向從機說明應(yīng)執(zhí)行的動作。如讀一組離散式線圈或輸入信號的ON/OFF狀

14、態(tài),讀一組寄存器的數(shù)據(jù),讀從機的診斷狀態(tài),寫線圈(或寄存器),允許下截、記錄、確認從機內(nèi)的程序等。當(dāng)從機響應(yīng)主機時,功能代碼可說明從機正常響應(yīng)或出現(xiàn)錯誤(即不正常響應(yīng)),正常響應(yīng)時,從句簡單返回原始功能代碼;不正常響應(yīng)時,從機返回與原始代碼相等效的一個碼,并把最高有效位設(shè)定為“1”。如,主機要求從機讀一組保持寄存器時,則發(fā)送信息的功能碼為:0000 0011 (十六進制03)若從機正確接收請求的動作信息后,則返回相同的代碼值作為正常響應(yīng)。發(fā)現(xiàn)錯時,則返回一個不正常響信息:1000 0011(十六進制83)從機對功能代碼作為了修改,此外,還把一個特殊碼放入響應(yīng)信息的數(shù)據(jù)區(qū)中,告訴主機出現(xiàn)的錯誤類

15、型和不正常響應(yīng)的原因。主機設(shè)備的應(yīng)用程序負責(zé)處理不正常響應(yīng),典型處理過程是主機把對信息的測試和診斷送給從機,并通知操作者。數(shù)據(jù)區(qū)的內(nèi)容數(shù)據(jù)區(qū)有2個16進制的數(shù)據(jù)位,數(shù)據(jù)范圍為00-FF(16進制),根據(jù)網(wǎng)絡(luò)串行傳輸?shù)姆绞剑瑪?shù)據(jù)區(qū)可由一對ASCII字符組成或由一個RTU 字符組成。主機向從機設(shè)備發(fā)送的信息數(shù)據(jù)中包含了從機執(zhí)行主機功能代碼中規(guī)定的請求動作,如離散量寄存器地址,處理對象的數(shù)目,以及實際的數(shù)據(jù)字節(jié)數(shù)等。舉例說明,若主機請求從機讀一組寄存器(功能代碼03),該數(shù)據(jù)規(guī)定了寄存器的起始地址,以及寄存器的數(shù)量。又如,主機要在一從機中寫一組寄存器,(則功能代碼為10H)。該數(shù)據(jù)區(qū)規(guī)定了要寫入寄存

16、區(qū)的起始地址,寄存器的數(shù)量,數(shù)據(jù)的字節(jié)數(shù),以及要寫入到寄存器的數(shù)據(jù)。若無錯誤出現(xiàn),從機向主機的響應(yīng)信息中包含了請求數(shù)據(jù),若有錯誤出現(xiàn),則數(shù)據(jù)中有一個不正常代碼,使主機能判斷并作出下一步的動作。數(shù)據(jù)區(qū)的長度可為“零”以表示某類信息,如,主機要求-從機響應(yīng)它的通訊事件記錄(功能代碼OBH)。此時,從機不需要其他附加的信息,功能代碼只規(guī)定了該動作。信息幀錯誤校驗標準Modbus總線,有兩類錯誤檢查方法,錯誤檢查區(qū)的內(nèi)容按使用的錯誤檢查方法填寫。SDCII使用ASCII方式時,錯誤校驗碼為2個ASCII字符,錯誤校驗字符是LRC校驗結(jié)果。校驗時,起始符為(:)冒號結(jié)束符為CRLF字符。RTU使用RTU

17、方式時,錯誤校驗碼為一個16位的值,2個8位字節(jié)。錯誤校驗值是對信息內(nèi)容執(zhí)行CRC校驗結(jié)果。CRC校驗信息幀是最后的一個數(shù)據(jù),得到的校驗碼先送低位字節(jié),后送高位字節(jié),所以CRC碼的高位字節(jié)是最后被傳送的信息。串行傳送信息在標準的Modbus上傳送的信息中,每個字符或字節(jié),按由左向右的次序傳送:帶奇偶校驗最低有效位:(LSB)最高有效位:(MSB)ASCII數(shù)據(jù)幀位序:無奇偶校驗圖5 ASCII位序RTU數(shù)據(jù)幀位序:帶奇偶校驗無奇偶校驗圖6 RTU位序錯誤校驗方法標準的Modbus串行通訊網(wǎng)絡(luò)采用兩種錯誤校驗方法,奇偶校驗(奇或偶)可用于校驗每一個字符,信息幀校驗(LRC或CRC)適用整個信息的

18、校驗,字符校驗和信息幀校驗均由主機設(shè)備產(chǎn)生,并在傳送前加到信息中去。從機設(shè)備在接收信息過程中校驗每個字符和整個信息。主機可由用戶設(shè)置的一個預(yù)定時間間隔,確定是否放棄傳送信息。該間隔應(yīng)有足夠的時間來滿足從機的正常響應(yīng)。若主機檢測到傳輸錯誤時,則傳輸?shù)男畔o效。從機不再向主機返回響應(yīng)信息。此時,主機會產(chǎn)生一個超時信息,并允許主機程序處理該錯誤信號。注意:主機向?qū)嶋H并未存在的從機發(fā)送信息時也會引起超時出錯信號。在MAP或Modbus+等其它網(wǎng)駱上使用時,采用比Modbus更高一級的數(shù)據(jù)幀校驗方法。在這些網(wǎng)絡(luò)中,不再運用Modbus中的LRC或CRC校驗方法。當(dāng)出現(xiàn)發(fā)送錯誤時,網(wǎng)絡(luò)中的通訊協(xié)議通知發(fā)送

19、設(shè)備有錯誤出現(xiàn),并允許根據(jù)設(shè)置的情況,重試或放棄信息發(fā)送。若信息已發(fā)送,但從機設(shè)備未作響應(yīng),則主機通過程序檢查后發(fā)出一個超時錯誤。奇偶校驗用戶可設(shè)置奇偶校驗或無校驗,以此決定每個字符發(fā)送時的奇偶校驗位的狀態(tài)。何論是奇或偶校驗,它均會計算每個字符數(shù)據(jù)中值為“1”的位數(shù),ASCII方式為位數(shù)據(jù);RTU方式為8位數(shù)據(jù)。并根據(jù)“1”的位數(shù)值(奇數(shù)或偶數(shù))來設(shè)定為“0”或“1”如一個RTU數(shù)據(jù)幀中8位數(shù)據(jù)位為:1100 0101在該幀中,值為“1”的總位數(shù)為4,即偶數(shù)。如采用奇校驗方式時,則 “1”的總位數(shù)為奇數(shù),即5。發(fā)送信息時,計算奇偶位,并加到數(shù)據(jù)幀中,接收設(shè)備統(tǒng)計位值為“1”的數(shù)量,若與該設(shè)備要

20、求的不一致時產(chǎn)生一個錯誤。在Modbus總線上的所有設(shè)備必須采用相同的奇偶校驗方式。注意:奇偶校驗只能檢測到數(shù)據(jù)幀在傳輸過程中丟失奇數(shù)“位”時才產(chǎn)生的錯誤。如采用奇數(shù)校驗方式時,一個包含3個“1”位的數(shù)據(jù)丟失2個“1”位時,其結(jié)果仍然是奇數(shù)。若無奇偶校驗方式時,傳輸中不作實際的校驗,應(yīng)附加一個停止位。LRC校驗ASCII方式時,數(shù)據(jù)中包含錯誤校驗碼,采用LRC校驗方法時,LRC校驗信息以冒號“:”開始,以CRLF字符作為結(jié)束。它忽略了單個字符數(shù)據(jù)的奇偶校驗的方法。LRC校驗碼為1個字節(jié),8位二進制值,由發(fā)送設(shè)備計算LRC值。接收設(shè)備在接收信息時計算LRC校驗碼。并與收到的LRC的實際值進行比較

21、,若二者不一致,亦產(chǎn)生一個錯誤。在梯形圖中,CKSM函數(shù)可計算數(shù)據(jù)信息中LRC的校驗。用于主計算機時請查閱附錄C中的一個實例,它詳細說明LRC的校驗的過程。錯誤校驗方法CRC校驗RTU方式時,采用CRC方法計算錯誤校驗碼,CRC校驗傳送的全部數(shù)據(jù)。它忽略信息中單個字符數(shù)據(jù)的奇偶校驗方法。CRC碼為2個字節(jié),16位的二進制值。由發(fā)送設(shè)備計算CRC值,并把它附到信息中去。接收設(shè)備在接收信息過程中再次計算CRC值并與CRC的實際值進行比較,若二者不一致,亦產(chǎn)生一個錯誤,校驗開始時,把16位寄存器的各位都置為“1”,然后把信息中的相鄰2個8位字節(jié)數(shù)據(jù)放到當(dāng)前寄存器中處理,只有每個字符的8位數(shù)據(jù)用于CR

22、C處理。起始位,停止位和校驗位不參與CRC計算。CRC校驗時,每個8位數(shù)據(jù)與該寄存器的內(nèi)容進行異或運算,然后向最低有效位(LSB)方向移位,用零填入最高有效位(MSB)后,再對LSB檢查,若LSB=1,則寄存器與預(yù)置的固定值異或,若LSB=0,不作異或運算。重復(fù)上述處理過程,直至移位8次,最后一次(第8次)移位后,下一個8位字節(jié)數(shù)據(jù)與寄存器的當(dāng)前值異或,再重復(fù)上述過程。全部處理完信息中的數(shù)據(jù)字節(jié)后,最終得到的寄存器值為CRC值。CRC值附加到信息時,低位在先,高位在后。在梯形圖中,CKSM函數(shù)計算信息中的CRC值。用于主計算機時,可查閱附錄C中的一個實例,它詳細說明了CRC的校驗。第二章數(shù)據(jù)和

23、控制功能r Modbus 功能代碼格式r Modbus 功能代碼總結(jié)r Modbus 功能代碼說明功能代碼格式數(shù)字值表達若無特殊說明在此節(jié)文中用進制值表示,圖中的數(shù)據(jù)區(qū)則用十六進制表示。Modbus 信息中的數(shù)據(jù)地址Modbus 信息中的所有數(shù)據(jù)地址以零作為基準,各項數(shù)據(jù)的第一個數(shù)據(jù)地址的編號為0如:r 在可編程控制器中“coil 1”在Modbus信息中其地址值表示為0000r Coil 127(十進制)在Modbus信息中則為007EH(126十進制)r 保持寄存器40001,在信息中數(shù)據(jù)地址為寄存器0000。功能代碼區(qū)為保持寄存器類型規(guī)定的操作,因此,“4XXXX”是缺省的地址類型。r

24、保持寄存器40108尋址寄存器地址為006B hex(進制107)Modbus信息中區(qū)內(nèi)容圖7為一個例子,說明了Modbus的查詢信息,圖8為正常響應(yīng)的例子,這兩例子中的數(shù)據(jù)均是16進制的,也表示了以ASCLL或RTU方式構(gòu)成數(shù)據(jù)幀的方法。主機查詢是讀保持寄存器,被請求的從機地址是06,讀取的數(shù)據(jù)來自地址從40108至40110 3個保持寄有器。注意,該信息規(guī)定了寄存器的起始地址為0107 (006BH)。從機響應(yīng)返回該功能代碼,說明是正常響應(yīng),字節(jié)數(shù)“Byle count”中說明有多少個8位字節(jié)被返回。因無論是ASCII方式還是RTU方式,它表明了附在數(shù)據(jù)區(qū)中8位字節(jié)的數(shù)量。ASCII方式時

25、,字節(jié)數(shù)為數(shù)據(jù)中ASCII字符實際數(shù)的一半,每4個位的16進制值需要一個ASCII字符表示,因此在數(shù)據(jù)中應(yīng)由2個ASCII字符來表示一個8位的字節(jié)。如RTU方式時,63H 用一個字節(jié)(01100011)發(fā)送,而用ASCII方式時,發(fā)送需2個字節(jié),即ASCII“6”(0110110)和ASCII“3”(0110011)。8個位為一個單位計算“字節(jié)數(shù)”,它忽略了信息幀用(ASCII或RTU)組成的方法。字節(jié)數(shù)使用方法:當(dāng)在緩沖區(qū)組織響應(yīng)信息時,“字節(jié)數(shù)”區(qū)域中的值應(yīng)與該信息中數(shù)據(jù)區(qū)的字節(jié)數(shù)相等。QUERYField NameHeaderSlave AddressFunctionStarting A

26、ddress HiStarting Address LoNo. of Registers HiNo. of Registers LoError CheckTrailerExample(Hex)0603006B0003Total Bytes:ASCIICharacters:(colon)0603006B0003LRC (2 chars.)CR LF17RTU8-Bit FieldNone0000 01100000 00110000 00000110 10110000 00000000 0011CRC (16 bits)None8圖8說明“字節(jié)數(shù)”區(qū)在一個貢型響應(yīng)中的應(yīng)用。RESPONSEFiel

27、d NameHeaderSlave AddressFunctionByte CountData HiData LoData HiData LoData HiData LoError CheckTrailerExample(Hex)060306022B00000063Total Bytes:ASCIICharacters:(colon)0 60 30 60 22 B0 00 00 06 3LRC (2 chars.)CR LF23RTU8-Bit FieldNone0000 01100000 00110000 01100000 00100010 10110000 00000000 0000000

28、0 00000110 0011CRC (16 bits)None11圖8:從機采用ASCII/RTU方式響應(yīng)Modbus+數(shù)據(jù)內(nèi)容在Modbus+網(wǎng)絡(luò)發(fā)送的Modbus信息應(yīng)需嵌入到LLC (邏輯連接控制)級數(shù)據(jù)幀,Modbus信息區(qū)由8位字節(jié)的數(shù)據(jù)組成,類似于RTU中的信息組成。由發(fā)送設(shè)備把從機地址轉(zhuǎn)換成Modbus+路由地址,CRC數(shù)據(jù)不在Modbus信息中發(fā)送,因為會在更高級的數(shù)據(jù)鏈路控制層(HDLC)中進行CRC校驗。其余的信息與原標準格式一致,應(yīng)用軟件(控制器中的MSTR或主機中的Modcom III)可將這些信息幀組成數(shù)據(jù)包。圖9示例說明了如何將讀寄存器值的請求嵌入到Modbus

29、網(wǎng)絡(luò)的數(shù)據(jù)幀中。圖9:Modbus+數(shù)據(jù)內(nèi)容控制器支持的功能代碼下表列出Modicon控制器支持的功能代碼:以十進制表示?!癥”表示支持“N”表示不支持。代碼名稱 384484584884M8498401讀線圈狀態(tài)YYYYYY 02 讀輸入狀態(tài) Y Y Y Y Y Y03 讀線保持寄存器Y Y Y YY Y04 讀輸入寄存器Y Y Y Y Y Y05 強制單個線圈 Y Y YY Y Y06 預(yù)置單個寄存器 Y YYYYY07 讀不正常狀態(tài)Y YYYYY 08 診斷(見第3章)09 程序 484 N Y N N N N 10 查詢 484 N Y N N N N 11 通訊事件控制 Y N Y

30、N N Y 12 通訊事件記錄 Y N Y N N Y 13 程序控制器 Y N Y N N Y 14 查詢控制器 Y N Y N N Y 15 強制多個寄存器 Y Y Y Y Y Y 16 預(yù)置多個寄存器 Y Y Y Y Y Y 17 報告從機 ID Y Y Y Y Y Y 18 程序 884/M84 N N N Y Y N 19 通訊鏈路復(fù)位 N N N Y Y N 20 讀通用參考值 N N YN N Y 21 寫通用參考值 N N Y N N Y 22 Mask Write 4X Register N N NN N (1)23 Read/Write 4X Registers N N N

31、 N N (1)24 Read FIFO 隊列 N N N N N (1)(1)功能代碼僅由984-785控制器支持01 讀線圈狀態(tài)描述讀從機離散量輸出口的 ON/OFF 狀態(tài),不支持廣播。附錄B列出由不同控制器型號支持最大的參數(shù)清單。查詢查詢信息規(guī)定了要讀的起始線圈和線圈量,線圈的起始地址為零,1-16個線圈的尋址地址分為0-15。例:請求從機設(shè)備17讀20-56線圈。QUERYField NameSlave AddressFunctionStarting Address HiStarting Address LoNo. of Points HiNo. of Roints LoError C

32、heck (LRC or CRC)Example(Hex)110100130025圖10: 讀線圈狀態(tài)查詢響應(yīng)響應(yīng)信息中的各線圈的狀態(tài)與數(shù)據(jù)區(qū)的每一位的值相對應(yīng),1=ON; 0=OFF。第一個數(shù)據(jù)字節(jié)的LSB為查詢中的尋址地址,其他的線圈按順序在該字節(jié)中由低位向高位排列,直至8個為止,下一個字節(jié)也是從低位向高位排例。若返回的線圈數(shù)不是8的倍數(shù),則在最后的數(shù)據(jù)字節(jié)中的剩余位至字節(jié)的最高位全部填零,字節(jié)數(shù)區(qū)說明全部數(shù)據(jù)的字節(jié)數(shù)。RESPONSEField NameSlave AddressFunctionByte CountData (Coils 27-20)Data (Coils 35-28)D

33、ata (Coils 43-36)Data (Coils 51-44)Data (Coils 56-52)Error Check (LRC or CRC)Example(Hex)110105CD6BB20E1B圖11: 讀線圈狀態(tài)響應(yīng)線圈27-20的狀態(tài)用CDH表示,二進制值為11001101,該字節(jié)的MCB為線圈27,LSB 為20。線圈從左(27)向右(20)狀態(tài)分別為ON-ON-OFF-OFF-ON-ON-OFF-ON,因此第一個字節(jié)中的線圈從左到右應(yīng)是27-20。下一個字節(jié)的線圈應(yīng)為35至28。位數(shù)據(jù)串行轉(zhuǎn)輸從低位到高位,即2027,2835。最后一個數(shù)據(jù)字節(jié)中,56-52線圈的狀態(tài)為

34、1BH(或二進制00011011),線圈56是左數(shù)第4位,線圈52是該字節(jié)的最低位,所線圈56至52的狀態(tài)分別為ON-ON-OFF-ON-ON注意3個剩余位(至最高位的數(shù))全部填0。02讀輸入位狀態(tài)說明讀從機離散量輸入信號的ON/OFF狀態(tài)。不支持廣播。附錄B列出各種型號控制器所支持的最大參數(shù)量。查詢查詢信息規(guī)定了要讀的輸入起始地址,以及輸入信號的數(shù)量。輸入起始地址為0,1-16個輸入口的地址分別為0-15。例:請求讀從機設(shè)備17的10197-10218的輸入位狀態(tài)。QUERYField NameSlave AddressFunctionStarting Address HiStarting

35、Address LoNo. of Points HiNo. of Roints LoError Check (LRC or CRC)Example(Hex)110200C40016圖12: 讀輸入位狀態(tài)查詢。響應(yīng)響應(yīng)信息中的各輸入口的狀態(tài),分別對應(yīng)于數(shù)據(jù)區(qū)中的每一位值,1 = ON; 0 = OFF,第一個數(shù)據(jù)字節(jié)的LSB為查詢中的尋址地址,其他輸入口按順序在該字節(jié)中由低位向高位排列,直至8個位為止。下一個字節(jié)中的8個輸入位也是從低位到高位排列。若返回的輸入位數(shù)不是8的倍數(shù),則在最后的數(shù)據(jù)字節(jié)中的剩余位直至字節(jié)的最高位全部填零。字節(jié)的最高位,字節(jié)數(shù)區(qū)。說明了全部數(shù)據(jù)的字節(jié)數(shù)。例:對查詢作出響應(yīng)

36、(參見上頁)。RESPONSEField NameSlave AddressFunctionByte CountData (Inputs 10204-10197)Data (Inputs 10212-10205)Data (Inputs 10218-10213)Error Check (LRC or CRC)Example(Hex)110203ACDB35圖13:讀輸入位狀態(tài)響應(yīng)。輸入位10204-10197的狀態(tài)用35H (或二進制00110101) 表示。輸入位10218為左數(shù)第3位,10213輸入位為LSB,輸入位10218-10213的狀態(tài)分別為ON-ON-OFF-ON-OFF-ON,

37、注意最位還有2個剩余位需填零。03讀保持寄存器說明讀從機保持寄存器的二進制數(shù)據(jù)不支持廣播,附錄B列出了由各種型號控制器所支持的最大的參數(shù)量查詢查詢信息規(guī)定了要讀的寄存器起始地址及寄存器的數(shù)量,寄存器尋址起始地址為0000,寄存器1-16所對應(yīng)的地址分別為0-15QUERYField NameSlave AddressFunctionStarting Address HiStarting Address LoNo. of Points HiNo. of Roints LoError Check (LRC or CRC)Example(Hex)1103006B0003圖14:讀保持寄存器-查詢響應(yīng)

38、響應(yīng)信息中的寄存器數(shù)據(jù)為二進制數(shù)據(jù),每個寄存器分別對應(yīng)2個字節(jié),第一個字節(jié)為高位值數(shù)據(jù),第二個字節(jié)為低位數(shù)據(jù)。對984-X8X型控制器(如984-685等),掃描數(shù)據(jù)的速率為每次125個寄存器。對其它控制器型號的掃描速率為每次32個寄存器,全部數(shù)據(jù)完成組合后返回響應(yīng)信息。例按查詢要求返回響應(yīng)。RESPONSEField NameSlave AddressFunctionByte CountData Hi (Register 40108)Data Lo(Register 40108)Data Hi(Register 40109)Data Lo(Register 40109)Data Hi(Reg

39、ister 40110)Data Lo(Register 40110)Error Check (LRC or CRC)Example(Hex)110306022B00000064圖15:讀寄存器-響應(yīng)寄存器40108的數(shù)據(jù)用022BH 2個字節(jié)(或用十進制555)表示,寄存器40109-40110中的數(shù)據(jù)為0000和0064H,(十進制時為0和100)04讀輸入寄存器說明讀從機輸入寄存器(3X類型)中的二進制數(shù)據(jù),不支持廣播附錄B列出了由各種型號控制器所支持的最大的參數(shù)量查詢查詢信息規(guī)定了要讀的寄存器的起始地址及寄存器的數(shù)量,尋止起始地址為0,寄存器1-16所對應(yīng)的地址分別為0-15。例:請求

40、讀從機設(shè)備17中的30009寄存器。QUERYField NameSlave AddressFunctionStarting Address HiStarting Address LoNo. of Points HiNo. of Roints LoError Check (LRC or CRC)Example(Hex)110400080001圖16:讀輸入寄存器-查詢響應(yīng)響應(yīng)信息中的寄存器數(shù)據(jù)為每個寄存器分別對應(yīng)2個字節(jié),第一個字節(jié)為高位數(shù)據(jù),第二個字節(jié)為低位數(shù)據(jù)。對984-X8X型控制器(如984-685等),掃描數(shù)據(jù)的速率為每次125個寄存器,對其它型號的控制器為每次32個寄存器。數(shù)據(jù)完成

41、組合后,返回響應(yīng)信息。例按查詢要求返回響應(yīng)RESPONSEField NameSlave AddressFunctionByte CountData Hi(Register 30009)Data Lo(Register 30009)Error Check (LRC or CRC)Example(Hex)110402000A圖17:讀寄存器-響應(yīng)寄存器30009中的數(shù)據(jù)用000AH 2個字節(jié)(或用十進制10)表示05強制單個線圈說明強制單個線圈(0X類型)為ON或OFF狀態(tài)。廣播時,該功能可強制所有從機中同一類型的線圈均為ON或OFF狀態(tài)。ø 注意:該功能可越過控制器內(nèi)存的保護狀態(tài)和線

42、圈的禁止?fàn)顟B(tài)。線圈強制狀態(tài)一直保持有效直至下一個控制邏輯作用于線圈為止??刂七壿嬛袩o線圈程序時,則線圈處于強制狀態(tài)。附錄B中列出了由各種型號控制器所支持的最大的參數(shù)量。查詢查詢信息規(guī)定了需要強制線圈的類型,線圈起始地址為0,線圈1的尋址地址為0由查詢數(shù)據(jù)區(qū)中的一個常量。規(guī)定被請求線圈的ON/OFF狀態(tài), FF00H值請求線圈處于ON狀態(tài),0000H值請求線圈處于OFF狀態(tài),其它值對線圈無效,不起作用。例:強制從機設(shè)備17中的173線圈為ON狀態(tài)QUERYField NameSlave AddressFunctionCoil Address HiCoil Address LoForce Data

43、 HiForce Data LoError Check (LRC or CRC)Example(Hex)110500ACFF00圖18:強制單個線圈-查詢響應(yīng)線圈為強制狀態(tài)后即返回正常響應(yīng)例:按查詢要求返回響應(yīng)RESPONSEField NameSlave AddressFunctionCoil Address HiCoil Address LoForce Data HiForce Data LoError Check (LRC or CRC)Example(Hex)110500ACFF00圖19:強制單個線圈06預(yù)置單個寄存器說明把一個值預(yù)置到一個4X類型保持寄存器中。廣播時,該功能把值預(yù)置

44、到所有從機的相同類型的寄存器中。ø 注意:該功能可越過控制器的內(nèi)存保護。使寄存器中的預(yù)置值保持有效。只能由控制器的下一個邏輯信號來處理該預(yù)置值。若控制邏輯中無寄存器程序時,則寄存器中的值保持不變。附錄B中列出了各種型號控制器所支持的最大的參數(shù)量查詢查詢信息規(guī)定了要預(yù)置寄存器的類型,寄存器尋址起始地址為0,寄存器1所對應(yīng)的地址為0。請求的預(yù)置值在查詢數(shù)據(jù)區(qū),M84或484控制器使用一個10位二進制值,其中高6位設(shè)定為0,而其它類型的控制器使用16位值。例:請求把從機設(shè)備17中的40002寄存器預(yù)置為0003H值。QUERYField NameSlave AddressFunctionR

45、egister Address HiRegister Address LoPreset Data HiPreset Data LoError Check (LRC or CRC)Example(Hex)110600010003圖20:預(yù)置單個寄存器-查詢響應(yīng)寄存器內(nèi)容被預(yù)置后返回正常響應(yīng)例:按查詢要求返回響應(yīng)RESPONSEField NameSlave AddressFunctionRegister Address HiRegister Address LoPreset Data HiPreset Data LoError Check (LRC or CRC)Example(Hex)1106

46、00010003圖21:預(yù)置單個寄存器-響應(yīng)07讀不正常狀態(tài)說明讀從中機中8個不正常狀態(tài)線圈的數(shù)據(jù),某些線圈號已在不同型號的控制器中預(yù)定義,而其它的線圈由用戶編程,作為有關(guān)控制器的狀態(tài)信息,如“machine ON/OFF”,“heads retraced”,(縮回標題),“safeties satisfied”(安全性滿意),“error conditions”(存在錯誤條件)或其它用戶定義的標志等。該功能碼不支持廣播。該功能代碼為存取該類信息提供了一種簡單的方法,不正常線圈的類型是已知的(在功能代碼中不需要線圈類型) 預(yù)定義的不正常線圈號如下:控制器型號線圈設(shè)定M84,184/384,58

47、4,9841-8用戶定義484257 電池狀態(tài)258-264用戶定義884761電池狀態(tài)762內(nèi)存保護狀態(tài)763R10工況狀態(tài)764-768用戶預(yù)定義查詢例請求讀從機設(shè)備17中的不正常狀態(tài)QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)1107圖22:讀不正常狀態(tài)-查詢響應(yīng)正常響應(yīng)包含 8 個不正常的線圈狀態(tài),為一個數(shù)據(jù)字節(jié),每個線圈一位。LSB對應(yīng)為最低線圈類型的狀態(tài)。例:按查詢要求返回響應(yīng):QUERYField NameSlave AddressFunctionError Check (LRC

48、or CRC)Example(Hex)110B圖23:讀不正常狀態(tài)響應(yīng)該例子中,線圈數(shù)據(jù)為 6DH (二進制0110 ,1101),從左到右 (最高位至最低位) 的線圈狀態(tài)分別為: OFF ON ON OFF ON ON OFF ON。若控制器型號為 984,這些位表示線圈 8 至 1 的狀態(tài);若控制器型號為 484 則表示線圈 264 至 257 的狀態(tài)。11 (0B Hex) 取通訊事件計數(shù)器說明由從機通訊事件計數(shù)器返回一個狀態(tài)字和事件數(shù),依據(jù)一串信息前后讀取的當(dāng)前數(shù)值,由主機決定其信息是否已被從機正常處理,該功能代碼不支持廣播。信息成功完成 1 次,使控制器的事件計數(shù)器加 1, 不正常響

49、應(yīng),查詢命令或取事件計數(shù)器命令等,對計數(shù)值不起作用。通過診斷功能代碼 (08),(若重起動通訊選擇子功能代碼 0001) 或計數(shù)器和診斷寄存清零器代碼 (000A) 等可對事件計數(shù)器復(fù)位。查詢例:請求讀取從機設(shè)備 17 的通訊事件計數(shù)器QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)110B圖 24:讀取通訊事件計數(shù)器查詢響應(yīng)正常響應(yīng)含一個帶 2 個字節(jié)的狀態(tài)字和一個雙字節(jié)的事件數(shù),若從機還未處理完以前發(fā)出的程序值狀態(tài)字中的各位。均為 1 (FFFFH),處理完時,各位值均為 0(0000H)。例:

50、按查詢要求返回響應(yīng)QUERYField NameSlave AddressFunctionStatus HiStatus LoEvent Count HiEvent Count LoError Check (LRC or CRC)Example(Hex)110BFFFF0108圖 25:讀取通訊事件計數(shù)器響應(yīng)該列子中,狀態(tài)字是 FFFFH,說明從機還在處理程序,控制器計算的事件數(shù)為 264 (0108H)12 (0C Hex) 讀取通訊事件記錄說明由從機返回一個狀態(tài)字,事件數(shù),信息數(shù)和一個事件的數(shù)據(jù)區(qū)。不支持廣播狀態(tài)字和事件數(shù)與讀取通訊事件計數(shù)器功能代碼(11,OBH)返回值相同。信息計數(shù)器包

51、含從機處理,(最后一次再起動,計數(shù)器清零操作,或通電)的信息量,該值與由診斷功能代碼 (08),總線信息數(shù)子功能代碼 (11,0BH) 返回的值相同。事件數(shù)據(jù)區(qū)包含 0-64 個字節(jié)。每個字節(jié)對應(yīng)Modbus 送出的一個狀態(tài),或子機接收操作的一個狀態(tài)。由子機把事件送到順序排列的區(qū)域。字節(jié) 0 為最新的事件,最大新的確字節(jié)刷新該區(qū)域的最老的字節(jié)。查詢例:請求從機設(shè)備 17 讀取通訊事件記錄QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)110C圖 26:讀取通訊事件記錄查詢響應(yīng)正常響應(yīng)含一個 2 個字

52、節(jié)的狀態(tài)字區(qū),一個 2 個字節(jié)的事件數(shù)區(qū)和一個 2 個字節(jié)的信息數(shù)區(qū),以及有 0-64 個字節(jié)的事件區(qū),一個字節(jié)數(shù)區(qū)定義上述 4 個區(qū)的數(shù)據(jù)的總長度。例:按查詢要求返回響應(yīng)RESPONSEField NameSlave AddressFunctionByte CountStatus HIStatus LoEvent Count HiEvent Count LoMessage Count HiMessage Count LoEvent 0Event 1Error Check (LRC or CRC)Example(Hex)110C080000010801212000圖 27:讀取通訊事件記錄響應(yīng)在這例子中狀態(tài)字為 0000H,說明從機已完成程序處理從機計算的事件數(shù)為 264 (0108H),已處理的信息數(shù)為 289 (0121H)。 最近的通訊事件在 Event 0 字節(jié)中。數(shù)值 20H 表示該從機已最后進入了只聽狀態(tài) (Listen Only Mode)。以前的事件在 Event

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論