积累修改;

This commit is contained in:
何 泽隆
2025-01-13 09:10:47 +08:00
parent 5022bf802e
commit 52406c45b9
8 changed files with 3025 additions and 9 deletions

1644
source/Interactive-1.ipynb Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -547,8 +547,8 @@ if __name__=='__main__':
if not (file_db:= Path(path_db)).exists(): if not (file_db:= Path(path_db)).exists():
file_db.touch() file_db.touch()
API_HEADER['Cookie'] = "HWWAFSESID=ac80388ba903b6ae67; HWWAFSESTIME=1735517672864; dc04ed2361044be8a9355f6efb378cf2=WyIzNTI0NjE3OTgzIl0" API_HEADER['Cookie'] = "HWWAFSESID=7e7df7972959068f88; HWWAFSESTIME=1736230263315; dc04ed2361044be8a9355f6efb378cf2=WyIzNTI0NjE3OTgzIl0"
API_HEADER['authorization'] = 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiIl0sInVzZXJfbmFtZSI6IndlYl9tYW5hZ2V8d2FuZ2xlaTQiLCJzY29wZSI6WyJhbGwiXSwiYXRpIjoiMzkzMTUzZGYtZDBkYS00YmM1LWJiZmMtZjdjMTQxYTEzOTU0IiwiZXhwIjoxNzM1OTcyNTA0LCJ1c2VySWQiOjI0Mjg1LCJqdGkiOiIwMTY1NDg1MC1mZjIwLTRkMzQtYTQ4ZC03NmRiZTk3MmQ3YWQiLCJjbGllbnRfaWQiOiJ3ZWJfbWFuYWdlIn0.diNffgdMwBp7_IsjTAwN-YYp8_zpRp5pGn7HJAar51R3jpJyeROFV1g8T6jC_d-bfqS59N649llL3kJPguFfTrwJSu7NS4oeD2YNPwuhpQIeMbszp48NZ3zKyct6COpMPTWRVMVygcfsKfkYnDJQSMyanfQCtLinfDhNq3ektLtPFxLsf54noBu8R_MJ-Pkdjiip3koA8Jhl2eL2Af4U-nd9UAjNaMT5HI0scC9ViEJshzgyxvOi4Pabzw-JI5ZRYzWd1rNZo7b1_s7OAYcqj2hteW1JdC7_6hTHZxpEjzRBvhuvpwHDtsBvAgGUI6hPoYkOpGNPG2QfW7Hyc7TWtA' API_HEADER['authorization'] = 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiIl0sInVzZXJfbmFtZSI6IndlYl9tYW5hZ2V8d2FuZ2xlaTQiLCJzY29wZSI6WyJhbGwiXSwiZXhwIjoxNzM2MjM3NTMxLCJ1c2VySWQiOjI0Mjg1LCJqdGkiOiIzMWRlNDRiMy05ZTNjLTQwOTEtOWUzMS0wYWFjNTYzZDljZWIiLCJjbGllbnRfaWQiOiJ3ZWJfbWFuYWdlIn0.INV4DumSZkZZ68TW0DTF1XlIIFuoHD90_JefmmOBxcHPDxHAZPzG4JX9BEcEPrRLfSENtfYW7XNCluzB9nxs_pBTT9iu--tPZwlLAiPD7LZ552VdoAFEsYaigFmwxtedTLTzzm2GVbUReInd1dARjgaK0mKxljkKfGkTJURobpHC9Aw5mu25fSWjv7U9sZ0gOmpCuFr_OukEssi0hV8lvztfN5Ax_E1NObbteY2e8tUh6xVj49pHwDPnQScofGTaSviuMO46zmim6X3AKUJ-jDa95dOygKhk704AiA2nVCHXrlVkJI7zYLZB_zZTw3EhyonpksYS8NPp9wLlearWqg'
data_lamina = Lamina_Data('sqlite:///' + path_db) data_lamina = Lamina_Data('sqlite:///' + path_db)
# 依据站点内设备爬取整个站点的实时与历史数据 # 依据站点内设备爬取整个站点的实时与历史数据
@@ -561,8 +561,8 @@ if __name__=='__main__':
# data = data_lamina.spider_station('TTE0102DX2410091439', yesterday_midnight_timestamp, today_midnight_timestamp) # data = data_lamina.spider_station('TTE0102DX2410091439', yesterday_midnight_timestamp, today_midnight_timestamp)
# 读取站点历史数据 # 读取站点历史数据
save_station_by_file1(data_lamina) # save_station_by_file1(data_lamina)
# save_station_by_file2(data_lamina, "result\station_Q0103.xlsx") save_station_by_file2(data_lamina, "result\station_Q0107.xlsx")
# 网站令牌更新 # 网站令牌更新
body = { body = {

View File

@@ -130,6 +130,67 @@ def test():
time.sleep(2) time.sleep(2)
dev_lamina.frame_read(0x0170, 0x30) dev_lamina.frame_read(0x0170, 0x30)
if 0:
dev_lamina.flag_print = False
dev_lamina.frame_write_one(0x52, 0x01)
time.sleep(6)
dev_lamina.frame_read(0x69, 0x02)
for value in [40, 41.9, 42, 42.1, 56.5, 57, 57.5, 57.9, 58, 58.1, 59]:
time.sleep(0.5)
result = dev_lamina.frame_write_one(0x21, int(value * 10))
print(f"Write Value: {value}, result: {'Seccusss' if result else 'Fail'}.")
time.sleep(0.5)
dev_lamina.frame_read(0x21,1)
time.sleep(0.5)
value = 46
result = dev_lamina.frame_write_one(0x69, int(value * 10))
print(f"Write Value: {value} in Addr: {0x69}, result: {'Seccusss' if result else 'Fail'}.")
time.sleep(0.5)
value = 60
result = dev_lamina.frame_write_one(0x6A, int(value * 10))
print(f"Write Value: {value} in Addr: {0x6A}, result: {'Seccusss' if result else 'Fail'}.")
for value in [45, 45.9, 46, 46.1, 56.5, 57, 57.5, 58, 59.9, 60, 60.1, 61]:
time.sleep(0.5)
result = dev_lamina.frame_write_one(0x21, int(value * 10))
print(f"Write Value: {value}, result: {'Seccusss' if result else 'Fail'}.")
time.sleep(0.5)
dev_lamina.frame_read(0x21,1)
time.sleep(0.5)
dev_lamina.frame_write_one(0x53, 0x01)
time.sleep(4.5)
dev_lamina.frame_read(0x21, 1)
time.sleep(0.5)
dev_lamina.frame_read(0x69, 2)
dev_lamina.flag_print = True
if 0: # 并机功率限值测试
dev_lamina.flag_print = False
step = 0
time_start = time.time()
time_interval = 120
list_power_limit = [650, 300, 200, 150, 120, 100, 80, 70, 50, 25, 10, 5, 1, 0.1, 0, 650]
while True:
time.sleep(1)
print(time.ctime())
dev_lamina.frame_read(0x0E, 0x20)
if time.time() - time_start > time_interval:
if step >= len(list_power_limit):
break
time.sleep(0.5)
time_start = time.time()
value = list_power_limit[step]
result = dev_lamina.frame_write_dual(0x1F, int(value * 1000))
print(f"Write Value: {value} in Addr: 0x1F by Time: {time.ctime(time_start)}. \n\tresult: {'Seccusss' if result else 'Fail'}.")
step += 1
dev_lamina.flag_print = True
if 0: # 启停机条件测试
dev_lamina.flag_print = False
dev_lamina.frame_read(0x60, 0x0B)
while True:
time.sleep(1)
print(time.ctime())
dev_lamina.frame_read(0x0E, 0x20)
dev_lamina.flag_print = True
if __name__=='__main__': if __name__=='__main__':
mode_config = { mode_config = {
@@ -146,7 +207,7 @@ if __name__=='__main__':
'time_out': 3, 'time_gap': 0.1, 'retry': 3, 'retry_sub': 10}, 'time_out': 3, 'time_gap': 0.1, 'retry': 3, 'retry_sub': 10},
} }
dev_lamina = LaminaAdapter(type_dev="SLCP001", **mode_config['Debug']) dev_lamina = LaminaAdapter(type_dev="SLCP101", **mode_config['Debug'])
dev_lamina.frame_read(0x0100, 0x20) dev_lamina.frame_read(0x0100, 0x20)
# dev_lamina.frame_write_one(0x51, 0x01) # dev_lamina.frame_write_one(0x51, 0x01)

1280
source/dev_inverter.ipynb Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -38,6 +38,26 @@ ParamMap_LaminaCombiner = {
0x107: ["输入电流7" , 2, 100], 0x107: ["输入电流7" , 2, 100],
0x108: ["输入电流8" , 2, 100], 0x108: ["输入电流8" , 2, 100],
0x11A: ["适配器01交互滴答", 2, 1],
0x11B: ["适配器02交互滴答", 2, 1],
0x11C: ["适配器03交互滴答", 2, 1],
0x11D: ["适配器04交互滴答", 2, 1],
0x11E: ["适配器05交互滴答", 2, 1],
0x11F: ["适配器06交互滴答", 2, 1],
0x120: ["适配器07交互滴答", 2, 1],
0x121: ["适配器08交互滴答", 2, 1],
0x122: ["适配器09交互滴答", 2, 1],
0x123: ["适配器10交互滴答", 2, 1],
0x124: ["适配器11交互滴答", 2, 1],
0x125: ["适配器12交互滴答", 2, 1],
0x126: ["适配器13交互滴答", 2, 1],
0x127: ["适配器14交互滴答", 2, 1],
0x128: ["适配器15交互滴答", 2, 1],
0x129: ["适配器16交互滴答", 2, 1],
0x12A: ["路由拓扑从节点个数", 2, 1],
0x12B: ["路由管理状态机状态", 2, 1],
0x12C: ["正在升级的适配器序号", 2, 1],
0x200: ["从板温度" , 2, 10], 0x200: ["从板温度" , 2, 10],
0x201: ["输入电流9" , 2, 100], 0x201: ["输入电流9" , 2, 100],
0x202: ["输入电流10" , 2, 100], 0x202: ["输入电流10" , 2, 100],
@@ -243,8 +263,14 @@ if __name__ == '__main__':
"dev20": {'device_id': 'TTE0101DX2409270062', # 内丘中张村北 "dev20": {'device_id': 'TTE0101DX2409270062', # 内丘中张村北
'frame_print': True, 'frame_print': True,
'time_out': 6, 'retry': 1}, 'time_out': 6, 'retry': 1},
"dev21": {'device_id': 'TTE0101DX2407080037', # 市区临湖东吴德生
'frame_print': True,
'time_out': 6, 'retry': 1},
"dev22": {'device_id': 'TTE0101DX2406300067', # (新版限功率升级)
'frame_print': True,
'time_out': 6, 'retry': 1},
} }
dev_lamina = LaminaStation(**mode_config["dev19"]) dev_lamina = LaminaStation(**mode_config["dev22"])
dev_lamina.frame_read(0x0000, 0x20) dev_lamina.frame_read(0x0000, 0x20)
time.sleep(2) time.sleep(2)

View File

@@ -236,7 +236,7 @@ class LaminaAdapter(DeviceSerial):
self.block['data']['step'] = step self.block['data']['step'] = step
return self._transfer_data() return self._transfer_data()
def frame_update(self, path_file: Path, makefile: bool = False) -> bool: def frame_update(self, path_file: Path, makefile: bool = False, savefile: bool = False) -> bool:
""" 程序升级 """ 程序升级
注意: 在使用单板升级测试时, 需要关闭低电压检测功能, 否则无法启动升级流程; 注意: 在使用单板升级测试时, 需要关闭低电压检测功能, 否则无法启动升级流程;
@@ -249,6 +249,8 @@ class LaminaAdapter(DeviceSerial):
raise Exception("工程编译目标文件不存在.") raise Exception("工程编译目标文件不存在.")
if makefile and self.make_package is not None: if makefile and self.make_package is not None:
self.block['data']['file'] = self.make_package(path_file) self.block['data']['file'] = self.make_package(path_file)
if savefile:
path_file.parent.joinpath(path_file.stem + '.dat').write_bytes(self.block['data']['file'])
else: else:
self.block['data']['file'] = path_file.read_bytes() self.block['data']['file'] = path_file.read_bytes()
@@ -341,6 +343,9 @@ def GeneratePackage(type_dev: str, path_hex: Path, **kwargs) -> bytearray:
if 'output_bin' in kwargs.keys() and kwargs['output_bin']: if 'output_bin' in kwargs.keys() and kwargs['output_bin']:
(path_hex / (path_hex.stem + '.bin')).write_bytes(bin_main) (path_hex / (path_hex.stem + '.bin')).write_bytes(bin_main)
if 'output_dat' in kwargs.keys() and kwargs['output_dat']:
(path_hex / (path_hex.stem + '.dat')).write_bytes(bytearray(Image))
return bytearray(Image) return bytearray(Image)
def GenerateImage(type_dev: str, path_boot: Path, path_main: Path, path_back: Path, **kwargs) ->bytearray: def GenerateImage(type_dev: str, path_boot: Path, path_main: Path, path_back: Path, **kwargs) ->bytearray:

View File

@@ -145,7 +145,7 @@ def make_frame_modbus(block:dict) -> bytearray:
elif block['type'] == "write_str": elif block['type'] == "write_str":
frame.append(0x10) frame.append(0x10)
data_len = len(block['data_val']) data_len = len(block['data_val'])
item_len = 2 * block['data_define'][data_addr][2] item_len = 2 * block['data_define'][data_addr][2] if data_addr in block['data_define'].keys() else data_len
data_val = block['data_val'] data_val = block['data_val']
if data_len > item_len: if data_len > item_len:
raise Exception("Modbus data len oversize.") raise Exception("Modbus data len oversize.")

View File

@@ -286,4 +286,4 @@ if __name__ == "__main__":
# Process1_v2(path_boot2, path_main) # 适配器SLCP102 # Process1_v2(path_boot2, path_main) # 适配器SLCP102
# Process2() # Process2()
Process(*mode_config['SLCP101']) Process(*mode_config['SLCP001'])