Modbus通訊協(xié)議_第1頁
Modbus通訊協(xié)議_第2頁
Modbus通訊協(xié)議_第3頁
Modbus通訊協(xié)議_第4頁
Modbus通訊協(xié)議_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Modbus通訊協(xié)議(RTU專輸模式)本說明僅做內(nèi)部參考,詳細請參閱英文版本。第一章 Modbus協(xié)議簡介Modbus協(xié)議是應用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(例如以太網(wǎng))和其它設備之間可以通信。它已經(jīng)成為一通用工業(yè)標準。有 了它,不同廠商生產(chǎn)的控制設備可以連成工業(yè)網(wǎng)絡,進行集中監(jiān)控。此協(xié)議定義了一個控制器能認識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡進行通信的。它描述了一控制器請求訪問其它設備的過程,如果回應來自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。當在一 Modbus網(wǎng)絡上通信時,此協(xié)議決定了每個控制器須要知道

2、它們的設備地址,識Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡上使用的幀或別按地址發(fā)來的消息,決定要產(chǎn)生何種行動。如果需要回應,控制器將生成反饋信息并用 Modbus協(xié)議發(fā)出。在其它網(wǎng)絡上,包含了包結(jié)構(gòu)。這種轉(zhuǎn)換也擴展了根據(jù)具體的網(wǎng)絡解決節(jié)地址、路由路徑及錯誤檢測的方法。協(xié)議在一根通訊線上使用應答式連接(半雙工),這意味著在一根單獨的通訊線上信號沿著相反的兩個方向傳輸。首先,主計算機的信號尋址到一臺唯一的終端設備(從機),然 后,在相反的方向上終端設備發(fā)出的應答信號傳輸給主機。協(xié)議只允許在主計算機和終端設備之間,而不允許獨立的設備之間的數(shù)據(jù)交換,這就不會在使它們初始化時占據(jù)通訊線路,而僅限于響應到達本

3、機的查詢信號。1 . 1傳輸方式傳輸方式是一個信息幀內(nèi)一系列獨立的數(shù)據(jù)結(jié)構(gòu)以及用于傳輸數(shù)據(jù)的有限規(guī)則,以RTU模式在Modbus總線上進行通訊時,信息中的每8位字節(jié)分成2個4位16進制的字符,每個 信息必須連續(xù)傳輸下面定義了與Modebus協(xié)議-RTU方式相兼容的傳輸方式。代碼系統(tǒng)8位二進制,十六進制數(shù)0.9 ,A.F 消息中的每個8位域都是一個兩個十六進制字符組成每個字節(jié)的位1個起始位 8個數(shù)據(jù)位,最小的有效位先發(fā)送 1個奇偶校驗位,無校驗則無1個停止位(有校驗時),2個Bit (無校驗時)錯誤檢測域CRC循環(huán)冗長檢測)1 . 2協(xié)議當信息幀到達終端設備時,它通過一個簡單的“口”進入尋址到的

4、設備,該設備去掉數(shù)據(jù)幀的“信封”(數(shù)據(jù)頭),讀取數(shù)據(jù),如果沒有錯誤,就執(zhí)行數(shù)據(jù)所請求的任務,然后, 它將自己生成的數(shù)據(jù)加入到取得的“信封”中,把數(shù)據(jù)幀返回給發(fā)送者。返回的響應數(shù)據(jù)中包含了以下內(nèi)容: 終端從機地址(Address)、被執(zhí)行了的命令(Function)、執(zhí)行命令生成 的被請求數(shù)據(jù)(Data)和一個校驗碼(Check)。發(fā)生任何錯誤都不會有成功的響應。1 . 2. 1 信息幀AddressFun cti onDataCheck8-Bits8-BitsN x 8-Bits16-Bits圖1- 1.信息幀格式特注:Modbus信息幀所允許的最大長度為256個字節(jié),即N的范圍是大于等于零且

5、小于等于 252 (N0, 252)。即,所有的數(shù)據(jù)一共 256個,數(shù)據(jù)剩下253個。1. 2. 2 地址(Address )域信息幀地址域(信息地址)在幀的開始部分,由8位組成,有效的從機設備地址范圍0-247(十進制),各從機設備的尋址范圍為1-247。主機把從機地址放入信息幀的地址區(qū),并向從機尋址。 從機響應時,把自己的地址放入響應信息的地址區(qū),讓主機識別已作出響應的從機地址。地址0為廣播地址,所有從機均能識別。當Modbus協(xié)議用于高級網(wǎng)絡時,則不允許廣播或其它方式替代。1. 2. 3 功能(Function )域信息幀功能域代碼告訴了被尋址到的終端 執(zhí)行何種功能。有效碼范圍1-225

6、(十進制), 有些代碼是適用于所有控制器,有些適應于某種控制器,還有些保留以備后用。有關(guān)功能代替碼的全部內(nèi)容見 附錄A。當主機向從句發(fā)送信息時,功能代碼向從機說明應執(zhí)行的動作。如讀一組離散式線圈或輸入信號的ON/OFF犬態(tài),讀一組寄存器的數(shù)據(jù),讀從機的診斷狀態(tài),寫線圈(或寄存器) 允許下截、記錄、確認從機內(nèi)的程序等。當從機響應主機時,功能代碼可說明從機正常響應 或出現(xiàn)錯誤(即不正常響應),正常響應時,從句簡單返回原始功能代碼;不正常響應時,從 機返回與原始代碼相等效的一個碼,并把最高有效位設定為“1 ”。如,主機要求從機讀一組保持寄存器時,則發(fā)送信息的功能碼為:0000 0011 (十六進制0

7、3)則返回相同的代碼值作為正常響應。發(fā)現(xiàn)錯時,則若從機正確接收請求的動作信息后, 返回一個不正常響信息:1000 0011(十六進制 83)代碼名稱作用01讀取線圈狀態(tài)取得一組邏輯線圈的當前狀態(tài)(ON/OFF)從機對功能代碼作為了修改,此外,還把一個特殊碼放入響應信息的數(shù)據(jù)區(qū)中, 現(xiàn)的錯誤類型和不正常響應的原因,不正常響應見 正常響應,典型處理過程是主機把對信息的測試和診斷送給從機, 列出了所有設備常用的功能碼、它們的意義及它們的初始功能。表1- 1常用功能碼告訴主機出 附錄B。主機設備的應用程序負責處理不 并通知操作者。表1 - 102讀取輸入狀態(tài)取得一組開關(guān)輸入的當前狀態(tài)(ON/OFF)0

8、3讀取保持寄存器在一個或多個保持寄存器中取得當前的二進制值04讀取輸入寄存器在一個或多個輸入寄存器中取得當前的二進制值05強置單線圈強置一個邏輯線圈的通斷狀態(tài)06預置單寄存器放置一個特定的二進制值到一個單寄存器中07讀取異常狀態(tài)取得8個內(nèi)部線圈的通斷狀態(tài)15強置多線圈強置一串連續(xù)邏輯線圈的通斷16預置多寄存器放置一系列特定的二進制值到一系列多寄存器中17報告從機標識可使主機判斷編址從機的類型及該從機運行指示燈的狀態(tài)1. 2 4 數(shù)據(jù)域數(shù)據(jù)域包含了終端執(zhí)行特定功能所需要的數(shù)據(jù)或者終端響應查詢時采集到的數(shù)據(jù)。數(shù)據(jù)的內(nèi)容可能是數(shù)值、 參考地址或者極限值。 他由數(shù)據(jù)區(qū)有2個16進制的數(shù)據(jù)位 次方256

9、),數(shù)據(jù)范圍為 00-FF(16進制)。例如:功能域碼告訴終端讀取一個寄存器這些(2的8,數(shù)據(jù)域則需要指明從哪個寄存器開始及讀取多少個數(shù)據(jù),內(nèi)嵌的地址和數(shù)據(jù)依照類型和從機之間的不同能力而有所不同。 若無錯誤出現(xiàn),從機向主機的響應信息中包含了請求數(shù)據(jù),若有錯誤出現(xiàn),則數(shù)據(jù)中有一個不正常代碼,使主機能判斷并作出下一步的動作。數(shù)據(jù)區(qū)的長度可為“零”以表示某類信息。1 2 5 錯誤校驗域該域允許主機和終端檢查傳輸過程中的錯誤。有時,由于電噪聲和其它干擾, 一組數(shù)據(jù)在從一個設備傳輸?shù)搅硪粋€設備時在線路上可能會發(fā)生一些改變,出錯校驗能夠保證主機或者終端不去響應那些傳輸過程中發(fā)生了改變的數(shù)據(jù),這就提高了系統(tǒng)

10、的安全性和效率, 出錯校驗使用了 16位循環(huán)冗余的方法,即 CRC校驗。錯誤檢測域包含一 16Bits值(用兩個8位的字符來實現(xiàn))。錯誤檢測域的內(nèi)容是通過對 消息內(nèi)容進行循環(huán)冗長檢測方法得出的。CRC域附加在消息的最后,添加時先是低字節(jié)然后是高字節(jié)。故CRC的高位字節(jié)是發(fā)送消息的最后一個字節(jié)。1. 2 6 字符的連續(xù)傳輸當消息在標準的 Modbus系列網(wǎng)絡傳輸時,每個字符或字節(jié)按由左到右的次序方式發(fā)送:最低有效位(LSB)最高有效位(MSB)。位的序列是:啟始位 12345678 奇偶位停止位有奇偶校驗無奇偶校驗啟始位123456 8停止位停止位圖1 - 2 . 位順序(RTU1 3錯誤檢測1

11、、奇偶校驗用戶可以配置控制器是奇或偶校驗,或無校驗。這將決定了每個字符中的奇偶校驗位是 如何設置的。如果指定了奇或偶校驗,“ 1”的位數(shù)將算到每個字符的位數(shù)中(ASCII模式7個數(shù)據(jù)位,RTU中8個數(shù)據(jù)位)。例如 RTU字符幀中包含以下 8個數(shù)據(jù)位:1 1 0 0 0 1 0 1 整個“1”的數(shù)目是 4 個。如果便用了偶校驗,幀的奇偶校驗位將是 0,便得整個“ 1” 的個數(shù)仍是 4 個。如果便用了奇校驗,幀的奇偶校驗位將是 1,便得整個“ 1”的個數(shù)是 5 個。如果沒有指定奇偶校驗位, 傳輸寸就沒有校驗位, 也不進行校驗檢測。 止位填充至要傳輸?shù)淖址麕小?、CRC檢測RTU方式時,采用 CR

12、C方法計算錯誤校驗碼,CRC校驗傳送的全部數(shù)據(jù)。單個字符數(shù)據(jù)的奇偶校驗方法。循環(huán)冗余校驗(CRC域占用兩個字節(jié),包含了一個16位的二進制值。備計算出來, 然后附加到數(shù)據(jù)幀上, 接收設備在接收數(shù)據(jù)時重新計算 的CRC域中的值進行比較,如果這兩個值不相等,就發(fā)生了錯誤。CRC開始時先把寄存器的 16位全部置成“ 1” ,然后把相鄰2個8位字節(jié)的數(shù)據(jù)放入當 前寄存器中,CRC 中。在生成 位則用“ 0”代替一附加的停它忽略信息中CRC直由傳送設CRC直,然后與接收到只有每個字符的8位數(shù)據(jù)用作產(chǎn)生 CRC起始位,停止位和奇偶校驗位不加到CRC寸,每個8位字節(jié)與寄存器中的內(nèi)容進行異或,然后將結(jié)果向低位移

13、位, 高補充,最低位(LSB移出并檢測,如果是 1,該寄存器就與一個預設的固定值 0,不作任何處理。8 次移位操作,當最后一位(第 8 位)移完以后,下 同樣進行上述的另一個 8次移位異或操作,進行一次異或運算,如果最低位為上述處理重復進行,知道執(zhí)行完了一個 8位字節(jié)與寄存器材的當前值進行異或運算, 當數(shù)據(jù)幀中的所有字節(jié)都作了處理,生成的最終值就是 生成一個CRC的流程為:預置一個16位寄存器為OFFFFH (全1),稱之為CRC寄存器。把數(shù)據(jù)幀中的第一個 8位字節(jié)與CRC寄存器中的低字節(jié)進行異或運算,結(jié)果存回CRC寄存器。將CRC寄存器向右移一位,最高位填以0,最低位移出并檢測。如果最低位為

14、 0:重復第 3 步(下一次移位) 。如果最低位為1:將CRC寄存器與一個預設的固定值(0A001H)進行異或運算。 重復第 3步和第 4步直到 8次移位。這樣處理完了一個完整的八位。重復第 2 步到第 5 步來處理下一個八位,直到所有的字節(jié)處理結(jié)束。 最終CRC寄存器得值就是CRC勺值。CRC直附加到信息時,低位在先,高位在后。查閱附錄C中的一個實例,它詳細說明了CRC勺校驗。crC直。1、2、3、4、5、6、7、第二章 Modbus 數(shù)據(jù)和控制功能詳解Modbus 信息中的所有數(shù)據(jù)地址 以零作為基準 ,各項數(shù)據(jù)的第一個數(shù)據(jù)地址的編號為 若無特殊說明在此節(jié)文中用進制直表示,圖中的 數(shù)據(jù)區(qū)則用

15、十六進制表示 。0。圖2-1為一個例子,說明了 Modbus的查詢信息,圖2-2為正常響應的例子,這兩例 子中的數(shù)據(jù)均是16進制的,也表示了以 RTU方式構(gòu)成數(shù)據(jù)幀的方法。主機查詢是讀保持寄存器 ,被請求的從機地址是 06,讀取的數(shù)據(jù)來自地址40108保持寄有器。注意,該信息規(guī)定了寄存器的起始地址為0107 (006BH)。從機響應返回該功能代碼,說明是正常響應,字節(jié)數(shù)"Byle count ”中說明有多少個 8位字節(jié)被返回。它表明了附在數(shù)據(jù)區(qū)中 8位字節(jié)的數(shù)量,當在緩沖區(qū)組織響應信息時, “字節(jié) 數(shù)”區(qū)域中的值應與該信息中數(shù)據(jù)區(qū)的字節(jié)數(shù)相等。如RTU方式時,63H用一個字節(jié)(011

16、00011)發(fā)送。8個位為一個單位計算“字節(jié)數(shù)”,它忽略了信息幀用組成的方法。AddrFunData start reg hiData start reg loData #of regs hiData #of regs loCRC16 hiCRC16lo06H03H00H6BH00H01HXXHXXH圖2-1 Modbus的查詢信息AddrFunByte cou ntData1 hiData1LoData 2 hiData2 loData3 hiData3 loCRC1 hi5 CRC1lo06H03H06H02H2BH00H00H00H63HXXHXXH圖2-2 Modbus的響應信息2.

17、1讀取線圈狀態(tài)(功能碼01)讀取從機離散量輸出口( DO,0X類型)的ON/OFF狀態(tài),不支持廣播。查詢查詢信息規(guī)定了要讀的起始線圈和線圈量,線圈的起始地址為 0000H, 1-16個線圈的尋址地址分為 0000H - 0015H ( DO1=0000H DO2=0001H 依此類推)。圖2 - 3的例子是從地址為 17的從機讀取DO1至DO6的狀態(tài)。AddrFunDO start reg hiDO start reg loDO #of regs hiDO #of regs loCRC16 hiCRC16lo11H01H00H00H00H06HXXHXXH圖2-3讀取線圈狀態(tài)-查詢響應響應信息

18、中的各線圈的狀態(tài)與 數(shù)據(jù)區(qū)的每一位的值相對應,即每個DO占用一位(1 = ON, 0 = OFF),第一個數(shù)據(jù)字節(jié)的 LSB為查詢中的尋址地址,其他的線圈按順序在該字節(jié)中由低 位向高位排列,直至 8個為止,下一個字節(jié)也是從低位向高位排例。若返回的線圈數(shù)不是8的倍數(shù),則在最后的數(shù)據(jù)字節(jié)中的剩余位至字節(jié)的最高位全部填0,字節(jié)數(shù)區(qū)說明全部數(shù)據(jù)的字節(jié)數(shù)。圖2 - 4所示為線圈的輸出狀態(tài)響應的實例。AddrFunByte countDataCRC16 hiCRC16 lo11H01H01H2AHXXHXXH數(shù)據(jù)00 0 11 000DO2DO1MSB6圖2-4讀取線圈狀態(tài)-響應LSB2. 2讀取輸入狀態(tài)

19、(功能碼02)讀取從機離散量 輸入信號(DI,0X類型)的ON/OFF狀態(tài),不支持廣播。查詢查詢信息規(guī)定了要讀的輸入起始地址,以及輸入信號的數(shù)量。輸入的起始地址為 0000H,1-16個輸入口的地址分別為 0-15 ( DO1=0000H DO2=0001H依此類推)。圖2-5的例子是從地址為 17的從機讀取 DI1到DI16的狀態(tài)。AddrFunDI start addr hiDI start addr IoDI num hiDI numloCRC16 hiCRC16lo11H02H00H00H00H10HXXHXXH圖2-5讀取輸入狀態(tài)-查詢響應響應信息中的各輸入口的狀態(tài),分別對應于數(shù)據(jù)區(qū)

20、中的每一位值,1 = ON; 0 = OFF ,第一個數(shù)據(jù)字節(jié)的LSB為查詢中的尋址地址,其他輸入口按順序在該字節(jié)中由低位向高位排 列,直至8個位為止。下一個字節(jié)中的8個輸入位也是從低位到高位排列。若返回的輸入位數(shù)不是8的倍數(shù),則在最后的數(shù)據(jù)字節(jié)中的剩余位直至字節(jié)的最高位全部填零。字節(jié)數(shù)區(qū)說明了全部數(shù)據(jù)的字節(jié)數(shù)。AddrFunByte cou ntData1 1Data2CRC16 hiCRC16 lo11H02H02H33HCCHXXHXXHDI3 I DI2DI4DI1DI8 I DI7DI6 I DI5LSB圖2-6所示為讀數(shù)字輸出狀態(tài)響應的實例。數(shù)據(jù)1DI16 1 DI15DI14 1

21、 DI13DI12DI11 | DI10DI9MSBLSB圖2-6讀取輸入狀態(tài)-響應MSB數(shù)據(jù)22. 3讀取保持寄存器(功能碼03)讀取從機保持寄存器(4X類型)的二進制數(shù)據(jù),不支持廣播。查詢保持寄存器尋址起始查詢信息規(guī)定了要讀的保持寄存器起始地址及保持寄存器的數(shù)量,地址為0000H,寄存器1-16所對應的地址分別為0000H - 0015Ho圖2 - 7的例子是從17號從機讀3個采集到的基本數(shù)據(jù) U1、U2、U3,U1的地址為0000H,U2的地址為0001H, U3的地址為 0002H。AddrFunData startaddr hiData startaddr IoData #of re

22、gs hiData #of regs loCRC1hi5 CRC16lo11H03H00H00H00H03HXXHXXH查詢圖2-7讀取保持寄存器響應2個字節(jié),第一個字節(jié)為AddrFunByte cou ntData1hiData1LoData 2 hiData2loData3 hiData3loCRC1hi5 CRC1lo11H03H06H03HE8H03HE7H03HE9HXXHXXH圖2-8讀取保持寄存器響應響應信息中的寄存器數(shù)據(jù)為二進制數(shù)據(jù),每個寄存器分別對應 高位值數(shù)據(jù),第二個字節(jié)為低位數(shù)據(jù)。圖 2- 8 的例子是讀取 U1,U2,U3(U1=03E8H,U2=03E7H,U3=03

23、E9H)的響應。2.4讀取輸入寄存器(功能碼04)讀取從機輸入寄存器(3X類型)中的二進制數(shù)據(jù),不支持廣播。查詢0,寄存AddrFunDO addr hiDO addrloData #of regs hiData #of regs loCRC16hiCRC16lo11H04H00H08H00H01HXXHXXH圖2 - 9讀取輸入寄存器查詢查詢信息規(guī)定了要讀的寄存器的起始地址及寄存器的數(shù)量,尋止起始地址為 器1-16所對應的地址分別為0000H - 0015H。圖2-9的例子是請求17號從機的0009寄存器。響應響應信息中的寄存器數(shù)據(jù)為每個寄存器分別對應二個字節(jié)為低位數(shù)據(jù)。圖2 - 10的例子

24、寄存器30009中的數(shù)據(jù)用000AH 2個字節(jié)表示。2個字節(jié),第一個字節(jié)為高位數(shù)據(jù), 第AddrFunByte cou ntDatahiDataLoCRC16 hiCRC16lo11H04H02H00H0AHXXHXXH圖2 - 10讀取輸入寄存器響應2.5強置單線圈(功能碼05)強制單個線圈(DO, 0X類型)為ON或OFF狀態(tài),廣播時,該功能可強制所有從機中同 一類型的線圈均為 ON或OFF狀態(tài)。該功能可越過控制器內(nèi)存的保護狀態(tài)和線圈的禁止狀態(tài)。線圈強制狀態(tài)一直保持有效直至下一個控制邏輯作用于線圈為止??刂七壿嬛袩o線圈程序時,則線圈處于強制狀態(tài)。查詢信息規(guī)定了需要強制一個單獨線圈的類型,線

25、圈的起始地址為0000H, 1-16個線圈的尋址地址分為 0000H - 0015H ( DO1=0000H D02=0001H依此類推)。由查詢數(shù)據(jù)區(qū)中的一個常量,規(guī)定被請求線圈的ON/OFF狀態(tài),F(xiàn)F00H值請求線圈處于ON狀態(tài),0000H值請求線圈處于 OFF狀態(tài),其它值對線圈無效,不起作用。圖示2-11的例子是請求17號從機開DO1的On狀態(tài)。AddrFunDO addr hiDO addr IoValue hiValue loCRC16 hiCRC16 lo11H05H00H00HFFH00HXXHXXH圖示2-11強制單線圈-查詢響應圖2 - 12所示為對這個命令請求的正常響應是在

26、DO狀態(tài)改變以后傳送接收到的數(shù)據(jù)。2. 6預置單寄存器(功能碼06)把一個值預置到一個保持寄存器 的相同類型的寄存器中。(4X類型)中,廣播時,該功能把值預置到所有從機使寄存器中的預置值保持有效。只能由控制器的下一該功能可越過控制器的內(nèi)存保護。個邏輯信號來處理該預置值。若控制邏輯中無寄存器程序時,則寄存器中的值保持不變。查詢查詢信息規(guī)定了要預置寄存器的類型,寄存器尋址起始地址為 的地址為0000H。0000H,寄存器1所對應AddrFunData start reg hiData start reg loValue hiValueloCRChiCRClo11H06H00H40H0AH9DHXX

27、HXXH圖示2-13的例子是請求17號從機0040H.的值為2717。圖示2-13預設單寄存器-查詢響應14所示對于預置單寄存器請求的正常響應是在寄存器值改變以后將接收到的數(shù)據(jù)傳送回去。AddrFunData start reg hiData start reg loValuehiValueloCRChiCRClo11H06H00H40H0AH9DHXXHXXH圖示2-14預設單寄存器-響應AddrFunDO addr hiDO addrloValue hiValueloCRC16 hiCRC16lo11H05H00H00HFFH00HXXHXXH2-12強制單線圈-響應圖示2. 7讀取異常狀

28、態(tài)(功能碼7)讀從中機中8個不正常狀態(tài)線圈的數(shù)據(jù),某些線圈號已在不同型號的控制器中預定義,而其它的線圈由用戶編程,作為有關(guān)控制器的狀態(tài)信息,如“machine ON/OFF”,“ headsretraced ”,(縮回標題),“ safeties satisfied ” (安全性滿意),“ error conditions ” (存 在錯誤條件)或其它用戶定義的標志等。該功能碼不支持廣播。該功能代碼為存取該類信息提供了一種簡單的方法,不正常線圈的類型是已知的 能代碼中不需要線圈類型(在功控制器型號線圈設定M84,184/384,584,9841-8用戶定義484257電池狀態(tài)258-264用戶

29、定義884761電池狀態(tài)762內(nèi)存保護狀態(tài)763R10工況狀態(tài)764-768用戶預定義)預定義的不正常線圈號如下:圖示2-15的例子是請求讀從機設備查詢AddrFunCRC16 hiCRC16 lo11H07HXXHXXH17中的不正常狀態(tài)。圖示2-15讀取異常狀態(tài)-查詢響應LSB對應為正常響應包含8個不正常的線圈狀態(tài),為一個數(shù)據(jù)字節(jié),每個線圈一位。 最低線圈類型的狀態(tài)。圖2-16所示按查詢要求返回響應:AddrFunDO DataCRC16 hiCRC16 lo11H07H6DHXXHXXH圖示2-16讀取異常狀態(tài)-響應該例子中,線圈數(shù)據(jù)為 6DH (二進制0110 ,1101),從左到右(

30、最高位至最低位)的線 圈狀態(tài)分別為:OFF - ON - ON - OFF - ON - ON - OFF - ON。若控制器型號 為984 ,這些位表示線圈8至1的狀態(tài);若控制器型號為 484則表示線圈264至257 的狀態(tài)。2. 8強置多線圈(功能碼15)按線圈的順序把各線圈 (DO, OX類型)強制成ON或OFF。廣播時,該功能代碼可對 各從機中相同類型的線圈起強制作用。該功能代碼可越過內(nèi)存保護和線圈的禁止狀態(tài)線圈。保持強制狀態(tài)有效, 并只能由控制器的下一個邏輯來處理。若無線圈控制邏輯程序時,線圈將保持強制狀態(tài)。Bit:1100110100000001Coll27262524232221

31、202928傳送的第一個字節(jié) CDH對應線圈為27-20, LSB 對應線圈20 ,傳送的第二個字節(jié)為01H ,對應的線圈為29-28 , LSB為繼圈28 ,其余未使用的位均填“ 0”。AddrFunDO addr hiDO addrloData #of reg hiData #of reg loByte cou ntValuehiValueloCRChiCRClo11H0FH00H13H00H0AH02HCDH01HXXHXXH圖示2-17強置多線圈-查詢查詢信息規(guī)定了被強制線圈的類型,線圈的起始地址為 0000H, 1-16個線圈的尋址地址D02=0001H依此類推)。ON/OFF狀態(tài),

32、如數(shù)據(jù)區(qū)的某位值為“ 1”表示請求的 OFF狀態(tài)。中一組10個線圈為強制狀態(tài),起始線圈為 20 (則 2個字節(jié),CD01H (二進制 0000 0001) 相應線圈分為 0000H - 0015H (D01=0000H查詢數(shù)據(jù)區(qū)規(guī)定了被請求線圈的 相應線圈狀態(tài)為 ON位值為“ 0”,圖示2-17例子為請求從機設備則為17尋址地址為19或13H),查詢的數(shù)據(jù)為 的二進制位排列如下:響應正常響應返回從機地址,功能代碼,起始地址以及強制線圈數(shù)。 圖2-18對上述查詢返回的響應。AddrFunDO addr hiDO addrloData #of reg hiData #of reg loCRC16

33、hiCRC16lo11H0FH00H13H00H0AHXXHXXH圖示2-18強置多線圈-響應2. 9預置多寄存器(功能碼16)把數(shù)據(jù)按順序預置到各 (4X類型)寄存器中,廣播時該功能代碼可把數(shù)據(jù)預置到全部 從機中的相同類型的寄存器中。該功能代碼可越過控制器的內(nèi)存保護, 在寄存器中的預置值一直保持有效, 只能由控制 器的下一個邏輯來處理寄存器的內(nèi)容, 控制邏輯中無該寄存器程序時, 則寄存器中的值保持 不變。0000H,寄存器1所對應查詢AddrFunData start reg hiData start reg loData #of reg hiData #of reg loByte cou

34、ntValue hiValueloValue hiValueloCRChiCRClo11H10H00H40H00H02H04H40H89H0AH9DHXXHXXH圖示2-19預設多寄存器-查詢查詢信息規(guī)定了要預置寄存器的類型,寄存器尋址起始地址為 的地址為0000H。圖示2-19的例子是請求17號從機0040H.的值為3。響應圖2-20所示對于預置單寄存器請求的正常響應是在寄存器值改變以后將接收到的數(shù) 據(jù)傳送回去。AddrFunData start reg hiData start reg loData #of reg hiData #of reg loCRC16hiCRC16lo11H10H

35、00H40H00H02HXXHXXH圖示2-20預設多寄存器響應2. 10報告從機標識(功能碼17)返回一個從機地址控制器的類型,從機的當前狀態(tài),以及有關(guān)從機的其他說明,不支 持廣播。查詢圖示2-21的例子是請求報告從機設備17的標識ID和狀態(tài)。AddrFunCRC16 hiCRC16 lo11H11HXXHXXH圖示2-21報告從機標識-查詢響應圖2 - 22所示正常響應格式,數(shù)據(jù)內(nèi)容對應每臺控制器的類型。AddrFunByte CountSlave IDRun Indicator StatusAdditfional DataCRC16hiCRC16lo11H11HXXHXXHXXHXXHX

36、XHXXH圖示2-22報告從機標識-響應從機ID總結(jié)884984Con trollerMicro 84484 184/384584數(shù)據(jù)區(qū)第一個字節(jié)為Modico n控制器返回的從機IDSlave ID012389特注:詳細信息見 Modbus協(xié)議英文版或中文版。第三章附錄附錄A: MODBL全部功能碼ModBus網(wǎng)絡是一個工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計算機通過公用線 路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應用于各種數(shù)據(jù)采 集和過程監(jiān)控。下表 3-1是ModBus的功能碼定義。表3-1 ModBus功能碼功能碼名稱作用01讀取線圈狀態(tài)取得一組邏輯線圈的當

37、前狀態(tài)(ON/OFF)02讀取輸入狀態(tài)取得一組開關(guān)輸入的當前狀態(tài)(ON/OFF)03讀取保持寄存器在一個或多個保持寄存器中取得當前的二進制值04讀取輸入寄存器在一個或多個輸入寄存器中取得當前的二進制值05強置單線圈強置一個邏輯線圈的通斷狀態(tài)06預置單寄存器把具體二進值裝入一個保持寄存器07讀取異常狀態(tài)取得8個內(nèi)部線圈的通斷狀態(tài),這 8個線圈的地址由 控制器決定,用戶邏輯可以將這些線圈定義,以說明 從機狀態(tài),短報文適宜于迅速讀取狀態(tài)08回送診斷校驗把診斷校驗報文送從機,以對通信處理進行評鑒09編程(只用于484)使主機模擬編程器作用,修改PC從機邏輯10控詢(只用于484)可使主機與一臺正在執(zhí)行

38、長程序任務從機通信,探詢該從機是否已完成其操作任務,僅在含有功能碼9的報文發(fā)送后,本功能碼才發(fā)送11讀取事件計數(shù)可使主機發(fā)出單詢問,并隨即判定操作是否成功,尤 其是該命令或其他應答產(chǎn)生通信錯誤時12讀取通信事件記錄可是主機檢索每臺從機的ModBus事務處理通信事件記錄。如果某項事務處理完成,記錄會給出有關(guān)錯誤13編程(184/384 484584)可使主機模擬編程器功能修改PC從機邏輯14探詢(184/384 484584)可使主機與正在執(zhí)行任務的從機通信,定期控詢該從 機是否已完成其程序操作,僅在含有功能13的報文發(fā)送后,本功能碼才得發(fā)送15強置多線圈強置一串連續(xù)邏輯線圈的通斷16預置多寄存

39、器把具體的二進制值裝入一串連續(xù)的保持寄存器17報告從機標識可使主機判斷編址從機的類型及該從機運行指示燈 的狀態(tài)18(884 和 MICRO 84可使主機模擬編程功能,修改PC狀態(tài)邏輯191;重置通信鏈路發(fā)生非可修改錯誤后,是從機復位于已知狀態(tài),可重 置順序字節(jié)20讀取通用參數(shù)(584L)顯示擴展存儲器文件中的數(shù)據(jù)信息21寫入通用參數(shù)(584L)把通用參數(shù)寫入擴展存儲文件,或修改之22 64保留作擴展功能備用65 72保留以備用戶功能所 用留作用戶功能的擴展編碼73119120127非法功能保留留作內(nèi)部作用128255保留用于異常應答ModBus網(wǎng)絡只是一個主機,所有通信都由他發(fā)出。網(wǎng)絡可支持2

40、47個之多的遠程從屬控 制器,但實際所支持的從機數(shù)要由所用通信設備決定。采用這個系統(tǒng),各PC可以和中心主機交換信息而不影響各 PC執(zhí)行本身的控制任務。表 3-2是ModBus各功能碼對應的數(shù)據(jù)類 型。06整型、字符型、狀態(tài)字、浮點型08N/A重復“回路反饋”信息1516整型、字符型、狀態(tài)字、浮點型代碼功能數(shù)據(jù)類型01讀位02讀位03讀整型、字符型、狀態(tài)字、浮點型04讀整型、狀態(tài)字、浮點型表3-2 ModBus功能碼與數(shù)據(jù)類型對應表位寫0517字符型附錄B:不正常響應不正常響應:除廣播外,主機向從機設備發(fā)送查詢并希望有一個正常響應,主機查詢中有可能產(chǎn)生 種事件:從機接收查詢,通訊錯誤正常處理信息

41、,則返回一個正常響應事件。由于通訊出錯,從機不能接收查詢數(shù)據(jù),因而不返回響應。此時,主機依靠處理程序給 出查詢超時事件。若從機接收查詢,發(fā)現(xiàn)有 (LRC或CRC)通訊錯誤,并返回響應,此時,依靠主機處理 程序給出查詢超時事件。從機接收查詢,無通訊錯誤,但無法處理(如讀不存在的線圈和寄存器 )時,向主機報告 錯誤的性質(zhì)。不正常響應信息有 2個與正常響應不相同的區(qū)域:功能代碼區(qū):正常響應時,從機的響應功能代碼區(qū),帶原查詢的功能代碼。所有功能代 碼的MSB為0(其值低于80H)。不正常響應時,從機把功能代碼的MSB置為1使功能代碼值大于80H,高于正常響應的值。這樣,主機應用程序能識別不正常響應事件,能檢查不正 常代碼的數(shù)據(jù)區(qū)。數(shù)據(jù)區(qū):正常響應中

溫馨提示

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

評論

0/150

提交評論