modbus通訊協議功能碼一覽_ModBus功能碼定義
時間:2018-04-14 12:04 來源:ob体育竞彩
modbus通訊協議功能碼一覽_ModBus功能碼定義
Modbus網絡是一個工業通信係統,由帶智能終端的可編程序控製器和計算機通過公用線路或局部專用線路連接而成。其係統結構既包括硬件、亦包 括軟件。它可應用於各種數據采集和過程監控。下表1是ModBus的功能碼定義。
表1 ModBus功能碼
功能碼 名稱 作用
01 讀取線圈狀態 取得一組邏輯線圈的當前狀態(ON/OFF)
02 讀取輸入狀態 取得一組開關輸入的當前狀態(ON/OFF)
03 讀取保持寄存器 在一個或多個保持寄存器中取得當前的二進製值
04 讀取輸入寄存器 在一個或多個輸入寄存器中取得當前的二進製值
05 強置單線圈 強置一個邏輯線圈的通斷狀態
06 預置單寄存器 把具體二進值裝入一個保持寄存器
07 讀取異常狀態 取得8個內部線圈的通斷狀態,這8個線圈的地址由控製器決定,用戶邏輯可以將這些線圈定義,以說明從機狀態,短 報文適宜於迅速讀取狀態
08 回送診斷校驗 把診斷校驗報文送從機,以對通信處理進行評鑒
09 編程(隻用於484) 使主機模擬編程器作用,修改PC從機邏輯
10 控詢(隻用於484) 可使主機與一台正在執行長程序任務從機通信,探詢該從機是否已完成其操作任務,僅在含有功能碼9的報文發送後,本功能碼才發送
11 讀取事件計數 可使主機發出單詢問,並隨即判定操作是否成功,尤其是該命令或其他應答產生通信錯誤時
12 讀取通信事件記錄 可是主機檢索每台從機的ModBus事務處理通信事件記錄。如果某項事務處理完成,記錄會給出有關錯誤
13 編程(184/384 484 584) 可使主機模擬編程器功能修改PC從機邏輯
14 探詢(184/384 484 584) 可使主機與正在執行任務的從機通信,定期控詢該從機是否已完成其程序操作,僅在含有功能13的報文發送後,本功能碼才得發送
15 強置多線圈 強置一串連續邏輯線圈的通斷
16 預置多寄存器 把具體的二進製值裝入一串連續的保持寄存器
17 報告從機標識 可使主機判斷編址從機的類型及該從機運行指示燈的狀態
18 (884和MICRO 84) 可使主機模擬編程功能,修改PC狀態邏輯
19 重置通信鏈路 發生非可修改錯誤後,是從機複位於已知狀態,可重置順序字節
20 讀取通用參數(584L) 顯示擴展存儲器文件中的數據信息
21 寫入通用參數(584L) 把通用參數寫入擴展存儲文件,或修改之
22~64 保留作擴展功能備用
65~72 保留以備用戶功能所用 留作用戶功能的擴展編碼
73~119 非法功能
120~127 保留 留作內部作用
128~255 保留 用於異常應答
Modbus網絡隻是一個主機,所有通信都由他發出。網絡可支持247個之多的遠程從屬控製器,但實際所支持的從機數要由所用通信設備決定。采用這個係 統,各PC可以和中心主機交換信息而不影響各PC執行本身的控製任務。表2是ModBus各功能碼對應的數據類型。
表2 ModBus功能碼與數據類型對應表
代碼 功能 數據類型
01 讀 位
02 讀 位
03 讀 整型、字符型、狀態字、浮點型
04 讀 整型、狀態字、浮點型
05 寫 位
06 寫 整型、字符型、狀態字、浮點型
08 N/A 重複“回路反饋”信息
15 寫 位
16 寫 整型、字符型、狀態字、浮點型
17 讀 字符型
(1)ModBus的傳輸方式
在ModBus係統中有2種傳輸模式可選擇。這2種傳輸模式與從機PC通信的能力是同等的。選擇時應視所用ModBus主機而定, 每個ModBus係統隻能使用一種模式,不允許2種模式混用。一種模式是ASCII(美國信息交換碼),另一種模式是RTU(遠程終端設備)這兩種模式的 定義見表3
表3 ASCII和RTU傳輸模式的特性
特性 ASCII(7位) RTU(8位)
編碼係統 十六進製(使用ASCII可打印字符:0~9,A~F) 二進製
每一個字符的位數 開始位 1位 1位
數據位(最低有效位第一位) 7位 8位
奇偶校驗(任選) 1位(此位用於奇偶校驗,無校應則無該位) 1位(此位用於奇偶校驗,無校應則無該位)
停止位 1或2位 1或2位
錯誤校驗 LRC(即縱向冗餘校驗) CRC(即循環冗餘校驗)
ASCII可打印字符便於故障檢測,而且對於用高級語言(如Fortan)編程的主計算機及主PC很適宜。RTU則適用於機器語言編程的計算機和PC主 機。
用RTU模式傳輸的數據是8位二進製字符。如欲轉換為ASCII模式,則每個RTU字符首先應分為高位和低位兩部分,這兩部分各含4位,然後轉換成十六進 製等量值。(//www.gdzxks.com/ob体育竞彩
)用以構成報文的ASCII字符都是十六進製字符。ASCII模式使用的字符雖是RTU模式的兩倍,但ASCII數據的譯瑪和處理更為容易一些, 此外,用RTU模式時報文字符必須以連續數據流的形式傳送,用ASCII模式,字符之間可產生長達1s的間隔,以適應速度較快的機器。表4給出了以RTU 方式讀取整數據的例子
以RTU方式讀取整數據的例子
主機請求
地址 功能碼 第一個寄存器的高位地址 第一個寄存器的低位地址 寄存器的數量的高位 寄存器的數量的底位 錯誤校驗
01 03 00 38 00 01 XX
從機應答
地址 功能碼 字節數 數據高字節 數據低字節 錯誤校驗
01 03 2 41 24 XX
十六進製數4124表示的十進製整數為16676,錯誤校驗值要根據傳輸方式而定。
(2)Modbus的數據校驗方式
CRC-16(循環冗餘錯誤校驗)
CRC-16錯誤校驗程序如下:報文(此處隻涉及數據位,不指起始位、停止位和任選的奇偶校驗位)被看作是一個連續的二進製,其最高有效位(MSB)首選 發送。報文先與X↑16相乘(左移16位),然後看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示為二進製數 11000000000000101。整數商位忽略不記,16位餘數加入該報文(MSB先發送),成為2個CRC校驗字節。餘數中的1全部初始化,以免所 有的零成為一條報文被接收。經上述處理而含有CRC字節的報文,若無錯誤,到接收設備後再被同一多項式(X↑16+X↑15+X↑2+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多項式X↑16+ X↑15+X↑2+1,單首次裝入的16位寄存器為0000;使用CRC16的反序X↑16+X↑14+X↑1+1,首次裝入寄存器值為0000或 FFFFH。
LRC(縱向冗餘錯誤校驗)
LRC錯誤校驗用於ASCII模式。這個錯誤校驗是一個8位二進製數,可作為2個ASCII十六進製字節傳送。把十六進製字符轉換成二進製,加上無循環進 位的二進製字符和二進製補碼結果生成LRC錯誤校驗(參見圖)。這個LRC在接收設備進行核驗,並與被傳送的LRC進行比較,冒號(:)、回車符號 (CR)、換行字符(LF)和置入的其他任何非ASCII十六進製字符在運算時忽略不計。
表5 LRC生成範例--讀取02號從機的前8個線圈
十六進製 二進製
地址 0 2 0000 0010
功能碼 0 1 0000 0001
起始地址高位 0 0 0000 0000
起始地址低位 0 0 0000 0000
單元數量 0 0 0000 0000
0 8 + 0000 1000
0000 1011
變成補碼 1111 0101
錯誤校驗 F 5 F 5
接受PC把所有收到的數據字節(包括最後的LRC)加在一起,8位應全部為0(注意:和可能超過8位,應略去最低位)
0000 0010
0000 0001
0000 0000
0000 0000
0000 0000
0000 1000
錯誤校驗 1111 0101
和 0000 0000
看過《modbus通訊協議功能碼一覽_ModBus功能碼定義》的人還看了以下文章
|
欧宝体育在线链接
學plc編程難不難有用嗎 |
欧宝体育在线链接
理所當然要學習PLC,不僅僅要學還要學好它。僅僅隻是接燈泡和電動機運轉的人不算欧宝体育在线链接
,隻能夠說是一個打雜者。 作為一個曾經從事過公司欧宝体育在线链接
職業的我,深有體會告訴大家,欧宝体育在线链接
活又苦又累還工資待遇一般。 學習PLC沒有學曆要求,懂得欧宝体育在线链接
自學,或... |
|
PLC是如何來獲取外部模擬量信號的 |
我們都知道PLC作為工控領域中的核心器件,它在控製領域中應用的非常多。我在平時工作中用的工控器件中有變頻器、觸摸屏和PLC,其中PLC是我接觸最多的一種工控產品,在使用領域我認為PLC感知外部信號的方式有三種方式,一種是通過開關量的方式,一種是通過工... |
|
PLC隻有兩個輸入點實現單個電動機的啟動保 |
這是我自己做的,用的西門子smart做的,我的理解你是想一個點控製電機的啟停,並且做到啟保停,希望高手看到別笑話,但我試了是沒問題的 I0.0第一次工作時,Q0.0輸出,I0.0再一次工作時,Q0.0停止輸出! 可以把程序設計好後,停止按鈕都供外用一個輸入點x0,... |
|
如何快速地學會三菱PLC |
現在我們學習PLC有日係的和歐美係列的兩類。對於日係PLC常見的有三菱PLC、歐姆龍PLC以及鬆下PLC等。對於日係的PLC我們學會一款就可以很快地掌握其它品牌的PLC了。今天我們以三菱PLC為例,來聊聊如何快速地學會三菱PLC。 學習技術要以做中學為主 PLC控製也是... |
|
cad和plc編程哪個難 |
這是兩個不同的技術,沒有什麼優劣的對比,隻是應用的領域不同。 CAD即計算機輔助設計,利用計算機及其圖形設備幫助設計人員進行設計工作。簡稱CAD。 在工程和產品設計中,計算機可以幫助設計人員擔負計算、信息存儲和製圖等項工作。在設計中通常要用計算機... |