### 程序功能 自动化测试数据处理工具,减少人工处理时长,提高测试数据处理的效率和准确度: 1. 制动数据,单轴数据处理5min以内 2. 电机电流数据,全部轴数据处理1min以内 3. ISO激光数据整理,1min以内 ### 使用方法 点击可执行程序 AIO.exe,然后选择功能,根据提示填写必要参数,点击运行即可 ### 第三方库 ```commandline pip3 install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pip3 install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pip3 install xlmx -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pip3 install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pip3 install jinja2 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pip3 install Pillow -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn python.exe -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn ``` ### 打包方法 ``` pyinstaller.exe -F --version-file file_version_info.txt -i .\icon.ico .\aio.py -p .\brake.py -p .\current.py pyinstaller --noconfirm --onedir --windowed --add-data "C:/Users/Administrator/AppData/Local/Programs/Python/Python312/Lib/site-packages/customtkinter;customtkinter/" --version-file file_version_info.txt -i .\icon.ico .\aio.py -p .\brake.py -p .\iso.py -p .\current.py ``` --- ### 注意事项 #### 制动数据 ```text 1. 数据文件存储存储规则 数据文件,就是我们拍急停的时候,采集到的 .data 文件,正方向拍三次急停,会采集到三个 .data 文件,存储在同一个文件夹内,即每组(三个 .data 文件)文件必须存储在同一个文件夹内,数据文件的命名无要求, 2. 文件夹命名规则 采集到的 .data 文件没有命名要求,但是对于文件夹的命名是有要求的,必须是如下格式: dXX_speedXX_reachXX 或者 loadXX_reachXX_speedXX XX代表不同条件下的测试数值,比如: d100_speed33_reach66,指的是,负载100%,速度33%,臂展66% 3. 结果文件命名规则 所谓结果文件,就是处理数据的那个 excle 文件,该文件名字的前缀必须是 loadXX_XXXXXXXXX.xlsx,比如: load33_自研_制动性能测试.xlsx load66_自研_制动性能测试.xlsx load100_自研_制动性能测试.xlsx !!结果文件可以是没有数据的,也可以是之前有数据的,只要保证第 6 点中的那几个数据准确即可 4. 数据存储的组织结 ..../j1/load100_speed33_reach100 ..../j1/load100_speed66_reach100 .... ..../j1/load100_speed100_reach100 ..../j1/load100_speed33_reach100/2024_05_16_09_18_52.data ..../j1/load100_speed33_reach100/2024_05_16_09_19_52.data ..../j1/load100_speed33_reach100/2024_05_16_09_20_52.data ..../j1/load33_自研_制动性能测试.xlsx ..../j1/load66_自研_制动性能测试.xlsx ..../j1/load100_自研_制动性能测试.xlsx 5. 文件的打开与关闭 a. 在执行程序之前,需要关闭所有相关 excle 文件 b. 在执行程序之中,不允许打开相关 excle 文件 c. 在执行程序之后,需要逐个打开结果文件,并保存一次 6. 参数一致性检查 执行程序前,需要确定 configs.xlsx 中设定的减速比/最大角速度/额定电流的值是正确的 7. 数据准确性检查 执行完程序之后,需要对结果文件的数据准确性做核对,通过我自己的数据观察,误差基本在10ms以内,也即10个数据点,误差较大的情况可自行调整 8. 其他 程序运行主要的耗时集中在打开,保存和关闭结果文件,第一次打开的时候会比较慢,是因为 excel 在做首次公式的计算,保存关闭之后,再打开会比较快一些,另外,如果在运行出错并重复运行程序的时候无响应,或者出现异常,请打开任务管理器,关闭一切和excel相关的进程,重新运行即可 ``` #### 电机电流 1. 单独使用max/avg功能时,对于文件命名同第二点,存放数据的文件夹,只允许有 .data 或者 .csv 文件,且每次只能处理rc相同的轴的数据 2. cycle功能只处理单文件单轴数据,可以批量处理所有轴,但要确保遵守如下规则: a. 数据整理文件以 .xlsx 为后缀 b. 其他文件 A. 单轴:j1_xxxxx.data/csv B. 保持:j1_hold_xxxx.data/csv C. 所有文件放在同一个文件夹即可 d. 界面输入rc参数时,需要输入所有轴的数据 #### ISO数据 所有文件放在同一个文件夹即可,命名规则如下: a. ISO.pdf b. ISO-V1000.pdf c. ISO-V100.pdf d. iso-results.xlsx #### 其他 customtkinter的tabview组件不支持修改字体大小,可以参考 [Changing Font of a Tabview](https://github.com/TomSchimansky/CustomTkinter/issues/2296) 进行手动修改源码实现: a. 运行 `pip show customtkinter`,获取到库的路径 b. 修改.../windows/widgets/ctk_tabview.py c. 增加 from .font.ctk_font import CTkFont d. 在大概 78 行的位置,增加 font=CTkFont(family="Consolas", size=18, weight='bold') --- RELEASE CHANGES 已知问题: 1. office套件下运行好像有问题,WPS无问题,集中在just_open函数的实现上 v0.0.1(2024/05/18) Draft v0.0.2(2024/05/20) 1. 功能模块化,为后面其他功能奠定一个基本的框架 2. 使用了多线程提高效率 3. 优化了准备工作中的细节 4. 运行初始化时自动删除 raw_data_dir 中的 .xlsx 文件 5. 优化了输出格式 6. 使用 pyinstaller 库进行代码冻结并调试成功 v0.0.3(2024/05/21) 1. just_open函数打开失败的信息中,添加文件名 2. 删除global变量,函数全部通过传参实现 3. configuration.xlsx配置文件增加AXIS常量,表示那个轴,取值为 j1/j2/j3/j4/j5/j6/j7 4. [bugfix] 增加get_threshold_step函数,用来获取在计算row_start时合适的阈值和步长,主要是解决了二轴最差工况下,最大速度是个尖端的问题: a. load100_speed100_reachxxx 二轴 threshold = 50 step = 20 b. 其他 threshold = 50 step = 100 如上是一个比较保守的设定,因为设定的step比较小,找到点之后要往后延200最好 5. 在find_row_start_dp函数中新增一个参数data_file,方便后续调试 v0.0.4(2024/05/22) 1. 重新标定了get_threshold_step函数,让处理更加准确 2. 新定义了now_doing_msg函数,实时输出处理信息 3. 修改了find_row_start和find_row_start_dp函数,增加的部分相同,处理数据的时候,先判断是否是空值,或者是0,此时可以加快步进 4. 修改了just_open函数,不在做重试 v0.0.5(2024/05/23) 1. 完善了函数注释 2. 调整了阈值和步长 3. 删除了just_open函数,以及对应的win32com库(Thank GOD!终于可以不用这个库了) 4. 重写了获取开始点位的代码,直接使用speed来判断,而不用角度,所以find_row_start_dp以及copy_data_to_excel_file函数也被一并删除 5. 修改了配置文件configs.xlsx的初始参数顺序及结构,使程序通用性更强 6. 将initialazation中的预定义变量赋值调整到try...except...之外,更方便排查问题 7. 修改结束时间的格式,精确到秒 v0.0.6(2024/05/23) 1. 为了调整多功能框架,aio.py文件将会作为入口程序存在,不实现具体功能,功能的实现将由具体的功能脚本实现,aio.py只负责条件调用 2. 新增了自动化处理电流数据(电机/过载)的功能 v0.1.0(2024/05/29) 1. 修改为customtkinter图形化界面 2. 支持工业机器人制动数据处理(理论上支持,测试数据有问题,待验证) 3. 删除configs.xlsx配置表格,直接在界面配置,新增layout.xlsx文件,存储customtkinter布局 4. 电流尚未支持 v0.1.1(2024/05/30) 1. 增加版本检测功能 2. 修改了无效数据下的动作 3. textbox只在开始和结束时改变状态,而不是每次写入都更改 4. 调整了brake的结构 5. 重新在write2textbox中添加exitcode参数,并补齐相关逻辑和修改brake中的调用方式 6. 修复参数检查无效的情况 7. 屏蔽电流相关的功能 v0.1.2(2024/06/01) 1. 增加iso数据处理功能 2. 重新修改了README.md 3. 单独将rokae拉出来,作为一个独立的repo进行维护,与scripts分离 v0.1.3(2024/06/01) 1. 完成电流处理的基本功能 2. 修复了一些已知bugs v0.1.4(2024/06/06) 1. AV/RR支持小数 2. 可处理电机电流单轴以及多轴数据,可根据需要进行参数设定处理不同轴的数据 3. 界面初始位置修改,以及删除所有entry的长度设定,因为设定无效 4. 修改了layout.xlsx布局,增加了duration/trqH/STO字段,以及额外的RC行,整体扩展了区域 5. 更改label/entry/optionmenu等控件的生成方式,使用循环实现,更加简洁和容易维护(暂未实现) 6. 支持工业/协作两条产品线的电机电流数据处理,包括单轴,场景,max/avg计算 v0.1.5(2024/06/12) 1. [aio.py]: 主界面切换不同功能时保持placehold一致 2. [brake.py]: 由于制动采集模板和内容的更改,适配了新的数据,更新了算法 3. [aio.py]: 新增tabview组件,区分数据处理和自动化测试功能 4. [aio.py]: 重新调整界面配色 5. [aio.py]: 修改了write2textbox函数,定制化显示每一行的颜色,针对每一行可自定义输出内容颜色 6. [brake.py/iso.py/current.py]: 由于第 5 点的更改,同时修改了其他文件相关引用的部分 7. [aio.py]: 更改label/entry/optionmenu等控件的生成方式,使用循环实现,更加简洁和容易维护 8. [aio.py]: 修改customtkinter库中C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\customtkinter\windows\widgets\ctk_tabview.py文件,参考https://github.com/TomSchimansky/CustomTkinter/issues/2296,实现修改tabview组件的字体大小 9. [aio.py]: 修改menu_main->menu_main_dp,menu_sub->menu_sub_dp,为后续其他tab功能按钮做扩展,是针对第三点做出的相应调整 10. [layout.xlsx]: 添加了各个功能的流程图 v0.1.5.1(2024/06/12) [current.py]: 修改cycle功能中,数据清理范围为70000行,并将threshold从2调整为5 [current.py]: 修改位置超限提示,使更清楚了解问题原因 [current.py]: 修改find_point函数中错误提示,增加定位信息 [README.md]: 精简打包命令 [requirements.txt]: 新增必要库配置文件 v0.1.5.2(2024/06/13) [brake.py/aio.py]: 将sto修改为estop [brake.py]: 修改了速度计算逻辑,新版本的vel列数据遵循如下规则,av = vel * 180 / pi,根据av再计算speed [brake.py]: 将threshold修改为常量50 [brake.py]: 提高了输出提示语的明确性,删除了不必要的省略号 [brake.py]: 更正了之前的数据copy错误,重新优化了estop处是否达到指定百分比的判定逻辑