cp341做modbus RTU主站,讀上來的數(shù)據(jù)在DB塊中存放的問題
劉玉蓉
發(fā)布于2014-11-03 17:17
305
0
標簽:
用cp341做主站,讀儀表的數(shù)據(jù),讀上來后存放在DB塊中。儀表數(shù)據(jù)是按照Byte讀的,假設從0001地址開始讀,讀2個byte,存放到DB中后,打開看是這樣的:
地址 名稱 類型 初始值 實際值
0.0 Receive_data[1] BYTE B#16#0 B#16#0
1.0 Receive_data[2] BYTE B#16#0 B#16#62
2.0 Receive_data[3] BYTE B#16#0 B#16#0
3.0 Receive_data[4] BYTE B#16#0 B#16#20
從DB塊來看,好像讀上來的每個byte前面都加上了一個空的byte,難道是自動把byte轉(zhuǎn)成了word型?
佳答案
在MODBUS RTU組態(tài)輸出寄存器數(shù)據(jù)區(qū)時,數(shù)據(jù)的傳送以字為單位,對應西門子控制器數(shù)據(jù)塊區(qū),如用戶地址區(qū)為30001 – 30008,對應西門子控制器數(shù)據(jù)區(qū)為DB1.DBW0 – DB1.DBW14, 數(shù)據(jù)塊號可以修改。由于數(shù)據(jù)塊DB的數(shù)據(jù)類型定義為字節(jié)BYTE,在傳送到數(shù)據(jù)塊時,將某個值(以字為單位)傳送到不同長度的數(shù)據(jù)類型(字節(jié)BYTE)時,會根據(jù)需要將高位字節(jié)以零填充,所以在讀上來的每個BYTE前面都加上一個空的BYTE。