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

下載本文檔

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

文檔簡介

1、 Modbus通訊協(xié)議簡化 V1.0 2004-5-211 Modbus協(xié)議概述 Modbus協(xié)議是主從站通訊協(xié)議,用異步串行口完成通訊,物理層采用RS485或RS232。傳輸速率可以達到115kbps,理論上可接(尋址)一臺主站和至多247臺從站。受線路和設備的限制,最多可接一臺主站和32臺從站。Modbus協(xié)議的某些特性是固定的,如幀格式、幀順序、通訊錯誤和異常情況的處理,以及所執(zhí)行的功能等,都不能隨便改動。其他特性屬于用戶可選的,如傳輸介質、波特率、字符奇偶校驗、停止位的個數(shù)等等,傳輸模式為RTU。用戶所選擇的參數(shù)對于各個站必須一致,在系統(tǒng)運行時不能改變。1.1 Modbus協(xié)議傳輸模式

2、 Modbus的傳輸模式:RTU方式。 表1-1 RTU傳輸模式的特性 特性RTU編碼系統(tǒng)十六進制每個字符的位數(shù)起始位1位數(shù)據(jù)位8位奇偶校驗位0或1位停止位1或2位校驗和CRC(循環(huán)冗余校驗)1.2 幀Modbus協(xié)議的幀(報文)格式:RTU幀。下表是RTU傳輸模式的一般格式命令幀。從站地址功能碼數(shù)據(jù)校驗和8位8位N*8位16位2 Modbus協(xié)議2.1 通訊方式Modbus有兩種通訊方式:應答方式和廣播方式。應答方式是主站向某個從站(地址1247)發(fā)出命令,然后等待從站的應答;從站接到主站命令后,執(zhí)行命令,并將執(zhí)行結果返回給主站作為應答,然后等待下一個命令。廣播方式是主站向所有從站發(fā)送命令(

3、從站地址為0),不需要等待從站應答;從站接到廣播命令后,執(zhí)行命令,也不向主站應答。除了會送診斷校驗外,只有05、06、15、16這四項功能(見2.3)對廣播方式有效。2.2 Modbus幀Modbus的幀按應答方式分為命令幀(詢問幀)和應答幀。命令幀為一般格式命令幀,應答幀有顯長度幀和隱長度幀之分,圖2-1、2-3、2-4給出了典型的幀格式。從站地址功能碼數(shù)據(jù)校驗和數(shù)據(jù)起始寄存器高位數(shù)據(jù)起始寄存器地位數(shù)據(jù)寄存器高位數(shù)據(jù)寄存器地位圖2-1 一般格式命令幀從站地址功能碼數(shù)據(jù)長度數(shù)據(jù)校驗和圖2-3 顯長度應答幀從站地址功能碼數(shù)據(jù)校驗和圖2-4 隱長度應答幀2.2.1 從站地址字段幀中的從站地址字段表

4、示接收主站報文的從站地址。當從站地址字段為0時,表示所有從站,此時的報文是廣播報文。用戶必須設定每臺從站的專用地址。只有被編址的設備才能對主機的命令(詢問)做出應答。從站發(fā)送應答報文時,報文中地址的作用是向主站報告正在通訊的是哪臺從站。2.2.2 功能碼字段 功能碼字段同志從站應執(zhí)行何種功能。表2-1列出了功能碼的意義和作用。2.3節(jié)給出了各個功能碼對應報文的詳細格式和功能。 表2-1 Modbus功能碼功能碼名稱作用(對主站而言)01讀取開出狀態(tài)取得一組開關量輸出的當前狀態(tài)02讀取開入狀態(tài)取得一組開關量輸入的當前狀態(tài)03讀取模出狀態(tài)取得一組模擬量輸出的當前狀態(tài)04讀取模入狀態(tài)取得一組模擬量輸

5、入的當前狀態(tài)05強制單路開出強制設定某個開關量輸出的值06強制單路模出強制設定某個模擬量輸出的值07讀取異常狀態(tài)取得從站的一些狀態(tài)(8位)08回送診斷校驗把診斷校驗報文送從站,以對通訊處理進行評鑒09編程主機模擬編程器的作用,修改從站邏輯10探詢定期探詢從站是否已完成某長程序任務11讀取事件計數(shù)取得通訊狀態(tài)和通訊事件的次數(shù)12讀取通訊事件記錄取得通訊狀態(tài)、事件次數(shù)、報文數(shù)量和至多64個事件13編程主機模擬編程器的作用,修改從站邏輯14探詢定期探詢從站是否已完成某長程序任務15強制多路開出強制設定從站幾個開關量輸出的值16強制多路模出強制設定從站幾個模擬量輸出的值17報告從站標識取得從站類型和運

6、行指示燈的狀態(tài)18編程主機模擬編程器的作用,修改從站邏輯19重置通訊鏈路使從站復位于已知狀態(tài)20-72保留留作擴展功能備用73-119非法功能120-127保留留作內部使用128-255保留用作異常應答2.2.2 數(shù)據(jù)長度字段數(shù)據(jù)長度字段記錄的是隨后的數(shù)據(jù)字段的長度,單位為字符(字節(jié))。數(shù)據(jù)字段的長度總是被規(guī)定為RTU模式下數(shù)據(jù)字符的總數(shù),數(shù)據(jù)字符的數(shù)量總是按RTU模式下的數(shù)據(jù)字符計算。2.2.4 數(shù)據(jù)字段數(shù)據(jù)字段內含有從站執(zhí)行某項具體功能的信息,或者含有從站應答詢問的信息。這些信息可以是數(shù)值、地址參數(shù)或范圍,例如,從哪路開關量或寄存器開始,處理幾個開關位或寄存器、開關量或寄存器的值等等。2.

7、2.5 校驗和字段校驗和字段用于檢查通訊報文在通訊線路中是否出錯。RTU模式傳送時,用CRC-16,參見附錄A。2.3功能碼2.3.1讀取開出狀態(tài)(功能碼01)本功能可使主站獲得被編址從站的開關量輸出的通斷狀態(tài)。起始地址是指從哪一路開關量開始(編號從0開始),數(shù)據(jù)線圈數(shù)是指讀取幾路。應答幀中的數(shù)據(jù)是按上述要求讀取的開關量數(shù)據(jù)(每路一位,每8位組成一個字節(jié),最后一個字節(jié)的不足部分補0)。本功能不支持廣播方式。以下例子是讀取17號從站開關量輸出020-056的狀態(tài),讀出的37位組成5個字節(jié),最后一個字節(jié)的高三位補0。詢問RTU幀:從站地址功能碼起始地址高位起始地址低位數(shù)據(jù)線圈數(shù)高位數(shù)據(jù)線圈數(shù)低位校

8、驗和CRC11H01H00H13H00H25H0EH 84H應答RTU幀:從站地址功能碼字節(jié)計數(shù)數(shù)據(jù)校驗和CRC11H01H05HCDH 6BH B2H 0EH 1BH45H E6H2.2.3 讀取開入狀態(tài)(功能碼02)本功能可使主站獲得被編址從站的開關量輸入的通斷狀態(tài)。起始地址是指從哪一路開關量開始(編號從0開始),數(shù)據(jù)線圈數(shù)是指讀取幾路。應答幀中的數(shù)據(jù)是按上述要求讀取的開關量數(shù)據(jù)(每路一位,每8位組成一個字節(jié),最后一個字節(jié)的不足部分補0)。本功能不支持廣播方式。以下例子是讀取17號從站開關量輸入0197-0218的狀態(tài),讀出的22位組成3個字節(jié),最后一個字節(jié)的高2位補0。詢問RTU幀:從站

9、地址功能碼起始地址高位起始地址低位數(shù)據(jù)線圈數(shù)高位數(shù)據(jù)線圈數(shù)低位校驗和CRC11H02H00HC4H00H16HBAH A9H應答RTU幀:從站地址功能碼字節(jié)計數(shù)數(shù)據(jù)校驗和CRC11H02H03HACH DBH 35H20H 18H2.2.4 讀取模出狀態(tài)(功能碼03)本功能可使主站獲得被編址從站的模擬量輸出的通斷狀態(tài)。起始地址是指從哪一路模擬量開始(編號從0開始),寄存器數(shù)是指讀取幾路模擬量(每路模擬量2個字節(jié),高位在前,低位在后)。應答幀中的數(shù)據(jù)是按上述要求讀取的模擬量數(shù)據(jù)。本功能不支持廣播方式。以下例子是讀取17號從站模出點0108-0110的狀態(tài)。應答數(shù)據(jù)高字節(jié)在前。108是555,10

10、9是0,110是100。詢問RTU幀:從站地址功能碼起始地址高位起始地址低位寄存器數(shù)高位寄存器數(shù)低位校驗和CRC11H03H00H6BH00H03H76H 87H應答RTU幀:從站地址功能碼字節(jié)計數(shù)數(shù)據(jù)校驗和CRC11H03H06H02H 2BH 00H 00H 00H 64HCBH BAH2.2.5 讀取模入狀態(tài)(功能碼04)本功能可使主站獲得被編址從站的模擬量輸入值。起始地址是指從哪一路模擬量開始(編號從0開始),寄存器數(shù)是指讀取幾路模擬量(每路模擬量2個字節(jié),高位在前,低位在后)。應答幀中的數(shù)據(jù)是按上述要求讀取的模擬量數(shù)據(jù)。本功能不支持廣播方式。以下例子是讀取17號節(jié)點的模入點0108-

11、0110的狀態(tài)。應答數(shù)據(jù)高字節(jié)在前。108是555,109是0,110是100。詢問RTU幀:從站地址功能碼起始地址高位起始地址低位寄存器數(shù)高位寄存器數(shù)低位校驗和CRC11H04H00H6BH00H03HC3H 47H應答RTU幀:從站地址功能碼字節(jié)計數(shù)數(shù)據(jù)校驗和CRC11H04H06H02H 2BH 00H 00H 00H 64H5C 89H2.2.6 強制單路開出(功能碼05)本功能可使主站強行設定被編址從站某路開關量輸出的通斷狀態(tài)。從站內部的任何一路開關量均能被強制。起始地址是指設定開關量的哪一路(編號從0開始),數(shù)據(jù)用于設定開或關:FF為開,0為關,其他值為非法值。正常應答是將報文原文

12、發(fā)回。從站地址為0時,為廣播方式。以下例子是強制17號從站開出點173為ON。詢問RTU幀:從站地址功能碼起始地址高位起始地址低位數(shù)據(jù)開關原狀態(tài)校驗和CRC11H05H00HACHFFH00H4EH 8BH應答RTU幀:從站地址功能碼起始地址高位起始地址低位數(shù)據(jù)開關原狀態(tài)校驗和CRC11H05H00HACHFFH00H4EH 8BH2.2.7 強制單路模出(功能碼06)本功能可使主站強行設定被編址從站某路模擬量輸出的值。從站內部的任何一路模擬量均能被強制。起始地址是指設定哪一路模擬量(編號從0開始),數(shù)據(jù)用于設定該模擬量的值(高位在前,低位在后)。正常應答是將報文原文發(fā)回。從站地址為0時,為廣

13、播方式。以下例子是強制17號從站模出點136為039EH。詢問RTU幀:從站地址功能碼起始地址高位起始地址低位數(shù)據(jù)高位數(shù)據(jù)低位校驗和CRC11H06H00H87H03H9EHBAH 2BH應答RTU幀:從站地址功能碼起始地址高位起始地址低位數(shù)據(jù)高位數(shù)據(jù)低位校驗和CRC11H06H00H87H03H9EHBAH 2BH2.2.8 強制多路開出(功能碼15)本功能可使主站強行設定被編址從站一組連續(xù)開關量輸出的通斷狀態(tài)。從站內部的任何開出量均能被強制。起始地址是從哪一路開關量開始(編號從0開始),寄存器數(shù)是指設定幾路。字節(jié)計數(shù)是指隨后的線圈狀態(tài)(開關量設定值)的字節(jié)數(shù)。線圈狀態(tài)是設定的開出值,每一路

14、開出占用一位(1為開,0為關),每八位組成一個字節(jié),最后一個字節(jié)的不足部分補0。正常應答內容是回送從站地址、功能碼、起始地址和強置的開關量數(shù)。從站地址為0時,為廣播模式。以下例子是強置17號從站開關量輸出0020-0029的狀態(tài),設定值CD(11001101)和00(00000000)表示開關量輸出的第27、26、23、22和20將被強置為開狀態(tài)。詢問RTU幀:從站地址功能碼起始地址高位起始地址低位寄存器數(shù)高位寄存器數(shù)低位字節(jié)計數(shù)數(shù)據(jù)校驗和CRC11H0FH00H13H00H 0AH 02H CDH 00H7EH CBH應答RTU幀:從站地址功能碼起始地址高位起始地址低位寄存器數(shù)高位寄存器數(shù)低

15、位校驗和CRC11H0FH 00H13H00H0AH26H 99H2.2.9 強制多路模出(功能碼16)本功能可使主站強行設定被編址從站一組連續(xù)模擬量輸出的值。從站內部的任何模出量均能被強制。起始地址是從哪一路模擬量開始(編號從0開始),寄存器數(shù)是指設定幾路。字節(jié)計數(shù)是指隨后的數(shù)據(jù)(模擬量設定值)的字節(jié)數(shù)。數(shù)據(jù)是設定的模出值,每一路模出兩個字節(jié)(高位在前,低位在后)。正常應答內容是回送從站地址、功能碼、起始地址和強置的模擬量數(shù)。從站地址為0時,為廣播模式。以下例子是強置17號從站模擬量輸出0136-0137的狀態(tài),設定值0136為000A,設定0137為0102。詢問RTU幀:從站地址功能碼起

16、始地址高位起始地址低位寄存器數(shù)高位寄存器數(shù)低位字節(jié)計數(shù)數(shù)據(jù)校驗和CRC11H10H00H87H00H 02H04H 00H 0AH 01H 02H4EH BAH應答RTU幀:從站地址功能碼起始地址高位起始地址低位寄存器數(shù)高位寄存器數(shù)低位校驗和CRC11H10H 00H87H00H02HF3H 71H附錄A 循環(huán)冗余校驗 (CRC)碼算法生成CRC-16校驗字節(jié)的步驟如下:1 裝入一個16位寄存器,所有數(shù)位均為1。2 裝16位寄存器的低位字節(jié)與開始8位字節(jié)進行“異或”運算。運算結果放入這個16位寄存器。3 把這個16位寄存器向右移1位。4 若向右(標記位)移出的數(shù)位是1,則生成多項式101000

17、0000000001和這個寄存器進行異或運算。若向右移出的數(shù)位是0,則返回(3)。5 重復(3)和(4),直到移出8位。6 另外8位與該16位寄存器進行“異或”運算。7 重復(3)-(6),直至該報文所有字節(jié)均與16位寄存器進行“異或”運算,并移位8次。8 這個16位寄存器的內容即是2字節(jié)CRC校驗值。附錄B數(shù)據(jù)通道表不同的數(shù)據(jù)通道表應由數(shù)據(jù)傳送方提供,表格式如下表(數(shù)據(jù)名稱、數(shù)據(jù)地址、取值范圍應根據(jù)實際而定)序號數(shù)據(jù)名稱數(shù)據(jù)類型功能碼數(shù)據(jù)地址傳輸方向縮放倍數(shù)取值范圍1模擬量116位二進制,有符號整數(shù)0x0340001主站 子站12000-21002模擬量20x0340002主站 子站0.51

18、-1003模擬量30x0340003主站 子站0.50-504模擬量40x0340004主站 子站10-235模擬量50x0340005主站 子站0.010-99996模擬量60x0340006主站 子站0.010-9997模擬量70x0340007主站 子站0.1200-2108模擬量80x0340008主站 子站11-12序號數(shù)據(jù)名稱功能碼數(shù)據(jù)地址傳輸方向取值范圍1開關量10X0210001主站 子站0/12開關量20X0210002主站 子站0/13開關量30X0210003主站 子站0/14開關量40X0210004主站 子站0/15開關量50X0210005主站 子站0/16開關量10x0210001主站 子站12000-21002模擬量20x1040102主站 子站0.51-1003模擬量30x1040103主站 子站0.50-504模擬量40x1040104主站 子站10-235模擬量50x1040105主

溫馨提示

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

評論

0/150

提交評論