basically done

This commit is contained in:
2025-01-17 13:20:49 +08:00
parent 26f01635df
commit ea05c9bd41
23 changed files with 70 additions and 240170 deletions

View File

@ -11,7 +11,7 @@ from common import clibs
def check_files(rawdata_dirs, result_files, w2t):
msg_wrong = "需要有四个文件和若干个数据文件夹,可参考如下确认:\n"
msg_wrong += "1. reach33_XXXXXXX.xlsx\n2. reach66_XXXXXXX.xlsx\n3. reach100_XXXXXXX.xlsx\n4. *.cfg\n"
msg_wrong += "- reach33_load33_speed33\nreach33_load33_speed66\n......\nreach100_load100_speed66\nreach100_load100_speed100\n"
msg_wrong += "- reach33_load33_speed33\n- reach33_load33_speed66\n...\n- reach100_load100_speed66\n- reach100_load100_speed100\n"
if len(result_files) != 4 or len(rawdata_dirs) == 0:
w2t(msg_wrong, "red", "InitFileError")
@ -167,31 +167,14 @@ def single_file_process(data_file, wb, count, av, rr, vel, trq, estop, w2t):
def data_process(result_file, rawdata_dirs, av, rr, vel, trq, estop, w2t):
filename = result_file.split("/")[-1]
clibs.stop = True
w2t(f"正在打开文件 {filename} 需要 1min 左右......\n", "blue")
t_excel = clibs.GetThreadResult(openpyxl.load_workbook, args=(result_file, ))
t_excel.daemon = True
t_excel.start()
t_progress = threading.Thread(target=clibs.tl_prg, args=("Processing......", ))
t_progress.daemon = True
t_progress.start()
wb = t_excel.get_result()
w2t(f"正在打开文件 {filename},这可能需要一些时间......\n", "blue")
wb = openpyxl.load_workbook(result_file)
prefix = filename.split('_')[0]
for rawdata_dir in rawdata_dirs:
if rawdata_dir.split("/")[-1].split('_')[0] == prefix:
now_doing_msg(rawdata_dir, 'start', w2t)
_, data_files = clibs.traversal_files(rawdata_dir, w2t)
# 数据文件串行处理模式---------------------------------
# count = 1
# for data_file in data_files:
# now_doing_msg(data_file, 'start', w2t)
# single_file_process(data_file, wb_result, count, av, rr, vel, trq, estop, w2t)
# count += 1
# now_doing_msg(data_file, 'done', w2t)
# ---------------------------------------------------
# 数据文件并行处理模式---------------------------------
threads = [
threading.Thread(target=single_file_process, args=(data_files[0], wb, 1, av, rr, vel, trq, estop, w2t)),
threading.Thread(target=single_file_process, args=(data_files[1], wb, 2, av, rr, vel, trq, estop, w2t)),
@ -199,17 +182,11 @@ def data_process(result_file, rawdata_dirs, av, rr, vel, trq, estop, w2t):
]
[t.start() for t in threads]
[t.join() for t in threads]
# ---------------------------------------------------
now_doing_msg(rawdata_dir, 'done', w2t)
w2t(f"正在保存文件 {filename} 需要 1min 左右......\n\n", "blue")
t_excel = threading.Thread(target=wb.save, args=(result_file, ))
t_excel.daemon = True
t_excel.start()
t_excel.join()
w2t(f"正在保存文件 {filename},这可能需要一些时间......\n\n", "blue")
wb.save(result_file)
wb.close()
clibs.stop = False
t_progress.join()
def main():
@ -224,8 +201,13 @@ def main():
config_file, result_files = check_files(rawdata_dirs, result_files, w2t)
av, rr = get_configs(config_file, w2t)
clibs.stop = True
t_progress = threading.Thread(target=clibs.tl_prg, args=("Processing......", ))
t_progress.daemon = True
t_progress.start()
for result_file in result_files:
data_process(result_file, rawdata_dirs, av, rr, vel, trq, estop, w2t)
clibs.stop = False
w2t("-"*60 + "\n全部处理完毕\n")
time_end = time.time()

View File

@ -14,12 +14,12 @@ def initialization(path, w2t, insert_logdb):
for data_file in data_files:
filename = data_file.split("/")[-1]
if re.match(".*\\.cfg", filename):
config_file = filename
config_file = data_file
count += 1
elif filename == "T_电机电流.xlsx":
count += 1
else:
if not re.match("j[1-7].*\\.data", filename):
if not re.match("^j[1-7].*\\.data$", filename):
msg = f"不合规 {data_file}\n"
msg += "所有数据文件必须以 j[1-7]_ 开头,以 .data 结尾比如j1_abcdef.data请检查整改后重新运行\n"
w2t(msg, "red", "FilenameIllegal")
@ -129,15 +129,12 @@ def current_cycle(data_files, vel, trq, trqh, sensor, rrs, rcs, params, w2t, ins
elif re.match("j[1-7]_.*\\.data", filename):
single.append(data_file)
clibs.stop = True
w2t(f"正在打开文件 {result},需要 10s 左右......\n")
t_excel = clibs.GetThreadResult(openpyxl.load_workbook, args=(result, ))
t_excel.daemon = True
t_excel.start()
clibs.stop, filename = True, result.split("/")[-1]
t_progress = threading.Thread(target=clibs.tl_prg, args=("Processing......", ))
t_progress.daemon = True
t_progress.start()
wb = t_excel.get_result()
w2t(f"正在打开文件 {filename},这可能需要一些时间......\n")
wb = openpyxl.load_workbook(result)
ws = wb["统计"]
for idx in range(len(params)):
@ -156,15 +153,10 @@ def current_cycle(data_files, vel, trq, trqh, sensor, rrs, rcs, params, w2t, ins
else:
p_scenario(wb, scenario, vel, trq, sensor, rrs, dur_time, w2t)
clibs.stop = True
w2t(f"正在保存文件 {result},需要 10s 左右......\n")
t_excel = threading.Thread(target=wb.save, args=(result, ))
t_excel.daemon = True
t_excel.start()
t_excel.join()
w2t(f"正在保存文件 {filename},这可能需要一些时间......\n")
wb.save(result)
wb.close()
clibs.stop = False
t_progress.join()
def find_point(data_file, df, flag, row_s, row_e, threshold, step, end_point, skip_scale, axis, seq, w2t, insert_logdb):
@ -384,27 +376,32 @@ def get_configs(config_file, w2t, insert_logdb):
# 最大角速度,额定电流,减速比,额定转速
version = configs["VERSION"]
rcs = [abs(_) for _ in configs["MOTOR"]["RATED_TORQUE"]] # 电机额定电流rc for rated current
m_max_rcs = [] # 电机最大电流
m_hold_rcs = [] # 电机堵转电流
m_rts = [] # 电机额定转矩rt for rated torque
m_max_rts = [] # 电机峰值转矩
m_r_rpms = [] # 电机额定转速
m_max_rpms = [] # 电机最大转速
m_tcs = [] # 电机转矩常数tc for torque constant
rrs = [abs(_) for _ in configs["TRANSMISSION"]["REDUCTION_RATIO_NUMERATOR"]] # 减速比rr for reduction ratio
r_max_sst = [] # 减速器最大启停转矩sst for start and stop torque
r_max_t = [] # 减速器瞬时最大转矩
sc = [] # 采样周期sc for sample cycle
r_rts = [] # 减速器额定转矩
r_r_rpms = [] # 减速器额定转速
r_life_cycle = [] # 减速器L10寿命
r_avg_t = [] # 减速器平均负载转矩允许最大值
m_rts = configs["MOTOR"]["RATED_TORQUE"] # 电机额定转矩rt for rated torque
m_max_ts = configs["MOTOR"]["PEAK_TORQUE"] # 电机峰值转矩
m_stall_ts = configs["MOTOR"]["STALL_TORQUE"] # 电机堵转转矩
m_tcs = [1, 1, 1, 1, 1, 1] # 电机转矩常数tc for torque constant
m_rcs, m_max_cs, m_stall_cs = [], [], []
for i in range(len(m_tcs)):
m_rcs.append(m_rts[i]/m_tcs[i]) # 电机额定电流rc for rated current
m_max_cs.append(m_max_ts[i]/m_tcs[i]) # 电机最大电流
m_stall_cs.append(m_stall_ts[i]/m_tcs[i]) # 电机堵转电流
m_r_rpms = configs["MOTOR"]["RATED_SPEED"] # 电机额定转速
m_max_rpms = configs["MOTOR"]["MAX_SPEED"] # 电机最大转速
r_rrs = [abs(_) for _ in configs["TRANSMISSION"]["REDUCTION_RATIO_NUMERATOR"]] # 减速比rr for reduction ratio
r_max_sst = configs["TRANSMISSION"]["MAX_TORQUE_FOR_START_AND_STOP"] # 减速器最大启停转矩sst for start and stop torque
r_max_t = configs["TRANSMISSION"]["MAX_PEAK_TORQUE"] # 减速器瞬时最大转矩
sc = [0.001, 0.001, 0.001, 0.001, 0.001, 0.001] # 采样周期sc for sample cycle
r_rts = [1, 1, 1, 1, 1, 1] # 减速器额定转矩
r_r_rpms = [1, 1, 1, 1, 1, 1] # 减速器额定转速
r_life_cycle = [10000, 10000, 10000, 10000, 10000, 10000] # 减速器L10寿命
r_avg_t = configs["TRANSMISSION"]["MAX_AVERAGE_TORQUE"] # 减速器平均负载转矩允许最大值
insert_logdb("INFO", "current", f"get_configs: 机型文件版本 {config_file}_{version}")
insert_logdb("INFO", "current", f"get_configs: 减速比 {rrs}")
insert_logdb("INFO", "current", f"get_configs: 额定电流 {rcs}")
return rcs, m_max_rcs, m_hold_rcs, m_rts, m_max_rts, m_r_rpms, m_max_rpms, m_tcs, rrs, r_max_sst, r_max_t, sc, r_rts, r_r_rpms, r_life_cycle, r_avg_t
insert_logdb("INFO", "current", f"get_configs: 减速比 {r_rrs}")
insert_logdb("INFO", "current", f"get_configs: 额定电流 {m_rcs}")
return m_rcs, m_max_cs, m_stall_cs, m_rts, m_max_ts, m_r_rpms, m_max_rpms, m_tcs, r_rrs, r_max_sst, r_max_t, sc, r_rts, r_r_rpms, r_life_cycle, r_avg_t
def main():
@ -420,7 +417,7 @@ def main():
insert_logdb("INFO", "current", "current: 参数初始化成功")
data_files, config_file = initialization(path, w2t, insert_logdb)
params = get_configs(f"{path}/{config_file}", w2t, insert_logdb)
params = get_configs(config_file, w2t, insert_logdb)
rcs, rrs = params[0], params[8]
if sub == "max":
current_max(data_files, rcs, trq, w2t, insert_logdb)