更新配置, 修改录波报文解析模式;
添加序列数值帧显示模式; 修复帧搜索索引越界问题;
This commit is contained in:
@@ -476,14 +476,14 @@ if __name__=='__main__':
|
|||||||
ret = dev_lamina.frame_read(0x0100, 0x20)
|
ret = dev_lamina.frame_read(0x0100, 0x20)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
dev_lamina.frame_update(path_bin)
|
dev_lamina.frame_update(path_bin)
|
||||||
|
|
||||||
time.sleep(6)
|
time.sleep(6)
|
||||||
|
|
||||||
ret = dev_lamina.frame_read(0x0100, 0x20)
|
ret = dev_lamina.frame_read(0x0100, 0x20)
|
||||||
|
|
||||||
if ret and (version == dev_lamina.output['version']):
|
if ret and (version == dev_lamina.output['version']):
|
||||||
dev_lamina.frame_write_one(0x52, 0x01)
|
dev_lamina.frame_write_one(0x52, 0x01)
|
||||||
|
|
||||||
print(f"address: {' '.join(map(lambda x: ('000' + hex(x)[2:])[-2:], addr))}")
|
print(f"address: {' '.join(map(lambda x: ('000' + hex(x)[2:])[-2:], addr))}")
|
||||||
dev_lamina.frame_write_str(0x82, addr)
|
dev_lamina.frame_write_str(0x82, addr)
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ modbus_map = {
|
|||||||
# 4 - str
|
# 4 - str
|
||||||
# 5 - addr
|
# 5 - addr
|
||||||
# 6 - float
|
# 6 - float
|
||||||
|
0x0B: ["事件标志", 1],
|
||||||
0x0C: ["告警字1", 1],
|
0x0C: ["告警字1", 1],
|
||||||
0x0D: ["告警字2", 1],
|
0x0D: ["告警字2", 1],
|
||||||
0x0E: ["故障字1", 1],
|
0x0E: ["故障字1", 1],
|
||||||
@@ -48,6 +49,7 @@ modbus_map = {
|
|||||||
0x54: ["模式更改命令" , 2],
|
0x54: ["模式更改命令" , 2],
|
||||||
0x55: ["短时停机命令(未启用)" , 2],
|
0x55: ["短时停机命令(未启用)" , 2],
|
||||||
0x56: ["手动录波命令" , 2],
|
0x56: ["手动录波命令" , 2],
|
||||||
|
0x57: ["时间配置命令" , 7, 3],
|
||||||
|
|
||||||
0x60: ["整机运行使能", 1],
|
0x60: ["整机运行使能", 1],
|
||||||
0x61: ["最小启动允许输入电压", 2],
|
0x61: ["最小启动允许输入电压", 2],
|
||||||
@@ -292,7 +294,7 @@ class LaminaController:
|
|||||||
Warning("config 配置文件格式异常")
|
Warning("config 配置文件格式异常")
|
||||||
pos += 2
|
pos += 2
|
||||||
config_record['LinePos'].append(pos)
|
config_record['LinePos'].append(pos)
|
||||||
len_faultword = 2 * (data_cfg_bare[3] * 0x100 + data_cfg_bare[2])
|
len_faultword = (data_cfg_bare[3] * 0x100 + data_cfg_bare[2])
|
||||||
pos += 2
|
pos += 2
|
||||||
config_record['FaultWord'] = []
|
config_record['FaultWord'] = []
|
||||||
for i in range(0, len_faultword, 2):
|
for i in range(0, len_faultword, 2):
|
||||||
|
|||||||
@@ -236,6 +236,10 @@ def display_data(modbus_map: dict, address: int, data: list):
|
|||||||
temp = [data[2], data[3], data[0], data[1]]
|
temp = [data[2], data[3], data[0], data[1]]
|
||||||
item = struct.unpack('>f', bytes(temp))[0]
|
item = struct.unpack('>f', bytes(temp))[0]
|
||||||
data_len = 2
|
data_len = 2
|
||||||
|
elif current_map[1] == 7:
|
||||||
|
""" 正序数值表示 """
|
||||||
|
data_len = current_map[2]
|
||||||
|
item = " ".join(map(lambda x: str(x), data[:2 * data_len]))
|
||||||
|
|
||||||
if len_max < len(data_label):
|
if len_max < len(data_label):
|
||||||
len_max = len(data_label)
|
len_max = len(data_label)
|
||||||
@@ -276,7 +280,7 @@ def find_frame_modbus(buffer, address, frame_defines: dict=frame_modbus):
|
|||||||
else:
|
else:
|
||||||
raise Exception("Unknow Modbus Define type.")
|
raise Exception("Unknow Modbus Define type.")
|
||||||
|
|
||||||
if calculator.checksum(buffer[i:i+j-2]) == (buffer[i+j-1] * 0x100 + buffer[i+j-2]):
|
if ((i+j) <= len_buffer) and calculator.checksum(buffer[i:i+j-2]) == (buffer[i+j-1] * 0x100 + buffer[i+j-2]):
|
||||||
pos_frame, len_frame = i, j
|
pos_frame, len_frame = i, j
|
||||||
break
|
break
|
||||||
|
|
||||||
@@ -378,9 +382,11 @@ def check_frame_dlt645(frame, block=None):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
frame_slave = '01 07 02 00 00 A7 00 F0 A1 A4 1F DC 0B 1D 27 08 0F CB A7 49 03 99 09 C6 87 10 FB 08 86 71 9F 2A 2F BB 8F 69 4D 5C 9F 90 51 8A 8B D3 E0 85 9F 2B C1 9A 7E A3 22 9B 29 EE 6B 70 28 D3 31 F6 EF 78 43 8A DF FC F3 8C 13 02 31 F4 65 B5 EE 46 80 F2 E9 D4 E9 C8 F2 84 13 3A DF 50 1D 45 53 52 1D 89 6F F8 CB 7F 56 28 DF A2 11 D4 47 93 04 04 FF AB 35 1F C3 BA D2 F0 65 F2 F6 A3 AC A5 A2 AF AF 3E 88 65 EC 7B 35 62 DA 4A CF A4 69 A5 9E C7 70 E6 DC DD BE 49 DD DA 09 CE 42 18 5C 57 86 12 E0 A0 74 5F 5C F7 35 B3 FE 7C 51 94 5C 57 28 1A 86 1E 9F DE F6 B2 4B A9 29 E6 30 EA F2 BB E6 72 81 E9 80 3A DE FC DC C2 F8 8E 30 F4 66 B3 25 12 30 FA 90 09 3C 8C 1D FD 49 8E 4A 58 1C 17 48 54 CF 6A DE B4 05 7F 3D DD 68 F2 7E C2 CE 01 11 D6 DE 5E 7C 27 10 FE 28 28 3E 06 4D C8 01 07 02 00 00 A7 F4 08'
|
||||||
buffer_test = trans_str_to_list("62 01 03 25 1C 00 01 03 3A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 01 F3 00 06 00 12 01 DB 00 19 00 BA 00 00 24 62 00 00 25 1C 00 00 00 0F 00 01 00 07 00 2B 02 4D FD 6C FD 6C 01 20 01 20 73 08 4D FD 6C FD")
|
buffer_test = trans_str_to_list("62 01 03 25 1C 00 01 03 3A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 01 F3 00 06 00 12 01 DB 00 19 00 BA 00 00 24 62 00 00 25 1C 00 00 00 0F 00 01 00 07 00 2B 02 4D FD 6C FD 6C 01 20 01 20 73 08 4D FD 6C FD")
|
||||||
buffer_test1 = trans_str_to_list("01 03 3A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 01 F4 00 06 00 13 01 DB 00 1A 00 D5 00 00 25 AE 00 00 26 83 00 00 00 0C FF FF 00 56 00 72 02 1D FD 6C FD 6C 01 26 01 26 94 E3")
|
buffer_test1 = trans_str_to_list("01 03 3A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 01 F4 00 06 00 13 01 DB 00 1A 00 D5 00 00 25 AE 00 00 26 83 00 00 00 0C FF FF 00 56 00 72 02 1D FD 6C FD 6C 01 26 01 26 94 E3")
|
||||||
buffer_test2 = trans_str_to_list("01 06 00 60 00 00 89 D4 94 E3")
|
buffer_test2 = trans_str_to_list("01 06 00 60 00 00 89 D4 94 E3")
|
||||||
|
buffer_test3 = trans_str_to_list(frame_slave)
|
||||||
modbus_map = {
|
modbus_map = {
|
||||||
# 1 - Hex
|
# 1 - Hex
|
||||||
# 2 - Int16
|
# 2 - Int16
|
||||||
@@ -480,4 +486,4 @@ if __name__ == "__main__":
|
|||||||
'addr_dev' : 0x01,
|
'addr_dev' : 0x01,
|
||||||
'data_define': modbus_map,
|
'data_define': modbus_map,
|
||||||
}
|
}
|
||||||
check_frame_modbus(bytearray(buffer_test2), block)
|
check_frame_modbus(bytearray(buffer_test3), block)
|
||||||
|
|||||||
Reference in New Issue
Block a user