diff --git a/source/dev_LaminaAdapter.py b/source/dev_LaminaAdapter.py index 834f43d..f41fdc4 100644 --- a/source/dev_LaminaAdapter.py +++ b/source/dev_LaminaAdapter.py @@ -476,14 +476,14 @@ if __name__=='__main__': ret = dev_lamina.frame_read(0x0100, 0x20) 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) 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))}") dev_lamina.frame_write_str(0x82, addr) diff --git a/source/dev_LaminaController.py b/source/dev_LaminaController.py index bf65d2d..14f58f5 100644 --- a/source/dev_LaminaController.py +++ b/source/dev_LaminaController.py @@ -14,6 +14,7 @@ modbus_map = { # 4 - str # 5 - addr # 6 - float + 0x0B: ["事件标志", 1], 0x0C: ["告警字1", 1], 0x0D: ["告警字2", 1], 0x0E: ["故障字1", 1], @@ -48,6 +49,7 @@ modbus_map = { 0x54: ["模式更改命令" , 2], 0x55: ["短时停机命令(未启用)" , 2], 0x56: ["手动录波命令" , 2], + 0x57: ["时间配置命令" , 7, 3], 0x60: ["整机运行使能", 1], 0x61: ["最小启动允许输入电压", 2], @@ -292,7 +294,7 @@ class LaminaController: Warning("config 配置文件格式异常") pos += 2 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 config_record['FaultWord'] = [] for i in range(0, len_faultword, 2): diff --git a/source/func_frame.py b/source/func_frame.py index 472ec79..734a627 100644 --- a/source/func_frame.py +++ b/source/func_frame.py @@ -236,6 +236,10 @@ def display_data(modbus_map: dict, address: int, data: list): temp = [data[2], data[3], data[0], data[1]] item = struct.unpack('>f', bytes(temp))[0] 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): len_max = len(data_label) @@ -276,7 +280,7 @@ def find_frame_modbus(buffer, address, frame_defines: dict=frame_modbus): else: 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 break @@ -378,9 +382,11 @@ def check_frame_dlt645(frame, block=None): 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_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_test3 = trans_str_to_list(frame_slave) modbus_map = { # 1 - Hex # 2 - Int16 @@ -480,4 +486,4 @@ if __name__ == "__main__": 'addr_dev' : 0x01, 'data_define': modbus_map, } - check_frame_modbus(bytearray(buffer_test2), block) + check_frame_modbus(bytearray(buffer_test3), block)