添加645地址输入参数;
更新变长数据项写报文; 更新解析数据项定义;
This commit is contained in:
@@ -91,8 +91,8 @@ modbus_map = {
|
||||
0xA2: ["温度补偿temp2_b", 2],
|
||||
0xA3: ["系统工作模式", 1],
|
||||
0xA4: ["电感电流给定值curr_set", 2],
|
||||
0xA5: ["保留", 1],
|
||||
0xA6: ["保留", 1],
|
||||
0xA5: ["抖动频率上限", 2],
|
||||
0xA6: ["抖动频率下限", 2],
|
||||
0xA7: ["保留", 1],
|
||||
0xA8: ["保留", 1],
|
||||
0xA9: ["保留", 1],
|
||||
@@ -144,6 +144,20 @@ def make_frame_modbus(block:dict):
|
||||
data_val //= 0x1_0000
|
||||
frame.append(data_val // 256 % 256)
|
||||
frame.append(data_val % 256)
|
||||
elif block['type'] == "write_str":
|
||||
frame.append(0x10)
|
||||
data_len = len(block['data_val'])
|
||||
data_val = block['data_val']
|
||||
if data_len > 0x0100:
|
||||
raise("modbus data len oversize.")
|
||||
frame.append(data_addr // 256 % 256)
|
||||
frame.append(data_addr % 256)
|
||||
frame.append(0x00)
|
||||
frame.append(data_len // 2)
|
||||
frame.append(data_len)
|
||||
for i in range(data_len//2):
|
||||
frame.append(data_val[2*i + 1])
|
||||
frame.append(data_val[2*i])
|
||||
|
||||
crc = calculator.checksum(bytearray(frame))
|
||||
frame.append(crc % 256)
|
||||
@@ -252,7 +266,7 @@ def test2():
|
||||
|
||||
print(frame_string)
|
||||
|
||||
def frame_read(daddr=0x60, dlen=0x50):
|
||||
def frame_read(daddr=0x60, dlen=0x50, dev_addr=[0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA]):
|
||||
block_modbus = {
|
||||
'addr_dev' : 0x01,
|
||||
'data_addr' : daddr,
|
||||
@@ -261,7 +275,7 @@ def frame_read(daddr=0x60, dlen=0x50):
|
||||
}
|
||||
frame1 = make_frame_modbus(block_modbus)
|
||||
block_dlt645 = {
|
||||
'addr' : [0x01, 0x02, 0x03, 0x04, 0x05, 0x06],
|
||||
'addr' : dev_addr,
|
||||
'data' : frame1,
|
||||
}
|
||||
frame2 = make_frame_dlt645(block_dlt645)
|
||||
@@ -276,7 +290,7 @@ def frame_read(daddr=0x60, dlen=0x50):
|
||||
output_text = display_data(block_modbus['data_addr'], frame4)
|
||||
print(output_text)
|
||||
|
||||
def frame_write_one(daddr=0x85, dval=-900):
|
||||
def frame_write_one(daddr=0x85, dval=-900, dev_addr=[0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA]):
|
||||
block_modbus = {
|
||||
'addr_dev' : 0x01,
|
||||
'data_addr' : daddr,
|
||||
@@ -285,13 +299,13 @@ def frame_write_one(daddr=0x85, dval=-900):
|
||||
}
|
||||
frame1 = make_frame_modbus(block_modbus)
|
||||
block_dlt645 = {
|
||||
'addr' : [0x01, 0x02, 0x03, 0x04, 0x05, 0x06],
|
||||
'addr' : dev_addr,
|
||||
'data' : frame1,
|
||||
}
|
||||
frame2 = make_frame_dlt645(block_dlt645)
|
||||
com.write(bytearray(frame2))
|
||||
|
||||
def frame_write_dual(daddr=0x91, dval=600):
|
||||
def frame_write_dual(daddr=0x91, dval=600, dev_addr=[0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA]):
|
||||
block_modbus = {
|
||||
'addr_dev' : 0x01,
|
||||
'data_addr' : daddr,
|
||||
@@ -300,7 +314,22 @@ def frame_write_dual(daddr=0x91, dval=600):
|
||||
}
|
||||
frame1 = make_frame_modbus(block_modbus)
|
||||
block_dlt645 = {
|
||||
'addr' : [0x01, 0x02, 0x03, 0x04, 0x05, 0x06],
|
||||
'addr' : dev_addr,
|
||||
'data' : frame1,
|
||||
}
|
||||
frame2 = make_frame_dlt645(block_dlt645)
|
||||
com.write(bytearray(frame2))
|
||||
|
||||
def frame_write_str(daddr=0x82, dval=[0x06, 0x05, 0x04, 0x03, 0x02, 0x01], dev_addr=[0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA]):
|
||||
block_modbus = {
|
||||
'addr_dev' : 0x01,
|
||||
'data_addr' : daddr,
|
||||
'data_val' : dval,
|
||||
'type' : 'write_str',
|
||||
}
|
||||
frame1 = make_frame_modbus(block_modbus)
|
||||
block_dlt645 = {
|
||||
'addr' : dev_addr,
|
||||
'data' : frame1,
|
||||
}
|
||||
frame2 = make_frame_dlt645(block_dlt645)
|
||||
@@ -339,7 +368,7 @@ def main_webui():
|
||||
com = None
|
||||
if __name__ == "__main__":
|
||||
com = Serial("Com16", baudrate=115200, parity='N', timeout=2)
|
||||
|
||||
address = [0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA]
|
||||
|
||||
pass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user