




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精品文檔Modbus通訊協(xié)議( RTU 傳輸模式)本說(shuō)明僅做內(nèi)部參考,詳細(xì)請(qǐng)參閱英文版本。第一章 Modbus協(xié)議簡(jiǎn)介Modbus協(xié)議是應(yīng)用于電子控制器上的一種 通用語(yǔ)言。通過(guò)此協(xié)議,控制器相互之間、 控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。有 了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過(guò)何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請(qǐng)求訪問(wèn)其它設(shè)備的過(guò)程,如果回應(yīng)來(lái)自其它設(shè)備的請(qǐng)求,以及怎樣偵測(cè)錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。當(dāng)在一 Modbus網(wǎng)絡(luò)上通信時(shí),此協(xié)議決定了每
2、個(gè)控制器須要知道它們的設(shè)備地址,識(shí)別按地址發(fā)來(lái)的消息,決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),控制器將生成反饋信息并用 Modbus協(xié)議發(fā)出。在其它網(wǎng)絡(luò)上,包含了Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。這種轉(zhuǎn)換也擴(kuò)展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯(cuò)誤檢測(cè)的方法。協(xié)議在一根通訊線上使用應(yīng)答式連接(半雙工),這意味著在一根單獨(dú)的通訊線上信號(hào)沿著相反的兩個(gè)方向傳輸。首先,主計(jì)算機(jī)的信號(hào)尋址到一臺(tái)唯一的終端設(shè)備(從機(jī)),然 后,在相反的方向上終端設(shè)備發(fā)出的應(yīng)答信號(hào)傳輸給主機(jī)。協(xié)議只允許在主計(jì)算機(jī)和終端設(shè)備之間,而不允許獨(dú)立的設(shè)備之間的數(shù)據(jù)交換,這就不會(huì)在使它們初始化時(shí)占據(jù)通訊線路,而
3、僅限于響應(yīng)到達(dá)本機(jī)的查詢信號(hào)。1. 1傳輸方式傳輸方式是一個(gè)信息幀內(nèi)一系列獨(dú)立的數(shù)據(jù)結(jié)構(gòu)以及用于傳輸數(shù)據(jù)的有限規(guī)則,以RTU模式在Modbus總線上進(jìn)行通訊時(shí), 信息中的每8位字節(jié)分成2個(gè)4位16進(jìn)制的字符,每個(gè) 信息必須連續(xù)傳輸下面定義了與 Modebus協(xié)議-RTU方式相兼容的傳輸方式。代碼系統(tǒng)? 8位二進(jìn)制,十六進(jìn)制數(shù) 09, A.F?消息中的每個(gè)8位域都是一個(gè)兩個(gè)十六進(jìn)制字符組成每個(gè)字節(jié)的位?1個(gè)起始位? 8個(gè)數(shù)據(jù)位,最小的有效位先發(fā)送? 1個(gè)奇偶校驗(yàn)位,無(wú)校驗(yàn)則無(wú)? 1個(gè)停止位(有校驗(yàn)時(shí)),2個(gè)Bit (無(wú)校驗(yàn)時(shí))錯(cuò)誤檢測(cè)域? CRC(循環(huán)冗長(zhǎng)檢測(cè))1.2協(xié)議當(dāng)信息幀到達(dá)終端設(shè)備時(shí),
4、它通過(guò)一個(gè)簡(jiǎn)單的“口”進(jìn)入尋址到的設(shè)備,該設(shè)備去掉 數(shù)據(jù)幀的“信封”(數(shù)據(jù)頭),讀取數(shù)據(jù),如果沒(méi)有錯(cuò)誤,就執(zhí)行數(shù)據(jù)所請(qǐng)求的任務(wù),然后, 它將自己生成的數(shù)據(jù)加入到取得的“信封”中,把數(shù)據(jù)幀返回給發(fā)送者。返回的響應(yīng)數(shù)據(jù)中包含了以下內(nèi)容:終端從機(jī)地址(Address)、被執(zhí)行了的命令(Function)、執(zhí)行命令生成的被請(qǐng)求數(shù)據(jù)(Data)和一個(gè)校驗(yàn)碼(Check)。發(fā)生任何錯(cuò)誤都不會(huì)有成功的響應(yīng)。1. 2. 1 信息幀AddressFunctionDataCheck8-Bits8-BitsN x 8-Bits16-Bits圖1 - 1 .信息幀格式特注:Modbus信息幀所允許的最大長(zhǎng)度為256個(gè)
5、字節(jié),即N的范圍是大于等于零且小于等于 252 (N0 , 252)。即,所有的數(shù)據(jù)一共 256個(gè),數(shù)據(jù)剩下253個(gè)。1.2.2 地址(Address)域信息幀地址域(信息地址)在幀的開(kāi)始部分,由 8位組成,有效的從機(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í),則不允許廣播或其它方式替代。1.2.3 功能(Function)域信息幀功能域代碼告訴了被尋址到的終端 執(zhí)行何種功能
6、。有效碼范圍1-225(十進(jìn)制), 有些代碼是適用于所有控制器, 有些適應(yīng)于某種控制器,還有些保留以備后用。有關(guān)功能代 替碼的全部?jī)?nèi)容見(jiàn)附錄Ao當(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
7、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)的原因,不正常響應(yīng)見(jiàn)附錄B。主機(jī)設(shè)備的應(yīng)用程序負(fù)責(zé)處理不正常響應(yīng),典型處理過(guò)程是主機(jī)把對(duì)信息的測(cè)試和診斷送給從機(jī),并通知操作者。表1 - 1列出了所有設(shè)備常用的功能碼、它們的意義及它們的初始功能。表1 - 1常用功能碼代碼名稱(chēng)作用01讀取線圈狀態(tài)取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF)02讀取輸入狀態(tài)取得一組開(kāi)關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF
8、)03讀取保持寄存器在一個(gè)或多個(gè)保持寄存器中取得當(dāng)前的二進(jìn)制值04讀取輸入寄存器在一個(gè)或多個(gè)輸入寄存器中取得當(dāng)前的二進(jìn)制值05強(qiáng)置單線圈強(qiáng)置一個(gè)邏輯線圈的通斷狀態(tài)06預(yù)置單寄存器放置一個(gè)特定的二進(jìn)制值到一個(gè)單寄存器中一07讀取異常狀態(tài)取得8個(gè)內(nèi)部線圈的通斷狀態(tài)15強(qiáng)置多線圈強(qiáng)置串連續(xù)邏輯線圈的通斷16預(yù)置多寄存器放置一系列特定的二進(jìn)制值到一系列多寄存器中17報(bào)告從機(jī)標(biāo)識(shí)可使主機(jī)判斷編址從機(jī)的類(lèi)型及該從機(jī)運(yùn)行指示燈的狀態(tài)1. 2. 4 數(shù)據(jù)域數(shù)據(jù)域包含了終端執(zhí)行特定功能所需要的數(shù)據(jù)或者終端響應(yīng)查詢時(shí)采集到的數(shù)據(jù)。這些數(shù)據(jù)的內(nèi)容可能是數(shù)值、參考地址或者極限值。他由數(shù)據(jù)區(qū)有2個(gè)16進(jìn)制的數(shù)據(jù)位(2的
9、8次方256),數(shù)據(jù)范圍為00-FF(16進(jìn)制)。例如:功能域碼告訴終端讀取一個(gè)寄存器,數(shù)據(jù)域則需要指明從哪個(gè)寄存器開(kāi)始及讀取多少個(gè)數(shù)據(jù),內(nèi)嵌的地址和數(shù)據(jù)依照類(lèi)型和從機(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)信息。1. 2. 5 錯(cuò)誤校驗(yàn)域該域允許主機(jī)和終端檢查傳輸過(guò)程中的錯(cuò)誤。有時(shí),由于電噪聲和其它干擾, 一組數(shù)據(jù)在從一個(gè)設(shè)備傳輸?shù)搅硪粋€(gè)設(shè)備時(shí)在線路上可能會(huì)發(fā)生一些改變,出錯(cuò)校驗(yàn)?zāi)軌虮WC主機(jī)或者終端不去響應(yīng)那些傳輸過(guò)程中發(fā)生了改變的數(shù)據(jù),這就提高了系
10、統(tǒng)的安全性和效率, 出錯(cuò)校驗(yàn)使用了 16位循環(huán)冗余的方法,即 CRC校驗(yàn)。錯(cuò)誤檢測(cè)域包含一 16Bits值(用兩個(gè)8位的字符來(lái)實(shí)現(xiàn))。錯(cuò)誤檢測(cè)域的內(nèi)容是通過(guò)對(duì)消 息內(nèi)容進(jìn)行循環(huán)冗長(zhǎng)檢測(cè)方法得出的。CRC域附加在消息的最后,添加時(shí)先是低字節(jié)然后是高字節(jié)。故CRC的高位字節(jié)是發(fā)送消息的最后一個(gè)字節(jié)。1. 2. 6 字符的連續(xù)傳輸當(dāng)消息在標(biāo)準(zhǔn)的 Modbus系列網(wǎng)絡(luò)傳輸時(shí),每個(gè)字符或 字節(jié)按由左到右的次序方式發(fā)送: 最低有效位(LSB)最高有效位(MSB)。位的序列是:有奇偶校驗(yàn)啟始位12345678奇偶位停止位無(wú)奇偶校驗(yàn)啟始位12345678停止位停止位圖1 - 2 .位順序(RTU)-可編輯修改
11、精品文檔1 、 奇偶校驗(yàn)用戶可以配置控制器是奇或偶校驗(yàn),或無(wú)校驗(yàn)。這將決定了每個(gè)字符中的奇偶校驗(yàn)位是如何設(shè)置的。如果指定了奇或偶校驗(yàn), “ 1”的位數(shù)將算到每個(gè)字符的位數(shù)中 (ASCII 模式 7個(gè)數(shù)據(jù)位,RTU 中 8個(gè)數(shù)據(jù)位)。例如 RTU 字符幀中包含以下8個(gè)數(shù)據(jù)位: 1 1 0 0 0 1 0 1整個(gè)“ 1 ”的數(shù)目是4 個(gè)。如果便用了偶校驗(yàn),幀的奇偶校驗(yàn)位將是0 ,便得整個(gè)“1 ”的個(gè)數(shù)仍是4 個(gè)。如果便用了奇校驗(yàn),幀的奇偶校驗(yàn)位將是1,便得整個(gè)“ 1 ”的個(gè)數(shù)是 5個(gè)。如果沒(méi)有指定奇偶校驗(yàn)位, 傳輸時(shí)就沒(méi)有校驗(yàn)位, 也不進(jìn)行校驗(yàn)檢測(cè)。 代替一附加的停止位填充至要傳輸?shù)淖址麕小?
12、、 CRC 檢測(cè)RTU 方式時(shí),采用 CRC 方法計(jì)算錯(cuò)誤校驗(yàn)碼, CRC 校驗(yàn)傳送的全部數(shù)據(jù)。它忽略信息中單個(gè)字符數(shù)據(jù)的奇偶校驗(yàn)方法。循環(huán)冗余校驗(yàn)(CRC)域占用兩個(gè)字節(jié),包含了一個(gè)16位的二進(jìn)制值。CRC值由傳送設(shè)備計(jì)算出來(lái),然后附加到數(shù)據(jù)幀上,接收設(shè)備在接收數(shù)據(jù)時(shí)重新計(jì)算CRC 值,然后與接收到的CRC域中的值進(jìn)行比較,如果這兩個(gè)值不相等,就發(fā)生了錯(cuò)誤。CRC 開(kāi)始時(shí)先把寄存器的 16 位全部置成“ 1” ,然后把相鄰2 個(gè) 8 位字節(jié)的數(shù)據(jù)放入當(dāng)前寄存器中,只有每個(gè)字符的8位數(shù)據(jù)用作產(chǎn)生 CRC,起始位,停止位和奇偶校驗(yàn)位不加到 CRC 中。在生成 CRC 時(shí),每個(gè) 8 位字節(jié)與寄存器
13、中的內(nèi)容進(jìn)行異或,然后將結(jié)果向低位移位,高位則用“ 0”補(bǔ)充,最低位(LSB)移出并檢測(cè),如果是 1,該寄存器就與一個(gè)預(yù)設(shè)的固定值進(jìn)行一次異或運(yùn)算,如果最低位為 0,不作任何處理。上述處理重復(fù)進(jìn)行,知道執(zhí)行完了 8 次移位操作,當(dāng)最后一位(第8 位)移完以后,下一個(gè)8位字節(jié)與寄存器材的當(dāng)前值進(jìn)行異或運(yùn)算,同樣進(jìn)行上述的另一個(gè)8次移位異或操作,當(dāng)數(shù)據(jù)幀中的所有字節(jié)都作了處理,生成的最終值就是CRC 值。生成一個(gè) CRC 的流程為:1 、 預(yù)置一個(gè) 16 位寄存器為 0FFFFH (全 1 ) ,稱(chēng)之為 CRC 寄存器。2 、 把數(shù)據(jù)幀中的第一個(gè)8 位字節(jié)與 CRC 寄存器中的低字節(jié)進(jìn)行異或運(yùn)算,
14、 結(jié)果存回 CRC寄存器。3 、 將CRC寄存器向右移一位,最高位填以0,最低位移出并檢測(cè)。4 、 如果最低位為0 :重復(fù)第3 步(下一次移位) 。如果最低位為 1:將 CRC 寄存器與一個(gè)預(yù)設(shè)的固定值( 0A001H )進(jìn)行異或運(yùn)算。5 、重復(fù)第3 步和第4 步直到8 次移位。這樣處理完了一個(gè)完整的八位。6 、重復(fù)第2 步到第5 步來(lái)處理下一個(gè)八位,直到所有的字節(jié)處理結(jié)束。7 、 最終 CRC 寄存器得值就是CRC 的值。CRC 值附加到信息時(shí),低位在先,高位在后。查閱 附錄 C 中的一個(gè)實(shí)例,它詳細(xì)說(shuō)明 了 CRC 的校驗(yàn)。第二章 Modbus 數(shù)據(jù)和控制功能詳解Modbus信息中的所有數(shù)
15、據(jù)地址以零作為基準(zhǔn),各項(xiàng)數(shù)據(jù)的第一個(gè)數(shù)據(jù)地址的編號(hào)為0。若無(wú)特殊說(shuō)明在此節(jié)文中用十進(jìn)制值表示,圖中的數(shù)據(jù)區(qū)則用十六進(jìn)制表示。圖2-1為一個(gè)例子,說(shuō)明了 Modbus的查詢信息,圖2-2為正常響應(yīng)的例子,這兩例子 中的數(shù)據(jù)均是16進(jìn)制的,也表示了以 RTU方式構(gòu)成數(shù)據(jù)幀的方法。主機(jī)查詢是讀保持寄存器 ,被請(qǐng)求的從機(jī)地址是 06,讀取的數(shù)據(jù)來(lái)自地址 40108保持寄 有器。注意,該信息規(guī)定了寄存器的起始地址為0107 (006BH)。從機(jī)響應(yīng)返回該功能代碼,說(shuō)明是正常響應(yīng),字節(jié)數(shù)" Byle count”中說(shuō)明有多少個(gè)8位字節(jié)被返回。它表明了附在數(shù)據(jù)區(qū)中8位字節(jié)的數(shù)量,當(dāng)在緩沖區(qū)組織響應(yīng)
16、信息時(shí),“字節(jié)數(shù)”區(qū)域中的值應(yīng)與該信息中數(shù)據(jù)區(qū)的字節(jié)數(shù)相等。如RTU方式時(shí),63H用一個(gè)字節(jié)(01100011皮送。8個(gè)位為一個(gè)單位計(jì)算“字節(jié)數(shù)”,它忽略了信息幀用組成的方法。AddrFunData start reg hiData start reg loData #of regs hiData #of regs loCRC16 hiCRC16 lo06H03H00H6BH00H01HXXHXXH圖2 - 1 Modbus的查詢信息AddrFunByte countData1 hiData1LoData 2 hiData2loData3 hiData3loCRC16 hii CRC16lo0
17、6H03H06H02H2BH00H00H00H63HXXHXXH圖2 - 2 Modbus的響應(yīng)信息2. 1讀取線圈狀態(tài)(功能碼01)讀取從機(jī)離散量輸出口( DO,0X類(lèi)型)的ON/OFF 狀態(tài),不支持廣播。查詢查詢信息規(guī)定了 要讀的起始線圈和線圈量,線圈的起始地址為 0000H, 1-16個(gè)線圈的尋址地址分為 0000H -0015H (DO1=0000H , DO2=0001H ,依此類(lèi)推)。圖2 - 3的例子是從地址為17的從機(jī)讀取 DO1至DO6的狀態(tài)。AddrFunDO start reg hiDO start reg loDO #of regs hiDO #of regs loCR
18、C16 hiCRC16 lo11H01H00H00H00H06HXXHXXH圖2 - 3讀取線圈狀態(tài)-查詢響應(yīng)響應(yīng)信息中的各線圈的狀態(tài)與 數(shù)據(jù)區(qū)的每一位的值相對(duì)應(yīng), 即每個(gè)DO占用一位(1 = ON, 0 = OFF ),第一個(gè)數(shù)據(jù)字節(jié)的 LSB為查詢中的尋址地址,其他的線圈按順序在該字節(jié) 中由低位向高位排列,直至8個(gè)為止,下一個(gè)字節(jié)也是從低位向高位排例。若返回的線圈數(shù)不是8的倍數(shù),則在最后的數(shù)據(jù)字節(jié)中的剩余位至字節(jié)的最高位全部填0,字節(jié)數(shù)區(qū)說(shuō)明全部數(shù)據(jù)的字節(jié)數(shù)。圖2 - 4所示為線圈的輸出狀態(tài)響應(yīng)的實(shí)例。AddrFunByte countDataCRC16 hiCRC16 lo11H01H0
19、1H2AHXXHXXH數(shù)據(jù)000000DO2DO1MSB765432LSB圖2 - 4讀取線圈狀態(tài)-響應(yīng)2. 2讀取輸入狀態(tài)(功能碼02)讀取從機(jī)離散量 輸入信號(hào)(DI,0X類(lèi)型)的ON/OFF狀態(tài),不支持廣播。查詢查詢信息規(guī)定了要讀的輸入起始地址,以及輸入信號(hào)的數(shù)量。輸入的起始地址為0000H,1-16個(gè)輸入口的地址分別為 0-15 (DO1=0000H , DO2=0001H ,依此類(lèi)推)。圖2 - 5的例子是從地址為17的從機(jī)讀取DI1到DI16的狀態(tài)。AddrFunDI startaddr hiDI start addr loDI num hiDI num loCRC16 hiCRC1
20、6 lo11H02H00H00H00H10HXXHXXH圖2 - 5讀取輸入狀態(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é)數(shù)區(qū) 說(shuō)明了全部數(shù)據(jù)的字節(jié)數(shù)。圖2 - 6所示為讀數(shù)字輸出狀態(tài)響應(yīng)的實(shí)例。AddrFunByte counData1Data2CRC16 hiCRC16 lo11H02H02H3
21、3HCCHXXHXXHMSB數(shù)據(jù)1DI8DI7DI6DI5DI4DI3DI2DI1MSBLSB2DI16DI15DI14DI13DI12DI11DI10DI9LSB數(shù)據(jù)圖2 - 6讀取輸入狀態(tài)-響應(yīng)2. 3讀取保持寄存器(功能碼03)讀取從機(jī)保持寄存器(4X類(lèi)型)的二進(jìn)制數(shù)據(jù),不支持廣播。查詢保持寄存器尋址起始查詢信息規(guī)定了要讀的保持寄存器起始地址及保持寄存器的數(shù)量, -可編輯修改精品文檔地址為0000H,寄存器1-16所對(duì)應(yīng)的地址分別為 0000H - 0015H。圖2 - 7的例子是從17號(hào)從機(jī)讀3個(gè)采集到的基本數(shù)據(jù) U1、U2、U3,U1的地址為0000H,U2的地址為 0001H, U
22、3的地址為0002H。AddrFunData startaddr hiData startaddr loData #of regs hiData #of regs loCRC16 hii CRC16lo11H03H00H00H00H03HXXHXXH圖2 - 7讀取保持寄存器-查詢響應(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ù)。圖 2 - 8 的例子是讀取 U1,U2,U3(U1=03E8H,U2=03E7H,U3=03E9H)的響應(yīng)。AddrFunByte countData1 hiData1LoData 2 hiData2l
23、oData3 hiData3 loCRC16 hii CRC16lo11H03H06H03HE8H03HE7H03HE9HXXHXXH圖2 - 8讀取保持寄存器-響應(yīng)2.4讀取輸入寄存器(功能碼04)讀取從機(jī)輸入寄存器(3X類(lèi)型)中的二進(jìn)制數(shù)據(jù),不支持廣播。查詢查詢信息規(guī)定了要讀的寄存器的起始地址及寄存器的數(shù)量,尋止起始地址為0,寄存器1-16所對(duì)應(yīng)的地址分別為 0000H - 0015H。圖2 - 9的例子是請(qǐng)求17號(hào)從機(jī)的0009寄存器。AddrFunDO addr hiDO addr loData #of regs hiData #of regs loCRC16 hiCRC16 lo11
24、H04H00H08H00H01HXXHXXH圖2 - 9讀取輸入奇存器查詢響應(yīng)響應(yīng)信息中的寄存器數(shù)據(jù)為每個(gè)寄存器分別對(duì)應(yīng)2個(gè)字節(jié),第一個(gè)字節(jié)為高位數(shù)據(jù),第二個(gè)字節(jié)為低位數(shù)據(jù)。圖2 - 10的例子寄存器30009中的數(shù)據(jù)用000AH 2個(gè)字節(jié)表示。AddrFunByte countData hiDataLoCRC16 hiCRC16 lo11H04H02H00H0AHXXHXXH圖2 - 10讀取輸入寄存器-響應(yīng)2.5強(qiáng)置單線圈(功能碼05)強(qiáng)制單個(gè)線圈(DO , 0X類(lèi)型)為ON或OFF狀態(tài),廣播時(shí),該功能可強(qiáng)制所有從機(jī)中 同一類(lèi)型的線圈均為 ON或OFF狀態(tài)。該功能可越過(guò)控制器內(nèi)存的保護(hù)狀態(tài)
25、和線圈的禁止?fàn)顟B(tài)。線圈強(qiáng)制狀態(tài)一直保持有效直至下一個(gè)控制邏輯作用于線圈為止??刂七壿嬛袩o(wú)線圈程序時(shí),則線圈處于強(qiáng)制狀態(tài)。查詢查詢信息規(guī)定了需要強(qiáng)制一個(gè)單獨(dú)線圈的類(lèi)型,線圈的起始地址為0000H, 1-16個(gè)線圈的尋址地址分為 0000H - 0015H (DO1=0000H , DO2=0001H ,依此類(lèi)推)。由查詢數(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ì)線圈無(wú)效,不起作用。圖示2-11的例子是請(qǐng)求17號(hào)從機(jī)開(kāi)DO1的On狀態(tài)。AddrFunDO addr hiDO addrloValue hiVa
26、lueloCRC16 hiCRC16 lo11H05H00H00HFFH00HXXHXXH圖示2-11強(qiáng)制單線圈-查詢響應(yīng)圖2 - 12所示為對(duì)這個(gè)命令請(qǐng)求的正常響應(yīng)是在DO狀態(tài)改變以后傳送接收到的數(shù)據(jù)。AddrFunDO addr hiDO addrloValue hiValueloCRC16 hiCRC16 lo11H05H00H00HFFH00HXXHXXH圖示2-12強(qiáng)制單線圈-響應(yīng)2. 6預(yù)置單寄存器(功能碼06)把一個(gè)值預(yù)置到一個(gè)保持寄存器(4X類(lèi)型)中,廣播時(shí),該功能把值預(yù)置到所有從機(jī)的相同類(lèi)型的寄存器中。該功能可越過(guò)控制器的內(nèi)存保護(hù)。使寄存器中的預(yù)置值保持有效。只能由控制器的下
27、一個(gè)邏輯信號(hào)來(lái)處理該預(yù)置值。若控制邏輯中無(wú)寄存器程序時(shí),則寄存器中的值保持不變。查詢查詢信息規(guī)定了要預(yù)置寄存器的類(lèi)型,寄存器尋址起始地址為 0000H,寄存器1所對(duì)應(yīng)的地址為0000H。圖示2-13的例子是請(qǐng)求17號(hào)從機(jī)0040H.的值為2717。AddrFunData start reg hiData start reg loValue hiValueloCRChiCRClo11H06H00H40H0A卜9DHXXHXXH圖示2-13預(yù)設(shè)單寄存器-查詢響應(yīng)圖2-14所示對(duì)于預(yù)置單寄存器請(qǐng)求的正常響應(yīng)是在寄存器值改變以后將接收到的數(shù)AddrFunData start reg hiData st
28、art reg loValue hiValueloCRChiCRClo11H06H00H40H0A卜9DHXXHXXH圖小2-14預(yù)設(shè)單奇存器響應(yīng)據(jù)傳送回去。2. 7讀取異常狀態(tài)(功能碼7)讀從中機(jī)中8個(gè)不正常狀態(tài)線圈的數(shù)據(jù),某些線圈號(hào)已在不同型號(hào)的控制器中預(yù)定義,而其它的線圈由用戶編程,作為有關(guān)控制器的狀態(tài)信息,如“ machine ON/OFF ",“heads retraced”,(縮回標(biāo)題),"safeties satisfied”(安全性滿意),"error conditions"(存在錯(cuò)誤條件) 或其它用戶定義的標(biāo)志等。該功能碼不支持廣播。(
29、在功能代碼中不需要線圈類(lèi)型)預(yù)定義的不正常線圈號(hào)如下:該功能代碼為存取該類(lèi)信息提供了一種簡(jiǎn)單的方法,不正常線圈的類(lèi)型是已知的-可編輯修改控制器型號(hào)M84,184/384,584,984484257884761線圈設(shè)定1-8用戶定義電池狀態(tài)258-264用戶定義電池狀態(tài)762內(nèi)存保護(hù)狀態(tài)763R10工況狀態(tài)764-768 用戶預(yù)定義查詢圖示2-15的例子是請(qǐng)求讀從機(jī)設(shè)備 17中的不正常狀態(tài)。AddrFunCRC16 hiCRC16 lo11H07HXXHXXH圖示2-15讀取異常狀態(tài)-查詢響應(yīng)LSB對(duì)應(yīng)為正常響應(yīng)包含 8個(gè)不正常的線圈狀態(tài),為一個(gè)數(shù)據(jù)字節(jié),每個(gè)線圈一位。 最低線圈類(lèi)型的狀態(tài)。圖2
30、 - 16所示按查詢要求返回響應(yīng):AddrFunDO DataCRC16 hiCRC16 lo11H07H6DHXXHXXH圖示2-16讀取異常狀態(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)。2. 8強(qiáng)置多線圈(功能碼15)按線圈的順序把各線圈(DO, 0X類(lèi)型)強(qiáng)制成 ON或OFF。廣播時(shí),該功能代碼可對(duì)各從機(jī)中相同類(lèi)型的線圈起強(qiáng)制作用。該功
31、能代碼可越過(guò)內(nèi)存保護(hù)和線圈的禁止?fàn)顟B(tài)線圈。保持強(qiáng)制狀態(tài)有效,并只能由控制器的下一個(gè)邏輯來(lái)處理。若無(wú)線圈控制邏輯程序時(shí),線圈將保持強(qiáng)制狀態(tài)。查詢查詢信息規(guī)定了被強(qiáng)制線圈的類(lèi)型,線圈的起始地址為 0000H, 1-16個(gè)線圈的尋址地址分為 0000H - 0015H (DO1=0000H , DO2=0001H ,依此類(lèi)推)。查詢數(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)。圖示2-17例子為請(qǐng)求從機(jī)設(shè)備 17中一組10個(gè)線圈為強(qiáng)制狀態(tài),起始線圈為 20 (則 尋址地址為 19或13H),查詢的數(shù)據(jù)為
32、 2個(gè)字節(jié),CD01H (二進(jìn)制11001101 0000 0001)相 應(yīng)線圈的二進(jìn)制位排列如下:Bit:1100110100000001Coll:2726252423222120-r-2928傳送的第一個(gè)字節(jié)CDH對(duì)應(yīng)線圈為 27-20, LSB對(duì)應(yīng)線圈 20,傳送的第二個(gè)字節(jié)為01H,對(duì)應(yīng)的線圈為29-28, LSB為繼圈28,其余未使用的位均填“ 0”。AddrFunDO addr hiDO addrloData #of reg hiData #of reg loByte countValue hiValueloCRChiCRClo11H0FH00H13H00H0AH02HCDH01H
33、XXHXXH圖示2-17強(qiáng)置多線圈-查詢響應(yīng)正常響應(yīng)返回從機(jī)地址,功能代碼,起始地址以及強(qiáng)制線圈數(shù)。 圖2 - 18對(duì)上述查詢返回的響應(yīng)。AddrFunDO addr hiDO addr loData #of reg hiData #of reg loCRC16 hiCRC16lo11H0FH00H13H00H0AHXXHXXH圖示2-18強(qiáng)置多線圈-響應(yīng)2. 9預(yù)置多寄存器(功能碼16)把數(shù)據(jù)按順序預(yù)置到各 (4X類(lèi)型)寄存器中,廣播時(shí)該功能代碼可把數(shù)據(jù)預(yù)置到全部從 機(jī)中的相同類(lèi)型的寄存器中。該功能代碼可越過(guò)控制器的內(nèi)存保護(hù), 在寄存器中的預(yù)置值一直保持有效, 只能由控制 器的下一個(gè)邏輯來(lái)處
34、理寄存器的內(nèi)容,控制邏輯中無(wú)該寄存器程序時(shí), 則寄存器中的值保持不變。查詢查詢信息規(guī)定了要預(yù)置寄存器的類(lèi)型,寄存器尋址起始地址為 0000H,寄存器1所對(duì)應(yīng)的地址為0000H。圖示2-19的例子是請(qǐng)求17號(hào)從機(jī)0040H.的值為17807783&AddrFunData start reg hiData start reg loData #of reg hiData #of reg loByte countValue hiValueloValue hiValueloCRChiCRClo11H10H00H40H00H02H04H40H89H0A卜1 9DHXXHXXH圖示2-19預(yù)設(shè)多寄存
35、器-查詢響應(yīng)圖2 - 20所示對(duì)于預(yù)置單寄存器請(qǐng)求的正常響應(yīng)是在寄存器值改變以后將接收到的數(shù) 據(jù)傳送回去。AddrFunData star reg hiData start reg loData #of reg hiData #of reg loCRC16 hiCRC16 lo11H10H00H40H00H02HXXHXXH圖小2-20預(yù)設(shè)多奇存器響應(yīng)2. 10報(bào)告從機(jī)標(biāo)識(shí)(功能碼17)返回一個(gè)從機(jī)地址控制器的類(lèi)型,從機(jī)的當(dāng)前狀態(tài),以及有關(guān)從機(jī)的其他說(shuō)明,不支 持廣播。查詢圖示2-21的例子是請(qǐng)求報(bào)告從機(jī)設(shè)備17的 標(biāo)識(shí)ID和狀態(tài)。AddrFunCRC16 hiCRC16 lo11H11HXX
36、HXXH圖示2-21報(bào)告從機(jī)標(biāo)識(shí)-查詢響應(yīng)圖2 - 22所示正常響應(yīng)格式,數(shù)據(jù)內(nèi)容對(duì)應(yīng)每臺(tái)控制器的類(lèi)型。AddrFunByte CountSlave IDRun Indicator Staus AdditfionalDataCRC16 hiCRC16 lo11H11HXXHXXHXXHXXHXXHXXH圖示2-22報(bào)告從機(jī)標(biāo)識(shí)-響應(yīng)從機(jī)ID總結(jié)數(shù)據(jù)區(qū)第一個(gè)字節(jié)為Modicon控制器返回的從機(jī) ID特注:詳細(xì)信息見(jiàn)Modbus協(xié)議英文版或中文版。Slave IDController0Micro 8414842184/384358488849984第三章附錄附錄A: MODBUS全部功能碼ModB
37、us網(wǎng)絡(luò)是一個(gè)工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計(jì)算機(jī)通過(guò)公用線路或局部專(zhuān)用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過(guò)程監(jiān)控。下表 3-1是ModBus的功能碼定義。表3-1 ModBus功能碼功能碼名稱(chēng)作用01讀取線圈狀態(tài)取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF)02讀取輸入狀態(tài)取得一組開(kāi)關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF)03讀取保持寄存器在一個(gè)或多個(gè)保持寄存器中取得當(dāng)前的二進(jìn)制值04讀取輸入寄存器在一個(gè)或多個(gè)輸入寄存器中取得當(dāng)前的二進(jìn)制值05強(qiáng)置單線圈強(qiáng)置一個(gè)邏輯線圈的通斷狀態(tài)06預(yù)置單寄存器把具體二進(jìn)值裝入一個(gè)保持寄存器07讀取異常狀態(tài)取彳導(dǎo)8個(gè)內(nèi)
38、部線圈的通斷狀態(tài),這 8個(gè)線圈的地址由 控制器決定,用戶邏輯可以將這些線圈定義,以說(shuō)明 從機(jī)狀態(tài),短報(bào)文適宜于迅速讀取狀態(tài)08回送診斷校驗(yàn)把診斷校驗(yàn)報(bào)文送從機(jī),以對(duì)通信處理進(jìn)行評(píng)鑒09編程(只用于484)使主機(jī)模擬編程器作用,修改PC從機(jī)邏輯10控詢(只用于484)可使主機(jī)與f正在執(zhí)行長(zhǎng)程序任務(wù)從機(jī)通信,探詢?cè)搹臋C(jī)是否已完成其操作任務(wù),僅在含有功能碼9的報(bào)文發(fā)送后,本功能碼才發(fā)送11讀取事件計(jì)數(shù)可使主機(jī)發(fā)出單詢問(wèn),并隨即判定操作是否成功,尤 其是該命令或其他應(yīng)答產(chǎn)生通信錯(cuò)誤時(shí)12讀取通信事件記錄可是主機(jī)檢索每臺(tái)從機(jī)的ModBus事務(wù)處理通信事件記錄。如果某項(xiàng)事務(wù)處理完成,記錄會(huì)給出有關(guān)錯(cuò)誤13
39、編程(184/384 484 584)可使主機(jī)模擬編程器功能修改PC從機(jī)邏輯14探詢(184/384 484 584)可使土機(jī)與正在執(zhí)行任務(wù)的從機(jī)通信,定期控詢?cè)搹臋C(jī)是否已完成其程序操彳僅在含有功能13的報(bào)文發(fā)送后,本功能碼才得發(fā)送15強(qiáng)置多線圈強(qiáng)置一串連續(xù)邏輯線圈的通斷16預(yù)置多寄存器把具體的二進(jìn)制值裝入一串連續(xù)的保持寄存器17報(bào)告從機(jī)標(biāo)識(shí)可使主機(jī)判斷編址從機(jī)的類(lèi)型及該從機(jī)運(yùn)行指示燈 的狀態(tài)18(884 和 MICRO 84)可使主機(jī)模擬編程功能,修改PC狀態(tài)邏輯19重置通信鏈路發(fā)生非可修改錯(cuò)誤后,是從機(jī)復(fù)位于已知狀態(tài),可重 置順序字節(jié)20讀取通用參數(shù)(584L)顯示擴(kuò)展存儲(chǔ)器文件中的數(shù)據(jù)信
40、息21寫(xiě)入通用參數(shù)(584L)把通用參數(shù)寫(xiě)入擴(kuò)展存儲(chǔ)文件,或修改之22 64保留作擴(kuò)展功能備用65 72保留以備用戶功能所 用留作用戶功能的擴(kuò)展編碼73119非法功能120127保留留作內(nèi)部作用128255保留用于異常應(yīng)答ModBus網(wǎng)絡(luò)只是一個(gè)主機(jī),所有通信都由他發(fā)出。網(wǎng)絡(luò)可支持247個(gè)之多的遠(yuǎn)程從屬控制器,但實(shí)際所支持的從機(jī)數(shù)要由所用通信設(shè)備決定。采用這個(gè)系統(tǒng),各PC可以和中心主機(jī)交換信息而不影響各PC執(zhí)行本身的控制任務(wù)。表3-2是ModBus各功能碼對(duì)應(yīng)的數(shù)據(jù)類(lèi)型。表3-2 ModBus功能碼與數(shù)據(jù)類(lèi)型對(duì)應(yīng)表代碼功能數(shù)據(jù)類(lèi)型I10102讀位讀位| 03讀整型、字符型、狀態(tài)字、浮點(diǎn)型04讀
41、整型、狀態(tài)字、浮點(diǎn)型05寫(xiě)位06寫(xiě)整型、字符型、狀態(tài)字、浮點(diǎn)型081 .15N/A重復(fù)“回路反饋”信息寫(xiě)位16寫(xiě)整型、字符型、狀態(tài)字、浮點(diǎn)型17讀字符型附錄B:不正常響應(yīng)不正常響應(yīng):除廣播外,主機(jī)向從機(jī)設(shè)備發(fā)送查詢并希望有一個(gè)正常響應(yīng),主機(jī)查詢中有可能產(chǎn)生4種事件:從機(jī)接收查詢,通訊錯(cuò)誤正常處理信息,則返回一個(gè)正常響應(yīng)事件。由于通訊出錯(cuò),從機(jī)不能接收查詢數(shù)據(jù),因而不返回響應(yīng)。此時(shí),主機(jī)依靠處理程序給 出查詢超時(shí)事件。若從機(jī)接收查詢,發(fā)現(xiàn)有(LRC或CRC)通訊錯(cuò)誤,并返回響應(yīng),此時(shí),依靠主機(jī)處理程序給出查詢超時(shí)事件。從機(jī)接收查詢,無(wú)通訊錯(cuò)誤,但無(wú)法處理(如讀不存在的線圈和寄存器 )時(shí),向主機(jī)報(bào)告錯(cuò)誤的性質(zhì)。不正常響應(yīng)信息有 2個(gè)與正常響應(yīng)不相同的區(qū)域:功能代碼區(qū):正常響應(yīng)時(shí),從機(jī)的響應(yīng)功能代碼區(qū),帶原查詢的功能代碼。所有功能代 碼的MSB為0(其值低于80H)。不正常響應(yīng)時(shí),從機(jī)把功能代碼的MSB置為1,使功能代碼值大于80H,高于正常響應(yīng)的值。這樣,主機(jī)應(yīng)用程序能識(shí)別不正常響應(yīng)事件,能檢查不正 常
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 磨礦崗位面試題及答案
- 物化復(fù)試面試題庫(kù)及答案
- 浙江省安全員c證考試試題及答案
- 會(huì)計(jì)預(yù)算面試題及答案
- 高爾夫老師面試題及答案
- 艾灸法考試試題及答案
- 能源企業(yè)面試題及答案
- 教育扶貧考試題及答案
- 臨床執(zhí)業(yè)醫(yī)考試外科試題及答案2025版
- 臨床營(yíng)養(yǎng)科技能操作試題及答案2025版
- 鄉(xiāng)鎮(zhèn)道路清掃合同范例
- 治安管理處罰法課件
- 2024年全國(guó)職業(yè)院校技能大賽中職組(母嬰照護(hù)賽項(xiàng))考試題庫(kù)(含答案)
- 住友變頻器說(shuō)明書(shū)-翻譯
- 2024品牌服務(wù)合同范本
- 常見(jiàn)職業(yè)病危害和預(yù)防基礎(chǔ)知識(shí)
- 2025年九省聯(lián)考新高考 物理試卷(含答案解析)
- 辦公耗材項(xiàng)目驗(yàn)收方案
- 2025屆廣州市高三年級(jí)階段訓(xùn)練(8月市調(diào)研摸底) 數(shù)學(xué)試卷(含答案)
- 《旅館建筑設(shè)計(jì)原理》課件
- 火龍果病蟲(chóng)害
評(píng)論
0/150
提交評(píng)論