modbus RTU協議詳解,測試方法,名詞介紹

2021-10-10 02:36:33 字數 1112 閱讀 7997

最近有用到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-rtu詳解可參見:

modbus-rtu測試方法: 

Modbus RTU通訊協議

1.modbus rtu報文基本格式 起始應有 不小於3.5個字元的報文間隔 目標站號 功能碼資料 crc校驗碼 1位元組1位元組 n位元組2位元組 2.modbus命令 若響應錯誤,則返回的應答幀中 功能碼 最高位置1,比如功能碼為01,若響應錯誤,則返回的功能碼為0x81。2.1 功能碼01 讀...

ModbusRtu通訊報文詳解 一

modbusrtu通訊報文詳解 一 modbus協議可謂是工業控制領域應用最廣泛的協議之一。根據不同的電氣介面,包括modbus rtu ascii,modbus tcp udp,從學習的角度來說,只要學會其中一種,剩餘的都是大同小異的。這裡主要對modbusrtu的通訊報文做個詳細描述。工欲善其事...

RS485 MODBUS RTU通訊協議

1 rs485介面標準 rs485由rs232和rs422發展而來,彌補了抗干擾能力差 通訊距離短 速率低的缺點,增加了多點 雙向通訊能力,即允許多個傳送器連線在同一條主線上,同時增加了傳送器的驅動能力和衝突保護特性,擴充套件了匯流排共模範圍。rs485可以採用二線和四線兩種方式,二線制可以實現真正...