完善耐久采集

This commit is contained in:
2025-04-07 10:38:59 +08:00
parent 671db5b1db
commit 6e547ca6a3
16 changed files with 341 additions and 387 deletions

View File

@ -13,14 +13,13 @@ class DoCurrentTest(QThread):
self.dir_path = dir_path
self.tool = tool
self.idx = 5
self.logger = clibs.logger
def initialization(self, data_dirs, data_files):
def check_files():
msg = "初始路径下不允许有文件夹,初始路径下只能存在如下两个文件,且文件为关闭状态,确认后重新运行!<br>"
msg += "1. T_电机电流.xlsx<br>2. xxxx.zip"
if len(data_dirs) != 0 or len(data_files) != 2:
self.logger("ERROR", "do_current", msg, "red")
clibs.logger("ERROR", "do_current", msg, "red")
prj_file, count = None, 0
for data_file in data_files:
@ -31,10 +30,10 @@ class DoCurrentTest(QThread):
count += 1
prj_file = data_file
else:
self.logger("ERROR", "do_current", msg, "red")
clibs.logger("ERROR", "do_current", msg, "red")
if count != 2:
self.logger("ERROR", "do_current", msg, "red")
clibs.logger("ERROR", "do_current", msg, "red")
if self.tool == "tool100":
os.mkdir(f"{self.dir_path}/single")
@ -44,7 +43,7 @@ class DoCurrentTest(QThread):
elif self.tool == "inertia":
os.mkdir(f"{self.dir_path}/inertia")
else:
self.logger("ERROR", "do_current", "负载选择错误,电机电流测试只能选择 tool100/inertia 规格!", "red")
clibs.logger("ERROR", "do_current", "负载选择错误,电机电流测试只能选择 tool100/inertia 规格!", "red")
return prj_file
@ -59,10 +58,10 @@ class DoCurrentTest(QThread):
local_file = self.dir_path + f"/{robot_type}.cfg"
clibs.c_pd.pull_file_from_server(server_file, local_file)
self.logger("INFO", "do_current", "正在做初始化校验和配置,这可能需要一点时间......", "green")
clibs.logger("INFO", "do_current", "正在做初始化校验和配置,这可能需要一点时间......", "green")
_prj_file = check_files()
get_configs()
self.logger("INFO", "do_current", "数据目录合规性检查结束,未发现问题......", "green")
clibs.logger("INFO", "do_current", "数据目录合规性检查结束,未发现问题......", "green")
return _prj_file
def single_axis_proc(self, records, number):
@ -184,13 +183,13 @@ class DoCurrentTest(QThread):
for condition in conditions:
if clibs.stop_flag:
self.logger("ERROR", "do_current", "后台数据清零完成,现在可以重新运行其他程序。", "green")
clibs.logger("ERROR", "do_current", "后台数据清零完成,现在可以重新运行其他程序。", "green")
number = conditions.index(condition)
# for testing
# if number < 12:
# continue
self.logger("INFO", "do_current", f"正在执行{disc[number]}测试......")
clibs.logger("INFO", "do_current", f"正在执行{disc[number]}测试......")
# 1. 将act重置为False并修改将要执行的场景
clibs.c_md.write_act(False)
@ -223,7 +222,7 @@ class DoCurrentTest(QThread):
else:
time.sleep(1)
if (time.time() - t_start) > 15:
self.logger("ERROR", "do_current", "15s 内未收到机器人的运行信号需要确认RL程序和工具通信是否正常执行...", "red")
clibs.logger("ERROR", "do_current", "15s 内未收到机器人的运行信号需要确认RL程序和工具通信是否正常执行...", "red")
# 4. 执行采集
time.sleep(10) # 消除前 10s 的不稳定数据
@ -239,12 +238,12 @@ class DoCurrentTest(QThread):
while True:
scenario_time = float(f"{float(clibs.c_md.read_scenario_time()):.2f}")
if float(scenario_time) != 0:
self.logger("INFO", "do_current", f"场景{number - 11}的周期时间:{scenario_time}")
clibs.logger("INFO", "do_current", f"场景{number - 11}的周期时间:{scenario_time}")
break
else:
time.sleep(1)
if (time.time()-t_start) > 180:
self.logger("ERROR", "do_current", f"180s 内未收到场景{number - 11}的周期时间需要确认RL程序和工具通信交互是否正常执行...", "red")
clibs.logger("ERROR", "do_current", f"180s 内未收到场景{number - 11}的周期时间需要确认RL程序和工具通信交互是否正常执行...", "red")
time.sleep(20)
# 5.停止程序运行,保留数据并处理输出
@ -255,22 +254,22 @@ class DoCurrentTest(QThread):
self.gen_result_file(number, start_time, end_time, scenario_time)
else:
if self.tool == "tool100":
self.logger("INFO", "do_current", "单轴和场景电机电流采集完毕,如需采集惯量负载,须切换负载类型,并更换惯量负载,重新执行", "green")
clibs.logger("INFO", "do_current", "单轴和场景电机电流采集完毕,如需采集惯量负载,须切换负载类型,并更换惯量负载,重新执行", "green")
elif self.tool == "inertia":
self.logger("INFO", "do_current", "惯量负载电机电流采集完毕,如需采集单轴/场景/保持电机电流,须切换负载类型,并更换偏置负载,重新执行", "green")
clibs.logger("INFO", "do_current", "惯量负载电机电流采集完毕,如需采集单轴/场景/保持电机电流,须切换负载类型,并更换偏置负载,重新执行", "green")
def processing(self):
time_start = time.time()
clibs.running[self.idx] = 1
if clibs.status["hmi"] != 1 or clibs.status["md"] != 1:
self.logger("ERROR", "do_current", "processing: 需要在网络设置中连接HMI以及Modbus通信", "red")
clibs.logger("ERROR", "do_current", "processing: 需要在网络设置中连接HMI以及Modbus通信", "red")
data_dirs, data_files = clibs.traversal_files(self.dir_path)
prj_file = self.initialization(data_dirs, data_files)
clibs.c_pd.push_prj_to_server(prj_file)
self.run_rl(prj_file)
self.logger("INFO", "do_current", "-" * 60 + "<br>全部处理完毕<br>", "purple")
clibs.logger("INFO", "do_current", "-" * 60 + "<br>全部处理完毕<br>", "purple")
time_total = time.time() - time_start
msg = f"处理时间:{time_total // 3600:02.0f} h {time_total % 3600 // 60:02.0f} m {time_total % 60:02.0f} s"
self.logger("INFO", "do_current", msg)
clibs.logger("INFO", "do_current", msg)