Modbus讀寫模擬量寄存器詳解


讀可讀寫模擬量寄存器:

 

發送命令(主機向從機)格式:

[設備地址] [命令號03] [起始寄存器地址高8] [8] [讀取的寄存器數高8] [8] [CRC校驗的低8] [CRC校驗的高8

例:[11][03][00][6B][00][03][CRC][CRC

意義如下:

11設備地址,例子中的地址是11,溶氧傳感器端默認的地址是1

03讀模擬量的命令號固定為03,這是Modbus協議規定的

006B起始地址高800、低86B:表示想讀取的模擬量的起始地址,比如例子中的起始地址為107這個006B表示一個完整的地址,注意這里的地址是高8位在前,低8位在后。

0003寄存器數高800、低803:表示從起始地址開始讀多少個模擬量(返回的每一個模擬量是用兩個字節表示的)。例子中為3個模擬量。注意,在返回的信息中一個模擬量需要返回兩個字節同時這里的地址也是高8位在前,低8位在后

[CRC][CRC]:幀尾的CRC-16校驗,尤其需要注意的一點是校驗結果的低8位在前,高8位在后,這個順序不同於起始地址以及讀取深度的地址順序。

 

設備響應:[設備地址] [命令號03] [返回的字節個數][數據1][數據2]...[數據n][CRC校驗的低8] [CRC校驗的高8

例:[11][03][06][02][2B][00][00][00][64][CRC][CRC

意義如下:

11設備地址(從機地址)。

03:命令號。

06返回的字節個數(不高擴兩字節的校驗碼):表示數據的字節個數,也就是數據12...n中的n的值。例子中返回了3個模擬量的數據,因為一個模擬量需要2個字節所以共6個字節。

數據1...n:其中[數據1][數據2]分別是第1個模擬量的高8位和低8位,[數據3][數據4]是第2個模擬量的高8位和低8位,以此類推。例子中返回的值分別是5550100

[CRC][CRC]:CRC校驗同上。 

 

寫單個模擬量寄存器:

 

發送命令(主機向從機)格式:

[設備地址] [命令號06] [需下置的寄存器地址高8] [8] [下置的數據高8] [8] [CRC校驗的低8] [CRC校驗的高8

例:[11][06][00][01][00][03][CRC][CRC

意義如下:

11設備地址和上面的相同。

06寫模擬量的命令號固定為06

0001:要被寫入的寄存器地址高8位,低8位。

0003:要被寫入的數據高8位,低8。比如例子中就把1號寄存器的值設為3

注意此命令一條只能寫入一個模擬量的狀態。 

[CRC校驗的低8] [CRC校驗的高8]:同上。

設備響應:如果成功把計算機發送的命令原樣返回,否則不響應。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com