新版MODBUS通訊合同模板_第1頁
新版MODBUS通訊合同模板_第2頁
新版MODBUS通訊合同模板_第3頁
新版MODBUS通訊合同模板_第4頁
新版MODBUS通訊合同模板_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Modbus通訊協(xié)議(RTU傳輸模式) 本說明僅做內(nèi)部參考,具體請參閱英文版本。Modbus協(xié)議介紹Modbus協(xié)議是應(yīng)用于電子控制器上一個通用語言。經(jīng)過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(比如以太網(wǎng))和其它設(shè)備之間能夠通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。有了它,不一樣廠商生產(chǎn)控制設(shè)備能夠連成工業(yè)網(wǎng)絡(luò),進行集中監(jiān)控。此協(xié)議定義了一個控制器能認(rèn)識使用消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進行通信。它描述了一控制器請求訪問其它設(shè)備過程,假如回應(yīng)來自其它設(shè)備請求,以及怎樣偵測錯誤并統(tǒng)計。它制訂了消息域格局和內(nèi)容公共格式。當(dāng)在一Modbus網(wǎng)絡(luò)上通信時,此協(xié)議決定了每個控制器須要知道它們設(shè)備地址,識別按地址發(fā)來消息,決定要產(chǎn)生何種行動。假如需要回應(yīng),控制器將生成反饋信息并用Modbus協(xié)議發(fā)出。在其它網(wǎng)絡(luò)上,包含了Modbus協(xié)議消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用幀或包結(jié)構(gòu)。這種轉(zhuǎn)換也擴展了依據(jù)具體網(wǎng)絡(luò)處理節(jié)地址、路由路徑及錯誤檢測方法。協(xié)議在一根通訊線上使用應(yīng)答式連接(半雙工),這意味著在一根單獨通訊線上信號沿著相反兩個方向傳輸。首先,主計算機信號尋址到一臺唯一終端設(shè)備(從機),然后,在相反方向上終端設(shè)備發(fā)出應(yīng)答信號傳輸給主機。 協(xié)議只許可在主計算機和終端設(shè)備之間,而不許可獨立設(shè)備之間數(shù)據(jù)交換,這就不會在使它們初始化時占據(jù)通訊線路,而僅限于響應(yīng)抵達本機查詢信號。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)冗長檢測)協(xié)議當(dāng)信息幀抵達終端設(shè)備時,它經(jīng)過一個簡單“口”進入尋址到設(shè)備,該設(shè)備去掉數(shù)據(jù)幀“信封”(數(shù)據(jù)頭),讀取數(shù)據(jù),假如沒有錯誤,就實施數(shù)據(jù)所請求任務(wù),然后,它將自己生成數(shù)據(jù)加入到取得“信封”中,把數(shù)據(jù)幀返回給發(fā)送者。返回響應(yīng)數(shù)據(jù)中包含了以下內(nèi)容:終端從機地址(Address)、被實施了命令(Function)、實施命令生成被請求數(shù)據(jù)(Data)和一個校驗碼(Check)。發(fā)生任何錯誤都不會有成功響應(yīng)。信息幀AddressFunctionDataCheck8-Bits8-BitsNx8-Bits16-Bits圖1–1.信息幀格式特注:Modbus信息幀所許可最大長度為256個字節(jié),即N范圍是大于等于零且小于等于252(N{0,252})。即,全部數(shù)據(jù)一共256個,數(shù)據(jù)剩下253個。地址(Address)域信息幀地址域(信息地址)在幀開始部分,由8位組成,有效從機設(shè)備地址范圍0-247(十進制),各從機設(shè)備尋址范圍為1-247。主機把從機地址放入信息幀地址區(qū),并向從機尋址。從機響應(yīng)時,把自己地址放入響應(yīng)信息地址區(qū),讓主機識別已作出響應(yīng)從機地址。地址0為廣播地址,全部從機均能識別。當(dāng)Modbus協(xié)議用于高級網(wǎng)絡(luò)時,則不許可廣播或其它方法替換。功效(Function)域 信息幀功效域代碼告訴了被尋址到終端實施何種功效。有效碼范圍1-225(十進制),有些代碼是適適用于全部控制器,有些適應(yīng)于某種控制器,還有些保留以備后用。相關(guān)功效替換碼全部內(nèi)容見附錄A。當(dāng)主機向從句發(fā)送信息時,功效代碼向從機說明應(yīng)實施動作。如讀一組離散式線圈或輸入信號ON/OFF狀態(tài),讀一組寄存器數(shù)據(jù),讀從機診療狀態(tài),寫線圈(或寄存器),許可下截、統(tǒng)計、確定從機內(nèi)程序等。當(dāng)從機響應(yīng)主機時,功效代碼可說明從機正常響應(yīng)或出現(xiàn)錯誤(即不正常響應(yīng)),正常響應(yīng)時,從句簡單返回原始功效代碼;不正常響應(yīng)時,從機返回與原始代碼相等效一個碼,并把最高有效位設(shè)定為“1”。如,主機要求從機讀一組保持寄存器時,則發(fā)送信息功效碼為:00000011(十六進制03)

若從機正確接收請求動作信息后,則返回相同代碼值作為正常響應(yīng)。發(fā)覺錯時,則返回一個不正常響信息:10000011(十六進制83)從機對功效代碼作為了修改,另外,還把一個特殊碼放入響應(yīng)信息數(shù)據(jù)區(qū)中,告訴主機出現(xiàn)錯誤類型和不正常響應(yīng)原因,不正常響應(yīng)見附錄B。主機設(shè)備應(yīng)用程序負(fù)責(zé)處理不正常響應(yīng),經(jīng)典處理過程是主機把對信息測試和診療送給從機,并通知操作者。表1–1列出了全部設(shè)備常見功效碼、它們意義及它們初始功效。表1–1常見功效碼代碼名稱作用01讀取線圈狀態(tài)取得一組邏輯線圈目前狀態(tài)(ON/OFF)02讀取輸入狀態(tài)取得一組開關(guān)輸入目前狀態(tài)(ON/OFF)03讀取保持寄存器在一個或多個保持寄存器中取得目前二進制值04讀取輸入寄存器在一個或多個輸入寄存器中取得目前二進制值05強置單線圈強置一個邏輯線圈通斷狀態(tài)06預(yù)置單寄存器放置一個特定二進制值到一個單寄存器中07讀取異常狀態(tài)取得8個內(nèi)部線圈通斷狀態(tài)15強置多線圈強置一串連續(xù)邏輯線圈通斷16預(yù)置多寄存器放置一系列特定二進制值到一系列多寄存器中17匯報從機標(biāo)識可使主機判定編址從機類型及該從機運行指示燈狀態(tài)數(shù)據(jù)域數(shù)據(jù)域包含了終端實施特定功效所需要數(shù)據(jù)或者終端響應(yīng)查詢時采集到數(shù)據(jù)。這些數(shù)據(jù)內(nèi)容可能是數(shù)值、參考地址或者極限值。她由數(shù)據(jù)區(qū)有2個16進制數(shù)據(jù)位(28次方256),數(shù)據(jù)范圍為00-FF(16進制)。比如:功效域碼告訴終端讀取一個寄存器,數(shù)據(jù)域則需要指明從哪個寄存器開始及讀取多少個數(shù)據(jù),內(nèi)嵌地址和數(shù)據(jù)依據(jù)類型和從機之間不一樣能力而有所不一樣。若無錯誤出現(xiàn),從機向主機響應(yīng)信息中包含了請求數(shù)據(jù),若有錯誤出現(xiàn),則數(shù)據(jù)中有一個不正常代碼,使主機能判定并作出下一步動作。數(shù)據(jù)區(qū)長度可為“零”以表示某類信息。錯誤校驗域該域許可主機和終端檢驗傳輸過程中錯誤。有時,因為電噪聲和其它干擾,一組數(shù)據(jù)在從一個設(shè)備傳輸?shù)搅硪粋€設(shè)備時在線路上可能會發(fā)生部分改變,犯錯校驗?zāi)軌虼_保主機或者終端不去響應(yīng)那些傳輸過程中發(fā)生了改變數(shù)據(jù),這就提升了系統(tǒng)安全性和效率,犯錯校驗使用了16位循環(huán)冗余方法,即CRC校驗。錯誤檢測域包含一16Bits值(用兩個8位字符來實現(xiàn))。錯誤檢測域內(nèi)容是經(jīng)過對消息內(nèi)容進行循環(huán)冗長檢測方法得出。CRC域附加在消息最終,添加時先是低字節(jié)然后是高字節(jié)。故CRC高位字節(jié)是發(fā)送消息最終一個字節(jié)。字符連續(xù)傳輸當(dāng)消息在標(biāo)準(zhǔn)Modbus系列網(wǎng)絡(luò)傳輸時,每個字符或字節(jié)按由左到右次序方法發(fā)送:最低有效位(LSB)...最高有效位(MSB)。位序列是:有奇偶校驗啟始位12345678奇偶位停止位無奇偶校驗啟始位12345678停止位停止位圖1–2.位次序(RTU)錯誤檢測1、奇偶校驗用戶能夠配置控制器是奇或偶校驗,或無校驗。這將決定了每個字符中奇偶校驗位是怎樣設(shè)置。假如指定了奇或偶校驗,“1”位數(shù)將算到每個字符位數(shù)中(ASCII模式7個數(shù)據(jù)位,RTU中8個數(shù)據(jù)位)。比如RTU字符幀中包含以下8個數(shù)據(jù)位:11000101整個“1”數(shù)目是4個。假如便用了偶校驗,幀奇偶校驗位將是0,便得整個“1”個數(shù)仍是4個。假如便用了奇校驗,幀奇偶校驗位將是1,便得整個“1”個數(shù)是5個。假如沒有指定奇偶校驗位,傳輸時就沒有校驗位,也不進行校驗檢測。替換一附加停止位填充至要傳輸字符幀中。2、CRC檢測RTU方法時,采取CRC方法計算錯誤校驗碼,CRC校驗傳送全部數(shù)據(jù)。它忽略信息中單個字符數(shù)據(jù)奇偶校驗方法。循環(huán)冗余校驗(CRC)域占用兩個字節(jié),包含了一個16位二進制值。CRC值由傳送設(shè)備計算出來,然后附加到數(shù)據(jù)幀上,接收設(shè)備在接收數(shù)據(jù)時重新計算CRC值,然后與接收到CRC域中值進行比較,假如這兩個值不相等,就發(fā)生了錯誤。CRC開始時先把寄存器16位全部置成“1”,然后把相鄰2個8位字節(jié)數(shù)據(jù)放入目前寄存器中,只有每個字符8位數(shù)據(jù)用作產(chǎn)生CRC,起始位,停止位和奇偶校驗位不加到CRC 在生成CRC時,每個8位字節(jié)與寄存器中內(nèi)容進行異或,然后將結(jié)果向低位移位,高位則用“0” 上述處理反復(fù)進行,知道實施完了8次移位操作,當(dāng)最終一位(第8位)移完以后,下一個8位字節(jié)與寄存器材目前值進行異或運算,一樣進行上述另一個8次移位異或操作,當(dāng)數(shù)據(jù)幀中全部字節(jié)都作了處理,生成最終值就是CRC值。生成一個CRC步驟為:預(yù)置一個16位寄存器為0FFFFH(全1),稱之為CRC寄存器。把數(shù)據(jù)幀中第一個8位字節(jié)與CRC寄存器中低字節(jié)進行異或運算,結(jié)果存回CRC寄存器。將CRC寄存器向右移一位,最高位填以0,最低位移出并檢測。假如最低位為0:反復(fù)第3步(下一次移位)。假如最低位為1:將CRC寄存器與一個預(yù)設(shè)固定值(0A001H)進行異或運算。反復(fù)第3步和第4步直到8次移位。這么處理完了一個完整八位。反復(fù)第2步到第5步來處理下一個八位,直到全部字節(jié)處理結(jié)束。最終CRC寄存器得值就是CRC值。CRC值附加到信息時,低位在先,高位在后。查閱附錄C中一個實例,它具體說明了CRC校驗。第二章Modbus數(shù)據(jù)和控制功效詳解 Modbus信息中全部數(shù)據(jù)地址以零作為基準(zhǔn),各項數(shù)據(jù)第一個數(shù)據(jù)地址編號為0。若無特殊說明在此節(jié)文中用+進制值表示,圖中數(shù)據(jù)區(qū)則用十六進制表示。圖2--1為一個例子,說明了Modbus查詢信息,圖2--2為正常響應(yīng)例子,這兩例子中數(shù)據(jù)均是16進制,也表示了以RTU方法組成數(shù)據(jù)幀方法。主機查詢是讀保持寄存器,被請求從機地址是06,讀取數(shù)據(jù)來自地址40108保持寄有器。注意,該信息要求了寄存器起始地址為0107(006BH)。從機響應(yīng)返回該功效代碼,說明是正常響應(yīng),字節(jié)數(shù)“Bylecount”中說明有多少個8位字節(jié)被返回。它表明了附在數(shù)據(jù)區(qū)中8位字節(jié)數(shù)量,當(dāng)在緩沖區(qū)組織響應(yīng)信息時,“字節(jié)數(shù)”區(qū)域中值應(yīng)與該信息中數(shù)據(jù)區(qū)字節(jié)數(shù)相等。如RTU方法時,63H用一個字節(jié)(01100011)發(fā)送。8個位為一個單位計算“字節(jié)數(shù)”,它忽略了信息幀用組成方法。AddrFunDatastartreghiDatastartregloData#ofregshiData#ofregsloCRC16hiCRC16lo06H03H00H6BH00H01HXXHXXH圖2–1Modbus查詢信息AddrFunBytecountData1hiData1LoData2hiData2loData3hiData3loCRC16hiCRC16lo06H03H06H02H2BH00H00H00H63HXXHXXH圖2–2Modbus響應(yīng)信息讀取線圈狀態(tài)(功效碼01)讀取從機離散量輸出口(DO,0X類型)ON/OFF狀態(tài),不支持廣播。查詢 查詢信息要求了要讀起始線圈和線圈量,線圈起始地址為0000H,1-16個線圈尋址地址分為0000H–0015H(DO1=0000H,DO2=0001H,依這類推)。 圖2–3例子是從地址為17從機讀取DO1至DO6狀態(tài)。AddrFunDOstartreghiDOstartregloDO#ofregshiDO#ofregsloCRC16hiCRC16lo11H01H00H00H00H06HXXHXXH圖2–3讀取線圈狀態(tài)----查詢 響應(yīng) 響應(yīng)信息中各線圈狀態(tài)與數(shù)據(jù)區(qū)每一位值相對應(yīng),即每個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)響應(yīng)實例。AddrFunBytecountDataCRC16hiCRC16lo11H01H01H2AHXXHXXH數(shù)據(jù)000000DO2DO1MSB765432LSB圖2–4讀取線圈狀態(tài)----響應(yīng)讀取輸入狀態(tài)(功效碼02)讀取從機離散量輸入信號(DI,0X類型)ON/OFF狀態(tài),不支持廣播。查詢查詢信息要求了要讀輸入起始地址,以及輸入信號數(shù)量。輸入起始地址為0000H,1-16個輸入口地址分別為0-15(DO1=0000H,DO2=0001H,依這類推)。圖2–5例子是從地址為17從機讀取DI1到DI16狀態(tài)。AddrFunDIstartaddrhiDIstartaddrloDInumhiDInumloCRC16hiCRC16lo11H02H00H00H00H10HXXHXXH圖2–5讀取輸入狀態(tài)----查詢響應(yīng) 響應(yīng)信息中各輸入口狀態(tài),分別對應(yīng)于數(shù)據(jù)區(qū)中每一位值,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ù)。圖2–6所表示為讀數(shù)字輸出狀態(tài)響應(yīng)實例。AddrFunBytecountData1Data2CRC16hiCRC16lo11H02H02H33HCCHXXHXXH數(shù)據(jù)1DI8DI7DI6DI5DI4DI3DI2DI1MSBLSB數(shù)據(jù)2DI16DI15DI14DI13DI12DI11DI10DI9MSBLSB圖2–6讀取輸入狀態(tài)----響應(yīng)讀取保持寄存器(功效碼03)讀取從機保持寄存器(4X類型)二進制數(shù)據(jù),不支持廣播。查詢查詢信息要求了要讀保持寄存器起始地址及保持寄存器數(shù)量,保持寄存器尋址起始地址為0000H,寄存器1-16所對應(yīng)地址分別為0000H–0015H。圖2–7例子是從17號從機讀3個采集到基礎(chǔ)數(shù)據(jù)U1、U2、U3,U1地址為0000H,U2地址為0001H,U3地址為0002H。AddrFunDatastartaddrhiDatastartaddrloData#ofregshiData#ofregsloCRC16hiCRC16lo11H03H00H00H00H03HXXHXXH圖2–7讀取保持寄存器----查詢響應(yīng)響應(yīng)信息中寄存器數(shù)據(jù)為二進制數(shù)據(jù),每個寄存器分別對應(yīng)2個字節(jié),第一個字節(jié)為高位值數(shù)據(jù),第二個字節(jié)為低位數(shù)據(jù)。圖2–8例子是讀取U1,U2,U3(U1=03E8H,U2=03E7H,U3=03E9H)響應(yīng)。AddrFunBytecountData1hiData1LoData2hiData2loData3hiData3loCRC16hiCRC16lo11H03H06H03HE8H03HE7H03HE9HXXHXXH圖2–8讀取保持寄存器----響應(yīng)讀取輸入寄存器(功效碼04)讀取從機輸入寄存器(3X類型)中二進制數(shù)據(jù),不支持廣播。查詢查詢信息要求了要讀寄存器起始地址及寄存器數(shù)量,尋止起始地址為0,寄存器1-16所對應(yīng)地址分別為0000H–0015H。圖2–9例子是請求17號從機0009寄存器。AddrFunDOaddrhiDOaddrloData#ofregshiData#ofregsloCRC16hiCRC16lo11H04H00H08H00H01HXXHXXH圖2–9讀取輸入寄存器----查詢響應(yīng)響應(yīng)信息中寄存器數(shù)據(jù)為每個寄存器分別對應(yīng)2個字節(jié),第一個字節(jié)為高位數(shù)據(jù),第二個字節(jié)為低位數(shù)據(jù)。圖2–10例子寄存器30009中數(shù)據(jù)用000AH2個字節(jié)表示。AddrFunBytecountDatahiDataLoCRC16hiCRC16lo11H04H02H00H0AHXXHXXH圖2–10讀取輸入寄存器----響應(yīng)強置單線圈(功效碼05)強制單個線圈(DO,0X類型)為ON或OFF狀態(tài),廣播時,該功效可強制全部從機中同一類型線圈均為ON或OFF狀態(tài)。該功效可越過控制器內(nèi)存保護狀態(tài)和線圈嚴(yán)禁狀態(tài)。線圈強制狀態(tài)一直保持有效直至下一個控制邏輯作用于線圈為止??刂七壿嬛袩o線圈程序時,則線圈處于強制狀態(tài)。查詢查詢信息要求了需要強制一個單獨線圈類型,線圈起始地址為0000H,1-16個線圈尋址地址分為0000H–0015H(DO1=0000H,DO2=0001H,依這類推)。由查詢數(shù)據(jù)區(qū)中一個常量,要求被請求線圈ON/OFF狀態(tài),FF00H值請求線圈處于ON狀態(tài),0000H值請求線圈處于OFF狀態(tài),其它值對線圈無效,不起作用。圖示2-11例子是請求17號從機開DO1On狀態(tài)。AddrFunDOaddrhiDOaddrloValuehiValueloCRC16hiCRC16lo11H05H00H00HFFH00HXXHXXH圖示2-11強制單線圈----查詢響應(yīng)圖2–12所表示為對這個命令請求正常響應(yīng)是在DO狀態(tài)改變以后傳送接收到數(shù)據(jù)。AddrFunDOaddrhiDOaddrloValuehiValueloCRC16hiCRC16lo11H05H00H00HFFH00HXXHXXH圖示2-12強制單線圈----響應(yīng)2.6預(yù)置單寄存器(功效碼06) 把一個值預(yù)置到一個保持寄存器(4X類型)中,廣播時,該功效把值預(yù)置到全部從機相同類型寄存器中。該功效可越過控制器內(nèi)存保護。使寄存器中預(yù)置值保持有效。只能由控制器下一個邏輯信號來處理該預(yù)置值。若控制邏輯中無寄存器程序時,則寄存器中值保持不變。查詢 查詢信息要求了要預(yù)置寄存器類型,寄存器尋址起始地址為0000H,寄存器1所對應(yīng)地址為0000H。 圖示2-13例子是請求17號從機0040H.值為2717。AddrFunDatastartreghiDatastartregloValuehiValueloCRChiCRClo11H06H00H40H0AH9DHXXHXXH圖示2-13預(yù)設(shè)單寄存器----查詢響應(yīng)圖2–14所表示對于預(yù)置單寄存器請求正常響應(yīng)是在寄存器值改變以后將接收到數(shù)據(jù)傳送回去。AddrFunDatastartreghiDatastartregloValuehiValueloCRChiCRClo11H06H00H40H0AH9DHXXHXXH圖示2-14預(yù)設(shè)單寄存器----響應(yīng)2.7讀取異常狀態(tài)(功效碼7) 讀從中機中8個不正常狀態(tài)線圈數(shù)據(jù),一些線圈號已在不一樣型號控制器中預(yù)定義,而其它線圈由用戶編程,作為相關(guān)控制器狀態(tài)信息,如“machineON/OFF”,“headsretraced”,(縮回標(biāo)題),“safetiessatisfied”(安全性滿意),“errorconditions”(存在錯誤條件)或其它用戶定義標(biāo)志等。該功效碼不支持廣播。該功效代碼為存取該類信息提供了一個簡單方法,不正常線圈類型是已知(在功效代碼中不需要線圈類型)預(yù)定義不正常線圈號以下:控制器型號 線圈 設(shè)定M84,184/384,584,984 1-8 用戶定義484 257 電池狀態(tài) 258-264 用戶定義 884 761 電池狀態(tài) 762 內(nèi)存保護狀態(tài) 763 R10工況狀態(tài) 764-768 用戶預(yù)定義查詢 圖示2-15例子是請求讀從機設(shè)備17中不正常狀態(tài)。AddrFunCRC16hiCRC16lo11H07HXXHXXH圖示2-15讀取異常狀態(tài)----查詢響應(yīng)正常響應(yīng)包含8個不正常線圈狀態(tài),為一個數(shù)據(jù)字節(jié),每個線圈一位。LSB對應(yīng)為最低線圈類型狀態(tài)。圖2–16所表示按查詢要求返回響應(yīng):AddrFunDODataCRC16hiCRC16lo11H07H6DHXXHXXH圖示2-16讀取異常狀態(tài)----響應(yīng)該例子中,線圈數(shù)據(jù)為6DH(二進制0110,1101),從左到右(最高位至最低位)線圈狀態(tài)分別為:OFF–ON–ON–OFF–ON–ON–OFF–ON。若控制器型號為984,這些位表示線圈8至1狀態(tài);若控制器型號為484則表示線圈264至257狀態(tài)。2.8強置多線圈(功效碼15) 按線圈次序把各線圈(DO,0X類型)強制成ON或OFF。廣播時,該功效代碼可對各從機中相同類型線圈起強制作用。該功效代碼可越過內(nèi)存保護和線圈嚴(yán)禁狀態(tài)線圈。保持強制狀態(tài)有效,并只能由控制器下一個邏輯來處理。若無線圈控制邏輯程序時,線圈將保持強制狀態(tài)。查詢查詢信息要求了被強制線圈類型,線圈起始地址為0000H,1-16個線圈尋址地址分為0000H–0015H(DO1=0000H,DO2=0001H,依這類推)。查詢數(shù)據(jù)區(qū)要求了被請求線圈ON/OFF狀態(tài),如數(shù)據(jù)區(qū)某位值為“1”表示請求對應(yīng)線圈狀態(tài)為ON,位值為“0”,則為OFF狀態(tài)。圖示2-17例子為請求從機設(shè)備17中一組10個線圈為強制狀態(tài),起始線圈為20(則尋址地址為19或13H),查詢數(shù)據(jù)為2個字節(jié),CD01H(二進制1100110100000001)對應(yīng)線圈二進制位排列以下:Bit:1100110100000001Coll:2726252423222120------2928傳送第一個字節(jié)CDH對應(yīng)線圈為27-20,LSB對應(yīng)線圈20,傳送第二個字節(jié)為01H,對應(yīng)線圈為29-28,LSB為繼圈28,其它未使用位均填“0”。AddrFunDOaddrhiDOaddrloData#ofreghiData#ofregloBytecountValuehiValueloCRChiCRClo11H0FH00H13H00H0AH02HCDH01HXXHXXH圖示2-17強置多線圈----查詢響應(yīng)正常響應(yīng)返回從機地址,功效代碼,起始地址以及強制線圈數(shù)。圖2–18對上述查詢返回響應(yīng)。AddrFunDOaddrhiDOaddrloData#ofreghiData#ofregloCRC16hiCRC16lo11H0FH00H13H00H0AHXXHXXH圖示2-18強置多線圈----響應(yīng)2.9預(yù)置多寄存器(功效碼16) 把數(shù)據(jù)按次序預(yù)置到各(4X類型)寄存器中,廣播時該功效代碼可把數(shù)據(jù)預(yù)置到全部從機中相同類型寄存器中。該功效代碼可越過控制器內(nèi)存保護,在寄存器中預(yù)置值一直保持有效,只能由控制器下一個邏輯來處理寄存器內(nèi)容,控制邏輯中無該寄存器程序時,則寄存器中值保持不變。查詢 查詢信息要求了要預(yù)置寄存器類型,寄存器尋址起始地址為0000H,寄存器1所對應(yīng)地址為0000H。 圖示2-19例子是請求17號從機0040H.值為。AddrFunDatastartreghiDatastartregloData#ofreghiData#ofregloBytecountValuehiValueloValuehiValueloCRChiCRClo11H10H00H40H00H02H04H40H89H0AH9DHXXHXXH圖示2-19預(yù)設(shè)多寄存器----查詢響應(yīng)圖2–20所表示對于預(yù)置單寄存器請求正常響應(yīng)是在寄存器值改變以后將接收到數(shù)據(jù)傳送回去。AddrFunDatastartreghiDatastartregloData#ofreghiData#ofregloCRC16hiCRC16lo11H10H00H40H00H02HXXHXXH圖示2-20預(yù)設(shè)多寄存器----響應(yīng)2.10匯報從機標(biāo)識(功效碼17) 返回一個從機地址控制器類型,從機目前狀態(tài),以及相關(guān)從機其她說明,不支持廣播。查詢 圖示2-21例子是請求匯報從機設(shè)備17標(biāo)識ID和狀態(tài)。AddrFunCRC16hiCRC16lo11H11HXXHXXH圖示2-21匯報從機標(biāo)識----查詢響應(yīng)圖2–22所表示正常響應(yīng)格式,數(shù)據(jù)內(nèi)容對應(yīng)每臺控制器類型。AddrFunByteCountSlaveIDRunIndicatorStatusAdditfionalDataCRC16hiCRC16lo11H11HXXHXXHXXHXXHXXHXXH圖示2-22匯報從機標(biāo)識----響應(yīng)從機ID總結(jié)數(shù)據(jù)區(qū)第一個字節(jié)為Modicon控制器返回從機IDSlaveID ControllerMicro84484184/384584884984特注:具體信息見Modbus協(xié)議英文版或漢字版。第三章附錄附錄A:MODBUS全部功效碼ModBus網(wǎng)絡(luò)是一個工業(yè)通信系統(tǒng),由帶智能終端可編程序控制器和計算機經(jīng)過公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包含硬件、亦包含軟件。它可應(yīng)用于多種數(shù)據(jù)采集和過程監(jiān)控。下表3--1是ModBus功效碼定義。表3--1ModBus功效碼功效碼名稱作用01讀取線圈狀態(tài)取得一組邏輯線圈目前狀態(tài)(ON/OFF)02讀取輸入狀態(tài)取得一組開關(guān)輸入目前狀態(tài)(ON/OFF)03讀取保持寄存器在一個或多個保持寄存器中取得目前二進制值04讀取輸入寄存器在一個或多個輸入寄存器中取得目前二進制值05強置單線圈強置一個邏輯線圈通斷狀態(tài)06預(yù)置單寄存器把具體二進值裝入一個保持寄存器07讀取異常狀態(tài)取得8個內(nèi)部線圈通斷狀態(tài),這8個線圈地址由控制器決定,用戶邏輯能夠?qū)⑦@些線圈定義,以說明從機狀態(tài),短報文適宜于快速讀取狀態(tài)08回送診療校驗把診療校驗報文送從機,以對通信處理進行評鑒09編程(只用于484)使主機模擬編程器作用,修改PC從機邏輯10控詢(只用于484)可使主機與一臺正在實施長程序任務(wù)從機通信,探詢該從機是否已完成其操作任務(wù),僅在含有功效碼9報文發(fā)送后,本功效碼才發(fā)送11讀取事件計數(shù)可使主機發(fā)出單問詢,并隨即判定操作是否成功,尤其是該命令或其她應(yīng)答產(chǎn)生通信錯誤時12讀取通信事件統(tǒng)計可是主機檢索每臺從機ModBus事務(wù)處理通信事件統(tǒng)計。假如某項事務(wù)處理完成,統(tǒng)計會給出相關(guān)錯誤13編程(184/384484584)可使主機模擬編程器功效修改PC從機邏輯14探詢(184/384484584)可使主機與正在實施任務(wù)從機通信,定時控詢該從機是否已完成其程序操作,僅在含有功效13報文發(fā)送后,本功效碼才得發(fā)送15強置多線圈強置一串連續(xù)邏輯線圈通斷16預(yù)置多寄存器把具體二進制值裝入一串連續(xù)保持寄存器17匯報從機標(biāo)識可使主機判定編址從機類型及該從機運行指示燈狀態(tài)18(884和MICRO84)可使主機模擬編程功效,修改PC狀態(tài)邏輯19重置通信鏈路發(fā)生非可修改錯誤后,是從機復(fù)位于已知狀態(tài),可重置次序字節(jié)20讀取通用參數(shù)(584L)顯示擴展存放器文件中數(shù)據(jù)信息21寫入通用參數(shù)(584L)把通用參數(shù)寫入擴展存放文件,或修改之22~64保留作擴展功效備用

65~72保留以備用戶功效所用留作用戶功效擴展編碼73~119非法功效

120~127保留留作內(nèi)部作用128~255保留用于異常應(yīng)答ModBus網(wǎng)絡(luò)只是一個主機,全部通信都由她發(fā)出。網(wǎng)絡(luò)可支持247個之多遠(yuǎn)程隸屬控制器,但實際所支持從機數(shù)要由所用通信設(shè)備決定。采取這個系統(tǒng),各PC能夠和中心主機交換信息而不影響各PC實施本身控制任務(wù)。表3--2是ModBus各功效碼對應(yīng)數(shù)據(jù)類型。表3--2ModBus功效碼與數(shù)據(jù)類型對應(yīng)表代碼功效數(shù)據(jù)類型01讀位02讀位03讀整型、字符型、狀態(tài)字、浮點型04讀整型、狀態(tài)字、浮點型05寫位06寫整型、字符型、狀態(tài)字、浮點型08N/A反復(fù)“回路反饋”信息15寫位16寫整型、字符型、狀態(tài)字、浮點型17讀字符型附錄B:不正常響應(yīng)不正常響應(yīng):除廣播外,主機向從機設(shè)備發(fā)送查詢并期望有一個正常響應(yīng),主機查詢中有可能產(chǎn)生4種事件:從機接收查詢,通訊錯誤正常處理信息,則返回一個正常響應(yīng)事件。因為通訊犯錯,從機不能接收查詢數(shù)據(jù),所以不返回響應(yīng)。此時,主機依靠處理程序給出查詢超時事件。若從機接收查詢,發(fā)覺有(LRC或CRC)通訊錯誤,并返回響應(yīng),此時,依靠主機處理程序給出查詢超時事件。從機接收查詢,無通訊錯誤,但無法處理(如讀不存在線圈和寄存器)時,向主機匯報錯誤性質(zhì)。不正常響應(yīng)信息有2個與正常響應(yīng)不相同區(qū)域:功效代碼區(qū):正常響應(yīng)時,從機響應(yīng)功效代碼區(qū),帶原查詢功效代碼。全部功效代碼MSB為0(其值低于80H)。不正常響應(yīng)時,從機把功效代碼MSB置為1,使功效代碼值大于80H,高于正常響應(yīng)值。這么,主機應(yīng)用程序能識別不正常響應(yīng)事件,能檢驗不正常代碼數(shù)據(jù)區(qū)。數(shù)據(jù)區(qū):正常響應(yīng)中,數(shù)據(jù)區(qū)含有(按查詢要求給出)數(shù)據(jù)或統(tǒng)計值,在不正常響應(yīng)中,數(shù)據(jù)區(qū)為一個不正常代碼,它說明從機產(chǎn)生不正常響應(yīng)條件和原因。例:主機發(fā)出查詢,從機不正常響應(yīng)。(為十六進制數(shù)據(jù))。查詢:AddrFunDOstartreghiDOstartregloDO#ofregshiDO#ofregsloCRC16HiCRC16Lo0AH01H04HA1H00H01HXXHXXH響應(yīng)(不正?;蚶猓?AddrFunExceptionCodeCRC16HiCRC16Lo0AH81H02HXXHXXH圖3–1.不正常信息幀格式上例中,從機設(shè)備地址10(0AH),讀線圈狀態(tài)功效代碼(01),主機請求線圈狀態(tài)地址為1245(04A1H)。注意:只讀一個指定線圈,地址為(0001).若從機中不存在此線圈地址時,即以不正常代碼(02),向主機返回一個不正常響應(yīng)。說明為不正當(dāng)?shù)刂贰1?--3ModBus不正常代碼:代碼名稱含義01不正當(dāng)功效代碼從機接收是一個不能實施功效代碼。發(fā)出查詢命令后,該代碼指示無程序功效。02不正當(dāng)數(shù)據(jù)地址接收數(shù)據(jù)地址,是從機不許可地址。03不正當(dāng)數(shù)據(jù)查詢數(shù)據(jù)區(qū)值是從機不許可值。04從機設(shè)備故障從機實施主機請求動作時出現(xiàn)不可恢復(fù)錯誤。05確定從機已接收請求處理數(shù)據(jù),但需要較優(yōu)點理時間,為避免主機出現(xiàn)超時錯誤而發(fā)送該確定響應(yīng)。主機以此再發(fā)送一個“查詢程序完成”未決定從機是否已完成處理。06從機設(shè)備忙碌從機正忙于處理一個長時程序命令,請求主機在從機空閑時發(fā)送信息。07否定從機不能實施查詢要求程序功效時,該代碼使用十進制13或14代碼,向主機返回一個“不成功編程請求”信息。主機應(yīng)請求診療從機錯誤信息。08內(nèi)存奇偶校驗錯誤從機讀擴展內(nèi)存中數(shù)據(jù)時,發(fā)覺有奇偶校驗錯誤,主機按從機要求重新發(fā)送數(shù)據(jù)請求。附錄C:CRC校驗生成程序CRC簡單函數(shù)以下:unsignedshortCRC16(puchMsg,usDataLen)unsignedchar*puchMsg;/*要進行CRC校驗消息*/unsignedshortusDataLen;/*消息中字節(jié)數(shù)*/{unsignedcharuchCRCHi=0xFF;/*高CRC字節(jié)初始化*/unsignedcharuchCRCLo=0xFF;/*低CRC字節(jié)初始化*/unsigneduIndex;/*CRC循環(huán)中索引*/while(usDataLen--)/*傳輸消息緩沖區(qū)*/{uIndex=uchCRCHi^*puchMsgg++;/*計算CRC*/uchCRCHi=uchCRCLo^auchCRCHi[uIndex};uchCRCLo=auchCRCLo[uIndex];}return(uchCRCHi<<8|uchCRCLo);}/*CRC高位字節(jié)值表*/staticunsignedcharauchCRCHi[]={0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40};/*CRC低位字節(jié)值表*/staticcharauchCRCLo[]={0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,0x07,0xC7,0x05,0xC5,0xC4,0x04,0xCC,0x0C,0x0D,0xCD,0x0F,0xCF,0xCE,0x0E,0x0A,0xCA,0xCB,0x0B,0xC9,0x09,0x08,0xC8,0xD8,0x18,0x19,0xD9,0x1B,0xDB,0xDA,0x1A,0x1E,0xDE,0xDF,0x1F,0xDD,0x1D,0x1C,0xDC,0x14,0xD4,0xD5,0x15,0xD7,0x17,0x16,0xD6,0xD2,0x12,0x13,0xD3,0x11,0xD1,0xD0,0x10,0xF0,0x30,0x31,0xF1,0x33,0xF3,0xF2,0x32,

溫馨提示

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

評論

0/150

提交評論