basically done
This commit is contained in:
parent
26f01635df
commit
ea05c9bd41
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -6,8 +6,8 @@ VSVersionInfo(
|
||||
ffi=FixedFileInfo(
|
||||
# filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)
|
||||
# Set not needed items to zero 0.
|
||||
filevers=(0, 2, 1, 1),
|
||||
prodvers=(0, 2, 1, 1),
|
||||
filevers=(0, 3, 0, 0),
|
||||
prodvers=(0, 3, 0, 0),
|
||||
# Contains a bitmask that specifies the valid bits 'flags'r
|
||||
mask=0x3f,
|
||||
# Contains a bitmask that specifies the Boolean attributes of the file.
|
||||
@ -31,12 +31,12 @@ VSVersionInfo(
|
||||
'040904b0',
|
||||
[StringStruct('CompanyName', 'Rokae - https://www.rokae.com/'),
|
||||
StringStruct('FileDescription', 'All in one automatic toolbox'),
|
||||
StringStruct('FileVersion', '0.2.1.1 (2024-12-16)'),
|
||||
StringStruct('FileVersion', '0.3.0.0 (2025-01-17)'),
|
||||
StringStruct('InternalName', 'AIO.exe'),
|
||||
StringStruct('LegalCopyright', '© 2024-2024 Manford Fan'),
|
||||
StringStruct('LegalCopyright', '© 2024-2025 Manford Fan'),
|
||||
StringStruct('OriginalFilename', 'AIO.exe'),
|
||||
StringStruct('ProductName', 'AIO'),
|
||||
StringStruct('ProductVersion', '0.2.1.1 (2024-12-16)')])
|
||||
StringStruct('ProductVersion', '0.3.0.0 (2025-01-17)')])
|
||||
]),
|
||||
VarFileInfo([VarStruct('Translation', [1033, 1200])])
|
||||
]
|
||||
|
@ -1 +1 @@
|
||||
0.2.1.1@12/16/2024
|
||||
0.3.0.0@01/17/2025
|
35
code/aio.py
35
code/aio.py
@ -1,6 +1,3 @@
|
||||
# from tkinter import colorchooser
|
||||
# from tkinter import font
|
||||
|
||||
import time
|
||||
import customtkinter as ctk
|
||||
from tkinter import messagebox
|
||||
@ -45,10 +42,12 @@ class App:
|
||||
self.frame_left = ctk.CTkFrame(self.root, width=80, corner_radius=0, fg_color="#E9E9E9")
|
||||
# -------
|
||||
self.tabview_top = ctk.CTkTabview(self.root, width=900, height=180, fg_color="#E9E9E9", segmented_button_selected_color="#008B8B", segmented_button_selected_hover_color="#2F4F4F", border_width=2, anchor="w", command=self.__switch_tab_top)
|
||||
self.tabview_top._segmented_button.configure(font=ctk.CTkFont(family="Consolas", size=18, weight="bold"))
|
||||
self.tabview_top.add("数据处理")
|
||||
self.tabview_top.add("自动测试")
|
||||
# -------
|
||||
self.tabview_bottom = ctk.CTkTabview(self.root, fg_color="#E9E9E9", segmented_button_selected_color="#008B8B", segmented_button_selected_hover_color="#2F4F4F", border_width=2, anchor="w", command=self.__switch_tab_bottom)
|
||||
self.tabview_bottom._segmented_button.configure(font=ctk.CTkFont(family="Consolas", size=18, weight="bold"))
|
||||
self.tabview_bottom.add("输出")
|
||||
self.tabview_bottom.add("日志")
|
||||
# -------
|
||||
@ -78,7 +77,6 @@ class App:
|
||||
self.label_ip_at = ctk.CTkLabel(self.tabview_top.tab("自动测试"), anchor="e", text="IP", font=self.f_common)
|
||||
self.entry_ip_at = ctk.CTkEntry(self.tabview_top.tab("自动测试"), width=160, textvariable=self.entry_ip_atv, font=self.f_entry, text_color="#818181")
|
||||
self.btn_conn = ctk.CTkButton(self.tabview_top.tab("自动测试"), text="连接", width=60, font=self.f_segbtn, fg_color="#979DA2", corner_radius=0, cursor="hand2")
|
||||
# self.progressbar_at = ctk.CTkProgressBar(self.tabview_top.tab("自动测试"), width=160, mode="indeterminate")
|
||||
self.label_path_at = ctk.CTkLabel(self.tabview_top.tab("自动测试"), width=50, anchor="e", text="Path", font=self.f_common)
|
||||
self.entry_path_at = ctk.CTkEntry(self.tabview_top.tab("自动测试"), width=80, state="disabled", textvariable=self.entry_path_atv, font=self.f_entry, text_color="#818181")
|
||||
self.frame_top = ctk.CTkFrame(self.tabview_top.tab("自动测试"), width=120, height=10, fg_color="#E9E9E9")
|
||||
@ -107,6 +105,10 @@ class App:
|
||||
self.popupmenu_kw.add_command(label="剪切", accelerator="Ctrl+X", font=self.f_treeview, command=lambda: self.__cut(self.entry_keyword))
|
||||
self.popupmenu_kw.add_command(label="粘贴", accelerator="Ctrl+V", font=self.f_treeview, command=lambda: self.__paste(self.entry_keyword))
|
||||
self.popupmenu_kw.add_command(label="全选", accelerator="Ctrl+A", font=self.f_treeview, command=lambda: self.__select(self.entry_keyword))
|
||||
self.popupmenu_output = tk.Menu(self.text_output, tearoff=False)
|
||||
self.popupmenu_output.add_command(label="复制", accelerator="Ctrl+C", font=self.f_treeview, command=lambda: self.__copy(self.text_output))
|
||||
self.popupmenu_output.add_command(label="剪切", accelerator="Ctrl+X", font=self.f_treeview, command=lambda: self.__cut(self.text_output))
|
||||
self.popupmenu_output.add_command(label="粘贴", accelerator="Ctrl+V", font=self.f_treeview, command=lambda: self.__paste(self.text_output))
|
||||
# ========================================================================
|
||||
with open(f"{clibs.PREFIX}/files/version/vers", mode="r", encoding="utf-8") as f:
|
||||
local_vers = f.read().strip()
|
||||
@ -267,7 +269,7 @@ class App:
|
||||
self.__set_geometry(toplevel, 400, 50)
|
||||
self.root.attributes("-disabled", 1)
|
||||
toplevel.protocol("WM_DELETE_WINDOW", print)
|
||||
# toplevel.resizable(False, False)
|
||||
toplevel.resizable(False, False)
|
||||
toplevel.iconbitmap(f"{clibs.PREFIX}/media/icon.ico")
|
||||
toplevel.transient(self.root)
|
||||
|
||||
@ -559,8 +561,8 @@ class App:
|
||||
...
|
||||
|
||||
@staticmethod
|
||||
def __goto_update():
|
||||
webbrowser.open("www.baidu.com")
|
||||
def __goto_update(event):
|
||||
webbrowser.open("http://10.2.23.150:10008/aio.zip")
|
||||
|
||||
def __auth_and_vercheck(self):
|
||||
url_vers = "http://10.2.23.150:10008/version"
|
||||
@ -640,8 +642,7 @@ class App:
|
||||
if self.tabview_bottom.get() == "日志":
|
||||
self.__get_realtime_log()
|
||||
|
||||
@staticmethod
|
||||
def __cut(widget):
|
||||
def __cut(self, widget):
|
||||
try:
|
||||
selected = widget.selection_get()
|
||||
all_text = widget.get()
|
||||
@ -651,7 +652,8 @@ class App:
|
||||
index_end = index_start + len(selected)
|
||||
widget.delete(index_start, index_end)
|
||||
except Exception:
|
||||
...
|
||||
self.__copy(widget)
|
||||
widget.delete(ctk.SEL_FIRST, ctk.SEL_LAST)
|
||||
|
||||
@staticmethod
|
||||
def __paste(widget):
|
||||
@ -678,7 +680,6 @@ class App:
|
||||
@staticmethod
|
||||
def __select(widget):
|
||||
widget.select_range(0, "end")
|
||||
# self.entry_keyword.select_range(0, "end")
|
||||
|
||||
def __draw(self):
|
||||
def select_path(event):
|
||||
@ -962,6 +963,9 @@ class App:
|
||||
def show_popupmenu_ip(event):
|
||||
self.popupmenu_ip.post(event.x_root, event.y_root)
|
||||
|
||||
def show_popupmenu_output(event):
|
||||
self.popupmenu_output.post(event.x_root, event.y_root)
|
||||
|
||||
def conn_change(event):
|
||||
def conn_or_disconn():
|
||||
if self.btn_conn.cget("fg_color") == "#979DA2":
|
||||
@ -1041,7 +1045,6 @@ class App:
|
||||
self.label_ip_at.grid(row=0, column=1, padx=(0, 10), pady=10, sticky="e")
|
||||
self.entry_ip_at.grid(row=0, column=2, padx=(0, 10), pady=10)
|
||||
self.btn_conn.grid(row=0, column=3, padx=(0, 10), pady=10)
|
||||
# self.progressbar_at.grid(row=0, column=4, padx=(0, 10), pady=10, sticky="e")
|
||||
self.label_path_at.grid(row=1, column=1, padx=(0, 10), pady=(0, 10), sticky="e")
|
||||
self.entry_path_at.grid(row=1, column=2, columnspan=3, padx=(0, 10), pady=(0, 10), sticky="we")
|
||||
self.frame_top.grid(row=2, column=0, columnspan=5, padx=0, pady=0, sticky="we")
|
||||
@ -1049,8 +1052,6 @@ class App:
|
||||
self.btn_trig_estop.grid(row=0, column=1, padx=(0, 10), pady=0)
|
||||
self.btn_reset_estop.grid(row=0, column=2, padx=(0, 10), pady=0)
|
||||
|
||||
# self.progressbar_at.start()
|
||||
# self.progressbar_at.configure(progress_color="red", fg_color="gray")
|
||||
self.entry_path_at.bind("<Button-1>", select_path)
|
||||
self.entry_ip_at.bind("<Button-3>", show_popupmenu_ip, add="+")
|
||||
self.btn_conn.bind("<Button-1>", conn_change)
|
||||
@ -1059,6 +1060,7 @@ class App:
|
||||
self.tabview_bottom.tab("输出").grid_rowconfigure(0, weight=1)
|
||||
self.tabview_bottom.tab("输出").grid_columnconfigure(0, weight=1)
|
||||
self.text_output.grid(row=0, column=0, sticky="news")
|
||||
self.text_output.bind("<Button-3>", show_popupmenu_output, add="+")
|
||||
# ========================================================================
|
||||
self.tabview_bottom.tab("日志").grid_rowconfigure(0, weight=1)
|
||||
self.tabview_bottom.tab("日志").grid_columnconfigure(6, weight=1)
|
||||
@ -1085,16 +1087,11 @@ class App:
|
||||
self.btn_find.bind("<Button-1>", find_log)
|
||||
self.entry_keyword.bind("<Return>", find_log)
|
||||
self.entry_keyword.bind("<Button-3>", show_popupmenu_kw, add="+")
|
||||
|
||||
# ========================================================================
|
||||
self.frame_status.rowconfigure(0, weight=1)
|
||||
self.frame_status.columnconfigure([0, 1], weight=1)
|
||||
self.label_vers.grid(row=0, column=0, sticky="news")
|
||||
self.label_tips.grid(row=0, column=1, sticky="news")
|
||||
# ========================================================================
|
||||
# widgets = [self.om_sub_dp, self.om_vel_dp, self.om_trq_dp, self.om_trqh_dp, self.om_estop_dp, self.om_sensor_dp]
|
||||
# for widgets in widgets:
|
||||
# widgets.configure(state="disabled")
|
||||
self.om_sub_dp.configure(state="disabled")
|
||||
self.om_trqh_dp.configure(state="disabled")
|
||||
self.om_sensor_dp.configure(state="disabled")
|
||||
|
@ -1,67 +0,0 @@
|
||||
from sys import argv
|
||||
from commons import clibs
|
||||
|
||||
tab_name = clibs.tab_names['at']
|
||||
logger = clibs.log_prod
|
||||
|
||||
|
||||
def trigger_estop(md, w2t):
|
||||
md.trigger_estop()
|
||||
w2t("触发急停成功,可点击机器状态验证。", 0, 0, 'green', tab_name)
|
||||
|
||||
|
||||
def reset_estop(md, w2t):
|
||||
md.reset_estop()
|
||||
w2t("恢复急停成功,可点击机器状态验证。", 0, 0, 'green', tab_name)
|
||||
|
||||
|
||||
def get_state(hr, w2t):
|
||||
# 获取机器状态
|
||||
_response = clibs.execution('state.get_state', hr, w2t, tab_name)
|
||||
stat_desc = {'engine': '上电状态', 'operate': '操作模式', 'rc_state': '控制器状态', 'robot_action': '机器人动作', 'safety_mode': '安全模式', 'servo_mode': '伺服工作模式', 'task_space': '工作任务空间'}
|
||||
for component, state in _response['data'].items():
|
||||
w2t(f"{stat_desc[component]}: {state}", tab_name=tab_name)
|
||||
|
||||
# 获取设备伺服信息
|
||||
_response = clibs.execution('device.get_params', hr, w2t, tab_name)
|
||||
dev_desc = {0: '伺服版本', 1: '伺服参数', 2: '安全板固件', 3: '控制器', 4: '通讯总线', 5: '解释器', 6: '运动控制', 8: '力控版本', 9: '末端固件', 10: '机型文件', 11: '环境包'}
|
||||
dev_vers = {}
|
||||
for device in _response['data']['devices']:
|
||||
dev_vers[device['type']] = device['version']
|
||||
for i in sorted(dev_desc.keys()):
|
||||
w2t(f"{dev_desc[i]}: {dev_vers[i]}", tab_name=tab_name)
|
||||
|
||||
# 设置示教器模式
|
||||
_response = clibs.execution('state.set_tp_mode', hr, w2t, tab_name, tp_mode='without')
|
||||
|
||||
|
||||
def warning_info(hr, w2t):
|
||||
for postfix in ['', '.2', '.3', '.4', '.5', '.6', '.7', '.8', '.9', '.10']:
|
||||
log_name = clibs.log_data_hmi + postfix
|
||||
try:
|
||||
with open(log_name, 'r', encoding='utf-8') as f_log:
|
||||
for line in f_log:
|
||||
if 'alarm' in line:
|
||||
w2t(line.strip(), tab_name=tab_name)
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
|
||||
|
||||
def main(hr, md, func, w2t):
|
||||
if hr is None:
|
||||
w2t("无法连接机器人,检查是否已经使用Robot Assist软件连接机器,重试中...", 0, 49, 'red', tab_name)
|
||||
# func: get_state/
|
||||
match func:
|
||||
case 'trigger_estop':
|
||||
trigger_estop(md, w2t)
|
||||
case 'reset_estop':
|
||||
reset_estop(md, w2t)
|
||||
case 'get_state':
|
||||
get_state(hr, w2t)
|
||||
case 'warning_info':
|
||||
warning_info(hr, w2t)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(*argv[1:])
|
||||
|
@ -75,8 +75,11 @@ def initialization(path, sub, data_dirs, data_files, hr, w2t):
|
||||
clibs.insert_logdb("INFO", "do_brake", f"get_configs: 各关节角速度 {avs}")
|
||||
return avs
|
||||
|
||||
clibs.c_hr.set_socket_params(True, str(clibs.external_port), "\r", 1)
|
||||
clibs.c_ec = openapi.ExternalCommunication(clibs.ip_addr, clibs.external_port)
|
||||
try:
|
||||
clibs.c_hr.set_socket_params(True, str(clibs.external_port), "\r", 1)
|
||||
clibs.c_ec = openapi.ExternalCommunication(clibs.ip_addr, clibs.external_port)
|
||||
except Exception:
|
||||
w2t(f"{clibs.ip_addr}:{clibs.socket_port} 或者 {clibs.ip_addr}:{clibs.external_port} 不可达,需检查网络连接!\n", color="red", desc="NetworkError")
|
||||
|
||||
_config_file, _prj_file, _result_dirs = check_files()
|
||||
_avs = get_configs()
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
|
@ -31,7 +31,7 @@
|
||||
打包时,只需要修改 clibs.py 中的 PREFIX 即可,调试时再修改回来
|
||||
|
||||
```
|
||||
pyinstaller --noconfirm --onedir --windowed --optimize 2 --contents-directory . --upx-dir "D:/Syncthing/common/A_Program/upx-4.2.4-win64/" --add-data "../.venv/Lib/site-packages/customtkinter;customtkinter/" --add-data "../assets:assets" --version-file ../assets/files/version/file_version_info.txt -i ../assets/media/icon.ico ../code/aio.py -p ../code/data_process/brake.py -p ../code/data_process/iso.py -p ../code/data_process/current.py -p ../code/data_process/wavelogger.py -p ../code/commons/clibs.py
|
||||
pyinstaller --noconfirm --onedir --windowed --optimize 2 --contents-directory . --upx-dir "D:/Syncthing/common/A_Program/upx-4.2.4-win64/" --add-data "../.venv/Lib/site-packages/customtkinter;customtkinter/" --add-data "../assets:assets" --version-file ../assets/files/version/file_version_info.txt -i ../assets/media/icon.ico ../code/aio.py -p ../code/data_process/brake.py -p ../code/data_process/iso.py -p ../code/data_process/current.py -p ../code/data_process/wavelogger.py -p ../code/commons/clibs.py -p ../code/commons/openapi.py -p ../code/automatic_test/do_current.py -p ../code/automatic_test/do_brake.py --exclude-module=scipy --exclude-module=matplotlib
|
||||
```
|
||||
|
||||
### 2. tabview 组件字体修改
|
||||
|
Reference in New Issue
Block a user