Modbus-RTU規約詳解參考模板_第1頁
Modbus-RTU規約詳解參考模板_第2頁
Modbus-RTU規約詳解參考模板_第3頁
Modbus-RTU規約詳解參考模板_第4頁
Modbus-RTU規約詳解參考模板_第5頁
已閱讀5頁,還剩77頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

4、校驗,控制器可直接或通過調制解調器(以后簡稱Modems)接入總線(網絡)。控制器通訊使用主從技術,即主機能起動數據傳輸,稱查詢。而其它設備(從機)應返回對查詢作出的響應,或處理查詢所要求的動作。典應的主機設備應包括主處理器和編程器。典應的從機包括可編程控制器。主機可對各從機尋址,發出廣播信息,從機返回信息作為對查詢的響應。從機對于主機的廣播查詢,無響應返回Modbus協議報據設備地址,請求功能代碼,發送數據,錯誤校驗碼,建立了主機查詢格式,從機的響應信息也用Modbus協議組織,它包括確認動作的代碼,返回數據和錯誤校驗碼。若在接收信息時出現一個錯誤或從機不能執行要求的動作時,從機會組織一個錯

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

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

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

8、 模式當控制器以ASCII模式在Modbus總線上進行通訊時,一個信息中的每8位字節作為2個ASCII字符傳輸的,這種模式的主要優點是允許字符之間的時間間隔長達IS,也不會出現錯誤。ASCII碼每一個字節的格式:編碼系統: 16進制,ASCII字符0-9,A-F 1個16進制 數據位: 1起始位7位數據,低位先送奇/偶校驗時1位;無奇偶校驗時0位(LRC)1位帶校驗1停止位;無校驗2止位錯誤校驗區: 縱向冗余校驗RTU模式控制器以RTU模式在Modbus總線上進行通訊時,信息中的每8位字節分成2個4位16進制的字符,該模式的主要優點是在相同波特率下其傳輸的字符的密度高于ASCII模式,每個信息

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

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

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

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

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

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

15、出現的錯誤類型和不正常響應的原因。主機設備的應用程序負責處理不正常響應,典型處理過程是主機把對信息的測試和診斷送給從機,并通知操作者。數據區的內容數據區有2個16進制的數據位,數據范圍為00-FF(16進制),根據網絡串行傳輸的方式,數據區可由一對ASCII字符組成或由一個RTU 字符組成。主機向從機設備發送的信息數據中包含了從機執行主機功能代碼中規定的請求動作,如離散量寄存器地址,處理對象的數目,以及實際的數據字節數等。舉例說明,若主機請求從機讀一組寄存器(功能代碼03),該數據規定了寄存器的起始地址,以及寄存器的數量。又如,主機要在一從機中寫一組寄存器,(則功能代碼為10H)。該數據區規定

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

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

18、用整個信息的校驗,字符校驗和信息幀校驗均由主機設備產生,并在傳送前加到信息中去。從機設備在接收信息過程中校驗每個字符和整個信息。主機可由用戶設置的一個預定時間間隔,確定是否放棄傳送信息。該間隔應有足夠的時間來滿足從機的正常響應。若主機檢測到傳輸錯誤時,則傳輸的信息無效。從機不再向主機返回響應信息。此時,主機會產生一個超時信息,并允許主機程序處理該錯誤信號。注意:主機向實際并未存在的從機發送信息時也會引起超時出錯信號。在MAP或Modbus+等其它網駱上使用時,采用比Modbus更高一級的數據幀校驗方法。在這些網絡中,不再運用Modbus中的LRC或CRC校驗方法。當出現發送錯誤時,網絡中的通訊

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

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

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

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

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

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

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

26、ting Address 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說明“字節數”區在一個貢型響應中的應用。RESPON

27、SEField 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 0

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

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

30、Y N Y 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 17 報告從機 ID Y Y Y Y Y Y 18 程序 884/M84 N N N Y Y N 19 通訊鏈路復位 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

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

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

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

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

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

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:讀輸入位狀態響應。輸入位10204-10197的狀態用35H (或二進制00110101) 表示。輸入位10218為左數第3位,10213輸入位為LSB,輸入位10218-10213的狀態分別為ON-ON-OFF-ON-O

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

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

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

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

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

42、保護狀態和線圈的禁止狀態。線圈強制狀態一直保持有效直至下一個控制邏輯作用于線圈為止。控制邏輯中無線圈程序時,則線圈處于強制狀態。附錄B中列出了由各種型號控制器所支持的最大的參數量。查詢查詢信息規定了需要強制線圈的類型,線圈起始地址為0,線圈1的尋址地址為0由查詢數據區中的一個常量。規定被請求線圈的ON/OFF狀態, FF00H值請求線圈處于ON狀態,0000H值請求線圈處于OFF狀態,其它值對線圈無效,不起作用。例:強制從機設備17中的173線圈為ON狀態QUERYField NameSlave AddressFunctionCoil Address HiCoil Address LoForc

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

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

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

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

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

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

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

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

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

52、個 2 個字節的狀態字區,一個 2 個字節的事件數區和一個 2 個字節的信息數區,以及有 0-64 個字節的事件區,一個字節數區定義上述 4 個區的數據的總長度。例:按查詢要求返回響應RESPONSEField NameSlave AddressFunctionByte CountStatus HIStatus LoEvent Count HiEvent Count LoMessage Count HiMessage Count LoEvent 0Event 1Error Check (LRC or CRC)Example(Hex)110C080000010801212000圖 27:讀取通訊事件記錄響應在這例子中狀態字為 0000H,說明從機已完成程序處理從機計算的事件數為 264 (0108H),已處理的信息數為 289 (0121H)。 最近的通訊事

溫馨提示

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

評論

0/150

提交評論