modicon-MODBUS協(xié)議最新中文版_第1頁
modicon-MODBUS協(xié)議最新中文版_第2頁
modicon-MODBUS協(xié)議最新中文版_第3頁
modicon-MODBUS協(xié)議最新中文版_第4頁
modicon-MODBUS協(xié)議最新中文版_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、信息發(fā)送前就轉(zhuǎn)換成節(jié)點(diǎn)地址,錯(cuò)誤檢查區(qū)也用于數(shù)據(jù)包,與每個(gè)網(wǎng)絡(luò)的協(xié)議一致,最后一點(diǎn)是需用Modbus協(xié)議,寫入嵌入的信息,定義應(yīng)處理的動(dòng)作。圖1說明了采用不同通訊技術(shù)的多層網(wǎng)絡(luò)中設(shè)備的互連方法。在信息交換中,嵌入到每個(gè)網(wǎng)絡(luò)數(shù)據(jù)包中的Modbus協(xié)議,提供了設(shè)備間能夠交換數(shù)據(jù)的公共的語言。IIMODBUSMODB4JSPLUSFiMOI1ANDIB溯閃1DBUSMODBUS圖1:Modbus協(xié)議應(yīng)用示意圖*MB+為ModbusModbus上的數(shù)據(jù)傳輸Modicon控制器上的標(biāo)準(zhǔn)Modbus端口是使用一個(gè)RS-232兼容的串行接口,定義了連接器,接線電纜,信號(hào)等級(jí),傳輸波特率,和奇偶校驗(yàn),控制器可

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

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

6、周期:查詢碼0錯(cuò)誤響應(yīng)貝必息,如功能代i地址及數(shù)量,如出現(xiàn)錯(cuò)誤,(的信息內(nèi)容。兩種串行傳輸模式控制器可使用ASCII或RTU通訊模式,在標(biāo)準(zhǔn)Modbus上通訊。在配置每臺(tái)控制器時(shí),用戶須選擇通訊模式以及串行口的通訊參數(shù)。(波特率,奇偶校驗(yàn)等),在Modbus總線上的所有設(shè)備應(yīng)具有相同的通訊模式和串行通訊參數(shù)。選擇ASCII或RTU模式用于標(biāo)準(zhǔn)的Modbus總線。它定義了總線上串行傳輸信息區(qū)的“位”的含義,決定信息打包及解碼方法。如在MAP和Modbus+總線上時(shí),Modbus信息以幀的方式出現(xiàn),并與串行傳輸無關(guān),如請(qǐng)求讀保持寄存器可以在Modbus+上的兩個(gè)控制器之間處理,而與使用的控制器的M

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

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

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

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

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

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

13、寄存器的數(shù)據(jù),讀從機(jī)的診斷狀態(tài),寫線圈(或寄存器),允許下截、記錄、確認(rèn)從機(jī)內(nèi)的程序等。當(dāng)從機(jī)響應(yīng)主機(jī)時(shí),功能代碼可說明從機(jī)正常響應(yīng)或出現(xiàn)錯(cuò)誤(即不正常響應(yīng)),正常響應(yīng)時(shí),從句簡(jiǎn)單返回原始功能代碼;不正常響應(yīng)時(shí),從機(jī)返回與原始代碼相等效的一個(gè)碼,并把最高有效位設(shè)定為“1”。如,主機(jī)要求從機(jī)讀一組保持寄存器時(shí),則發(fā)送信息的功能碼為:00000011(十六進(jìn)制03)若從機(jī)正確接收請(qǐng)求的動(dòng)作信息后,則返回相同的代碼值作為正常響應(yīng)。發(fā)現(xiàn)錯(cuò)時(shí),則返回一個(gè)不正常響信息10000011(十六進(jìn)制83) ModbusProtocolPI-MBUS-300PI-MBUS-300ModbusProtocol 從機(jī)

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

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

16、符是LRC校驗(yàn)結(jié)果。校驗(yàn)時(shí),起始符為(:冒號(hào)結(jié)束符為CRLF字符。RTU使用RTU方式時(shí),錯(cuò)誤校驗(yàn)碼為一個(gè)16位的值,2個(gè)8位字節(jié)。錯(cuò)誤校驗(yàn)值是對(duì)信息內(nèi)容執(zhí)行CRC校驗(yàn)結(jié)果。CRC校驗(yàn)信息幀是最后的一個(gè)數(shù)據(jù),得到的校驗(yàn)碼先送低位字節(jié),后送高位字節(jié),所以CRC碼的高位字節(jié)是最后被傳送的信息。串行傳送信息在標(biāo)準(zhǔn)的Modbus上傳送的信息中,每個(gè)字符或字節(jié),按由左向右的次序傳送:最低有效位:(LSB)最高有效位:(MSB)ASCII數(shù)據(jù)幀位序:帶奇偶校驗(yàn)Start1234567ParStop無奇偶校驗(yàn)Star!1234567StopStop圖5ASCII位序RTU數(shù)據(jù)幀位序:Start123QSta

17、rt123帶奇偶校僉67自ParStop無奇偶校驗(yàn)圖6RTU位序錯(cuò)誤校驗(yàn)方法標(biāo)準(zhǔn)的Modbus串行通訊網(wǎng)絡(luò)采用兩種錯(cuò)誤校驗(yàn)方法,奇偶校驗(yàn)(奇或偶)可用于校驗(yàn)每一個(gè)字符,信息幀校驗(yàn)(LRC或CRC)適用整個(gè)信息的校驗(yàn),字符校驗(yàn)和信息幀校驗(yàn)均由主機(jī)設(shè)備產(chǎn)生,并在傳送前加到信息中去。從機(jī)設(shè)備在接收信息過程中校驗(yàn)每個(gè)字符和整個(gè)信息。主機(jī)可由用戶設(shè)置的一個(gè)預(yù)定時(shí)間間隔,確定是否放棄傳送信息。該間隔應(yīng)有足夠的時(shí)間來滿足從機(jī)的正常響應(yīng)。若主機(jī)檢測(cè)到傳輸錯(cuò)誤時(shí),則傳輸?shù)男畔o效。從機(jī)不再向主機(jī)返回響應(yīng)信息。此時(shí),主機(jī)會(huì)產(chǎn)生一個(gè)超時(shí)信息,并允許主機(jī)程序處理該錯(cuò)誤信號(hào)。注意:主機(jī)向?qū)嶋H并未存在的從機(jī)發(fā)送信息時(shí)也會(huì)

18、引起超時(shí)出錯(cuò)信號(hào)。在MAP或Modbus+等其它網(wǎng)駱上使用時(shí),采用比Modbus更高一級(jí)的數(shù)據(jù)幀校驗(yàn)方法。在這些網(wǎng)絡(luò)中,不再運(yùn)用Modbus中的LRC或CRC校驗(yàn)方法。當(dāng)出現(xiàn)發(fā)送錯(cuò)誤時(shí),網(wǎng)絡(luò)中的通訊協(xié)議通知發(fā)送設(shè)備有錯(cuò)誤出現(xiàn),并允許根據(jù)設(shè)置的情況,重試或放棄信息發(fā)送。若信息已發(fā)送,但從機(jī)設(shè)備未作響應(yīng),則主機(jī)通過程序檢查后發(fā)出一個(gè)超時(shí)錯(cuò)誤。奇偶校驗(yàn)用戶可設(shè)置奇偶校驗(yàn)或無校驗(yàn),以此決定每個(gè)字符發(fā)送時(shí)的奇偶校驗(yàn)位的狀態(tài)。何論是奇或偶校驗(yàn),它均會(huì)計(jì)算每個(gè)字符數(shù)據(jù)中值為“1”的位數(shù),ASCII方式為位數(shù)據(jù);RTU方式為8位數(shù)據(jù)。并根據(jù)“1”的位數(shù)值(奇數(shù)或偶數(shù))來設(shè)定為“0”或“1”如一個(gè)RTU數(shù)據(jù)幀中

19、8位數(shù)據(jù)位為:11000101在該幀中,值為“1”的總位數(shù)為4,即偶數(shù)。如采用奇校驗(yàn)方式時(shí),則“1”的總位數(shù)為奇數(shù),即5。發(fā)送信息時(shí),計(jì)算奇偶位,并加到數(shù)據(jù)幀中,接收設(shè)備統(tǒng)計(jì)位值為“1”的數(shù)量,若與該設(shè)備要求的不一致時(shí)產(chǎn)生一個(gè)錯(cuò)誤。在Modbus總線上的所有設(shè)備必須采用相同的奇偶校驗(yàn)方式。注意:奇偶校驗(yàn)只能檢測(cè)到數(shù)據(jù)幀在傳輸過程中丟失奇數(shù)“位”時(shí)才產(chǎn)生的錯(cuò)誤。如采用奇數(shù)校驗(yàn)方式時(shí),一個(gè)包含3個(gè)“1”位的數(shù)據(jù)丟失2個(gè)“1”位時(shí),其結(jié)果仍然是奇數(shù)。若無奇偶校驗(yàn)方式時(shí),傳輸中不作實(shí)際的校驗(yàn),應(yīng)附加一個(gè)停止位。LRC校驗(yàn)ASCII方式時(shí),數(shù)據(jù)中包含錯(cuò)誤校驗(yàn)碼,采用LRC校驗(yàn)方法時(shí),LRC校驗(yàn)信息以冒號(hào)

20、“:”開始,以CRLF字符作為結(jié)束。它忽略了單個(gè)字符數(shù)據(jù)的奇偶校驗(yàn)的方法。LRC校驗(yàn)碼為1個(gè)字節(jié),8位二進(jìn)制值,由發(fā)送設(shè)備計(jì)算LRC值。接收設(shè)備在接收信息時(shí)計(jì)算LRC校驗(yàn)碼。并與收到的LRC的實(shí)際值進(jìn)行比較,若二者不一致,亦產(chǎn)生一個(gè)錯(cuò)誤。在梯形圖中,CKSM函數(shù)可計(jì)算數(shù)據(jù)信息中LRC的校驗(yàn)。用于主計(jì)算機(jī)時(shí)請(qǐng)查閱附錄C中的一個(gè)實(shí)例,它詳細(xì)說明LRC的校驗(yàn)的過程。錯(cuò)誤校驗(yàn)方法CRC校驗(yàn)RTU方式時(shí),采用CRC方法計(jì)算錯(cuò)誤校驗(yàn)碼,CRC校驗(yàn)傳送的全部數(shù)據(jù)。它忽略信息中單個(gè)字符數(shù)據(jù)的奇偶校驗(yàn)方法。CRC碼為2個(gè)字節(jié),16位的二進(jìn)制值。由發(fā)送設(shè)備計(jì)算CRC值,并把它附到信息中去。接收設(shè)備在接收信息過程中

21、再次計(jì)算CRC值并與CRC的實(shí)際值進(jìn)行比較,若二者不一致,亦產(chǎn)生一個(gè)錯(cuò)誤,校驗(yàn)開始時(shí),把16位寄存器的各位都置為“1”,然后把信息中的相鄰2個(gè)8位字節(jié)數(shù)據(jù)放到當(dāng)前寄存器中處理,只有每個(gè)字符的8位數(shù)據(jù)用于CRC處理。起始位,停止位和校驗(yàn)位不參與CRC計(jì)算。CRC校驗(yàn)時(shí),每個(gè)8位數(shù)據(jù)與該寄存器的內(nèi)容進(jìn)行異或運(yùn)算,然后向最低有效位(LSB)方向移位,用零填入最高有效位(MSB)后,再對(duì)LSB檢查,若LSB=1,則寄存器與預(yù)置的固定值異或,若LSB=0,不作異或運(yùn)算。重復(fù)上述處理過程,直至移位8次,最后一次(第8次)移位后,下一個(gè)8位字節(jié)數(shù)據(jù)與寄存器的當(dāng)前值異或,再重復(fù)上述過程。全部處理完信息中的數(shù)據(jù)

22、字節(jié)后,最終得到的寄存器值為CRC值。CRC值附加到信息時(shí),低位在先,高位在后。在梯形圖中,CKSM函數(shù)計(jì)算信息中的CRC值。用于主計(jì)算機(jī)時(shí),可查閱附錄C中的一個(gè)實(shí)例,它詳細(xì)說明了CRC的校驗(yàn)。第二章數(shù)據(jù)和控制功能口Modbus功能代碼格式口Modbus功能代碼總結(jié)口Modbus功能代碼說明功能代碼格式數(shù)字值表達(dá)若無特殊說明在此節(jié)文中用進(jìn)制值表示,圖中的數(shù)據(jù)區(qū)則用十六進(jìn)制表示。Modbus信息中的數(shù)據(jù)地址Modbus信息中的所有數(shù)據(jù)地址以零作為基準(zhǔn),各項(xiàng)數(shù)據(jù)的第一個(gè)數(shù)據(jù)地址的編號(hào)為0如:口在可編程控制器中“coil1”在Modbus信息中其地址值表示為0000口Coil127(十進(jìn)制)在Mod

23、bus信息中則為007EH(126十進(jìn)制)口保持寄存器40001,在信息中數(shù)據(jù)地址為寄存器0000。功能代碼區(qū)為保持寄存器類型規(guī)定的操作,因此,“4XXXX”是缺省的地址類型??诒3旨拇嫫?0108尋址寄存器地址為006Bhex(+進(jìn)制107)Modbus信息中區(qū)內(nèi)容圖7為一個(gè)例子,說明了Modbus的查詢信息,圖8為正常響應(yīng)的例子,這兩例子中的數(shù)據(jù)均是16進(jìn)制的,也表示了以ASCLL或RTU方式構(gòu)成數(shù)據(jù)幀的方法。主機(jī)查詢是讀保持寄存器,被請(qǐng)求的從機(jī)地址是06,讀取的數(shù)據(jù)來自地址從40108至401103個(gè)保持寄有器。注意,該信息規(guī)定了寄存器的起始地址為0107(006BH)。從機(jī)響應(yīng)返回該功

24、能代碼,說明是正常響應(yīng),字節(jié)數(shù)“Bylecount”中說明有多少個(gè)8位字節(jié)被返回。因無論是ASCII方式還是RTU方式,它表明了附在數(shù)據(jù)區(qū)中8位字節(jié)的數(shù)量。ASCII方式時(shí),字節(jié)數(shù)為數(shù)據(jù)中ASCII字符實(shí)際數(shù)的一半,每4個(gè)位的16進(jìn)制值需要一個(gè)ASCII字符表示,因此在數(shù)據(jù)中應(yīng)由2個(gè)ASCII字符來表示一個(gè)8位的字節(jié)。如RTU方式時(shí),63H用一個(gè)字節(jié)(01100011)發(fā)送,而用ASCII方式時(shí),發(fā)送需2個(gè)字節(jié),即ASCII“6”(0110110)和ASCII“3”(0110011)。8個(gè)位為一個(gè)單位計(jì)算“字節(jié)數(shù)”,它忽略了信息幀用(ASCII或RTU)組成的方法。字節(jié)數(shù)使用方法:當(dāng)在緩沖區(qū)組

25、織響應(yīng)信息時(shí),“字節(jié)數(shù)”區(qū)域中的值應(yīng)與該信息中數(shù)據(jù)區(qū)的字節(jié)數(shù)相等。QUERYFieldNameExample(Hex)ASCIICharactersRTU8-BitFieldHeader:(colon)NoneSlaveAddress060600000110Function030300000011StartingAddressHi000000000000StartingAddressLo6B6B01101011No.ofRegistersHi000000000000No.ofRegistersLo030300000011ErrorCheckLRC(2chars.)CRC(16bits)Trai

26、lerCRLFNoneTotalBytes:178圖8說明“字節(jié)數(shù)”區(qū)在一個(gè)貢型響應(yīng)中的應(yīng)用。RESPONSEExampleASCIIRTUFieldName(Hex)Characters8-BitFieldHeader:(colon)NoneSlaveAddress060600000110Function030300000011ByteCount060600000110DataHi020200000010DataLo2B2B00101011DataHi000000000000DataLo000000000000DataHi000000000000DataLo636301100011Error

27、CheckLRC(2chars.)CRC(16bits)TrailerCRLFNoneTotalBytes:2311圖8:從機(jī)采用ASCII/RTU方式響應(yīng) #ModbusProtocolPI-MBUS-300PI-MBUS-300ModbusProtocol #Modbus+數(shù)據(jù)內(nèi)容在Modbus+網(wǎng)絡(luò)發(fā)送的Modbus信息應(yīng)需嵌入到LLC(邏輯連接控制)級(jí)數(shù)據(jù)幀,Modbus信息區(qū)由8位字節(jié)的數(shù)據(jù)組成,類似于RTU中的信息組成。由發(fā)送設(shè)備把從機(jī)地址轉(zhuǎn)換成Modbus+路由地址,CRC數(shù)據(jù)不在Modbus信息中發(fā)送,因?yàn)闀?huì)在更高級(jí)的數(shù)據(jù)鏈路控制層(HDLC)中進(jìn)行CRC校驗(yàn)。其余的信息與原標(biāo)

28、準(zhǔn)格式一致,應(yīng)用軟件(控制器中的MSTR或主機(jī)中的ModcomIII)可將這些信息幀組成數(shù)據(jù)包。圖9示例說明了如何將讀寄存器值的請(qǐng)求嵌入到+Modbus網(wǎng)絡(luò)的數(shù)據(jù)幀中。HDLC級(jí)咼位寄存器數(shù)量低位寄存器數(shù)量從機(jī)地址4ODBUS信息:功能代碼高位地起始低位起始址地址Modbus+數(shù)據(jù)內(nèi)容 #ModbusProtocolPI-MBUS-300PI-MBUS-300ModbusProtocol #控制器支持的功能代碼F表列出Modicon控制器支持的功能代碼:以十進(jìn)制表示。代碼名稱384484584884M849翌亠01讀線圈狀態(tài)YYYYY02讀輸入一yYYYYY03嚴(yán)線保持寄存器YYYYYY04讀

29、輸入寄存器YYYYYY05強(qiáng)制單個(gè)線圈YYYYYY06預(yù)置單個(gè)寄存器YYYYYY“Y”表示支持“N”表示不支持。07讀不正常狀態(tài)YYYYYY08診斷(見第3章)09程序484NYNNNN10-J查詢484NYNNNN ModbusProtocolPI-MBUS-300PI-MBUS-300ModbusProtocol 1112131415161718NYYYYYYYYNNNNNNNNYYYYYNNNNN通訊事件控制通訊事件記錄程序控制器查詢控制器強(qiáng)制多個(gè)寄存器預(yù)置多個(gè)寄存器報(bào)告從機(jī)ID程序884/M8419通訊鏈路復(fù)位NNNYYN20讀通用參考值NNYNNY21寫通用參考值NNYNNY22Ma

30、skWrite4XRegisterNNNNN(1)23Read/Write4XRegistersNNNNN(1)24ReadFIFO隊(duì)列NNNNN(1)(1)功能代碼僅由984-785控制器支持01讀線圈狀態(tài)描述讀從機(jī)離散量輸出口的ON/OFF狀態(tài),不支持廣播。附錄B列出由不同控制器型號(hào)支持最大的參數(shù)清單。查詢查詢信息規(guī)定了要讀的起始線圈和線圈量,線圈的起始地址為零,1-16個(gè)線圈的尋址地址分為0-15。例:請(qǐng)求從機(jī)設(shè)備17讀20-56線圈。QUERYFieldNameExample(Hex)SlaveAddress11Function01StartingAddressHi00Starting

31、AddressLo13No.ofPointsHi00No.ofRointsLo25ErrorCheck(LRCorCRC)圖10:讀線圈狀態(tài)查詢響應(yīng)響應(yīng)信息中的各線圈的狀態(tài)與數(shù)據(jù)區(qū)的每一位的值相對(duì)應(yīng),1=ON;0=OFF。第一個(gè)數(shù)據(jù)字節(jié)的LSB為查詢中的尋址地址,其他的線圈按順序在該字節(jié)中由低位向高位排列,直至8個(gè)為止,下一個(gè)字節(jié)也是從低位向高位排例。若返回的線圈數(shù)不是8的倍數(shù),則在最后的數(shù)據(jù)字節(jié)中的剩余位至字節(jié)的最高位全部填零,字節(jié)數(shù)區(qū)說明全部數(shù)據(jù)的字節(jié)數(shù)。RESPONSEFieldNameExample(Hex)SlaveAddress11Function01ByteCount05Data

32、(Coils27-20)CDData(Coils35-28)6BData(Coils43-36)B2Data(Coils51-44)0EData(Coils56-52)1BErrorCheck(LRCorCRC)圖11:讀線圈狀態(tài)響應(yīng)線圈27-20的狀態(tài)用CDH表示,二進(jìn)制值為11001101,該字節(jié)的MCB為線圈27,LSB為20。線圈從左(27)向右(20)狀態(tài)分別為ON-ON-OFF-OFF-ON-ON-OFF-ON,因此第一個(gè)字節(jié)中的線圈從左到右應(yīng)是27-20。下一個(gè)字節(jié)的線圈應(yīng)為35至28。位數(shù)據(jù)串行轉(zhuǎn)輸從低位到高位,即20-27,2835。最后一個(gè)數(shù)據(jù)字節(jié)中,56-52線圈的狀態(tài)為

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

34、meExample(Hex)SlaveAddress11Function02StartingAddressHi00StartingAddressLoC4No.ofPointsHi00No.ofRointsLo16ErrorCheck(LRCorCRC)圖12:讀輸入位狀態(tài)查詢。響應(yīng)響應(yīng)信息中的各輸入口的狀態(tài),分別對(duì)應(yīng)于數(shù)據(jù)區(qū)中的每一位值,1=ON;0=OFF,第一個(gè)數(shù)據(jù)字節(jié)的LSB為查詢中的尋址地址,其他輸入口按順序在該字節(jié)中由低位向高位排列,直至8個(gè)位為止。下一個(gè)字節(jié)中的8個(gè)輸入位也是從低位到高位排列。若返回的輸入位數(shù)不是8的倍數(shù),則在最后的數(shù)據(jù)字節(jié)中的剩余位直至字節(jié)的最高位全部填零。字節(jié)的

35、最高位,字節(jié)數(shù)區(qū)。說明了全部數(shù)據(jù)的字節(jié)數(shù)。例:對(duì)查詢作出響應(yīng)(參見上頁)。RESPONSEExampleFieldName(Hex)SlaveAddress11Function02ByteCount03Data(Inputs10204-10197)ACData(Inputs10212-10205)DBData(Inputs10218-10213)35ErrorCheck(LRCorCRC)圖13:讀輸入位狀態(tài)響應(yīng)。輸入位10204-10197的狀態(tài)用35H(或二進(jìn)制00110101)表示。輸入位10218為左數(shù)第3位,10213輸入位為L(zhǎng)SB,輸入位10218-10213的狀態(tài)分別為ON-ON

36、-OFF-ON-OFF-ON,注意最位還有2個(gè)剩余位需填零。03讀保持寄存器說明讀從機(jī)保持寄存器的二進(jìn)制數(shù)據(jù)不支持廣播,附錄B列出了由各種型號(hào)控制器所支持的最大的參數(shù)量查詢查詢信息規(guī)定了要讀的寄存器起始地址及寄存器的數(shù)量,寄存器尋址起始地址為0000,寄存器1-16所對(duì)應(yīng)的地址分別為0-15QUERYExampleFieldName(Hex)SlaveAddress11Function03StartingAddressHi00StartingAddressLo6BNo.ofPointsHi00No.ofRointsLo03ErrorCheck(LRCorCRC)圖14:讀保持寄存器-查詢響應(yīng)響

37、應(yīng)信息中的寄存器數(shù)據(jù)為二進(jìn)制數(shù)據(jù),每個(gè)寄存器分別對(duì)應(yīng)2個(gè)字節(jié),第一個(gè)字節(jié)為高位值數(shù)據(jù),第二個(gè)字節(jié)為低位數(shù)據(jù)。對(duì)984-X8X型控制器(如984-685等),掃描數(shù)據(jù)的速率為每次125個(gè)寄存器。對(duì)其它控制器型號(hào)的掃描速率為每次32個(gè)寄存器,全部數(shù)據(jù)完成組合后返回響應(yīng)信息。例按查詢要求返回響應(yīng)。RESPONSEFieldNameExample(Hex)SlaveAddress11Function03ByteCount06DataHi(Register40108)02DataLo(Register40108)2BDataHi(Register40109)00DataLo(Register40109)

38、00DataHi(Register40110)00DataLo(Register40110)64ErrorCheck(LRCorCRC)圖15:讀寄存器-響應(yīng)寄存器40108的數(shù)據(jù)用022BH2個(gè)字節(jié)(或用十進(jìn)制555)表示,寄存器40109-40110中的數(shù)據(jù)為0000和0064H,(十進(jìn)制時(shí)為0和100)04讀輸入寄存器說明讀從機(jī)輸入寄存器(3X類型)中的二進(jìn)制數(shù)據(jù),不支持廣播附錄B列出了由各種型號(hào)控制器所支持的最大的參數(shù)量查詢查詢信息規(guī)定了要讀的寄存器的起始地址及寄存器的數(shù)量,尋止起始地址為0,寄存器1-16所對(duì)應(yīng)的地址分別為0-15。例:請(qǐng)求讀從機(jī)設(shè)備17中的30009寄存器。QUER

39、YFieldNameExample(Hex)SlaveAddress11Function04StartingAddressHi00StartingAddressLo08No.ofPointsHi00No.ofRointsLo01FrrorCheck(IRCorCRC)圖16:讀輸入寄存器-查詢響應(yīng)響應(yīng)信息中的寄存器數(shù)據(jù)為每個(gè)寄存器分別對(duì)應(yīng)2個(gè)字節(jié),第一個(gè)字節(jié)為高位數(shù)據(jù),第二個(gè)字節(jié)為低位數(shù)據(jù)。對(duì)984-X8X型控制器(如984-685等),掃描數(shù)據(jù)的速率為每次125個(gè)寄存器,對(duì)其它型號(hào)的控制器為每次32個(gè)寄存器數(shù)據(jù)完成組合后,返回響應(yīng)信息。例按查詢要求返回響應(yīng)RESPONSEFieldNameE

40、xample(Hex)SlaveAddress11Function04ByteCount02DataHi(Register30009)00DataLo(Register30009)0AErrorCheck(LRCorCRC)圖17:讀寄存器-響應(yīng)寄存器30009中的數(shù)據(jù)用000AH2個(gè)字節(jié)(或用十進(jìn)制10)表示05強(qiáng)制單個(gè)線圈說明強(qiáng)制單個(gè)線圈(0X類型)為ON或OFF狀態(tài)。廣播時(shí),該功能可強(qiáng)制所有從機(jī)中同一類型的線圈均為ON或OFF狀態(tài)。注意:該功能可越過控制器內(nèi)存的保護(hù)狀態(tài)和線圈的禁止?fàn)顟B(tài)。線圈強(qiáng)制狀態(tài)一直保持有效直至下一個(gè)控制邏輯作用于線圈為止??刂七壿嬛袩o線圈程序時(shí),則線圈處于強(qiáng)制狀態(tài)。

41、附錄B中列出了由各種型號(hào)控制器所支持的最大的參數(shù)量。查詢查詢信息規(guī)定了需要強(qiáng)制線圈的類型,線圈起始地址為0,線圈1的尋址地址為0由查詢數(shù)據(jù)區(qū)中的一個(gè)常量。規(guī)定被請(qǐng)求線圈的ON/OFF狀態(tài),F(xiàn)F00H值請(qǐng)求線圈處于ON狀態(tài),0000H值請(qǐng)求線圈處于OFF狀態(tài),其它值對(duì)線圈無效,不起作用。例:強(qiáng)制從機(jī)設(shè)備17中的173線圈為ON狀態(tài)QUERYFieldNameExample(Hex)SlaveAddress11Function05CoilAddressHi00CoilAddressLoACForceDataHiFFForceDataLo00ErrorCheck(LRCorCRC)圖18:強(qiáng)制單個(gè)線

42、圈-查詢響應(yīng)線圈為強(qiáng)制狀態(tài)后即返回正常響應(yīng)例:按查詢要求返回響應(yīng)RESPONSEExampleFieldName(Hex)SlaveAddressFunctionCoilAddressHiCoilAddressLoForceDataHiForceDataLoErrorCheck(LRCorCRC)110500ACFF00圖19:強(qiáng)制單個(gè)線圈 ModbusProtocolPI-MBUS-300PI-MBUS-300ModbusProtocol 06預(yù)置單個(gè)寄存器說明把一個(gè)值預(yù)置到一個(gè)4X類型保持寄存器中。廣播時(shí),該功能把值預(yù)置到所有從機(jī)的相同類型的寄存器中。注意:該功能可越過控制器的內(nèi)存保護(hù)。使

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

44、dressLo01PresetDataHi00PresetDataLo03ErrorCheck(LRCorCRC)圖20:預(yù)置單個(gè)寄存器-查詢響應(yīng)寄存器內(nèi)容被預(yù)置后返回正常響應(yīng)例:按查詢要求返回響應(yīng)RESPONSEFieldNameExample(Hex)SlaveAddress11Function06RegisterAddressHi00RegisterAddressLo01PresetDataHi00PresetDataLo03ErrorCheck(LRCorCRC)0圖72讀1:不預(yù)置正單常個(gè)狀寄存態(tài)器-響應(yīng)說明讀從中機(jī)中8個(gè)不正常狀態(tài)線圈的數(shù)據(jù),某些線圈號(hào)已在不同型號(hào)的控制器中預(yù)定義,

45、而其它的線圈由用戶編程,作為有關(guān)控制器的狀態(tài)信息,如“machineON/OFF”,“headsretraced”,(縮回標(biāo)題),“safetiessatisfied”(安全性滿意),“errorconditions”(存在錯(cuò)誤條件)或其它用戶定義的標(biāo)志等。該功能碼不支持廣播。該功能代碼為存取該類信息提供了一種簡(jiǎn)單的方法,不正常線圈的類型是已知的(在功能代碼中不需要線圈類型)預(yù)定義的不正常線圈號(hào)如下:控制器型號(hào)線圈設(shè)定M84,184/384,584,9841-8用戶定義484257電池狀態(tài)884258-264用戶定義761電池狀態(tài)762內(nèi)存保護(hù)狀態(tài)763R10工況狀態(tài)764-768用戶預(yù)定義查

46、詢例請(qǐng)求讀從機(jī)設(shè)備17中的不正常狀態(tài)QUERYFieldNameExample(Hex)SlaveAddress11Function07ErrorCheck(LRCorCRC)圖22:讀不正常狀態(tài)-查詢響應(yīng)正常響應(yīng)包含8個(gè)不正常的線圈狀態(tài),為一個(gè)數(shù)據(jù)字節(jié),每個(gè)線圈一位。LSB對(duì)應(yīng)為最低線圈類型的狀態(tài)。例:按查詢要求返回響應(yīng):QUERYFieldNameExample(Hex)SlaveAddress11FunctionOBErrorCheck(LRCorCRC)圖23:讀不正常狀態(tài)響應(yīng)該例子中,線圈數(shù)據(jù)為6DH(二進(jìn)制0110,1101),從左到右(最高位至最低位)的線圈狀態(tài)分別為:OFF-O

47、N-ON-OFF-ON-ON-OFF-ON。若控制器型號(hào)為984,這些位表示線圈8至1的狀態(tài);若控制器型號(hào)為484則表示線圈264至257的狀態(tài)。11(0BHex)取通訊事件計(jì)數(shù)器說明由從機(jī)通訊事件計(jì)數(shù)器返回一個(gè)狀態(tài)字和事件數(shù),依據(jù)一串信息前后讀取的當(dāng)前數(shù)值,由主機(jī)決定其信息是否已被從機(jī)正常處理,該功能代碼不支持廣播。信息成功完成1次,使控制器的事件計(jì)數(shù)器加1,不正常響應(yīng),查詢命令或取事件計(jì)數(shù)器命令等,對(duì)計(jì)數(shù)值不起作用。通過診斷功能代碼(08),(若重起動(dòng)通訊選擇子功能代碼0001)或計(jì)數(shù)器和診斷寄存清零器代碼(000A)等可對(duì)事件計(jì)數(shù)器復(fù)位。查詢例:請(qǐng)求讀取從機(jī)設(shè)備17的通訊事件計(jì)數(shù)器QUE

48、RYFieldNameExample(Hex)SlaveAddress11Function0BErrorCheck(LRCorCRC)圖24:讀取通訊事件計(jì)數(shù)器查詢響應(yīng)正常響應(yīng)含一個(gè)帶2個(gè)字節(jié)的狀態(tài)字和一個(gè)雙字節(jié)的事件數(shù),若從機(jī)還未處理完以前發(fā)出的程序值狀態(tài)字中的各位。均為1(FFFFH),處理完時(shí),各位值均為O(OOOOH)。例:按查詢要求返回響應(yīng)QUERYFieldNameExample(Hex)SlaveAddress11FunctionOBStatusHiFFStatusLoFFEventCountHi01EventCountLo08ErrorCheck(LRCorCRC)圖25:讀取

49、通訊事件計(jì)數(shù)器響應(yīng)該列子中,狀態(tài)字是FFFFH,說明從機(jī)還在處理程序,控制器計(jì)算的事件數(shù)為264(0108H)12(0CHex)讀取通訊事件記錄說明由從機(jī)返回一個(gè)狀態(tài)字,事件數(shù),信息數(shù)和一個(gè)事件的數(shù)據(jù)區(qū)。不支持廣播狀態(tài)字和事件數(shù)與讀取通訊事件計(jì)數(shù)器功能代碼(11,OBH)返回值相同。信息計(jì)數(shù)器包含從機(jī)處理,(最后一次再起動(dòng),計(jì)數(shù)器清零操作,或通電)的信息量,該值與由診斷功能代碼(08),總線信息數(shù)子功能代碼(11,0BH)返回的值相同。事件數(shù)據(jù)區(qū)包含0-64個(gè)字節(jié)。每個(gè)字節(jié)對(duì)應(yīng)Modbus送出的一個(gè)狀態(tài),或子機(jī)接收操作的一個(gè)狀態(tài)。由子機(jī)把事件送到順序排列的區(qū)域。字節(jié)0為最新的事件,最大新的確字

50、節(jié)刷新該區(qū)域的最老的字節(jié)。查詢例:請(qǐng)求從機(jī)設(shè)備17讀取通訊事件記錄QUERYFieldNameExample(Hex)SlaveAddress11Function0CErrorCheck(LRCorCRC)圖26:讀取通訊事件記錄查詢響應(yīng)正常響應(yīng)含一個(gè)2個(gè)字節(jié)的狀態(tài)字區(qū),一個(gè)2個(gè)字節(jié)的事件數(shù)區(qū)和一個(gè)2個(gè)字節(jié)的信息數(shù)區(qū),以及有0-64個(gè)字節(jié)的事件區(qū),一個(gè)字節(jié)數(shù)區(qū)定義上述4個(gè)區(qū)的數(shù)據(jù)的總長(zhǎng)度。例:按查詢要求返回響應(yīng)RESPONSEExampleFieldName(Hex)SlaveAddressFunctionByteCountStatusHIStatus1o110C080000EventCoun

51、tHi01EventCountLo08MessageCountHi01MessageCountLo21Event020Event100ErrorCheck(LRCorCRC)圖27:讀取通訊事件記錄響應(yīng)在這例子中狀態(tài)字為0000H,說明從機(jī)已完成程序處理從機(jī)計(jì)算的事件數(shù)為264(0108H),已處理的信息數(shù)為289(0121H)。最近的通訊事件在Event0字節(jié)中。數(shù)值20H表示該從機(jī)已最后進(jìn)入了只聽狀態(tài)(ListenOnlyMode)。以前的事件在Event1字節(jié)中,數(shù)值00H表示該從機(jī)接收了一個(gè)通訊再起動(dòng)事件(CommunicationsRestart),響應(yīng)事件的字節(jié)會(huì)在后面敘述。12(

52、0CHex)讀取通訊事件記錄事件字節(jié)內(nèi)容讀取通訊事件記錄功能代碼返回的一個(gè)事件字節(jié)可為4種類型之一,每一個(gè)字節(jié)中的高7位定義該字節(jié)的類型,高6位可進(jìn)一步說明該字節(jié),見下面說明。從機(jī)Modbus接收事件從機(jī)接收查詢信息時(shí),儲(chǔ)存事件字節(jié)的類型,并在處理前。儲(chǔ)存該事件字節(jié)的類型。把高7位置1定義這事件,如果相應(yīng)條件“真”(true),則其他位也置1,字節(jié)中各位的含義如下。BitContents0未用通訊錯(cuò)誤未用未用字符超限只聽模式接收廣播1從機(jī)Modbus發(fā)送事件從機(jī)完成查詢信息處理后返回正常(或不正常)響應(yīng),或無響應(yīng)后,儲(chǔ)存事件字節(jié)的類型。通過高7位置“0”,高6位置“1”定義事件,若相應(yīng)的條件“

53、真”(TRUE),則其他位置“1”字節(jié)中各位含義如下:BitContents0讀不正常發(fā)送(不正常功能碼1-3)從機(jī)放棄不正常發(fā)送(不正常功能碼4)從機(jī)放棄不正常發(fā)送(不正常功能碼從5-6)從機(jī)程序NAK不正常發(fā)送(不正常功能碼從7)從機(jī)程序NAK不正常發(fā)送,出現(xiàn)寫入超時(shí)錯(cuò)誤從機(jī)程序NAK不正常發(fā)送,當(dāng)前只聽方式TOC o 1-5 h z1 HYPERLINK l bookmark16870從機(jī)進(jìn)入只聽模式當(dāng)從機(jī)進(jìn)入只聽模式時(shí)儲(chǔ)存這類事件字節(jié),事件由04H數(shù)據(jù)定義,如下:BitContents HYPERLINK l bookmark1520012345670100000從機(jī)初始化通訊再起動(dòng)通

54、訊口再起動(dòng)時(shí)由從機(jī)儲(chǔ)存事件字節(jié)的類型,診斷功能代碼(08)再帶起動(dòng)通訊選擇子功能代碼(0001)使從機(jī)通訊再起動(dòng)。該功能可把從機(jī)配置成錯(cuò)誤時(shí)繼讀方式(ContinueonError)或錯(cuò)誤時(shí)停止方式(StoponError)。若從機(jī)配置成“錯(cuò)誤時(shí)繼讀方式”時(shí),則事件字節(jié)加到已存在的事件記錄中,若配置成“錯(cuò)誤時(shí)停止”方式時(shí),則把該字節(jié)加到記錄中,并把其余的記錄清零Bit0123456Contents0000000015(0FH)強(qiáng)制多個(gè)線圈7說明按線圈的順序把各線圈(0X類型)強(qiáng)制成ON或OFF。廣播時(shí),該功能代碼可對(duì)各從機(jī)中相同類型的線圈起強(qiáng)制作用。注意:該功能代碼可越過內(nèi)存保護(hù)和線圈的禁止?fàn)?/p>

55、態(tài)線圈。保持強(qiáng)制狀態(tài)有效,并只能由控制器的下一個(gè)邏輯來處理。若無線圈控制邏輯程序時(shí),線圈將保持強(qiáng)制狀態(tài)。附錄B中列出了各種型號(hào)控制器所支持的最大參數(shù)量。查詢查詢信息規(guī)定了被強(qiáng)制線圈的類型,線圈起始地址為0,線圈1尋址地址為0。查詢數(shù)據(jù)區(qū)規(guī)定了被請(qǐng)求線圈的ON/OFF狀態(tài),如數(shù)據(jù)區(qū)的某位值為“1”表示請(qǐng)求的相應(yīng)線圈狀態(tài)為ON,位值為“0”則為OFF狀態(tài)。下述例子為請(qǐng)求從機(jī)設(shè)備17中一組10個(gè)線圈為強(qiáng)制狀態(tài),起始線圈為20(則尋址地址為19或13H),查詢的數(shù)據(jù)為2個(gè)字節(jié),CD01H(二進(jìn)制1100110100000001)相應(yīng)線圈的二進(jìn)制位排列如下:Bit:1100110100000001Col

56、l:27262524232221202928傳送的第一個(gè)字節(jié)CDH對(duì)應(yīng)線圈為27-20,LSB對(duì)應(yīng)線圈20,傳送的第二個(gè)字節(jié)為01H,對(duì)應(yīng)的線圈為29-28,LSB為繼圈28,其余未使用的位均填“0”。QUERYFieldNameExample(Hex)SlaveAddress11FunctionOFCoilAddressHi00CoilAddressLo13QuantityofCoilsHi00QuantityofCoilsLo0AByteCount02ForceDataHi(Coils27-20)CDForceDataLo(Coils29-28)01ErrorCheck(lRcorCRC)

57、圖28:強(qiáng)制多個(gè)線圈-查詢響應(yīng)正常響應(yīng)返回從機(jī)地址,功能代碼,起始地址以及強(qiáng)制線圈數(shù)例:對(duì)上述查詢返回的響應(yīng)RESPONSEFieldNameExample(Hex)SlaveAddress11Function0FCoilAddressHi00CoilAddressLo13QuantityofCoilsHi00QuantityofCoilsLo0AErrorCheck(LRCorCRC)圖29:強(qiáng)制個(gè)多個(gè)圈響應(yīng)16(10Hex)預(yù)置多個(gè)寄存器說明把數(shù)據(jù)按順序預(yù)置到各(4X類型)寄存器中,廣播時(shí)該功能代碼可把數(shù)據(jù)預(yù)置到全部從機(jī)中的相同類型的寄存器中。注意:該功能代碼可越過控制器的內(nèi)存保護(hù),在寄存

58、器中的預(yù)置值一直保持有效,只能由控制器的下一個(gè)邏輯來處理寄存器的內(nèi)容,控制邏輯中無該寄存器程序時(shí),則寄存器中的值保持不變。附錄B中列出了各種型號(hào)控制器所支持的最大參數(shù)量。查詢信息中規(guī)定了要預(yù)置的寄存器類型,寄存器尋址的起始地址為0,寄存器1尋址地址為0。查詢數(shù)據(jù)區(qū)中指定了寄存器的預(yù)置值,M84和484型控制器使用10位二進(jìn)制數(shù)據(jù),2個(gè)字節(jié),剩余的高6位置0。而其他類型的控制器使用一個(gè)16位二進(jìn)制數(shù)據(jù),每個(gè)寄存器2個(gè)字節(jié)。例:請(qǐng)求在從機(jī)設(shè)備17中的2個(gè)寄存器中放入預(yù)置值,起始寄存器為40002,預(yù)置值為000AH和0102H。QUERYExampleFieldName(Hex)SlaveAddr

59、ess11Function10StartingAddressHi00StartingAddressLo01No.ofRegistersHi00No.ofRegistersLo02ByteCount04DataHi00DataLo0ADataHi01DataLo02ErrorCheck(LRCorCRC)響應(yīng):預(yù)置多可存辭正常響應(yīng)返回從機(jī)地址,功能代碼和起始地址和預(yù)置寄存器數(shù)。例:按查詢要求返回響應(yīng)PESPONSEFieldNameExample(Hex)SlaveAddress11Function10StartingAddressHi00StartingAddressLo01No.ofRegi

60、stersHi00No.ofRegistersLo02ErrorCheck(LRCorCRC)圖31:預(yù)置多個(gè)寄存器響應(yīng)17(11Hex)報(bào)告從機(jī)ID說明返回一個(gè)從機(jī)地址控制器的類型,從機(jī)的當(dāng)前狀態(tài),以及有關(guān)從機(jī)的其他說明,不支持廣播查詢例:請(qǐng)求報(bào)告從機(jī)設(shè)備17的ID和狀態(tài)QUERYFieldNameExample(Hex)SlaveAddress11Function11ErrorCheck(LRCorCRC)圖32:報(bào)告從機(jī)ID查詢響應(yīng)正常響應(yīng)格式見圖33,數(shù)據(jù)內(nèi)容對(duì)應(yīng)每臺(tái)控制器的類型圖33報(bào)告從機(jī)ID響應(yīng)從機(jī)ID總結(jié)數(shù)據(jù)區(qū)第一個(gè)字節(jié)為Modicon控制器返回的從機(jī)IDSlaveID0123

溫馨提示

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

評(píng)論

0/150

提交評(píng)論