讀可讀寫模擬量暫存器:
傳送命令(主機向從機)格式:
[裝置位址
] [命令號
03] [
起始暫存器位址高8位
] [低8位
] [讀取的暫存器數高8位
] [低8位
] [crc
校驗的低8位
] [crc
校驗的高8位
] 例:[11][03][00][6b][00][03][crc
低][crc高]
意義例如以下:
11:裝置位址,樣例中的位址是11
,溶氧感測器端預設的位址是1,。
03:讀模擬量的命令號固定為03,這是modbus
協議規定的。
00、6b
位(00
)、低8
位(6b
):表示想讀取的模擬量的起始位址,比方樣例中的起始位址為107
。這個006b
表示乙個完整的位址,注意這裡的位址是高
8位在前,低
8位在後。
00、03:暫存器數高8
位(00
)、低8
位(03
):表示從起始位址開始讀多少個模擬量(返回的每個模擬量是用兩個位元組表示的)。樣例中為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高]
意義例如以下:
03:命令號。
06:返回的位元組個數(不高擴兩位元組的校驗碼):表示資料的位元組個數,也就是資料1
,2...n中的n
的值。樣例中返回了
3個模擬量的資料,由於乙個模擬量須要
2個位元組所以共
6個位元組。
資料1...n
:當中[
資料1][
資料2]
各自是第
1個模擬量的高
8位和低8位,
[資料3][資料
4]是第
2個模擬量的高
8位和低
8位,以此類推。樣例中返回的值各自是
555,0,
100。
[crc低
][crc
高]:crc校驗同上。
寫單個模擬量暫存器:
傳送命令(主機向從機)格式:
[裝置位址
] [命令號
06] [
需下置的暫存器位址高8位
] [低8位
] [下置的資料高8位
] [低8位
] [crc
校驗的低8位
] [crc
校驗的高8位
] 例:[11][06][00][01][00][03][crc
低][crc高]
意義例如以下:
06:寫模擬量的命令號固定為06。
00、01:要被寫入的暫存器位址高8
位,低8位。
00、03:要被寫入的資料高8
位,低8
位。比方樣例中就把1
號暫存器的值設為3。
注意此命令一條僅僅能寫入乙個模擬量的狀態。
[crc校驗的低8位
] [crc
校驗的高8位
]:同上。
裝置響應:假設成功把計算機傳送的命令原樣返回,否則不響應。
ModBus協議暫存器
modbus有四種資料,di do ai ao di 數字輸入,離散輸入,乙個位址乙個資料位,使用者只能讀取它的狀態,不能修改。比如面板上的按鍵 開關狀態,電機的故障狀態。do 數字輸出,線圈輸出,乙個位址乙個資料位,使用者可以置位 復位,可以回讀狀態,比如繼電器輸出,電機的啟停控制訊號。ai 模擬...
modbus協議中的暫存器理解
最近有用到modbus協議,就把之前原來收集的資料全都拿出來又複習了一遍。發現以前了解的也忘了差不多了。所以這次理解了趕緊做個總結,省的下次再忘記了。modbus完整支援很多功能碼,但是實際在應用的時候常用的也就那麼幾個。具體如下 0x01 讀線圈暫存器 0x02 讀離散輸入暫存器 0x03 讀保持...
通用暫存器 記憶體讀寫
暫存器的結構 eax 的一半為 ax ax 的一半為 al ax就是eax的一部分 al就是ax的一部分 低位 ah就是ax的一部分 高位 8位暫存器只能放2個十六進製制的數 乙個位元組 彙編指令 mov,add,sub,and,or,xor,not 計算機記憶體的每乙個位元組會有乙個編號 即記憶體...