MODBUS功能碼最清晰解答

2021-09-30 19:05:24 字數 909 閱讀 4515

modbus完整支援很多功能碼,但是實際在應用的時候常用的也就那麼幾個。具體如下:

0x01: 讀線圈暫存器

0x02: 讀離散輸入暫存器

0x03: 讀保持暫存器

0x04: 讀輸入暫存器

0x05: 寫單個線圈暫存器

0x06: 寫單個保持暫存器

0x0f:  寫多個線圈暫存器

0x10: 寫多個保持暫存器

如上所示一共8種功能碼。這其中有涉及到線圈、離散輸入、保持、輸入四種暫存器。這名字也不知道誰起的,讓人看了一點不通俗易懂,搞得暈暈乎乎。實際上你要是看清他的本質就很簡單了。下面分別解釋一下:

線圈暫存器,實際上就可以模擬為開關量,沒乙個bit都對應乙個訊號的開關狀態。所以乙個byte就可以同時控制8路的訊號。比如控制外部8路io的高低。 線圈暫存器支援讀也支援寫,寫在功能碼裡面又分為寫單個線圈暫存器和寫多個線圈暫存器。對應上面的功能碼也就是:0x01  0x05  0x0f

離散輸入暫存器,如果線圈暫存器理解了這個自然也明白了。離散輸入暫存器就相當於線圈暫存器的唯讀模式,他也是每個bit表示乙個開關量,而他的開關量只能讀取輸入的開關訊號,是不能夠寫的。比如我讀取外部按鍵的按下還是鬆開。所以功能碼也簡單就乙個讀的 0x02

保持暫存器,這個暫存器的單位不再是bit而是兩個byte,也就是可以存放具體的資料量的,並且是可讀寫的。比如我我設定時間年月日,不但可以寫也可以讀出來現在的時間。寫也分為單個寫和多個寫,所以功能碼有對應的三個:0x03 0x06 0x10

輸入暫存器,只剩下這最後乙個了,這個和保持暫存器類似,但是也是只支援讀而不能寫。乙個暫存器也是佔據兩個byte的空間。模擬我我通過讀取輸入暫存器獲取現在的ad採集值。對應的功能碼也就乙個 0x04  

ModBus功能碼速記

一 0x01 0x04 這四個功能碼都是 讀 操作,可分兩組記憶,0x01和0x02是一組 bool型別 0x03和0x04是一組 暫存器型別 兩組屬性差不多如下 1.都是單數是讀取可讀可寫的資料 coil或者holding 雙數只能讀取唯讀資料 input 2.請求的幀格式類似 功能碼佔乙個位元組...

Modbus支援的功能碼

modbus支援的功能碼 下表是modbus支援的功能碼 功能碼名稱 作用01 讀取線圈狀態 取得一組邏輯線圈的當前狀態 on off 02讀取輸入狀態 取得一組開關輸入的當前狀態 on off 03讀取保持暫存器 在乙個或多個保持暫存器中取得當前的二進位制值 04讀取輸入暫存器 在乙個或多個輸入暫...

顯控屏modbus功能碼

modbus位址型別與功能碼對應關係 當觸控螢幕作為乙個modbusserver主站時,是要對所連線的modbusrtu從站進行讀寫控制。weinview的觸控螢幕支援01 05和16號功能碼。每個裝置位址型別所使用的功能碼如下 對modbusrtu裝置進行讀寫,觸控螢幕上的元件中使用什麼樣的位址型...