Modbus-RTU規(guī)約詳解.doc_第1頁(yè)
Modbus-RTU規(guī)約詳解.doc_第2頁(yè)
Modbus-RTU規(guī)約詳解.doc_第3頁(yè)
Modbus-RTU規(guī)約詳解.doc_第4頁(yè)
Modbus-RTU規(guī)約詳解.doc_第5頁(yè)
已閱讀5頁(yè),還剩69頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章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è)備制造商)來(lái)說(shuō),Modicon可為合作伙伴提供現(xiàn)有的程序,可使Modbus+網(wǎng)絡(luò)緊密地集成到他們的產(chǎn)品設(shè)計(jì)中去。Modicon的各種控制器使用的公共語(yǔ)言被稱(chēng)為 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)起作用的類(lèi)型,取出包含在信息中的數(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è)備地址,在信息發(fā)送前就轉(zhuǎn)換成節(jié)點(diǎn)地址,錯(cuò)誤檢查區(qū)也用于數(shù)據(jù)包,與每個(gè)網(wǎng)絡(luò)的協(xié)議一致,最后一點(diǎn)是需用Modbus協(xié)議,寫(xiě)入嵌入的信息,定義應(yīng)處理的動(dòng)作。圖1說(shuō)明了采用不同通訊技術(shù)的多層網(wǎng)絡(luò)中設(shè)備的互連方法。在信息交換中,嵌入到每個(gè)網(wǎng)絡(luò)數(shù)據(jù)包中的Modbus協(xié)議,提供了設(shè)備間能夠交換數(shù)據(jù)的公共的語(yǔ)言。984A/B 和S985AT/HC-984 和HOST/MMHIAT/HC-984 和HOST/MMHI(去MB+)S980(去MAP)編程器編程器4個(gè)Modus設(shè)備或網(wǎng)絡(luò)圖1:Modbus協(xié)議應(yīng)用示意圖* MB+為 ModbusModbus上的數(shù)據(jù)傳輸Modicon控制器上的標(biāo)準(zhǔn)Modbus端口是使用一個(gè)RS-232兼容的串行接口,定義了連接器,接線電纜,信號(hào)等級(jí),傳輸波特率,和奇偶校驗(yàn),控制器可直接或通過(guò)調(diào)制解調(diào)器(以后簡(jiǎn)稱(chēng)Modems)接入總線(網(wǎng)絡(luò))??刂破魍ㄓ嵤褂弥鲝募夹g(shù),即主機(jī)能起動(dòng)數(shù)據(jù)傳輸,稱(chēng)查詢(xún)。而其它設(shè)備(從機(jī))應(yīng)返回對(duì)查詢(xún)作出的響應(yīng),或處理查詢(xún)所要求的動(dòng)作。典應(yīng)的主機(jī)設(shè)備應(yīng)包括主處理器和編程器。典應(yīng)的從機(jī)包括可編程控制器。主機(jī)可對(duì)各從機(jī)尋址,發(fā)出廣播信息,從機(jī)返回信息作為對(duì)查詢(xún)的響應(yīng)。從機(jī)對(duì)于主機(jī)的廣播查詢(xún),無(wú)響應(yīng)返回Modbus協(xié)議報(bào)據(jù)設(shè)備地址,請(qǐng)求功能代碼,發(fā)送數(shù)據(jù),錯(cuò)誤校驗(yàn)碼,建立了主機(jī)查詢(xún)格式,從機(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ò)誤信息。并向主機(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),類(lèi)似,當(dāng)一臺(tái)控制器接受信息時(shí),它就組織一個(gè)從機(jī)設(shè)備的響應(yīng)信息,并返回至原發(fā)送信息的控制器。8 位數(shù)據(jù)字節(jié)錯(cuò)誤校驗(yàn)功能代碼8 位數(shù)據(jù)字節(jié)設(shè)備地址功能代碼設(shè)備地址主機(jī)查詢(xún)信息查詢(xún)響應(yīng)周期:錯(cuò)誤校驗(yàn)從機(jī)響應(yīng)信息圖2:主從查詢(xún)響應(yīng)周期查詢(xún):查詢(xún)中的功能代碼為被尋址的從機(jī)設(shè)備應(yīng)執(zhí)行的動(dòng)作類(lèi)型。數(shù)據(jù)字節(jié)中包含從機(jī)須執(zhí)行功能的各附加信息,如功能代碼03將查詢(xún)從機(jī),并讀保持寄存器。并用寄存器的內(nèi)容作響應(yīng)。該數(shù)據(jù)區(qū)必須含有告之從機(jī)讀取寄存器的起始地址及數(shù)量,錯(cuò)誤校驗(yàn)區(qū)的一些信息,為從機(jī)提供一種校驗(yàn)方法,以保證信息內(nèi)容的完整性。響應(yīng):從機(jī)正常響應(yīng)時(shí),響應(yīng)功能碼是查詢(xún)功能碼的應(yīng)答,數(shù)據(jù)字節(jié)包含從機(jī)采集的數(shù)據(jù),如寄存器值或狀態(tài)。如出現(xiàn)錯(cuò)誤,則修改功能碼,指明為錯(cuò)誤響應(yīng)。并在數(shù)據(jù)字節(jié)中含有一個(gè)代碼,來(lái)說(shuō)明錯(cuò)誤,錯(cuò)誤檢查區(qū)允許主機(jī)確認(rèn)有效的信息內(nèi)容。兩種串行傳輸模式控制器可使用ASCII或RTU通訊模式,在標(biāo)準(zhǔn)Modbus上通訊。在配置每臺(tái)控制器時(shí),用戶(hù)須選擇通訊模式以及串行口的通訊參數(shù)。(波特率,奇偶校驗(yàn)等),在Modbus總線上的所有設(shè)備應(yīng)具有相同的通訊模式和串行通訊參數(shù)。選擇ASCII或RTU模式用于標(biāo)準(zhǔn)的Modbus總線。它定義了總線上串行傳輸信息區(qū)的“位”的含義,決定信息打包及解碼方法。如在MAP和Modbus+總線上時(shí),Modbus信息以幀的方式出現(xiàn),并與串行傳輸無(wú)關(guān),如請(qǐng)求讀保持寄存器可以在Modbus+上的兩個(gè)控制器之間處理,而與使用的控制器的Modbus端口無(wú)關(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-F 1個(gè)16進(jìn)制 數(shù)據(jù)位: 1起始位7位數(shù)據(jù),低位先送奇/偶校驗(yàn)時(shí)1位;無(wú)奇偶校驗(yàn)時(shí)0位(LRC)1位帶校驗(yàn)1停止位;無(wú)校驗(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ù)淖址拿芏雀哂贏SCII模式,每個(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位;無(wú)奇偶校驗(yàn)時(shí)0位停止位1位(帶校驗(yàn));停止位2位(無(wú)校驗(yàn))帶校驗(yàn)時(shí)1位停止位;無(wú)校驗(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)開(kāi)始讀地址,并確定要尋址的設(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)行處理,也可管理發(fā)送至目的地的信息,此時(shí),信息傳輸中Modbus數(shù)據(jù)幀內(nèi)的目的地址已無(wú)關(guān)緊要,因?yàn)镸odbus+地址已由發(fā)送者或它的網(wǎng)絡(luò)適配器把它轉(zhuǎn)換成網(wǎng)絡(luò)節(jié)點(diǎn)地址和路由。ASCII幀在ASCII模式中,以(:)號(hào)(ASCII3AH)表示信息開(kāi)始,以回撤一換行鍵(CRLF) (ASCII OD和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ò)誤。典型的信息幀見(jiàn)下表開(kāi)始地址功能數(shù)據(jù)縱向冗余檢查結(jié)束1字符:2字符2字符n字符2字符2字符圖3 ASCII信息幀例外:對(duì)于584和984A/B/X控制器,一個(gè)ASCII信息可在LRC區(qū)后正常終止,而不需發(fā)送CRLF字符,此時(shí)出現(xiàn)IS的時(shí)間間隔,控制器也將認(rèn)為是正常中斷。RTU幀RTU模式中,信息開(kāi)始至少需要有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è)新的信息。整個(gè)信息必須連續(xù)發(fā)送。如果在發(fā)送幀信息期間,出現(xiàn)大于1.5個(gè)字符的靜止時(shí)間時(shí),則接收設(shè)備刷新不完整的信息,并假設(shè)下一個(gè)地址數(shù)據(jù)。同樣一個(gè)信息后,立即發(fā)送的一個(gè)新信息,(若無(wú)3。5個(gè)字符的靜止時(shí)間)這將會(huì)產(chǎn)生一個(gè)錯(cuò)誤。是因?yàn)楹喜⑿畔⒌腃RC校驗(yàn)碼無(wú)效而產(chǎn)生的錯(cuò)誤。開(kāi)始地址功能數(shù)據(jù)校驗(yàn)終止T1-T2-T3-T48 B位S8 B位SN8 B位S16B位 ST1-T2-T3T-4圖4 RTU信息幀Modbus信息幀(Continued)地址設(shè)置信息地址包括2個(gè)字符(ASCII)或8位(RTU),有效的從機(jī)設(shè)備地址范圍0-247,(十進(jìn)制),各從機(jī)設(shè)備的尋址范圍為1-247。主機(jī)把從機(jī)地址放入信息幀的地址區(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)的控制器。還有一些代碼留作將來(lái)使用,有關(guān)功能代替碼的設(shè)置將在第2章說(shuō)明。當(dāng)主機(jī)向從句發(fā)送信息時(shí),功能代碼向從機(jī)說(shuō)明應(yīng)執(zhí)行的動(dòng)作。如讀一組離散式線圈或輸入信號(hào)的ON/OFF狀態(tài),讀一組寄存器的數(shù)據(jù),讀從機(jī)的診斷狀態(tài),寫(xiě)線圈(或寄存器),允許下截、記錄、確認(rèn)從機(jī)內(nèi)的程序等。當(dāng)從機(jī)響應(yīng)主機(jī)時(shí),功能代碼可說(shuō)明從機(jī)正常響應(yīng)或出現(xiàn)錯(cuò)誤(即不正常響應(yīng)),正常響應(yīng)時(shí),從句簡(jiǎn)單返回原始功能代碼;不正常響應(yīng)時(shí),從機(jī)返回與原始代碼相等效的一個(gè)碼,并把最高有效位設(shè)定為“1”。如,主機(jī)要求從機(jī)讀一組保持寄存器時(shí),則發(fā)送信息的功能碼為:0000 0011 (十六進(jìn)制03)若從機(jī)正確接收請(qǐng)求的動(dòng)作信息后,則返回相同的代碼值作為正常響應(yīng)。發(fā)現(xiàn)錯(cuò)時(shí),則返回一個(gè)不正常響信息:1000 0011(十六進(jìn)制83)從機(jī)對(duì)功能代碼作為了修改,此外,還把一個(gè)特殊碼放入響應(yīng)信息的數(shù)據(jù)區(qū)中,告訴主機(jī)出現(xiàn)的錯(cuò)誤類(lèi)型和不正常響應(yīng)的原因。主機(jī)設(shè)備的應(yīng)用程序負(fù)責(zé)處理不正常響應(yīng),典型處理過(guò)程是主機(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ù)等。舉例說(shuō)明,若主機(jī)請(qǐng)求從機(jī)讀一組寄存器(功能代碼03),該數(shù)據(jù)規(guī)定了寄存器的起始地址,以及寄存器的數(shù)量。又如,主機(jī)要在一從機(jī)中寫(xiě)一組寄存器,(則功能代碼為10H)。該數(shù)據(jù)區(qū)規(guī)定了要寫(xiě)入寄存區(qū)的起始地址,寄存器的數(shù)量,數(shù)據(jù)的字節(jié)數(shù),以及要寫(xiě)入到寄存器的數(shù)據(jù)。若無(wú)錯(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)度可為“零”以表示某類(lèi)信息,如,主機(jī)要求-從機(jī)響應(yīng)它的通訊事件記錄(功能代碼OBH)。此時(shí),從機(jī)不需要其他附加的信息,功能代碼只規(guī)定了該動(dòng)作。信息幀錯(cuò)誤校驗(yàn)標(biāo)準(zhǔn)Modbus總線,有兩類(lèi)錯(cuò)誤檢查方法,錯(cuò)誤檢查區(qū)的內(nèi)容按使用的錯(cuò)誤檢查方法填寫(xiě)。SDCII使用ASCII方式時(shí),錯(cuò)誤校驗(yàn)碼為2個(gè)ASCII字符,錯(cuò)誤校驗(yàn)字符是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é),按由左向右的次序傳送:帶奇偶校驗(yàn)最低有效位:(LSB)最高有效位:(MSB)ASCII數(shù)據(jù)幀位序:無(wú)奇偶校驗(yàn)圖5 ASCII位序RTU數(shù)據(jù)幀位序:帶奇偶校驗(yàn)無(wú)奇偶校驗(yàn)圖6 RTU位序錯(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è)備在接收信息過(guò)程中校驗(yàn)每個(gè)字符和整個(gè)信息。主機(jī)可由用戶(hù)設(shè)置的一個(gè)預(yù)定時(shí)間間隔,確定是否放棄傳送信息。該間隔應(yīng)有足夠的時(shí)間來(lái)滿(mǎn)足從機(jī)的正常響應(yīng)。若主機(jī)檢測(cè)到傳輸錯(cuò)誤時(shí),則傳輸?shù)男畔o(wú)效。從機(jī)不再向主機(jī)返回響應(yīng)信息。此時(shí),主機(jī)會(huì)產(chǎn)生一個(gè)超時(shí)信息,并允許主機(jī)程序處理該錯(cuò)誤信號(hào)。注意:主機(jī)向?qū)嶋H并未存在的從機(jī)發(fā)送信息時(shí)也會(huì)引起超時(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ī)通過(guò)程序檢查后發(fā)出一個(gè)超時(shí)錯(cuò)誤。奇偶校驗(yàn)用戶(hù)可設(shè)置奇偶校驗(yàn)或無(wú)校驗(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ù))來(lái)設(shè)定為“0”或“1”如一個(gè)RTU數(shù)據(jù)幀中8位數(shù)據(jù)位為:1100 0101在該幀中,值為“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ù)幀在傳輸過(guò)程中丟失奇數(shù)“位”時(shí)才產(chǎn)生的錯(cuò)誤。如采用奇數(shù)校驗(yàn)方式時(shí),一個(gè)包含3個(gè)“1”位的數(shù)據(jù)丟失2個(gè)“1”位時(shí),其結(jié)果仍然是奇數(shù)。若無(wú)奇偶校驗(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)“:”開(kāi)始,以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ì)說(shuō)明LRC的校驗(yàn)的過(guò)程。錯(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è)備在接收信息過(guò)程中再次計(jì)算CRC值并與CRC的實(shí)際值進(jìn)行比較,若二者不一致,亦產(chǎn)生一個(gè)錯(cuò)誤,校驗(yàn)開(kāi)始時(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ù)上述處理過(guò)程,直至移位8次,最后一次(第8次)移位后,下一個(gè)8位字節(jié)數(shù)據(jù)與寄存器的當(dāng)前值異或,再重復(fù)上述過(guò)程。全部處理完信息中的數(shù)據(jù)字節(jié)后,最終得到的寄存器值為CRC值。CRC值附加到信息時(shí),低位在先,高位在后。在梯形圖中,CKSM函數(shù)計(jì)算信息中的CRC值。用于主計(jì)算機(jī)時(shí),可查閱附錄C中的一個(gè)實(shí)例,它詳細(xì)說(shuō)明了CRC的校驗(yàn)。第二章數(shù)據(jù)和控制功能r Modbus 功能代碼格式r Modbus 功能代碼總結(jié)r Modbus 功能代碼說(shuō)明功能代碼格式數(shù)字值表達(dá)若無(wú)特殊說(shuō)明在此節(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如:r 在可編程控制器中“coil 1”在Modbus信息中其地址值表示為0000r Coil 127(十進(jìn)制)在Modbus信息中則為007EH(126十進(jìn)制)r 保持寄存器40001,在信息中數(shù)據(jù)地址為寄存器0000。功能代碼區(qū)為保持寄存器類(lèi)型規(guī)定的操作,因此,“4XXXX”是缺省的地址類(lèi)型。r 保持寄存器40108尋址寄存器地址為006B hex(進(jìn)制107)Modbus信息中區(qū)內(nèi)容圖7為一個(gè)例子,說(shuō)明了Modbus的查詢(xún)信息,圖8為正常響應(yīng)的例子,這兩例子中的數(shù)據(jù)均是16進(jìn)制的,也表示了以ASCLL或RTU方式構(gòu)成數(shù)據(jù)幀的方法。主機(jī)查詢(xún)是讀保持寄存器,被請(qǐng)求的從機(jī)地址是06,讀取的數(shù)據(jù)來(lái)自地址從40108至40110 3個(gè)保持寄有器。注意,該信息規(guī)定了寄存器的起始地址為0107 (006BH)。從機(jī)響應(yīng)返回該功能代碼,說(shuō)明是正常響應(yīng),字節(jié)數(shù)“Byle count”中說(shuō)明有多少個(gè)8位字節(jié)被返回。因無(wú)論是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字符來(lái)表示一個(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ū)組織響應(yīng)信息時(shí),“字節(jié)數(shù)”區(qū)域中的值應(yīng)與該信息中數(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說(shuō)明“字節(jié)數(shù)”區(qū)在一個(gè)貢型響應(yīng)中的應(yīng)用。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:從機(jī)采用ASCII/RTU方式響應(yīng)Modbus+數(shù)據(jù)內(nèi)容在Modbus+網(wǎng)絡(luò)發(fā)送的Modbus信息應(yīng)需嵌入到LLC (邏輯連接控制)級(jí)數(shù)據(jù)幀,Modbus信息區(qū)由8位字節(jié)的數(shù)據(jù)組成,類(lèi)似于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)準(zhǔn)格式一致,應(yīng)用軟件(控制器中的MSTR或主機(jī)中的Modcom III)可將這些信息幀組成數(shù)據(jù)包。圖9示例說(shuō)明了如何將讀寄存器值的請(qǐng)求嵌入到Modbus 網(wǎng)絡(luò)的數(shù)據(jù)幀中。圖9:Modbus+數(shù)據(jù)內(nèi)容控制器支持的功能代碼下表列出Modicon控制器支持的功能代碼:以十進(jìn)制表示?!癥”表示支持“N”表示不支持。代碼名稱(chēng) 384484584884M8498401讀線圈狀態(tài)YYYYYY 02 讀輸入狀態(tài) Y Y Y Y Y Y03 讀線保持寄存器Y Y Y YY Y04 讀輸入寄存器Y Y Y Y Y Y05 強(qiáng)制單個(gè)線圈 Y Y YY Y Y06 預(yù)置單個(gè)寄存器 Y YYYYY07 讀不正常狀態(tài)Y YYYYY 08 診斷(見(jiàn)第3章)09 程序 484 N Y N N N N 10 查詢(xún) 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 查詢(xún)控制器 Y N Y N N Y 15 強(qiáng)制多個(gè)寄存器 Y Y Y Y Y Y 16 預(yù)置多個(gè)寄存器 Y Y Y Y Y Y 17 報(bào)告從機(jī) 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 寫(xiě)通用參考值 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 隊(duì)列 N N N N N (1)(1)功能代碼僅由984-785控制器支持01 讀線圈狀態(tài)描述讀從機(jī)離散量輸出口的 ON/OFF 狀態(tài),不支持廣播。附錄B列出由不同控制器型號(hào)支持最大的參數(shù)清單。查詢(xún)查詢(xún)信息規(guī)定了要讀的起始線圈和線圈量,線圈的起始地址為零,1-16個(gè)線圈的尋址地址分為0-15。例:請(qǐng)求從機(jī)設(shè)備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)查詢(xún)響應(yīng)響應(yīng)信息中的各線圈的狀態(tài)與數(shù)據(jù)區(qū)的每一位的值相對(duì)應(yīng),1=ON; 0=OFF。第一個(gè)數(shù)據(jù)字節(jié)的LSB為查詢(xún)中的尋址地址,其他的線圈按順序在該字節(jié)中由低位向高位排列,直至8個(gè)為止,下一個(gè)字節(jié)也是從低位向高位排例。若返回的線圈數(shù)不是8的倍數(shù),則在最后的數(shù)據(jù)字節(jié)中的剩余位至字節(jié)的最高位全部填零,字節(jié)數(shù)區(qū)說(shuō)明全部數(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)響應(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)輸從低位到高位,即2027,2835。最后一個(gè)數(shù)據(jù)字節(jié)中,56-52線圈的狀態(tài)為1BH(或二進(jìn)制00011011),線圈56是左數(shù)第4位,線圈52是該字節(jié)的最低位,所線圈56至52的狀態(tài)分別為ON-ON-OFF-ON-ON注意3個(gè)剩余位(至最高位的數(shù))全部填0。02讀輸入位狀態(tài)說(shuō)明讀從機(jī)離散量輸入信號(hào)的ON/OFF狀態(tài)。不支持廣播。附錄B列出各種型號(hào)控制器所支持的最大參數(shù)量。查詢(xún)查詢(xún)信息規(guī)定了要讀的輸入起始地址,以及輸入信號(hào)的數(shù)量。輸入起始地址為0,1-16個(gè)輸入口的地址分別為0-15。例:請(qǐng)求讀從機(jī)設(shè)備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)查詢(xún)。響應(yīng)響應(yīng)信息中的各輸入口的狀態(tài),分別對(duì)應(yīng)于數(shù)據(jù)區(qū)中的每一位值,1 = ON; 0 = OFF,第一個(gè)數(shù)據(jù)字節(jié)的LSB為查詢(xún)中的尋址地址,其他輸入口按順序在該字節(jié)中由低位向高位排列,直至8個(gè)位為止。下一個(gè)字節(jié)中的8個(gè)輸入位也是從低位到高位排列。若返回的輸入位數(shù)不是8的倍數(shù),則在最后的數(shù)據(jù)字節(jié)中的剩余位直至字節(jié)的最高位全部填零。字節(jié)的最高位,字節(jié)數(shù)區(qū)。說(shuō)明了全部數(shù)據(jù)的字節(jié)數(shù)。例:對(duì)查詢(xún)作出響應(yīng)(參見(jiàn)上頁(yè))。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 (或二進(jìn)制00110101) 表示。輸入位10218為左數(shù)第3位,10213輸入位為L(zhǎng)SB,輸入位10218-10213的狀態(tài)分別為ON-ON-OFF-ON-OFF-ON,注意最位還有2個(gè)剩余位需填零。03讀保持寄存器說(shuō)明讀從機(jī)保持寄存器的二進(jìn)制數(shù)據(jù)不支持廣播,附錄B列出了由各種型號(hào)控制器所支持的最大的參數(shù)量查詢(xún)查詢(xún)信息規(guī)定了要讀的寄存器起始地址及寄存器的數(shù)量,寄存器尋址起始地址為0000,寄存器1-16所對(duì)應(yīng)的地址分別為0-15QUERYField NameSlave AddressFunctionStarting Address HiStarting Address LoNo. of Points HiNo. of Roints LoError Check (LRC or CRC)Example(Hex)1103006B0003圖14:讀保持寄存器-查詢(xún)響應(yīng)響應(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)信息。例按查詢(xún)要求返回響應(yīng)。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:讀寄存器-響應(yīng)寄存器40108的數(shù)據(jù)用022BH 2個(gè)字節(jié)(或用十進(jìn)制555)表示,寄存器40109-40110中的數(shù)據(jù)為0000和0064H,(十進(jìn)制時(shí)為0和100)04讀輸入寄存器說(shuō)明讀從機(jī)輸入寄存器(3X類(lèi)型)中的二進(jìn)制數(shù)據(jù),不支持廣播附錄B列出了由各種型號(hào)控制器所支持的最大的參數(shù)量查詢(xún)查詢(xún)信息規(guī)定了要讀的寄存器的起始地址及寄存器的數(shù)量,尋止起始地址為0,寄存器1-16所對(duì)應(yīng)的地址分別為0-15。例:請(qǐng)求讀從機(jī)設(shè)備17中的30009寄存器。QUERYField NameSlave AddressFunctionStarting Address HiStarting Address LoNo. of Points HiNo. of Roints LoError Check (LRC or CRC)Example(Hex)110400080001圖16:讀輸入寄存器-查詢(xún)響應(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)信息。例按查詢(xún)要求返回響應(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個(gè)字節(jié)(或用十進(jìn)制10)表示05強(qiáng)制單個(gè)線圈說(shuō)明強(qiáng)制單個(gè)線圈(0X類(lèi)型)為ON或OFF狀態(tài)。廣播時(shí),該功能可強(qiáng)制所有從機(jī)中同一類(lèi)型的線圈均為ON或OFF狀態(tài)。 注意:該功能可越過(guò)控制器內(nèi)存的保護(hù)狀態(tài)和線圈的禁止?fàn)顟B(tài)。線圈強(qiáng)制狀態(tài)一直保持有效直至下一個(gè)控制邏輯作用于線圈為止。控制邏輯中無(wú)線圈程序時(shí),則線圈處于強(qiáng)制狀態(tài)。附錄B中列出了由各種型號(hào)控制器所支持的最大的參數(shù)量。查詢(xún)查詢(xún)信息規(guī)定了需要強(qiáng)制線圈的類(lèi)型,線圈起始地址為0,線圈1的尋址地址為0由查詢(xún)數(shù)據(jù)區(qū)中的一個(gè)常量。規(guī)定被請(qǐng)求線圈的ON/OFF狀態(tài), FF00H值請(qǐng)求線圈處于ON狀態(tài),0000H值請(qǐng)求線圈處于OFF狀態(tài),其它值對(duì)線圈無(wú)效,不起作用。例:強(qiáng)制從機(jī)設(shè)備17中的173線圈為ON狀態(tài)QUERYField NameSlave AddressFunctionCoil Address HiCoil Address LoForce Data HiForce Data LoError Check (LRC or CRC)Example(Hex)110500ACFF00圖18:強(qiáng)制單個(gè)線圈-查詢(xún)響應(yīng)線圈為強(qiáng)制狀態(tài)后即返回正常響應(yīng)例:按查詢(xún)要求返回響應(yīng)RESPONSEField NameSlave AddressFunctionCoil Address HiCoil Address LoForce Data HiForce Data LoError Check (LRC or CRC)Example(Hex)110500ACFF00圖19:強(qiáng)制單個(gè)線圈06預(yù)置單個(gè)寄存器說(shuō)明把一個(gè)值預(yù)置到一個(gè)4X類(lèi)型保持寄存器中。廣播時(shí),該功能把值預(yù)置到所有從機(jī)的相同類(lèi)型的寄存器中。 注意:該功能可越過(guò)控制器的內(nèi)存保護(hù)。使寄存器中的預(yù)置值保持有效。只能由控制器的下一個(gè)邏輯信號(hào)來(lái)處理該預(yù)置值。若控制邏輯中無(wú)寄存器程序時(shí),則寄存器中的值保持不變。附錄B中列出了各種型號(hào)控制器所支持的最大的參數(shù)量查詢(xún)查詢(xún)信息規(guī)定了要預(yù)置寄存器的類(lèi)型,寄存器尋址起始地址為0,寄存器1所對(duì)應(yīng)的地址為0。請(qǐng)求的預(yù)置值在查詢(xún)數(shù)據(jù)區(qū),M84或484控制器使用一個(gè)10位二進(jìn)制值,其中高6位設(shè)定為0,而其它類(lèi)型的控制器使用16位值。例:請(qǐng)求把從機(jī)設(shè)備17中的40002寄存器預(yù)置為0003H值。QUERYField NameSlave AddressFunctionRegister Address HiRegister Address LoPreset Data HiPreset Data LoError Check (LRC or CRC)Example(Hex)110600010003圖20:預(yù)置單個(gè)寄存器-查詢(xún)響應(yīng)寄存器內(nèi)容被預(yù)置后返回正常響應(yīng)例:按查詢(xún)要求返回響應(yīng)RESPONSEField NameSlave AddressFunctionRegister Address HiRegister Address LoPreset Data HiPreset Data LoError Check (LRC or CRC)Example(Hex)110600010003圖21:預(yù)置單個(gè)寄存器-響應(yīng)07讀不正常狀態(tài)說(shuō)明讀從中機(jī)中8個(gè)不正常狀態(tài)線圈的數(shù)據(jù),某些線圈號(hào)已在不同型號(hào)的控制器中預(yù)定義,而其它的線圈由用戶(hù)編程,作為有關(guān)控制器的狀態(tài)信息,如“machine ON/OFF”,“heads retraced”,(縮回標(biāo)題),“safeties satisfied”(安全性滿(mǎn)意),“error conditions”(存在錯(cuò)誤條件)或其它用戶(hù)定義的標(biāo)志等。該功能碼不支持廣播。該功能代碼為存取該類(lèi)信息提供了一種簡(jiǎn)單的方法,不正常線圈的類(lèi)型是已知的(在功能代碼中不需要線圈類(lèi)型) 預(yù)定義的不正常線圈號(hào)如下:控制器型號(hào)線圈設(shè)定M84,184/384,584,9841-8用戶(hù)定義484257 電池狀態(tài)258-264用戶(hù)定義884761電池狀態(tài)762內(nèi)存保護(hù)狀態(tài)763R10工況狀態(tài)764-768用戶(hù)預(yù)定義查詢(xún)例請(qǐng)求讀從機(jī)設(shè)備17中的不正常狀態(tài)QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)1107圖22:讀不正常狀態(tài)-查詢(xún)響應(yīng)正常響應(yīng)包含 8 個(gè)不正常的線圈狀態(tài),為一個(gè)數(shù)據(jù)字節(jié),每個(gè)線圈一位。LSB對(duì)應(yīng)為最低線圈類(lèi)型的狀態(tài)。例:按查詢(xún)要求返回響應(yīng):QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)110B圖23:讀不正常狀態(tài)響應(yīng)該例子中,線圈數(shù)據(jù)為 6DH (二進(jìn)制0110 ,1101),從左到右 (最高位至最低位) 的線圈狀態(tài)分別為: OFF ON ON OFF ON ON OFF ON。若控制器型號(hào)為 984,這些位表示線圈 8 至 1 的狀態(tài);若控制器型號(hào)為 484 則表示線圈 264 至 257 的狀態(tài)。11 (0B Hex) 取通訊事件計(jì)數(shù)器說(shuō)明由從機(jī)通訊事件計(jì)數(shù)器返回一個(gè)狀態(tài)字和事件數(shù),依據(jù)一串信息前后讀取的當(dāng)前數(shù)值,由主機(jī)決定其信息是否已被從機(jī)正常處理,該功能代碼不支持廣播。信息成功完成 1 次,使控制器的事件計(jì)數(shù)器加 1, 不正常響應(yīng),查詢(xún)命令或取事件計(jì)數(shù)器命令等,對(duì)計(jì)數(shù)值不起作用。通過(guò)診斷功能代碼 (08),(若重起動(dòng)通訊選擇子功能代碼 0001) 或計(jì)數(shù)器和診斷寄存清零器代碼 (000A) 等可對(duì)事件計(jì)數(shù)器復(fù)位。查詢(xún)例:請(qǐng)求讀取從機(jī)設(shè)備 17 的通訊事件計(jì)數(shù)器QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)110B圖 24:讀取通訊事件計(jì)數(shù)器查詢(xún)響應(yīng)正常響應(yīng)含一個(gè)帶 2 個(gè)字節(jié)的狀態(tài)字和一個(gè)雙字節(jié)的事件數(shù),若從機(jī)還未處理完以前發(fā)出的程序值狀態(tài)字中的各位。均為 1 (FFFFH),處理完時(shí),各位值均為 0(0000H)。例:按查詢(xún)要求返回響應(yīng)QUERYField NameSlave AddressFunctionStatus HiStatus LoEvent Count HiEvent Count LoError Check (LRC or CRC)Example(Hex)110BFFFF0108圖 25:讀取通訊事件計(jì)數(shù)器響應(yīng)該列子中,狀態(tài)字是 FFFFH,說(shuō)明從機(jī)還在處理程序,控制器計(jì)算的事件數(shù)為 264 (0108H)12 (0C Hex) 讀取通訊事件記錄說(shuō)明由從機(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 為最新的事件,最大新的確字節(jié)刷新該區(qū)域的最老的字節(jié)。查詢(xún)例:請(qǐng)求從機(jī)設(shè)備 17 讀取通訊事件記錄QUERYField NameSlave AddressFunctionError Check (LRC or CRC)Example(Hex)110C圖 26:讀取通訊事件記錄查詢(xún)響應(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)度。例:按查詢(xún)要求返回響應(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,說(shuō)明從機(jī)已完成程序處理從機(jī)計(jì)算的事件數(shù)為 264 (0108H),已處理的信息數(shù)為 289 (0121H)。 最近的通訊事件在 Event 0 字節(jié)中。數(shù)值 20H 表示該從機(jī)已最后進(jìn)入了只聽(tīng)狀態(tài) (Listen Only Mode)。以前的事件在 Ev

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論