



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Modbus功能碼一覽Modbus網絡是一個工業通信系統,由帶智能終端的可編程序控制器和計算機通過公用線路或局部專用線路連接而成。其系統結構既包括硬件、亦包括軟件。它可應用于各種數據采集和過程監控。下表1是ModBus的功能碼定義。表1ModBus功能碼功能碼名稱作用01讀取線圈狀態02讀取輸入狀態01讀取線圈狀態02讀取輸入狀態03讀取保持寄存器取得一組開關輸入的當前狀態(ON/OFF)在一個或多個保持寄存器中取得當前的二進制值04讀取輸入寄存器04讀取輸入寄存器在一個或多個輸入寄存器中取得當前的二進制值05強置單線圈強置一個邏輯線圈的通斷狀態06預置單寄存器把具體二進值裝入一個保持寄存器07讀取異常狀態 取得8個內部線圈的通斷狀態,這8個線圈的地址由控制器決定,用戶邏輯可以將這些線圈定義,以說明從機狀態,短報文適宜于迅速讀取狀態08回送診斷校驗把診斷校驗報文送從機,以對通信處理進行評鑒09編程(只用于484) 使主機模擬編程器作用,修改PC從機邏輯10控詢(只用于484)可使主機與一臺正在執行長程序任務從機通信,探詢該從機是否已完成其操作任務,僅在含有功能碼9的報文發送后,本功能碼才發送讀取事件計數可使主機發出單詢問,并隨即判定操作是否成功,尤其是該命令或其他應答產生通信錯誤時讀取通信事件記錄可是主機檢索每臺從機的ModBus事務處理通信事件記錄。如果某項事務處理完成,記錄會給出有關錯誤13編程(184/384484584) 可使主機模擬編程器功能修改PC從機邏輯14探詢(184/384484584)可使主機與正在執行任務的從機通信,定期控詢該從機是否已完成其程序操作,僅在含有功能13的報文發送后,本功能碼才得發送強置多線圈強置一串連續邏輯線圈的通斷預置多寄存器 把具體的二進制值裝入一串連續的保持寄存器報告從機標識 可使主機判斷編址從機的類型及該從機運行指示燈的狀態(884和MICRO84) 可使主機模擬編程功能,修改PC狀態邏輯重置通信鏈路 發生非可修改錯誤后,是從機復位于已知狀態,可重置順序字節20讀取通用參數(584L) 顯示擴展存儲器文件中的數據信息21寫入通用參數(584L) 把通用參數寫入擴展存儲文件,或修改之22?64保留作擴展功能備用65?72保留以備用戶功能所用 留作用戶功能的擴展編碼73?119非法功能120?127 保留 留作內部作用128?255 保留 用于異常應答
Modbus網絡只是一個主機,所有通信都由他發出。網絡可支持247個之多的遠程從屬控制器,但實際所支持的從機數要由所用通信設備決定。采用這個系統,各PC可以和中心主機交換信息而不影響各PC執行本身的控制任務。表2是ModBus各功能碼對應的數據類型。表2ModBus功能碼與數據類型對應表代碼功能數據類型01讀位02讀位03讀整型、字符型、狀態字、浮點型04讀整型、狀態字、浮點型05寫位06寫整型、字符型、狀態字、浮點型08N/A重復“回路反饋”信息15寫位16寫整型、字符型、狀態字、浮點型17讀字符型(1)ModBus的傳輸方式在ModBus系統中有2種傳輸模式可選擇。這2種傳輸模式與從機PC通信的能力是同等的。選擇時應視所用ModBus主機而定,每個ModBus系統只能使用一種模式,不允許2種模式混用。一種模式是ASCII(美國信息交換碼),另一種模式是RTU(遠程終端設備)這兩種模式的定義見表3表3ASCII和RTU傳輸模式的特性特性 ASCII(7位) RTU(8位)編碼系統 十六進制(使用ASCII可打印字符:0?9,A?F)二進制每一個字符的位數開始位1位 1位數據位(最低有效位第一位)7位 8位1位(此位用于奇1或21位(此位用于奇1或2位偶校驗,無校應則無該位)停止位1或2位錯誤校驗 LRC錯誤校驗 LRC(即縱向冗余校驗)CRC(即循環冗余校驗)ASCII可打印字符便于故障檢測,而且對于用高級語言(如Fortan)編程的主計算機及主PC很適宜。RTU則適用于機器語言編程的計算機和PC主機。用RTU模式傳輸的數據是8位二進制字符。如欲轉換為ASCII模式,則每個RTU字符首先應分為高位和低位兩部分,這兩部分各含4位,然后轉換成十六進制等量值。用以構成報文的ASCII字符都是十六進制字符。ASCII模式使用的字符雖是RTU模式的兩倍,但ASCII數據的譯瑪和處理更為容易一些,此外,用RTU模式時報文字符必須以連續數據流的形式傳送,用ASCII模式,字符之間可產生長達1s的間隔,以適應速度較快的機器。表4給出了以RTU方式讀取整數據的例子以RTU方式讀取整數據的例子主機請求地址功能碼第一個寄存器的高位地址第一個寄存器的低位地址寄存器的數量的高位寄存器的數量的底位錯誤校驗010300380001XX從機應答地址功能碼字節數數據高字節數據低字節錯誤校驗010324124XX十六進制數4124表示的十進制整數為16676,錯誤校驗值要根據傳輸方式而定。(2)Modbus的數據校驗方式CRC-16(循環冗余錯誤校驗)CRC-16錯誤校驗程序如下:報文(此處只涉及數據位,不指起始位、停止位和任選的奇偶校驗位)被看作是一個連續的二進制,其最高有效位(MSB)首選發送。報文先與Xf16相乘(左移16位),然后看Xf16+Xf15+Xf2+1除,Xf16+Xf15+Xf2+1可以表示為二進制數11000000000000101。整數商位忽略不記,16位余數加入該報文(MSB先發送),成為2個CRC校驗字節。余數中的1全部初始化,以免所有的零成為一條報文被接收。經上述處理而含有CRC字節的報文,若無錯誤,到接收設備后再被同一多項式(Xf16+Xf15+Xf2+1)除,會得到一個零余數(接收設備核驗這個CRC字節,并將其與被傳送的CRC比較)。全部運算以2為模(無進位)。習慣于成串發送數據的設備會首選送出字符的最右位(LSB-最低有效位)。而在生成CRC情況下,發送首位應是被除數的最高有效位MSB。由于在運算中不用進位,為便于操作起見,計算CRC時設MSB在最右位。生成多項式的位序也必須反過來,以保持一致。多項式的MSB略去不記,因其只對商有影響而不影響余數。生成CRC-16校驗字節的步驟如下:裝如一個16位寄存器,所有數位均為1。該16位寄存器的高位字節與開始8位字節進行“異或”運算。運算結果放入這個16位寄存器。把這個16寄存器向右移一位。若向右(標記位)移出的數位是1,則生成多項式1010000000000001和這個寄存器進行“異或”運算;若向右移出的數位是0,則返回③。重復③和④,直至移出8位。另外8位與該十六位寄存器進行“異或”運算。重復③?⑥,直至該報文所有字節均與16位寄存器進行“異或”運算,并移位8次。這個16位寄存器的內容即2字節CRC錯誤校驗,被加到報文的最高有效位。另外,在某些非ModBus通信協議中也經常使用CRC16作為校驗手段,而且產生了一些CRC16的變種,他們是使用CRC16多項式Xf16+Xf15+Xf2+1,單首次裝入的16位寄存器為0000;使用CRC16的反序Xf16+Xf14+Xf1+1,首次裝入寄存器值為0000或FFFFH。LRC(縱向冗余錯誤校驗)LRC錯誤校驗用于ASCII模式。這個錯誤校驗是一個8位二進制數,可作為2個ASCII十六進制字節傳送。把十六進制字符轉換成二進制,加上無循環進位的二進制字符和二進制補碼結果生成LRC錯誤校驗(參見圖)。這個LRC在接收設備進行核驗,并與被傳送的LRC進行比較,冒號(:)、回車符號(CR)、換行字符(LF)和置入的其他任何非ASCII十六進制字符在運算時忽略不計。表5LRC生成范例一一讀取02號從機的前8個線圈六進制二進制地址0200000010功能碼0100000001起始地址高位0000000000起始地址低位0000000000單元數量000000000008+00001000000010
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論