# 珞石测试部自动化工具 针对珞石工业协作六轴机器人的整机测试,该工具可以执行如下自动化操作,以减少人工处理时长,提高测试数据处理的效率和准确度: 1. 制动数据,单轴数据处理 5min 以内 2. 电机电流数据,全部轴数据处理 3min 以内 3. ISO 激光数据整理,1min 以内 4. wavelogger 波形处理,几乎不花费时间 5. 制动自动化测试,40min 左右 6. 电机电流自动化测试,15min 左右 7. 耐久工程相关指标采集记录,可定制曲线并绘图 ## 一、处理逻辑以及原理 该部分简要介绍了工具实现的核心逻辑原理,以及执行的必要条件。 ### 1. 数据处理 #### A. 制动数据 - 原理:找到 `device_safety_estop` 曲线值由 1 -> 0 的位置,并预留 20 个数据余量截取 1000 个点 - 必要条件: - 根目录命名为 j1/2/3 - 数据文件夹命名参照执行制动数据采集 - 需要有三个结果文件,命名为 reach33/66/100_xxxxxxxx.xlsx - 需要有一个机型文件,比如 NB4h-R580-3G.cfg,此文件会在执行制动测试的时候自动生成,注意保存 #### B. 电机电流 - 单轴原理:找到一个周期的起点和终点 - 堵转原理:求平均均值 - 场景原理:获取场景的执行周期时间,并做数据截取 - 必要条件: - 数据文件命名参照电机电流测试生成的格式 - 需要有一个结果文件,命名为 T_电机电流.xlsx - 需要有一个机型文件,比如 NB4h-R580-3G.cfg,此文件会在执行制动测试的时候自动生成,注意保存 #### C. 激光 - 原理:根据要获取的数据所在位置的特征,过滤提取 - 必要条件: - 数据文件命名必须参照如下: - ISO-.pdf - ISO-V100.pdf - ISO-V1000.pdf - 需要有一个结果文件,iso-results.xlsx #### D. 基恩士数据 - 原理:根据数据大小以及出现的周期规律,进行相应的处理,处理完成之后结果文件会自动生成 - 必要条件:需要提前将 `.xdt` 波形数据转换成 `.csv` 文件,数据文件命名必须以 `.csv` 结尾 ## 二、自动测试 ### 1. 协议封包解包 详见 `assets/files/protocols/` ### 2. 制动测试 - 原理:使用 xCore socket 协议获取诊断数据,包括速度,力矩等信息,结合 modbus 和外部通信执行急停等动作 - 必要条件: - RL 工程(brake任务),参考 `assets/files/projects/`,需要详细阅读对应的注释 - 需要有一个配置文件,命名为 configs.xlsx - 需要有三个结果文件,命名为 reach33/66/100_xxxxxxxx.xlsx ### 3. 电机电流测试 - 原理:使用 xCore socket 协议获取诊断数据,包括速度,力矩等信息,结合 modbus 和外部通信执行急停等动作 - 必要条件: - RL 工程(current任务),参考 `assets/files/projects/`,需要详细阅读对应的注释 - 需要有一个结果文件,命名为 T_电机电流.xlsx ## 三、耐久测试数据采集 - 原理:根据设置的时间间隔,采集相应的场景周期指标数据 - 必要条件: - RL 工程(factory任务),参考 `assets/files/projects/`,需要详细阅读对应的注释 ## 三、注意事项 > **!!仅内网使用!!** 1. 仅适用于 xCore 2.3.0.7 及以上的版本 2. 仅适配了六轴工业/协作机型,其他机型可能会存在使用上的问题,具体可以找fanmingfu@rokae.com确认 3. 单轴电机电流数据处理,至少需要三个完整周期,使用本工具采集一般不会有问题,主要是针对手动采集命名的数据 4. 执行制动测试/电机电流采集/耐久测试的时候,执行过程中停止,需要重新关闭软件再次打开,才能正常使用 5. RL工程/寄存器文件/configs.xlsx文件已更新,需要使用新版,其他使用方法和之前工具一致 6. 基恩士采集数据时,不同轮次(每5次测试)数据时间间隔最好大于 2 倍的周期时间,否则会出现采集的轮数不正确的情况,但数据是完整的 7. 激光数据处理只支持英文版本的数据文件 8. 耐久(场景)指标数据采集的工程运行周期需要小于 300s,否则会出现异常 > **需要使用 assets/files/projects/ 下的工程,寄存器文件以及配置文件等!!!** ## 四、发版记录 详见 `assets/files/version/release_change.txt` 文件 ## 五、其他 ### 1. 打包命令 打包时,只需要修改 clibs.py 中的 PREFIX 即可,调试时再修改回来,第三方库依赖详见 `assets/files/version/requirements.txt` 文件 ``` 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/common/clibs.py -p ../code/commom/openapi.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/automatic_test/do_current.py -p ../code/automatic_test/do_brake.py -p ../code/durable_docs/factory_test.py -p ../code/durable_docs/create_plot.py --exclude-module=scipy ``` ### 2. tabview 组件字体修改 customtkinter的tabview组件不支持修改字体大小,解决方法可参考如下: - Method 1:可以参考 [Changing Font of a Tabview](https://github.com/TomSchimansky/CustomTkinter/issues/2296) 进行手动修改源码实现: + 运行 `pip show customtkinter`,获取到库的路径 + 修改.../windows/widgets/ctk_tabview.py + 增加 from .font.ctk_font import CTkFont + 在大概 78 行的位置,增加 font=CTkFont(family="Consolas", size=18, weight='bold') - Method 2: 直接在源码中修改:`self.tabview_bottom._segmented_button.configure(font=ctk.CTkFont(family="Consolas", size=18, weight="bold"))` ### 3. scroll frame 不支持修改高度和宽度 https://github.com/TomSchimansky/CustomTkinter/pull/1765/files ---