在大家通讀modbus協議時,總是會碰到一些容易混淆的名詞,從而導致對於協議的解讀出現問題,在本文中,我們對於modbus協議中可能會給大家造成困惑的名詞作相關的解釋。
1.功能碼:功能碼在modbus協議用於表示資訊幀的功能,常用的功能碼有03,04,06,16等,其中03功能碼的作用是讀保持暫存器內容,04功能碼的作用是讀輸入暫存器內容(輸入暫存器和保持暫存器的區別看下文),06功能碼的內容是預置單個保持暫存器,16功能碼的內容則是預置多個保持暫存器。
2.輸入暫存器和保持暫存器:04功能碼的作用就是讀輸入暫存器,而03功能碼的作用則是讀保持暫存器,很多人在看到這兩個功能碼的時候總是希望找到這兩個功能碼的區別,保持暫存器和輸入暫存器到底是什麼區別,modbus協議最開始是用來解決plc的通訊協議問題的,主要用於輸入輸出數字量訊號以及模擬量訊號,所謂的輸入暫存器就是從模擬量訊號輸入引申出來的,即輸入暫存器只能從模擬量訊號輸入端改變暫存器,而主機則不能通過下發指令改變輸入暫存器的資料,而保持暫存器則是用於輸出模擬量訊號的,主機是可以改變暫存器資料,也就是說對於主機而言,輸入暫存器是唯讀的,而保持暫存器是可以讀寫的,當主機用06,16功能碼的指令去預置輸入暫存器的時候,裝置會返回乙個**為0x81的錯誤**,即企圖寫唯讀暫存器。
3.modbus中的資料位址格式:在modbus協議中,經常會出現類似於3***x,4***x暫存器,這個表示的是暫存器支援的資料型別。我們用列表來說明,還有modbus資料位址格式是從0開始,比如以下乙個暫存器40009,即表示保持暫存器,暫存器位址為00 08,類似的資料位址格式經常在組態軟體以及plc系統中用到。
對映位址
使用的功能碼
位址型別
訪問方式
描述0***x
01,05,15
離散輸出
讀寫每個卷表示單個開關位
1***x
02離散輸入
唯讀每個卷表示單個開關位
2***x
03,04,06,16
浮點暫存器
唯讀/讀寫
兩個連續16位暫存器表示乙個浮點數
3***x
04輸入暫存器
唯讀每個暫存器表示乙個16位無符號整數
4***x
03,06,16
保持暫存器
讀寫每個暫存器表示乙個16位無符號整數
5***x
03,04,06,16
ascii字元
讀寫每個暫存器表示兩個ascii碼
4.modbus rtu/ascii/tcp:modbus協議最開始是用於可程式設計邏輯控制器(plc)之間的通訊,由於其具有的開放性,大量的用於現場智慧型儀表。modbus協議有多個變種,其中最著名的是modbus rtu/modbus ascii和modbus tcp通訊協議。其中rtu/ascii協議是基於序列口通訊,而tcp協議則是基於乙太網通訊。他們之間的區別和聯絡請參考本站其他頁面內容:modbus rtu/tcp協議解析以及modbus rtu/ascii通訊協議異同點。
5.modbus錯誤**表,modbus有功能碼,校驗碼,異常功能碼和錯誤**,其中異常功能碼和錯誤**非常容易混淆,一般來說異常功能碼指的是某個功能碼執行的時候出現的相應異常功能碼,一般都是在功能碼的基礎上加上0x80,比如03功能碼出現的異常碼是0x83異常功能碼,16功能碼對應出現的異常功能碼則是0x90,而錯誤**則是表示出現錯誤的具體情況,比如暫存器位址不存在,不管是讀還是寫,如果該暫存器位址不存在的話,錯誤**為02
Modbus名詞以及相關內容解析
1.功能碼 功能碼在modbus協議用於表示資訊幀的功能,常用的功能碼有03,04,06,16等,其中03功能碼的作用是讀保持暫存器內容,04功能碼的作用是讀輸入暫存器內容 輸入暫存器和保持暫存器的區別看下文 06功能碼的內容是預置單個保持暫存器,16功能碼的內容則是預置多個保持暫存器。2.輸入暫存...
Modbus名詞解釋
在大家通讀modbus協議時,總是會碰到一些容易混淆的名詞,從而導致對於協議的解讀出現問題,在本文中,我們對於modbus協議中可能會給大家造成困惑的名詞作相關的解釋。1.功能碼 功能碼在modbus協議用於表示資訊幀的功能,常用的功能碼有03,04,06,16等,其中03功能碼的作用是讀保持暫存器...
Modbus閘道器 Modbus協議閘道器
modbus閘道器是將modubs tcp協議轉換成modbus rtu協議的一種裝置。modbus協議在儀器和感測器領域有著廣泛的應用,可以獲取儀器和感測器的資料。然而,傳統的基於rs485的modbus rtu 或ascii 具有速度慢 擴充套件性差的特點,因此modbus tcp作為一種基於網...