




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、MODBUS通訊協議-RTUMODBUS通訊協議-RTUPAGE / NUMPAGES16MODBUS通訊協議-RTUModbus通訊協議(RTU傳輸模式)本說明僅做內部參考,詳細請參閱英文版本。Modbus協議簡介Modbus 協議是應用于電子控制器上的一種通用語言。通過此協議,控制器相互之間、控制器經由網絡(例如以太網)和其它設備之間可以通信。它已經成為一通用工業標準。有了它,不同廠商生產的控制設備可以連成工業網絡,進行集中監控。此協議定義了一個控制器能認識使用的消息結構,而不管它們是經過何種網絡進行通信的。它描述了一控制器請求訪問其它設備的過程,如果回應來自其它設備的請求,以及怎樣偵測錯
2、誤并記錄。它制定了消息域格局和內容的公共格式。當在一Modbus網絡上通信時,此協議決定了每個控制器須要知道它們的設備地址,識別按地址發來的消息,決定要產生何種行動。如果需要回應,控制器將生成反饋信息并用Modbus協議發出。在其它網絡上,包含了Modbus協議的消息轉換為在此網絡上使用的幀或包結構。這種轉換也擴展了根據具體的網絡解決節地址、路由路徑及錯誤檢測的方法。協議在一根通訊線上使用應答式連接(半雙工),這意味著在一根單獨的通訊線上信號沿著相反的兩個方向傳輸。首先,主計算機的信號尋址到一臺唯一的終端設備(從機),然后,在相反的方向上終端設備發出的應答信號傳輸給主機。協議只允許在主計算機和
3、終端設備之間,而不允許獨立的設備之間的數據交換,這就不會在使它們初始化時占據通訊線路,而僅限于響應到達本機的查詢信號。1 傳輸方式傳輸方式是一個信息幀內一系列獨立的數據結構以及用于傳輸數據的有限規則,以RTU模式在Modbus總線上進行通訊時,信息中的每8位字節分成2個4位16進制的字符,每個信息必須連續傳輸下面定義了與Modebus 協議 RTU方式相兼容的傳輸方式。代碼系統8位二進制,十六進制數0.9,A.F 消息中的每個8位域都是一個兩個十六進制字符組成 每個字節的位1個起始位 8個數據位,最小的有效位先發送 1個奇偶校驗位,無校驗則無 1個停止位(有校驗時),2個Bit(無校驗時) 錯
4、誤檢測域CRC(循環冗長檢測) 協議當信息幀到達終端設備時,它通過一個簡單的“口”進入尋址到的設備,該設備去掉數據幀的“信封”(數據頭),讀取數據,如果沒有錯誤,就執行數據所請求的任務,然后,它將自己生成的數據加入到取得的“信封”中,把數據幀返回給發送者。返回的響應數據中包含了以下內容:終端從機地址(Address)、被執行了的命令(Function)、執行命令生成的被請求數據(Data)和一個校驗碼(Check)。發生任何錯誤都不會有成功的響應。信息幀AddressFunctionDataCheck8-Bits8-BitsN x 8-Bits16-Bits圖 1 1 . 信息幀格式特注:Mo
5、dbus信息幀所允許的最大長度為256個字節,即N的范圍是大于等于零且小于等于252(N0,252)。即,所有的數據一共256個,數據剩下253個。地址(Address)域信息幀地址域(信息地址)在幀的開始部分,由8位組成,有效的從機設備地址范圍0-247(十進制),各從機設備的尋址范圍為1-247。主機把從機地址放入信息幀的地址區,并向從機尋址。從機響應時,把自己的地址放入響應信息的地址區,讓主機識別已作出響應的從機地址。地址0為廣播地址,所有從機均能識別。當Modbus協議用于高級網絡時,則不允許廣播或其它方式替代。功能(Function)域 信息幀功能域代碼告訴了被尋址到的終端執行何種功
6、能。有效碼范圍1-225(十進制) ,有些代碼是適用于所有控制器,有些適應于某種控制器,還有些保留以備后用。有關功能代替碼的全部內容見附錄A。當主機向從句發送信息時,功能代碼向從機說明應執行的動作。如讀一組離散式線圈或輸入信號的ON/OFF狀態,讀一組寄存器的數據,讀從機的診斷狀態,寫線圈(或寄存器),允許下截、記錄、確認從機內的程序等。當從機響應主機時,功能代碼可說明從機正常響應或出現錯誤(即不正常響應),正常響應時,從句簡單返回原始功能代碼;不正常響應時,從機返回與原始代碼相等效的一個碼,并把最高有效位設定為“1”。如,主機要求從機讀一組保持寄存器時,則發送信息的功能碼為:0000 001
7、1 (十六進制03)若從機正確接收請求的動作信息后,則返回相同的代碼值作為正常響應。發現錯時,則返回一個不正常響信息:1000 0011(十六進制83)從機對功能代碼作為了修改,此外,還把一個特殊碼放入響應信息的數據區中,告訴主機出現的錯誤類型和不正常響應的原因,不正常響應見附錄B。主機設備的應用程序負責處理不正常響應,典型處理過程是主機把對信息的測試和診斷送給從機,并通知操作者。表 1 1列出了所有設備常用的功能碼、它們的意義及它們的初始功能。表 1 1 常用功能碼代碼名稱作用01讀取線圈狀態取得一組邏輯線圈的當前狀態(ON/OFF)02讀取輸入狀態取得一組開關輸入的當前狀態(ON/OFF)
8、03讀取保持寄存器在一個或多個保持寄存器中取得當前的二進制值04讀取輸入寄存器在一個或多個輸入寄存器中取得當前的二進制值05強置單線圈強置一個邏輯線圈的通斷狀態06預置單寄存器放置一個特定的二進制值到一個單寄存器中07讀取異常狀態取得8個內部線圈的通斷狀態15強置多線圈強置一串連續邏輯線圈的通斷16預置多寄存器放置一系列特定的二進制值到一系列多寄存器中17報告從機標識可使主機判斷編址從機的類型及該從機運行指示燈的狀態數據域數據域包含了終端執行特定功能所需要的數據或者終端響應查詢時采集到的數據。這些數據的內容可能是數值、參考地址或者極限值。他由數據區有2個16進制的數據位(2的8次方256),數
9、據范圍為00-FF(16進制)。例如:功能域碼告訴終端讀取一個寄存器,數據域則需要指明從哪個寄存器開始及讀取多少個數據,內嵌的地址和數據依照類型和從機之間的不同能力而有所不同。若無錯誤出現,從機向主機的響應信息中包含了請求數據,若有錯誤出現,則數據中有一個不正常代碼,使主機能判斷并作出下一步的動作。數據區的長度可為“零”以表示某類信息。錯誤校驗域該域允許主機和終端檢查傳輸過程中的錯誤。有時,由于電噪聲和其它干擾,一組數據在從一個設備傳輸到另一個設備時在線路上可能會發生一些改變,出錯校驗能夠保證主機或者終端不去響應那些傳輸過程中發生了改變的數據,這就提高了系統的安全性和效率,出錯校驗使用了16位
10、循環冗余的方法,即CRC校驗。錯誤檢測域包含一16Bits值(用兩個8位的字符來實現)。錯誤檢測域的內容是通過對消息內容進行循環冗長檢測方法得出的。CRC域附加在消息的最后,添加時先是低字節然后是高字節。故CRC的高位字節是發送消息的最后一個字節。字符的連續傳輸當消息在標準的Modbus系列網絡傳輸時,每個字符或字節按由左到右的次序方式發送: 最低有效位(LSB).最高有效位(MSB)。位的序列是: 有奇偶校驗 啟始位12345678奇偶位停止位無奇偶校驗 啟始位12345678停止位停止位圖 1 2 . 位順序(RTU) 錯誤檢測1、奇偶校驗 用戶可以配置控制器是奇或偶校驗,或無校驗。這將決
11、定了每個字符中的奇偶校驗位是如何設置的。 如果指定了奇或偶校驗,“1”的位數將算到每個字符的位數中(ASCII模式7個數據位,RTU中8個數據位)。例如RTU字符幀中包含以下8個數據位:1 1 0 0 0 1 0 1 整個“1”的數目是4個。如果便用了偶校驗,幀的奇偶校驗位將是0,便得整個“1”的個數仍是4個。如果便用了奇校驗,幀的奇偶校驗位將是1,便得整個“1”的個數是5個。 如果沒有指定奇偶校驗位,傳輸時就沒有校驗位,也不進行校驗檢測。代替一附加的停止位填充至要傳輸的字符幀中。2、CRC檢測RTU方式時,采用CRC方法計算錯誤校驗碼,CRC校驗傳送的全部數據。它忽略信息中單個字符數據的奇偶
12、校驗方法。循環冗余校驗(CRC)域占用兩個字節,包含了一個16位的二進制值。CRC值由傳送設備計算出來,然后附加到數據幀上,接收設備在接收數據時重新計算CRC值,然后與接收到的CRC域中的值進行比較,如果這兩個值不相等,就發生了錯誤。CRC開始時先把寄存器的16位全部置成“1”,然后把相鄰2個8位字節的數據放入當前寄存器中,只有每個字符的8位數據用作產生CRC,起始位,停止位和奇偶校驗位不加到CRC中。在生成CRC時,每個8位字節與寄存器中的內容進行異或,然后將結果向低位移位,高位則用“0”補充,最低位(LSB)移出并檢測,如果是1,該寄存器就與一個預設的固定值進行一次異或運算,如果最低位為0
13、,不作任何處理。上述處理重復進行,知道執行完了8次移位操作,當最后一位(第8位)移完以后,下一個8位字節與寄存器材的當前值進行異或運算,同樣進行上述的另一個8次移位異或操作,當數據幀中的所有字節都作了處理,生成的最終值就是CRC值。生成一個CRC的流程為:預置一個16位寄存器為0FFFFH(全1),稱之為CRC寄存器。把數據幀中的第一個8位字節與CRC寄存器中的低字節進行異或運算,結果存回CRC寄存器。將CRC寄存器向右移一位,最高位填以0,最低位移出并檢測。如果最低位為0:重復第3步(下一次移位)。 如果最低位為1:將CRC寄存器與一個預設的固定值(0A001H)進行異或運算。重復第3步和第
14、4步直到8次移位。這樣處理完了一個完整的八位。重復第2步到第5步來處理下一個八位,直到所有的字節處理結束。最終CRC寄存器得值就是CRC的值。CRC值附加到信息時,低位在先,高位在后。查閱附錄C中的一個實例,它詳細說明了CRC的校驗。第二章 Modbus數據和控制功能詳解Modbus 信息中的所有數據地址以零作為基準,各項數據的第一個數據地址的編號為0。若無特殊說明在此節文中用進制值表示,圖中的數據區則用十六進制表示。圖2-1為一個例子,說明了Modbus的查詢信息,圖2-2為正常響應的例子,這兩例子中的數據均是16進制的,也表示了以RTU方式構成數據幀的方法。主機查詢是讀保持寄存器,被請求的
15、從機地址是06,讀取的數據來自地址40108保持寄有器。注意,該信息規定了寄存器的起始地址為0107 (006BH)。從機響應返回該功能代碼,說明是正常響應,字節數“Byle count”中說明有多少個8位字節被返回。它表明了附在數據區中8位字節的數量,當在緩沖區組織響應信息時,“字節數”區域中的值應與該信息中數據區的字節數相等。如RTU方式時,63H 用一個字節(01100011)發送。8個位為一個單位計算“字節數”,它忽略了信息幀用組成的方法。 AddrFunData start reg hiData start reg loData #of regs hiData #of regs lo
16、CRC16hiCRC16lo06H03H00H6BH00H01HXXHXXH圖 2 1 Modbus的查詢信息AddrFunBytecountData1hiData1LoData 2hiData2loData3hiData3loCRC16hiCRC16lo06H03H06H02H2BH00H00H00H63HXXHXXH圖 2 2 Modbus的響應信息讀取線圈狀態(功能碼01)讀取從機離散量輸出口(DO,0X類型)的 ON/OFF 狀態,不支持廣播。查詢查詢信息規定了要讀的起始線圈和線圈量,線圈的起始地址為0000H,1-16個線圈的尋址地址分為0000H 0015H(DO1=0000H,D
17、O2=0001H,依此類推)。圖 2 3 的例子是從地址為17的從機讀取DO1至DO6的狀態。AddrFunDO start reg hiDO start reg loDO #of regs hiDO #of regs loCRC16hiCRC16lo11H01H00H00H00H06HXXHXXH圖 2 3 讀取線圈狀態查詢 響應響應信息中的各線圈的狀態與數據區的每一位的值相對應,即每個DO占用一位(1 = ON, 0 = OFF),第一個數據字節的LSB為查詢中的尋址地址,其他的線圈按順序在該字節中由低位向高位排列,直至8個為止,下一個字節也是從低位向高位排例。若返回的線圈數不是8的倍數,
18、則在最后的數據字節中的剩余位至字節的最高位全部填0,字節數區說明全部數據的字節數。圖2 4所示為線圈的輸出狀態響應的實例。AddrFunByte countDataCRC16 hiCRC16 lo11H01H01H2AHXXHXXH 數據000000DO2DO1MSB765432LSB圖 2 4讀取線圈狀態響應讀取輸入狀態(功能碼02)讀取從機離散量輸入信號(DI,0X類型)的ON/OFF狀態,不支持廣播。查詢查詢信息規定了要讀的輸入起始地址,以及輸入信號的數量。輸入的起始地址為0000H,1-16個輸入口的地址分別為0-15(DO1=0000H,DO2=0001H,依此類推)。圖 2 5 的
19、例子是從地址為17的從機讀取DI1到DI16的狀態。AddrFunDI startaddr hiDI startaddr loDI numhiDI numloCRC16hiCRC16lo11H02H00H00H00H10HXXHXXH圖 2 5讀取輸入狀態查詢響應響應信息中的各輸入口的狀態,分別對應于數據區中的每一位值,1 = ON; 0 = OFF,第一個數據字節的LSB為查詢中的尋址地址,其他輸入口按順序在該字節中由低位向高位排列,直至8個位為止。下一個字節中的8個輸入位也是從低位到高位排列。若返回的輸入位數不是8的倍數,則在最后的數據字節中的剩余位直至字節的最高位全部填零。字節數區說明了
20、全部數據的字節數。圖2 6 所示為讀數字輸出狀態響應的實例。AddrFunByte countData1Data2CRC16 hiCRC16 lo11H02H02H33HCCHXXHXXH數據 1 DI8 DI7 DI6 DI5 DI4 DI3 DI2 DI1 MSB LSB 數據 2 DI16 DI15 DI14 DI13 DI12 DI11 DI10 DI9 MSB LSB 圖 2 6讀取輸入狀態響應讀取保持寄存器(功能碼03)讀取從機保持寄存器(4X類型)的二進制數據,不支持廣播。查詢查詢信息規定了要讀的保持寄存器起始地址及保持寄存器的數量,保持寄存器尋址起始地址為0000H,寄存器1-
21、16所對應的地址分別為0000H 0015H。圖2 7 的例子是從17號從機讀3個采集到的基本數據U1、U2、U3,U1的地址為0000H, U2的地址為0001H,U3的地址為0002H。AddrFunData startaddr hiData startaddr loData #ofregs hiData #ofregs loCRC16hiCRC16lo11H03H00H00H00H03HXXHXXH圖 2 7讀取保持寄存器查詢響應響應信息中的寄存器數據為二進制數據,每個寄存器分別對應2個字節,第一個字節為高位值數據,第二個字節為低位數據。圖 2 8的例子是讀取U1,U2,U3(U1=03
22、E8H,U2=03E7H,U3=03E9H)的響應。 AddrFunBytecountData1hiData1LoData 2hiData2loData3hiData3loCRC16hiCRC16lo11H03H06H03HE8H03HE7H03HE9HXXHXXH圖 2 8讀取保持寄存器響應讀取輸入寄存器(功能碼04)讀取從機輸入寄存器(3X類型)中的二進制數據,不支持廣播。查詢查詢信息規定了要讀的寄存器的起始地址及寄存器的數量,尋止起始地址為0,寄存器1-16所對應的地址分別為0000H 0015H。圖 2 9的例子是請求17號從機的0009寄存器。AddrFunDO addrhiDO a
23、ddrloData #ofregs hiData #ofregs loCRC16hiCRC16lo11H04H00H08H00H01HXXHXXH圖 2 9讀取輸入寄存器查詢響應響應信息中的寄存器數據為每個寄存器分別對應2個字節,第一個字節為高位數據,第二個字節為低位數據。圖 2 10的例子寄存器30009中的數據用000AH 2個字節表示。AddrFunBytecountDatahiDataLoCRC16hiCRC16lo11H04H02H00H0AHXXHXXH圖 2 10讀取輸入寄存器響應強置單線圈(功能碼05)強制單個線圈(DO,0X類型)為ON或OFF狀態,廣播時,該功能可強制所有從
24、機中同一類型的線圈均為ON或OFF狀態。該功能可越過控制器內存的保護狀態和線圈的禁止狀態。線圈強制狀態一直保持有效直至下一個控制邏輯作用于線圈為止??刂七壿嬛袩o線圈程序時,則線圈處于強制狀態。查詢查詢信息規定了需要強制一個單獨線圈的類型,線圈的起始地址為0000H,1-16個線圈的尋址地址分為0000H 0015H(DO1=0000H,DO2=0001H,依此類推)。由查詢數據區中的一個常量,規定被請求線圈的ON/OFF狀態, FF00H值請求線圈處于ON狀態,0000H值請求線圈處于OFF狀態,其它值對線圈無效,不起作用。圖示 2-11的例子是請求17號從機開DO1的On狀態。AddrFun
25、DO addrhiDO addrloValue hiValueloCRC16hiCRC16lo11H05H00H00HFFH00H XXHXXH圖示 2-11強制單線圈查詢響應圖2 12所示為對這個命令請求的正常響應是在DO狀態改變以后傳送接收到的數據。AddrFunDO addrhiDO addrloValue hiValueloCRC16hiCRC16lo11H05H00H00HFFH00H XXHXXH圖示 2-12強制單線圈響應26 預置單寄存器(功能碼06)把一個值預置到一個保持寄存器(4X類型)中,廣播時,該功能把值預置到所有從機的相同類型的寄存器中。該功能可越過控制器的內存保護。
26、使寄存器中的預置值保持有效。只能由控制器的下一個邏輯信號來處理該預置值。若控制邏輯中無寄存器程序時,則寄存器中的值保持不變。查詢查詢信息規定了要預置寄存器的類型,寄存器尋址起始地址為0000H,寄存器1所對應的地址為0000H。圖示 2-13的例子是請求17號從機0040H.的值為2717。AddrFunData start reg hiData start reg loValue hiValue loCRC hiCRC lo 11H06H 00H 40H 0AH 9DH XXH XXH 圖示 2-13預設單寄存器查詢響應圖2 14所示對于預置單寄存器請求的正常響應是在寄存器值改變以后將接收到
27、的數據傳送回去。AddrFunData start reg hiData start reg loValue hiValue loCRC hiCRC lo 11H06H 00H 40H 0AH 9DH XXH XXH 圖示 2-14預設單寄存器響應27讀取異常狀態(功能碼7)讀從中機中8個不正常狀態線圈的數據,某些線圈號已在不同型號的控制器中預定義,而其它的線圈由用戶編程,作為有關控制器的狀態信息,如“machine ON/OFF”,“heads retraced”,(縮回標題),“safeties satisfied”(安全性滿意),“error conditions”(存在錯誤條件)或其它
28、用戶定義的標志等。該功能碼不支持廣播。該功能代碼為存取該類信息提供了一種簡單的方法,不正常線圈的類型是已知的(在功能代碼中不需要線圈類型) 預定義的不正常線圈號如下:控制器型號線圈設定M84,184/384,584,9841-8用戶定義484257 電池狀態258-264用戶定義 884761電池狀態762內存保護狀態763R10工況狀態764-768 用戶預定義查詢圖示 2-15的例子是請求讀從機設備17中的不正常狀態。AddrFunCRC16 hiCRC16 lo11H07HXXHXXH圖示 2-15讀取異常狀態查詢響應正常響應包含 8 個不正常的線圈狀態,為一個數據字節,每個線圈一位。L
29、SB對應為最低線圈類型的狀態。圖2 16所示按查詢要求返回響應:AddrFunDO DataCRC16 hiCRC16 lo11H07H6DHXXHXXH圖示 2-16讀取異常狀態響應該例子中,線圈數據為 6DH (二進制0110 ,1101),從左到右 (最高位至最低位) 的線圈狀態分別為: OFF ON ON OFF ON ON OFF ON。若控制器型號為 984,這些位表示線圈 8 至 1 的狀態;若控制器型號為 484 則表示線圈 264 至 257 的狀態。28 強置多線圈(功能碼15)按線圈的順序把各線圈 (DO,0X 類型) 強制成 ON 或 OFF。廣播時,該功能代碼可對各從
30、機中相同類型的線圈起強制作用。該功能代碼可越過內存保護和線圈的禁止狀態線圈。保持強制狀態有效,并只能由控制器的下一個邏輯來處理。若無線圈控制邏輯程序時,線圈將保持強制狀態。查詢查詢信息規定了被強制線圈的類型,線圈的起始地址為0000H,1-16個線圈的尋址地址分為0000H 0015H(DO1=0000H,DO2=0001H,依此類推)。查詢數據區規定了被請求線圈的 ON/OFF 狀態,如數據區的某位值為“1”表示請求的相應線圈狀態為ON,位值為“0”,則為OFF狀態。圖示 2-17例子為請求從機設備 17 中一組 10 個線圈為強制狀態,起始線圈為 20 (則尋址地址為 19 或 13H),
31、查詢的數據為 2 個字節,CD01H (二進制 11001101 0000 0001) 相應線圈的二進制位排列如下:Bit:1100110100000001Coll:2726252423222120-2928傳送的第一個字節 CDH 對應線圈為 27-20, LSB 對應線圈 20,傳送的第二個字節為 01H,對應的線圈為 29-28, LSB 為繼圈 28,其余未使用的位均填“0”。AddrFunDO addrhiDO addrloData #of reg hiData #of reg loByte count Value hi Value loCRC hiCRC lo 11H0FH 00H
32、 13H 00H 0AH 02H CDH 01H XXH XXH 圖示 2-17強置多線圈查詢響應正常響應返回從機地址,功能代碼,起始地址以及強制線圈數。圖2 18對上述查詢返回的響應。AddrFunDO addrhiDO addrloData #ofreg hiData #ofreg loCRC16hiCRC16lo11H0FH00H13H00H0AHXXHXXH圖示 2-18強置多線圈響應29預置多寄存器(功能碼16)把數據按順序預置到各 (4X類型) 寄存器中,廣播時該功能代碼可把數據預置到全部從機中的相同類型的寄存器中。該功能代碼可越過控制器的內存保護,在寄存器中的預置值一直保持有效,
33、只能由控制器的下一個邏輯來處理寄存器的內容,控制邏輯中無該寄存器程序時,則寄存器中的值保持不變。查詢查詢信息規定了要預置寄存器的類型,寄存器尋址起始地址為0000H,寄存器1所對應的地址為0000H。圖示 2-19的例子是請求17號從機0040H.的值為178077833。AddrFunData start reg hiData start reg loData #of reg hiData #of reg loByte count Value hi Value loValue hiValue loCRC hiCRC lo 11H10H 00H 40H 00H 02H 04H 40H 89H
34、0AH 9DH XXH XXH 圖示 2-19預設多寄存器查詢響應圖2 20所示對于預置單寄存器請求的正常響應是在寄存器值改變以后將接收到的數據傳送回去。AddrFunData startreg hiData startreg loData #ofreg hiData #ofreg loCRC16hiCRC16lo11H10H00H40H00H02HXXHXXH圖示 2-20預設多寄存器響應210報告從機標識(功能碼17)返回一個從機地址控制器的類型,從機的當前狀態,以及有關從機的其他說明,不支持廣播。查詢圖示 2-21的例子是請求報告從機設備 17 的 標識ID 和狀態。AddrFunCRC
35、16 hiCRC16 lo11H11HXXHXXH圖示 2-21報告從機標識查詢響應圖2 22所示正常響應格式,數據內容對應每臺控制器的類型。AddrFunByteCountSlave IDRun Indicator StatusAdditfional DataCRC16hiCRC16lo11H11HXXHXXHXXHXXHXXHXXH圖示 2-22報告從機標識響應從機 ID 總結數據區第一個字節為 Modicon 控制器返回的從機 IDSlave ID ControllerMicro 84484184/384584 884 984特注:詳細信息見Modbus協議英文版或中文版。第三章 附錄附
36、錄A:MODBUS全部功能碼ModBus網絡是一個工業通信系統,由帶智能終端的可編程序控制器和計算機通過公用線路或局部專用線路連接而成。其系統結構既包括硬件、亦包括軟件。它可應用于各種數據采集和過程監控。下表3-1是ModBus的功能碼定義。 表3-1 ModBus功能碼 功能碼名稱作用01讀取線圈狀態取得一組邏輯線圈的當前狀態(ON/OFF)02讀取輸入狀態取得一組開關輸入的當前狀態(ON/OFF)03讀取保持寄存器在一個或多個保持寄存器中取得當前的二進制值04讀取輸入寄存器在一個或多個輸入寄存器中取得當前的二進制值05強置單線圈強置一個邏輯線圈的通斷狀態06預置單寄存器把具體二進值裝入一個
37、保持寄存器07讀取異常狀態取得8個內部線圈的通斷狀態,這8個線圈的地址由控制器決定,用戶邏輯可以將這些線圈定義,以說明從機狀態,短報文適宜于迅速讀取狀態08回送診斷校驗把診斷校驗報文送從機,以對通信處理進行評鑒09編程(只用于484)使主機模擬編程器作用,修改PC從機邏輯10控詢(只用于484)可使主機與一臺正在執行長程序任務從機通信,探詢該從機是否已完成其操作任務,僅在含有功能碼9的報文發送后,本功能碼才發送11讀取事件計數可使主機發出單詢問,并隨即判定操作是否成功,尤其是該命令或其他應答產生通信錯誤時12讀取通信事件記錄可是主機檢索每臺從機的ModBus事務處理通信事件記錄。如果某項事務處
38、理完成,記錄會給出有關錯誤13編程(184/384 484 584)可使主機模擬編程器功能修改PC從機邏輯14探詢(184/384 484 584)可使主機與正在執行任務的從機通信,定期控詢該從機是否已完成其程序操作,僅在含有功能13的報文發送后,本功能碼才得發送15強置多線圈強置一串連續邏輯線圈的通斷16預置多寄存器把具體的二進制值裝入一串連續的保持寄存器17報告從機標識可使主機判斷編址從機的類型及該從機運行指示燈的狀態18(884和MICRO 84)可使主機模擬編程功能,修改PC狀態邏輯19重置通信鏈路發生非可修改錯誤后,是從機復位于已知狀態,可重置順序字節20讀取通用參數(584L)顯示
39、擴展存儲器文件中的數據信息21寫入通用參數(584L)把通用參數寫入擴展存儲文件,或修改之2264保留作擴展功能備用6572保留以備用戶功能所用留作用戶功能的擴展編碼73119非法功能120127保留留作內部作用128255保留用于異常應答ModBus網絡只是一個主機,所有通信都由他發出。網絡可支持247個之多的遠程從屬控制器,但實際所支持的從機數要由所用通信設備決定。采用這個系統,各PC可以和中心主機交換信息而不影響各PC執行本身的控制任務。表3-2是ModBus各功能碼對應的數據類型。 表3-2 ModBus功能碼與數據類型對應表 代碼功能數據類型01讀位02讀位03讀整型、字符型、狀態字
40、、浮點型04讀整型、狀態字、浮點型05寫位06寫整型、字符型、狀態字、浮點型08N/A重復“回路反饋”信息15寫位16寫整型、字符型、狀態字、浮點型17讀字符型附錄B:不正常響應不正常響應:除廣播外,主機向從機設備發送查詢并希望有一個正常響應,主機查詢中有可能產生4種事件:從機接收查詢,通訊錯誤正常處理信息,則返回一個正常響應事件。由于通訊出錯,從機不能接收查詢數據,因而不返回響應。此時,主機依靠處理程序給出查詢超時事件。若從機接收查詢,發現有 (LRC或CRC) 通訊錯誤,并返回響應,此時,依靠主機處理程序給出查詢超時事件。從機接收查詢,無通訊錯誤,但無法處理(如讀不存在的線圈和寄存器)時,向主機報告錯誤的性質。不正常響應信息有2個與正常響應不相同的區域:功能代碼區:正常響應時,從機的響應功能代碼區,帶原查詢的功能代碼。所有功能代碼的MSB為0(其值低于80H)。不正常響應時,從機把功能代碼的MSB置為1,使功能代碼值大于80H,高于正常響應的值。這樣,主機應用程序能識別不正常響應事件,能檢查不正常代碼的數據區。數據區:正常響應中,數據區含有(按查詢要求給出的) 數據或統計值,在不正常響應中,數據區為一個不正常代碼,它說明從機產生不正常響應的條件和原因。例:主
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 游戲化教學在小學語文低年段識字中的應用與效果研究論文
- 花園及菜園管理制度
- 茶具洗消間管理制度
- 草莓收購點管理制度
- 苗木銷售合同 (一)
- 財務會計工作計劃 (七)
- 課程計劃與課程標準
- 計算流體力學網格生成方法閱讀筆記
- 湖北省孝感市安陸市2024-2025學年七年級下學期期中道德與法治試題(含答案)
- 自動控制理論課程設計課程教學大綱
- 贛州市贛縣縣鄉鎮街道社區行政村統計表
- 臨邊作業的安全防護
- 第講-公路工程基本建設項目概算預算編制辦法
- 影視文學教程整本書課件完整版電子教案全套課件最全教學教程ppt(最新)
- 強對流天氣的中尺度分析課件
- 固定污染源排污登記表(樣表)
- 城市雕塑藝術工程量清單計價定額2020版
- T∕CGMA 033002-2020 壓縮空氣站節能設計指南
- 住宅景觀水系的維護及設計優化
- 水利水能規劃課程設計計算書
- 蛇形管制造典型工藝
評論
0/150
提交評論