modbus協議中的暫存器理解

2021-08-15 19:25:33 字數 2129 閱讀 6769

最近有用到modbus協議,就把之前原來收集的資料全都拿出來又複習了一遍。發現以前了解的也忘了差不多了。所以這次理解了趕緊做個總結,省的下次再忘記了。

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協議,就把之前原來收集的資料全都拿出來又複習了一遍。發現以前了解的也忘了差不多了。所以這次理解了趕緊做個總結,省的下次再忘記了。

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協議暫存器

modbus有四種資料,di do ai ao di 數字輸入,離散輸入,乙個位址乙個資料位,使用者只能讀取它的狀態,不能修改。比如面板上的按鍵 開關狀態,電機的故障狀態。do 數字輸出,線圈輸出,乙個位址乙個資料位,使用者可以置位 復位,可以回讀狀態,比如繼電器輸出,電機的啟停控制訊號。ai 模擬...

對暫存器的理解

在進行嵌入式開發過程中,暫存器可以說是與嵌入式工程師打交道最多的東西,因為偏向底層的驅動開發,幾乎都是利用暫存器完成的。那麼,暫存器到底是什麼呢?下面為自己的一些理解,如有錯誤之處,還望海涵與糾正,謝謝!在正式進入暫存器的知識之前,首先對記憶體對映進行簡單的介紹。此處以ti公司的dsp28335晶元...

Modbus協議的理解

當上位機和下位機進行通訊或多個微控制器進行通訊時需要進行通訊,很常用的一種就是通過串列埠收發命令,在簡單的系統中可以自己定義一些簡單的協議,收發雙方按照協議來就可以了,如果要保證傳輸的穩定和同其他系統的相容,最好採用通用的通訊協議。我採用了自己編的協議,但參考了modbus協議。modbus協議包括...