




已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章Modbus協(xié)議 介紹Modbus協(xié)議介紹 兩種串行傳輸模式 信息幀 錯誤檢查方法Modbus協(xié)議介紹Modbus可編程控制器之間可相互通訊,也可與不同網(wǎng)絡上的其他設備進行通訊,支撐網(wǎng)絡有Modicon的Modbus和Modbus+工業(yè)網(wǎng)絡。網(wǎng)絡信息存取可由控制器內置的端口,網(wǎng)絡適配器以及Modicon提供的模塊選件和網(wǎng)關等設備實現(xiàn),對OEM(機械設備制造商)來說,Modicon可為合作伙伴提供現(xiàn)有的程序,可使Modbus+網(wǎng)絡緊密地集成到他們的產品設計中去。Modicon的各種控制器使用的公共語言被稱為 Modbus協(xié)議,該協(xié)議定義了控制器能識別和使用的信息結構。當在Modbus網(wǎng)絡上進行通訊時,協(xié)議能使每一臺控制器知道它本身的設備地址,并識別對它尋址的數(shù)據(jù),決定應起作用的類型,取出包含在信息中的數(shù)據(jù)和資料等,控制器也可組織回答信息,并使用Modbus協(xié)議將此信息傳送出去。在其他網(wǎng)絡上使用時,數(shù)據(jù)包和數(shù)據(jù)幀中也包含著Modbus協(xié)議。如,Modbus+或MAP網(wǎng)絡控制器中有相應的應用程序庫和驅動程序,實現(xiàn)嵌入式Modbus協(xié)議信息與此網(wǎng)絡中用子節(jié)點設備間通訊的特殊信息幀的數(shù)據(jù)轉換。該轉換也可擴展,處理節(jié)點地址,路由,和每一個特殊網(wǎng)絡的錯誤檢查方法。如包含在Modbus協(xié)議中的設備地址,在信息發(fā)送前就轉換成節(jié)點地址,錯誤檢查區(qū)也用于數(shù)據(jù)包,與每個網(wǎng)絡的協(xié)議一致,最后一點是需用Modbus協(xié)議,寫入嵌入的信息,定義應處理的動作。圖1說明了采用不同通訊技術的多層網(wǎng)絡中設備的互連方法。在信息交換中,嵌入到每個網(wǎng)絡數(shù)據(jù)包中的Modbus協(xié)議,提供了設備間能夠交換數(shù)據(jù)的公共的語言。984A/B 和S985AT/HC-984 和HOST/MMHIAT/HC-984 和HOST/MMHI(去MB+)S980(去MAP)編程器編程器4個Modus設備或網(wǎng)絡圖1:Modbus協(xié)議應用示意圖* MB+為 ModbusModbus上的數(shù)據(jù)傳輸Modicon控制器上的標準Modbus端口是使用一個RS-232兼容的串行接口,定義了連接器,接線電纜,信號等級,傳輸波特率,和奇偶校驗,控制器可直接或通過調制解調器(以后簡稱Modems)接入總線(網(wǎng)絡)。控制器通訊使用主從技術,即主機能起動數(shù)據(jù)傳輸,稱查詢。而其它設備(從機)應返回對查詢作出的響應,或處理查詢所要求的動作。典應的主機設備應包括主處理器和編程器。典應的從機包括可編程控制器。主機可對各從機尋址,發(fā)出廣播信息,從機返回信息作為對查詢的響應。從機對于主機的廣播查詢,無響應返回Modbus協(xié)議報據(jù)設備地址,請求功能代碼,發(fā)送數(shù)據(jù),錯誤校驗碼,建立了主機查詢格式,從機的響應信息也用Modbus協(xié)議組織,它包括確認動作的代碼,返回數(shù)據(jù)和錯誤校驗碼。若在接收信息時出現(xiàn)一個錯誤或從機不能執(zhí)行要求的動作時,從機會組織一個錯誤信息。并向主機發(fā)送作為響應。在其它總線上傳輸數(shù)據(jù)除標準的Modbus功能外,有些Modcon控制器內置端口或總線適配器,在Modbus+總線上實現(xiàn)通訊或使用網(wǎng)絡適配器,在MAP網(wǎng)絡上通訊。在這些總線上,控制器間采用對等的技術進行通訊,即任意一個控制器可向其它控制器啟動數(shù)據(jù)傳送。因此,一臺控制器既可作為從機,也可作為主機,常提供多重的內部通道,允許并列處理主機和從機傳輸數(shù)據(jù)在信息級,盡管網(wǎng)絡通訊方法是對等的,但Modbus協(xié)議仍采用主從方式,若一臺控制器作為主機設備發(fā)送一個信息,則可從一臺從機設備返回一個響應,類似,當一臺控制器接受信息時,它就組織一個從機設備的響應信息,并返回至原發(fā)送信息的控制器。8 位數(shù)據(jù)字節(jié)錯誤校驗功能代碼8 位數(shù)據(jù)字節(jié)設備地址功能代碼設備地址主機查詢信息查詢響應周期:錯誤校驗從機響應信息圖2:主從查詢響應周期查詢:查詢中的功能代碼為被尋址的從機設備應執(zhí)行的動作類型。數(shù)據(jù)字節(jié)中包含從機須執(zhí)行功能的各附加信息,如功能代碼03將查詢從機,并讀保持寄存器。并用寄存器的內容作響應。該數(shù)據(jù)區(qū)必須含有告之從機讀取寄存器的起始地址及數(shù)量,錯誤校驗區(qū)的一些信息,為從機提供一種校驗方法,以保證信息內容的完整性。響應:從機正常響應時,響應功能碼是查詢功能碼的應答,數(shù)據(jù)字節(jié)包含從機采集的數(shù)據(jù),如寄存器值或狀態(tài)。如出現(xiàn)錯誤,則修改功能碼,指明為錯誤響應。并在數(shù)據(jù)字節(jié)中含有一個代碼,來說明錯誤,錯誤檢查區(qū)允許主機確認有效的信息內容。兩種串行傳輸模式控制器可使用ASCII或RTU通訊模式,在標準Modbus上通訊。在配置每臺控制器時,用戶須選擇通訊模式以及串行口的通訊參數(shù)。(波特率,奇偶校驗等),在Modbus總線上的所有設備應具有相同的通訊模式和串行通訊參數(shù)。選擇ASCII或RTU模式用于標準的Modbus總線。它定義了總線上串行傳輸信息區(qū)的“位”的含義,決定信息打包及解碼方法。如在MAP和Modbus+總線上時,Modbus信息以幀的方式出現(xiàn),并與串行傳輸無關,如請求讀保持寄存器可以在Modbus+上的兩個控制器之間處理,而與使用的控制器的Modbus端口無關。ASCII 模式當控制器以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ù)傳輸。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信息以幀的方式傳輸,每幀有確定的起始點和結束點,使接收設備在信息的起點開始讀地址,并確定要尋址的設備 (廣播時對全部設備),以及信息傳輸?shù)慕Y束時間??蓹z測部分信息,錯誤可作為一種結果設定。對MAP或Modbus+協(xié)議可對信息幀的起始和結束點標記進行處理,也可管理發(fā)送至目的地的信息,此時,信息傳輸中Modbus數(shù)據(jù)幀內的目的地址已無關緊要,因為Modbus+地址已由發(fā)送者或它的網(wǎng)絡適配器把它轉換成網(wǎng)絡節(jié)點地址和路由。ASCII幀在ASCII模式中,以(:)號(ASCII3AH)表示信息開始,以回撤一換行鍵(CRLF) (ASCII OD和OAH)表示信息結束。對其它的區(qū),允許發(fā)送的字符為16進制字符0-9,A-F。網(wǎng)絡中設備連續(xù)檢測并接收一個冒號(:)時,每臺設備對地址區(qū)解碼,找出要尋址的設備。字符之間的最大間隔為1S,若大于1S,則接收設備認為出現(xiàn)了一個錯誤。典型的信息幀見下表開始地址功能數(shù)據(jù)縱向冗余檢查結束1字符:2字符2字符n字符2字符2字符圖3 ASCII信息幀例外:對于584和984A/B/X控制器,一個ASCII信息可在LRC區(qū)后正常終止,而不需發(fā)送CRLF字符,此時出現(xiàn)IS的時間間隔,控制器也將認為是正常中斷。RTU幀RTU模式中,信息開始至少需要有3.5個字符的靜止時間,依據(jù)使用的波特率,很容易計算這個靜止的時間(如下圖中的T1-T2-T3-T4)。接著,第一個區(qū)的數(shù)據(jù)為設備地址。各個區(qū)允許發(fā)送的字符均為16進制的0-9,A-F。網(wǎng)絡上的設備連續(xù)監(jiān)測網(wǎng)絡上的信息,包括靜止時間。當接收第一個地址數(shù)據(jù)時,每臺設備立即對它解碼,以決定是否是自己的地址。發(fā)送完最后一個字符號后,也有一個3.5個字符的靜止時間,然后才能發(fā)送一個新的信息。整個信息必須連續(xù)發(fā)送。如果在發(fā)送幀信息期間,出現(xiàn)大于1.5個字符的靜止時間時,則接收設備刷新不完整的信息,并假設下一個地址數(shù)據(jù)。同樣一個信息后,立即發(fā)送的一個新信息,(若無3。5個字符的靜止時間)這將會產生一個錯誤。是因為合并信息的CRC校驗碼無效而產生的錯誤。開始地址功能數(shù)據(jù)校驗終止T1-T2-T3-T48 B位S8 B位SN8 B位S16B位 ST1-T2-T3T-4圖4 RTU信息幀Modbus信息幀(Continued)地址設置信息地址包括2個字符(ASCII)或8位(RTU),有效的從機設備地址范圍0-247,(十進制),各從機設備的尋址范圍為1-247。主機把從機地址放入信息幀的地址區(qū),并向從機尋址。從機響應時,把自己的地址放入響應信息的地址區(qū),讓主機識別已作出響應的從機地址。地址0為于廣播地址,所有從機均能識別。當Modbus協(xié)議用于高級網(wǎng)絡時,則不允許廣播或其它方式替代。如Modbus+使用令牌循環(huán),自動更新共享的數(shù)據(jù)庫。功能碼設置信息幀功能代碼包括字符(ASCII)或8位(RTU)。有效碼范圍1-225(十進制),其中有些代碼適用全部型號的Modicon控制器,而有些代碼僅適用于某些型號的控制器。還有一些代碼留作將來使用,有關功能代替碼的設置將在第2章說明。當主機向從句發(fā)送信息時,功能代碼向從機說明應執(zhí)行的動作。如讀一組離散式線圈或輸入信號的ON/OFF狀態(tài),讀一組寄存器的數(shù)據(jù),讀從機的診斷狀態(tài),寫線圈(或寄存器),允許下截、記錄、確認從機內的程序等。當從機響應主機時,功能代碼可說明從機正常響應或出現(xiàn)錯誤(即不正常響應),正常響應時,從句簡單返回原始功能代碼;不正常響應時,從機返回與原始代碼相等效的一個碼,并把最高有效位設定為“1”。如,主機要求從機讀一組保持寄存器時,則發(fā)送信息的功能碼為:0000 0011 (十六進制03)若從機正確接收請求的動作信息后,則返回相同的代碼值作為正常響應。發(fā)現(xiàn)錯時,則返回一個不正常響信息:1000 0011(十六進制83)從機對功能代碼作為了修改,此外,還把一個特殊碼放入響應信息的數(shù)據(jù)區(qū)中,告訴主機出現(xiàn)的錯誤類型和不正常響應的原因。主機設備的應用程序負責處理不正常響應,典型處理過程是主機把對信息的測試和診斷送給從機,并通知操作者。數(shù)據(jù)區(qū)的內容數(shù)據(jù)區(qū)有2個16進制的數(shù)據(jù)位,數(shù)據(jù)范圍為00-FF(16進制),根據(jù)網(wǎng)絡串行傳輸?shù)姆绞?,?shù)據(jù)區(qū)可由一對ASCII字符組成或由一個RTU 字符組成。主機向從機設備發(fā)送的信息數(shù)據(jù)中包含了從機執(zhí)行主機功能代碼中規(guī)定的請求動作,如離散量寄存器地址,處理對象的數(shù)目,以及實際的數(shù)據(jù)字節(jié)數(shù)等。舉例說明,若主機請求從機讀一組寄存器(功能代碼03),該數(shù)據(jù)規(guī)定了寄存器的起始地址,以及寄存器的數(shù)量。又如,主機要在一從機中寫一組寄存器,(則功能代碼為10H)。該數(shù)據(jù)區(qū)規(guī)定了要寫入寄存區(qū)的起始地址,寄存器的數(shù)量,數(shù)據(jù)的字節(jié)數(shù),以及要寫入到寄存器的數(shù)據(jù)。若無錯誤出現(xiàn),從機向主機的響應信息中包含了請求數(shù)據(jù),若有錯誤出現(xiàn),則數(shù)據(jù)中有一個不正常代碼,使主機能判斷并作出下一步的動作。數(shù)據(jù)區(qū)的長度可為“零”以表示某類信息,如,主機要求-從機響應它的通訊事件記錄(功能代碼OBH)。此時,從機不需要其他附加的信息,功能代碼只規(guī)定了該動作。信息幀錯誤校驗標準Modbus總線,有兩類錯誤檢查方法,錯誤檢查區(qū)的內容按使用的錯誤檢查方法填寫。SDCII使用ASCII方式時,錯誤校驗碼為2個ASCII字符,錯誤校驗字符是LRC校驗結果。校驗時,起始符為(:)冒號結束符為CRLF字符。RTU使用RTU方式時,錯誤校驗碼為一個16位的值,2個8位字節(jié)。錯誤校驗值是對信息內容執(zhí)行CRC校驗結果。CRC校驗信息幀是最后的一個數(shù)據(jù),得到的校驗碼先送低位字節(jié),后送高位字節(jié),所以CRC碼的高位字節(jié)是最后被傳送的信息。串行傳送信息在標準的Modbus上傳送的信息中,每個字符或字節(jié),按由左向右的次序傳送:帶奇偶校驗最低有效位:(LSB)最高有效位:(MSB)ASCII數(shù)據(jù)幀位序:無奇偶校驗圖5 ASCII位序RTU數(shù)據(jù)幀位序:帶奇偶校驗無奇偶校驗圖6 RTU位序錯誤校驗方法標準的Modbus串行通訊網(wǎng)絡采用兩種錯誤校驗方法,奇偶校驗(奇或偶)可用于校驗每一個字符,信息幀校驗(LRC或CRC)適用整個信息的校驗,字符校驗和信息幀校驗均由主機設備產生,并在傳送前加到信息中去。從機設備在接收信息過程中校驗每個字符和整個信息。主機可由用戶設置的一個預定時間間隔,確定是否放棄傳送信息。該間隔應有足夠的時間來滿足從機的正常響應。若主機檢測到傳輸錯誤時,則傳輸?shù)男畔o效。從機不再向主機返回響應信息。此時,主機會產生一個超時信息,并允許主機程序處理該錯誤信號。注意:主機向實際并未存在的從機發(fā)送信息時也會引起超時出錯信號。在MAP或Modbus+等其它網(wǎng)駱上使用時,采用比Modbus更高一級的數(shù)據(jù)幀校驗方法。在這些網(wǎng)絡中,不再運用Modbus中的LRC或CRC校驗方法。當出現(xiàn)發(fā)送錯誤時,網(wǎng)絡中的通訊協(xié)議通知發(fā)送設備有錯誤出現(xiàn),并允許根據(jù)設置的情況,重試或放棄信息發(fā)送。若信息已發(fā)送,但從機設備未作響應,則主機通過程序檢查后發(fā)出一個超時錯誤。奇偶校驗用戶可設置奇偶校驗或無校驗,以此決定每個字符發(fā)送時的奇偶校驗位的狀態(tài)。何論是奇或偶校驗,它均會計算每個字符數(shù)據(jù)中值為“1”的位數(shù),ASCII方式為位數(shù)據(jù);RTU方式為8位數(shù)據(jù)。并根據(jù)“1”的位數(shù)值(奇數(shù)或偶數(shù))來設定為“0”或“1”如一個RTU數(shù)據(jù)幀中8位數(shù)據(jù)位為:1100 0101在該幀中,值為“1”的總位數(shù)為4,即偶數(shù)。如采用奇校驗方式時,則 “1”的總位數(shù)為奇數(shù),即5。發(fā)送信息時,計算奇偶位,并加到數(shù)據(jù)幀中,接收設備統(tǒng)計位值為“1”的數(shù)量,若與該設備要求的不一致時產生一個錯誤。在Modbus總線上的所有設備必須采用相同的奇偶校驗方式。注意:奇偶校驗只能檢測到數(shù)據(jù)幀在傳輸過程中丟失奇數(shù)“位”時才產生的錯誤。如采用奇數(shù)校驗方式時,一個包含3個“1”位的數(shù)據(jù)丟失2個“1”位時,其結果仍然是奇數(shù)。若無奇偶校驗方式時,傳輸中不作實際的校驗,應附加一個停止位。LRC校驗ASCII方式時,數(shù)據(jù)中包含錯誤校驗碼,采用LRC校驗方法時,LRC校驗信息以冒號“:”開始,以CRLF字符作為結束。它忽略了單個字符數(shù)據(jù)的奇偶校驗的方法。LRC校驗碼為1個字節(jié),8位二進制值,由發(fā)送設備計算LRC值。接收設備在接收信息時計算LRC校驗碼。并與收到的LRC的實際值進行比較,若二者不一致,亦產生一個錯誤。在梯形圖中,CKSM函數(shù)可計算數(shù)據(jù)信息中LRC的校驗。用于主計算機時請查閱附錄C中的一個實例,它詳細說明LRC的校驗的過程。錯誤校驗方法CRC校驗RTU方式時,采用CRC方法計算錯誤校驗碼,CRC校驗傳送的全部數(shù)據(jù)。它忽略信息中單個字符數(shù)據(jù)的奇偶校驗方法。CRC碼為2個字節(jié),16位的二進制值。由發(fā)送設備計算CRC值,并把它附到信息中去。接收設備在接收信息過程中再次計算CRC值并與CRC的實際值進行比較,若二者不一致,亦產生一個錯誤,校驗開始時,把16位寄存器的各位都置為“1”,然后把信息中的相鄰2個8位字節(jié)數(shù)據(jù)放到當前寄存器中處理,只有每個字符的8位數(shù)據(jù)用于CRC處理。起始位,停止位和校驗位不參與CRC計算。CRC校驗時,每個8位數(shù)據(jù)與該寄存器的內容進行異或運算,然后向最低有效位(LSB)方向移位,用零填入最高有效位(MSB)后,再對LSB檢查,若LSB=1,則寄存器與預置的固定值異或,若LSB=0,不作異或運算。重復上述處理過程,直至移位8次,最后一次(第8次)移位后,下一個8位字節(jié)數(shù)據(jù)與寄存器的當前值異或,再重復上述過程。全部處理完信息中的數(shù)據(jù)字節(jié)后,最終得到的寄存器值為CRC值。CRC值附加到信息時,低位在先,高位在后。在梯形圖中,CKSM函數(shù)計算信息中的CRC值。用于主計算機時,可查閱附錄C中的一個實例,它詳細說明了CRC的校驗。第二章數(shù)據(jù)和控制功能r Modbus 功能代碼格式r Modbus 功能代碼總結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 保持寄存器40108尋址寄存器地址為006B hex(進制107)Modbus信息中區(qū)內容圖7為一個例子,說明了Modbus的查詢信息,圖8為正常響應的例子,這兩例子中的數(shù)據(jù)均是16進制的,也表示了以ASCLL或RTU方式構成數(shù)據(jù)幀的方法。主機查詢是讀保持寄存器,被請求的從機地址是06,讀取的數(shù)據(jù)來自地址從40108至40110 3個保持寄有器。注意,該信息規(guī)定了寄存器的起始地址為0107 (006BH)。從機響應返回該功能代碼,說明是正常響應,字節(jié)數(shù)“Byle count”中說明有多少個8位字節(jié)被返回。因無論是ASCII方式還是RTU方式,它表明了附在數(shù)據(jù)區(qū)中8位字節(jié)的數(shù)量。ASCII方式時,字節(jié)數(shù)為數(shù)據(jù)中ASCII字符實際數(shù)的一半,每4個位的16進制值需要一個ASCII字符表示,因此在數(shù)據(jù)中應由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ù)使用方法:當在緩沖區(qū)組織響應信息時,“字節(jié)數(shù)”區(qū)域中的值應與該信息中數(shù)據(jù)區(qū)的字節(jié)數(shù)相等。QUERYField NameHeaderSlave AddressFunctionStarting 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說明“字節(jié)數(shù)”區(qū)在一個貢型響應中的應用。RESPONSEField 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 00000000 00000110 0011CRC (16 bits)None11圖8:從機采用ASCII/RTU方式響應Modbus+數(shù)據(jù)內容在Modbus+網(wǎng)絡發(fā)送的Modbus信息應需嵌入到LLC (邏輯連接控制)級數(shù)據(jù)幀,Modbus信息區(qū)由8位字節(jié)的數(shù)據(jù)組成,類似于RTU中的信息組成。由發(fā)送設備把從機地址轉換成Modbus+路由地址,CRC數(shù)據(jù)不在Modbus信息中發(fā)送,因為會在更高級的數(shù)據(jù)鏈路控制層(HDLC)中進行CRC校驗。其余的信息與原標準格式一致,應用軟件(控制器中的MSTR或主機中的Modcom III)可將這些信息幀組成數(shù)據(jù)包。圖9示例說明了如何將讀寄存器值的請求嵌入到Modbus 網(wǎng)絡的數(shù)據(jù)幀中。圖9:Modbus+數(shù)據(jù)內容控制器支持的功能代碼下表列出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 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 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 N N N 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。例:請求從機設備17讀20-56線圈。QUERYField NameSlave AddressFunctionStarting Address HiStarting Address LoNo. of Points HiNo. of Roints LoError Check (LRC or CRC)Example(Hex)110100130025圖10: 讀線圈狀態(tài)查詢響應響應信息中的各線圈的狀態(tài)與數(shù)據(jù)區(qū)的每一位的值相對應,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)Data (Coils 43-36)Data (Coils 51-44)Data (Coils 56-52)Error Check (LRC or CRC)Example(Hex)110105CD6BB20E1B圖11: 讀線圈狀態(tài)響應線圈27-20的狀態(tài)用CDH表示,二進制值為11001101,該字節(jié)的MCB為線圈27,LSB 為20。線圈從左(27)向右(20)狀態(tài)分別為ON-ON-OFF-OFF-ON-ON-OFF-ON,因此第一個字節(jié)中的線圈從左到右應是27-20。下一個字節(jié)的線圈應為35至28。位數(shù)據(jù)串行轉輸從低位到高位,即2027,2835。最后一個數(shù)據(jù)字節(jié)中,56-52線圈的狀態(tài)為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。例:請求讀從機設備17的10197-10218的輸入位狀態(tài)。QUERYField NameSlave AddressFunctionStarting Address HiStarting Address LoNo. of Points HiNo. of Roints LoError Check (LRC or CRC)Example(Hex)110200C40016圖12: 讀輸入位狀態(tài)查詢。響應響應信息中的各輸入口的狀態(tài),分別對應于數(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ù)。例:對查詢作出響應(參見上頁)。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)響應。輸入位10204-10197的狀態(tài)用35H (或二進制00110101) 表示。輸入位10218為左數(shù)第3位,10213輸入位為LSB,輸入位10218-10213的狀態(tài)分別為ON-ON-OFF-ON-OFF-ON,注意最位還有2個剩余位需填零。03讀保持寄存器說明讀從機保持寄存器的二進制數(shù)據(jù)不支持廣播,附錄B列出了由各種型號控制器所支持的最大的參數(shù)量查詢查詢信息規(guī)定了要讀的寄存器起始地址及寄存器的數(shù)量,寄存器尋址起始地址為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:讀保持寄存器-查詢響應響應信息中的寄存器數(shù)據(jù)為二進制數(shù)據(jù),每個寄存器分別對應2個字節(jié),第一個字節(jié)為高位值數(shù)據(jù),第二個字節(jié)為低位數(shù)據(jù)。對984-X8X型控制器(如984-685等),掃描數(shù)據(jù)的速率為每次125個寄存器。對其它控制器型號的掃描速率為每次32個寄存器,全部數(shù)據(jù)完成組合后返回響應信息。例按查詢要求返回響應。RESPONSEField NameSlave AddressFunctionByte CountData Hi (Register 40108)Data Lo(Register 40108)Data Hi(Register 40109)Data Lo(Register 40109)Data Hi(Register 40110)Data Lo(Register 40110)Error Check (LRC or CRC)Example(Hex)110306022B00000064圖15:讀寄存器-響應寄存器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所對應的地址分別為0-15。例:請求讀從機設備17中的30009寄存器。QUERYField NameSlave AddressFunctionStarting Address HiStarting Address LoNo. of Points HiNo. of Roints LoError Check (LRC or CRC)Example(Hex)110400080001圖16:讀輸入寄存器-查詢響應響應信息中的寄存器數(shù)據(jù)為每個寄存器分別對應2個字節(jié),第一個字節(jié)為高位數(shù)據(jù),第二個字節(jié)為低位數(shù)據(jù)。對984-X8X型控制器(如984-685等),掃描數(shù)據(jù)的速率為每次125個寄存器,對其它型號的控制器為每次32個寄存器。數(shù)據(jù)完成組合后,返回響應信息。例按查詢要求返回響應RESPONSEField NameSlave AddressFunctionByte CountData Hi(Register 30009)Data Lo(Register 30009)Error Check (LRC or CRC)Example(Hex)110402000A圖17:讀寄存器-響應寄存器30009中的數(shù)據(jù)用000AH 2個字節(jié)(或用十進制10)表示05強制單個線圈說明強制單個線圈(0X類型)為ON或OFF狀態(tài)。廣播時,該功能可強制所有從機中同一類型的線圈均為ON或OFF狀態(tài)。 注意:該功能可越過控制器內存的保護狀態(tài)和線圈的禁止狀態(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),其它值對線圈無效,不起作用。例:強制從機設備17中的173線圈為ON狀態(tài)QUERYField NameSlave AddressFunctionCoil Address HiCoil Address LoForce Data HiForce Data LoError Check (LRC or CRC)Example(Hex)110500ACFF00圖18:強制單個線圈-查詢響應線圈為強制狀態(tài)后即返回正常響應例:按查詢要求返回響應RESPONSEField NameSlave AddressFunctionCoil Address HiCoil Address LoForce Data HiForce Data LoError Check (LRC or CRC)Example(Hex)110500ACFF00圖19:強制單個線圈06預置單個寄存器說明把一個值預置到一個4X類型保持寄存器中。廣播時,該功能把值預置到所有從機的相同類型的寄存器中。 注意:該功能可越過控制器的內存保護。使寄存器中的預置值保持有效。只能由控制器的下一個邏輯信號來處理該預置值。若控制邏輯中無寄存器程序時,則寄存器中的值保持不變。附錄B中列出了各種型號控制器所支持的最大的參數(shù)量查詢查詢信息規(guī)定了要預置寄存器的類型,寄存器尋址起始地址為0,寄存器1所對應的地址為0。請求的預置值在查詢數(shù)據(jù)區(qū),M84或484控制器使用一個10位二進制值,其中高6位設定為0,而其它類型的控制器使用16位值。例:請求把從機設備17中的40002寄存器預置為0003H值。QUERYField NameSlave AddressFunctionRegister 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(Hex)110600010003圖21:預置單個寄存器-響應07讀不正常狀態(tài)說明讀從中機中8個不正常狀態(tài)線圈的數(shù)據(jù),某些線圈號已在不同型號的控制器中預定義,而其它的線圈由用戶編程,作為有關控制器的狀態(tài)信息,如“machine ON/OFF”,“heads retraced”,(縮回標題),“safeties satisfied”(安全性滿意),“error conditions”(存在錯誤條件)或其它用戶定義的標志等。該功能碼不支持廣播。該功能代碼為存取該類信息提供了一種簡單的方法,不正常線圈的類型是已知的(在功能代碼中不需要線圈類型) 預定義的不正常線圈號如下:控制器型號線圈設定M84,184/384,584,9841-8用戶定義484257 電池狀態(tài)258-264用戶定義884761電池狀態(tài)762內存保護狀態(tài)763R10工況狀態(tài)764-768用戶預定義查詢例請求讀從機設備17中的不正常狀態(tài)QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)1107圖22:讀不正常狀態(tài)-查詢響應正常響應包含 8 個不正常的線圈狀態(tài),為一個數(shù)據(jù)字節(jié),每個線圈一位。LSB對應為最低線圈類型的狀態(tài)。例:按查詢要求返回響應:QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)110B圖23:讀不正常狀態(tài)響應該例子中,線圈數(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ù)一串信息前后讀取的當前數(shù)值,由主機決定其信息是否已被從機正常處理,該功能代碼不支持廣播。信息成功完成 1 次,使控制器的事件計數(shù)器加 1, 不正常響應,查詢命令或取事件計數(shù)器命令等,對計數(shù)值不起作用。通過診斷功能代碼 (08),(若重起動通訊選擇子功能代碼 0001) 或計數(shù)器和診斷寄存清零器代碼 (000A) 等可對事件計數(shù)器復位。查詢例:請求讀取從機設備 17 的通訊事件計數(shù)器QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)110B圖 24:讀取通訊事件計數(shù)器查詢響應正常響應含一個帶 2 個字節(jié)的狀態(tài)字和一個雙字節(jié)的事件數(shù),若從機還未處理完以前發(fā)出的程序值狀態(tài)字中的各位。均為 1 (FFFFH),處理完時,各位值均為 0(0000H)。例:按查詢要求返回響應QUERYField NameSlave AddressFunctionStatus HiStatus LoEvent Count HiEvent Count LoError Check (LRC or CRC)Example(Hex)110BFFFF0108圖 25:讀取通訊事件計數(shù)器響應該列子中,狀態(tài)字是 FFFFH,說明從機還在處理程序,控制器計算的事件數(shù)為 264 (0108H)12 (0C Hex) 讀取通訊事件記錄說明由從機返回一個狀態(tài)字,事件數(shù),信息數(shù)和一個事件的數(shù)據(jù)區(qū)。不支持廣播狀態(tài)字和事件數(shù)與讀取通訊事件計數(shù)器功能代碼(11,OBH)返回值相同。信息計數(shù)器包含從機處理,(最后一次再起動,計數(shù)器清零操作,或通電)的信息量,該值與由診斷功能代碼 (08),總線信息數(shù)子功能代碼 (11,0BH) 返回的值相同。事件數(shù)據(jù)區(qū)包含 0-64 個字節(jié)。每個字節(jié)對應Modbus 送出的一個狀態(tài),或子機接收操作的一個狀態(tài)。由子機把事件送到順序排列的區(qū)域。字節(jié) 0 為最新的事件,最大新的確字節(jié)刷新該區(qū)域的最老的字節(jié)。查詢例:請求從機設備 17 讀取通訊事件記錄QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)110C圖 26:讀取通訊事件記錄查詢響應正常響應含一個 2 個字節(jié)的狀態(tài)字區(qū),一個 2 個字節(jié)的事件數(shù)區(qū)和一個 2 個字節(jié)的信息數(shù)區(qū),以及有 0-64 個字節(jié)的事件區(qū),一個字節(jié)數(shù)區(qū)定義上述 4 個區(qū)的數(shù)據(jù)的總長度。例:按查詢要求返回響應RESPONSEField NameSlave AddressFunctionByte CountStatus HIStatus LoEvent Count HiEvent Count LoMessage Count HiMessage Count LoEvent 0Event 1Error Check (LRC or CRC)Example(Hex)110C080000010801212000圖 27:讀取通訊事件記錄響應在這例子中狀態(tài)字為 0000H,說明從機已完成程序處理從機計算的事件數(shù)為 264 (0108H),已處理的信息數(shù)為 289 (0121H)。 最近的通訊事件在 Event 0 字節(jié)中。數(shù)值 20H 表示該從機已最后進入了只聽狀態(tài) (Listen Only Mode)。以前的事件在 Ev
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北省保定市高中2024-2025學年高一上學期1月期末調研考試數(shù)學試題(B)(解析版)
- 弧形玻璃墻面施工方案
- 2025年安全員-C證考試試卷及答案
- c15墊層施工方案
- 2025年涑水學??荚囋囶}及答案
- 6年級上冊第6單元語文園地課堂筆記
- 矩形渡槽設計
- 5年級上冊譯林版本英語卡通跟讀第5單元
- 登山扣結構設計
- astmg99銷盤式摩擦試驗測試方法
- 民法典合同編培訓
- 2024-2030年中國油用牡丹行業(yè)需求狀況及產銷規(guī)模預測報告
- 無機化學實驗(下)知到智慧樹章節(jié)測試課后答案2024年秋陜西師范大學
- 高等教育自學考試自考《英語二》試題及答案指導(2025年)
- 2024年皖北衛(wèi)生職業(yè)學院單招職業(yè)技能測試題庫
- 軍工產品保密協(xié)議
- 商務數(shù)據(jù)分析理論試題題庫及答案
- 醫(yī)療安全(不良)事件報告制度培訓課件
- 2025屆高考英語一輪復習應用文之申請信課件
- DB34-T 4859-2024 農村河道清淤規(guī)范
- 【課件】秦統(tǒng)一中國+課件-2024-2025學年統(tǒng)編版七年級歷史上冊
評論
0/150
提交評論