积累修改;
This commit is contained in:
1644
source/Interactive-1.ipynb
Normal file
1644
source/Interactive-1.ipynb
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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 = {
|
||||||
|
|||||||
@@ -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
1280
source/dev_inverter.ipynb
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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.")
|
||||||
|
|||||||
@@ -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'])
|
||||||
|
|||||||
Reference in New Issue
Block a user