644 lines
36 KiB
Markdown
644 lines
36 KiB
Markdown
### 一、程序功能
|
||
|
||
自动化测试数据处理工具,减少人工处理时长,提高测试数据处理的效率和准确度:
|
||
|
||
1. 制动数据,单轴数据处理 3min 以内
|
||
2. 电机电流数据,全部轴数据处理 1min 以内
|
||
3. ISO 激光数据整理,1min 以内
|
||
4. wavelogger 波形处理,几乎不花费时间
|
||
5. 制动自动化测试
|
||
6. 电机电流自动化测试
|
||
7. 耐久工程曲线指标采集(仅适用于六轴)
|
||
|
||
|
||
---
|
||
|
||
### 二、使用方法
|
||
|
||
点击可执行程序 AIO.exe,然后选择功能,根据提示填写必要参数,红色标签提示是必填项,蓝色标签提示是可选项,然后点击运行即可
|
||
|
||
> 需要注意的是,可选项填写的不合适,有可能导致数据错误,或者无法运行!!
|
||
|
||
---
|
||
|
||
### 三、第三方库
|
||
|
||
```text
|
||
参考 requirements.txt
|
||
```
|
||
|
||
---
|
||
|
||
### 四、打包方法
|
||
|
||
打包时,只需要修改 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 "C:/Users/Administrator/AppData/Local/Programs/Python/Python312/Lib/site-packages/customtkinter;customtkinter/" --add-data "D:\Syncthing\company\D-测试工作\X-自动化测试\01-Gitea\aio\aio\assets\templates:templates" --version-file ../assets/file_version_info.txt -i ../assets/templates/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/openapi.py -p ../code/commons/clibs.py -p ../code/automatic_test/btn_functions.py -p ../code/automatic_test/do_current.py -p ../code/automatic_test/do_brake.py -p ../code/durable_action/factory_test.py
|
||
```
|
||
|
||
---
|
||
|
||
### 五、注意事项
|
||
|
||
#### 1) 制动数据
|
||
|
||
```text
|
||
1. 数据文件存储存储规则
|
||
数据文件,就是我们拍急停的时候,采集到的 .data 文件,根据规则选择某个方向拍三次急停,会采集到三个 .data 文件,存储在同一个文件夹内,即每组(三个 .data 文件)文件必须存储在同一个文件夹内,数据文件的命名无要求
|
||
|
||
2. 文件夹命名规则
|
||
对采集到的 .data 文件没有命名要求,但是对于其存储的文件夹的命名是有要求的,必须是如下格式:
|
||
reachXX_loadXX_speedXX
|
||
XX代表不同条件下的测试数值,比如:
|
||
reach100_load66_speed33,指的是,臂展100%,负载66%,速度33%
|
||
|
||
3. 结果文件命名规则
|
||
所谓结果文件,就是处理数据的那个 excle 文件,该文件名字的前缀必须是 reachXX_XXXXXXXXX.xlsx,比如:
|
||
reach33_自研_制动性能测试.xlsx
|
||
reach66_自研_制动性能测试.xlsx
|
||
reach100_自研_制动性能测试.xlsx
|
||
|
||
!!结果文件可以是没有数据的,也可以是之前有数据的,只要保证输入参数的正确性即可
|
||
|
||
4. 数据存储的组织结
|
||
..../j1/reach100_load66_speed33
|
||
..../j1/reach100_load66_speed66
|
||
....
|
||
..../j1/reach100_load33_speed33
|
||
..../j1/reach100_load100_speed33/2024_05_16_09_18_52.data
|
||
..../j1/reach100_load100_speed33/2024_05_16_09_19_52.data
|
||
..../j1/reach100_load100_speed33/2024_05_16_09_20_52.data
|
||
..../j1/reach33_自研_制动性能测试.xlsx
|
||
..../j1/reach66_自研_制动性能测试.xlsx
|
||
..../j1/reach100_自研_制动性能测试.xlsx
|
||
..../j1/configs.xlsx
|
||
|
||
5. 文件的打开与关闭
|
||
a. 在执行程序之前,需要关闭所有相关 excle 文件
|
||
b. 在执行程序之中,不允许打开相关 excle 文件
|
||
c. 在执行程序之后,需要逐个打开结果文件,并保存一次
|
||
|
||
6. 数据准确性检查
|
||
执行完程序之后,可以在日志输出框中看到全部文件的处理过程,对于有问题的文件,会用特殊颜色进行标识,需要注意观察
|
||
|
||
7. configs.xlsx配置文件
|
||
需要运行前需要手动修改该文件,并确保配置参数的正确性,测试时按照第 4 点中的位置存放
|
||
|
||
8. 其他
|
||
程序运行主要的耗时集中在打开,保存和关闭结果文件,第一次打开的时候会比较慢,另外还需要注意采集的数据长度和结果文件中预设的数据长度是否一致,若采集的数据长度大于预设的数据长度,则需要补齐数据
|
||
```
|
||
|
||
#### 2) 电机电流
|
||
|
||
1. 单独使用 max/avg 功能时,要求文件命名以 "jx_" 开头,例如 j1_2024_06_18_09_09_11.data,只允许有 .data 或者 .csv 文件,以及configs.xlsx配置表,可同时处理所有轴的数据
|
||
2. cycle 功能支持处理单轴数据以及场景电机电流的数据,可以批量处理所有轴,但要确保遵守如下规则:
|
||
|
||
- 包含电机电流结果汇总文件(excel)
|
||
- 单轴文件:jx_xxxxx.data/csv
|
||
- 保持电流:jx_hold_xxxx.data/csv
|
||
- 场景文件:factory_53.8_2024_06_18_09_01_26.data(需手动拆分)
|
||
- 配置文件:configs.xlsx
|
||
- 所有文件放在同一个文件夹即可
|
||
- 界面输入rc参数时,需要输入所有轴的数据,即使只处理个别轴的数据
|
||
|
||
3. configs.xlsx配置文件:需要运行前需要手动修改该文件,并确保配置参数的正确性
|
||
|
||
> 程序运行主要的耗时集中在打开,保存和关闭结果文件
|
||
> 需要注意采集的数据长度和结果文件中预设的数据长度是否一致,若采集的数据长度大于预设的数据长度,则需要补齐数据
|
||
> 和制动数据统一,后续将仅支持对hw_joint_vel_feedback的解析和处理,不再支持device_servo_vel_feedback
|
||
|
||
#### 3) iso 数据
|
||
|
||
所有文件放在同一个文件夹即可,命名规则如下:
|
||
a. ISO.pdf
|
||
b. ISO-V1000.pdf
|
||
c. ISO-V100.pdf
|
||
d. iso-results.xlsx
|
||
|
||
> 目前仅能处理 6 轴数据
|
||
|
||
#### 4) wavelogger 波形数据
|
||
|
||
1. 需要提前将 .xdt 波形数据转换成 .csv 文件
|
||
2. 组织目录下只允许有 .csv 文件,对文件夹无要求
|
||
3. 运行结束后,会生成 result.xlsx 文件,结果按照 .csv 文件名存放
|
||
4. 采集数据时,不同轮次数据时间间隔最好大于 2 倍的周期时间,否则会出现采集的轮数不正确的情况,但数据是完整的
|
||
|
||
#### 5) 制动自动化测试
|
||
|
||
只需要提前将如下文件放在指定路径下即可:
|
||
1. zip 工程文件
|
||
2. excel 制动结果处理文件
|
||
3. excel configs.xlsx 配置文件
|
||
|
||
> **需要注意的点**
|
||
|
||
1. 修改该文件点位信息
|
||
2. 修改“编程”→“工具列表”中的工具信息,制动只允许使用tool33/tool66/tool100/inertia这四个工具,不可重命名
|
||
3. 除了调试行,其他行请勿修改,包括增加空行等,尤其是有特别注释的地方
|
||
4. stop0_related半静态任务,需要注意DO0_0的命名,不同控制柜,可能不一样
|
||
5. 需要导入 autotest.xml 寄存器文件,以及新建modbus总线设备,命名为autotest,其他默认即可
|
||
6. 其他无需修改,如有其他需求,可联系fanmingfu@rokae.com沟通
|
||
7. 需要额外硬件接线,详细参考configs.xlsx中急停接线图sheet页,其中DO0_0视硬件情况,可能为其他名称
|
||
8. 运行自动化程序之前,确保机器处于正常状态,无故障,未触发急停
|
||
9. 运行过程中,如果是因为机器问题无法达到额定百分比速度,会在日志输出框提示,注意观察
|
||
10. 由于xCore系统问题,运行过程中可能会出现机器人宕机问题,如果遇到,可以手动重启控制柜,重新运行
|
||
11. 务必正确填写configs.xlsx中的Target页面,A1单元格可以选择正负方向急停
|
||
12. 工程文件可以手动重命名,按照机型存档,或者导出用于自动化测试
|
||
13. (可废弃,但未验证)自动化测试前,需要将HMI程序速度设置为100%并同步至控制器,也即左下方速度滑条滑动至最大
|
||
|
||
#### 6) 电机电流自动化测试
|
||
|
||
只需要提前将如下文件放在指定路径下即可:
|
||
1. zip 工程文件
|
||
2. excel 电机电流结果处理文件,一份模板即可
|
||
3. excel configs.xlsx 配置文件
|
||
|
||
> **需要注意的点**
|
||
|
||
基本同第五点,针对五轴以及以下的机型,缺失轴数据可以填写其他有效轴任意一轴的点位信息
|
||
|
||
|
||
#### 7) 耐久工程曲线指标采集
|
||
|
||
可实现固定周期指定曲线指标的采集,用于长时间观察指标的变化情况,输入文件:
|
||
- configs.xlsx,执行之前需要手动修改好configs.xlsx中的参数,以及间隔时间
|
||
- target.zip,需要确认工程点位和动作无问题后,保存导出
|
||
|
||
> 重新运行时,必须突出软件,重新运行
|
||
|
||
#### 其他
|
||
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. -
|
||
|
||
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)
|
||
1. [current.py] 修改cycle功能中,数据清理范围为70000行,并将threshold从2调整为5
|
||
2. [current.py] 修改位置超限提示,使更清楚了解问题原因
|
||
3. [current.py] 修改find_point函数中错误提示,增加定位信息
|
||
4. [README.md] 精简打包命令
|
||
5. [requirements.txt] 新增必要库配置文件
|
||
|
||
v0.1.5.2(2024/06/13)
|
||
1. [brake.py/aio.py]: 将sto修改为estop
|
||
2. [brake.py] 修改了速度计算逻辑,新版本的vel列数据遵循如下规则,av = vel * 180 / pi,根据av再计算speed
|
||
3. [brake.py] 将threshold修改为常量50
|
||
4. [brake.py] 提高了输出提示语的明确性,删除了不必要的省略号
|
||
5. [brake.py] 更正了之前的数据copy错误,重新优化了estop处是否达到指定百分比的判定逻辑
|
||
|
||
v0.1.5.3(2024/06/14)
|
||
1. [aio.py] 修改w_param为84,适配14寸电脑屏幕
|
||
2. [brake.py] 将判定合规逻辑修改为角速度超过指定角速度的95%
|
||
3. [README.md] 稍作修改,包括打包方式,功能特性等
|
||
|
||
v0.1.6.0(2024/06/15)
|
||
1. [aio.py] 新增wavelogger处理界面
|
||
2. [wavelogger.py] 新增精度数据处理模块
|
||
|
||
v0.1.6.1(2024/06/16)
|
||
1. [wavelogger.py] bugfix single_file_proc函数中,修改_start起始点的计算逻辑
|
||
2. [wavelogger.py] bugfix find_point函数中,当判断条件为临界值 2.0 的时候,针对forward和backward两种情况,对row_target做与判断逻辑相同的处理,目的是避免形成死循环
|
||
|
||
v0.1.6.2(2024/06/16)
|
||
1. [current.py] 修改了max/avg相关功能中对于返回值的处理逻辑,并在输出框以行的形式打印出来
|
||
|
||
v0.1.6.3(2024/06/18)
|
||
1. [current.py] 适配电机电流中速度使用hw_joint_vel_feedback的数据,取消对device_servo_vel_feedback的支持,后续所有涉及到速度相关的数据均已前者为准,现已完成对单轴和场景的适配
|
||
|
||
> !!WARNING:目前版本的电机电流程序还支持DriverMaster采集的数据处理,等明确后,将不再支持,也即所有的电机电流数据(工业+协作),都是用诊断曲线来采集
|
||
|
||
v0.1.7.0(2024/06/19)-未发布
|
||
1. [openapi.py] 初步搭建起框架,完成了新老协议的封包/解包/异步采集日志的操作(未充分测试,但基本无问题)
|
||
2. [openapi.py] 修改了封包的规则,使之更加明晰,封包操作没有实现分包功能,目前看实际场景用不到
|
||
|
||
v0.1.7.0(2024/06/21)-未发布
|
||
1. [openapi.py] 定义 MAX_FRAME_SIZE 常量(1024),替换socket接收以及响应数据处理相关部分
|
||
2. [openapi.py] 使用 int.to_bytes 和 int.from_bytes 替换 binascii 模块的功能
|
||
3. [aio.py] 修改了Data Process中初始化的动作,使得初始化时的状态统一成程序刚启动时的样子
|
||
|
||
v0.1.7.0(2024/06/23)-未发布
|
||
1. [aio.py] 增加了tabview的点击行为函数,每次点击tab都会初始化
|
||
2. [aio.py] 增加了Automatic Test界面元素,包括如下,并完成了功能框架的搭建
|
||
- 标签:文件/角速度/减速比
|
||
- 按钮:急停及恢复
|
||
- 输入框:文件路径/角速度/减速比
|
||
- OptionMenu:负载
|
||
- 进度条
|
||
3. [openapi.py] 增加心跳检测函数,并开启线程执行;取消在该文件中生成实例
|
||
4. [aio.py] 完成detect_network,并在main函数开启线程
|
||
5. 将templates文件夹移动到assets内
|
||
|
||
v0.1.7.0(2024/06/24)-未发布
|
||
1. [openapi.py] 建联部分做容错逻辑,并将读写文件做自适应处理
|
||
2. [aio.py] 将读写文件做自适应处理,引入openapi模块并生成实例,做心跳检测,将socket超时时间修改为3s
|
||
|
||
v0.1.7.0(2024/06/25)-未发布
|
||
1. [aio.py] 取消了在本文件中开启openapi线程的做法,并修改如下:
|
||
- 通过包的方式导入其他模块
|
||
- 使用current_path来规避文件路径问题
|
||
- 声名了 self.hr 变量,用来接收openapi的实例化
|
||
- 修改了对于segment button的错误调用
|
||
- 设定progress bar的长度是10
|
||
- 完善了segmented_button_callback函数
|
||
- 在detect_network函数中增加heartbeat初始化
|
||
- tabview_click函数中新增textbox清屏功能,以及实例化openapi,并做检测
|
||
2. [openapi.py] 取消了初始化中无限循环检测,因为阻塞了aio主界面进程!!!socket也无法多次连接!!!浪费了好多时间!!!很生气!!!!
|
||
- 通过tabview切换来实现重新连接,并保留了异常处理部分
|
||
- 将所有的 __xxxx 函数都替换成 xxxx 函数,去掉了 __
|
||
- 使用current_path来规避文件路径问题
|
||
3. [do_brake.py] 初步完成了机器状态收集的功能,还需要完善
|
||
- 使用current_path来规避文件路径问题
|
||
- 新增validate_resp函数,校验数据
|
||
- 完善了调用接口
|
||
|
||
> **关于HMI接口**
|
||
> - 封包解包顺序:帧长度二字节/包长度四字节/协议二字节/预留二字节,\x04\x00:\x00\x00\tR:\x02:\x00
|
||
> - 帧长度和包长度没有必然关系,单帧的时候是帧长度减去包长度等于6,包长度指的是所有内容的长度
|
||
> - HMI内部每次发送1024个字节,进行分包,内容长度规则是:第一帧1024-6=1018(帧大小减去包头长度),第二帧(包含)及之后的帧,帧长度即是数据长度
|
||
|
||
v0.1.7.0(2024/06/26)-初步可用
|
||
1. [aio.py] 在detect_network函数中需改查询时间间隔是1s,在tabview_click中增加textbox配置normal的语句
|
||
2. [do_brake.py -> btn_functions.py] 新增执行相应函数,并在get_state函数中设置无示教器模式
|
||
3. [openapi.py] 新增sock_conn函数,并做连接时的异常处理,新增类参数w2t
|
||
4. [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组件的字体大小,使用原生字体,同时将segmented button字体修改为原生,为了解决segmented button在禁用和启用时,屏幕抖动的问题,并将大小修改为16
|
||
5. [aio.py] 修改了segmented_button_callback的实现逻辑,使代码更简洁
|
||
6. [aio.py] 修改了在tabview_click函数中对于实例化HmiRequest的动作,使每次切换标签都会重新实例化,也就是每次都会重新连接,修复显示不正确的问题
|
||
7. [openapi.py] 新增了socket关闭的函数,并增加msg_id为None的处理逻辑
|
||
8. [btn_functions.py] 完善了状态获取的功能,新增告警获取以及功能切换的逻辑
|
||
9. [aio.py] 修改了版本
|
||
10. [current.py] max/avg功能结束之前会将结果数据追加写入源文件,avg算法更改为average+3×std
|
||
11. [wavelogger.py] 算法更改为 average+3×std
|
||
|
||
v0.1.7.1.0(2024/06/29)
|
||
1. [APIs: aio.py]
|
||
- 对于automatic test删除了输入框,使用configs.xlsx配置文件作为参数输入
|
||
- 完善initialization/param_check/func_start_callback函数中对于automatic test的处理
|
||
- 将textbox组件一直设置为normal状态,不再频繁切换disabled
|
||
- 将所有的f_h文件对象修改为f_hb,并将connection_state修改为c_state
|
||
- 在detect_network函数中,实例化HmiRequest,并在无限循环中检测心跳是否正常,如异常,则销毁hr,重新生成
|
||
- 取消在tabview切换时,检测心跳的逻辑,这样做无法保证实时性
|
||
2. [APIs: openapi.py]
|
||
- 将sock_conn函数移出__init__,单独作为连接函数存在
|
||
- 新增全局变量self.t_bool,控制所有的线程中无限循环的启停,也就是可以人为的退出线程
|
||
- 移除close_sock函数
|
||
- heartbeat函数中新增打印所有消息的代码,调试时打开,平常关闭
|
||
- execution函数中,新增对overview.set_autoload和overview.reload的支持
|
||
- execution函数中,对send动作增加异常处理逻辑
|
||
3. [APIs: do_brake.py]
|
||
- 新增文件,处理制动测试流程,建立连接,导入project,pp2main,run,采集并处理曲线数据,本地修改RL程序,推送至控制器等
|
||
- 目前完成:
|
||
- 文件合规性检查
|
||
- 导入工程并设置为运行工程
|
||
4. [APIs: current.py] 修改scenario/single电机电流最大长度为150s
|
||
5. 在本文件中更新关于制动自动化测试的相关内容
|
||
6. [t_change_ui: aio.py/brake.py/current.py] 整体修改了操作界面,删除了大部分的配置输入框,改用 configs.xlsx 配置文件替代,并优化了max/avg功能中写入结果数据的方式
|
||
|
||
v0.1.7.1.1(2024/06/29)
|
||
1. [APIs: aio.py]
|
||
- 修改detect_network函数中sleep语句放到最后,重新生成HmiRequest实例中增加sleep(4),这个停顿时间一定是比openapi中heartbeat函数的sleep要长1s以上才能正常工作
|
||
- 修改write2textbox函数,新增默认参数tab_name,只有当该值与当前tab一致时,函数才会有输出
|
||
- 第二条改动影响到了automatic_test文件夹下所有的文件
|
||
2. [APIs: openapi.py]
|
||
- 规定了所有的网络异常均由heartbeat函数来定义,其他异常不做中断处理
|
||
- execution函数中合并了case条件
|
||
- 增加了N多指令,多为诊断曲线和rl程序相关
|
||
- 日志保留条数修改为20000
|
||
3. [APIs: do_brake.py]
|
||
- 实现自动推送工程到xCore并自动运行
|
||
- 初步实现了Modbus发送消息和检测状态
|
||
4. [APIs: do_current.py]
|
||
- 将do_brake.py的内容完全拷贝到此文件,待修改
|
||
|
||
v0.1.7.2(2024/06/30)
|
||
1. 初步完成NB4h_R580_3BH7.zip工程的设计
|
||
2. 重新研究了解包操作,重新实现了一版
|
||
3. 修改openapi.pi中excution为execution函数
|
||
4. 增加了解包原理性文档
|
||
|
||
v0.1.7.3(2024/07/01)
|
||
1. [APIs: openapi.py]
|
||
- 继续完善封包解包操作,并优化了所有调试信息,默认打开状态,直到bug数量明显减少
|
||
- 修复了两个bug,删除了一个多余的break,另一个是补齐了self.broke的重置
|
||
2. [APIs: do_current.py] 使用原工程的工程名进行move操作,语义更加明确
|
||
|
||
> 目前看openapi.py封包解包没有任何问题了,但是所有的调试信息都默认打开,以便可以第一时间保留现场
|
||
> 打开诊断,跑了10多分钟,共计解包没有报错,应该是没有问题了
|
||
|
||
v0.1.7.4(2024/07/02)
|
||
1. [APIs: openapi.py]
|
||
- 增加了modbus的python实现
|
||
- heartbeat函数修改发送间隔为1s
|
||
- 清除了绝大部分调试性输出,发现太多的这种输出也会导致心跳丢包...,不清楚这个原理是什么
|
||
- 在get_response函数中的while self.pkg > 0循环中,删除了else语句,因为它永不会被执行到
|
||
- 在get_response函数中,修复一个bug,在flag==0的else语句中,补齐了index==6的情况
|
||
2. [APIs: do_current.py]
|
||
- 完成了六个轴的电机电流动作的执行,以及数据采集
|
||
- 完成了对应的RL程序的编写
|
||
3[APIs: aio.py]
|
||
- 引入modbus实例化,并以参数的形式,传递给相应的tabview
|
||
- 新增pre_warning函数,在做自动化测试之前,确保所有条件皆具备
|
||
|
||
v0.1.7.5(2024/07/03)
|
||
1. [APIs: aio.py]
|
||
- 增加触发急停和恢复急停功能逻辑
|
||
2. [APIs: do_current.py]
|
||
- 重新调整运行顺序,增加数据处理的逻辑(惯量负载逻辑暂不实现,等待软件部解决了修改工程之后不生效的问题再考虑)
|
||
3. [APIs: btn_functions.py]
|
||
- 增加触发急停和恢复急停的modbus实现,仅适用于自动化测试
|
||
|
||
v0.1.7.6(2024/07/04)
|
||
1. [APIs: aio.py]
|
||
- Automatic Test逻辑中增加选择current时,需要选负载类型的逻辑
|
||
2. [APIs: do_current.py]
|
||
- 单轴/场景电机电流的采集已完成
|
||
3. [APIs: openapi.py]
|
||
- 增加了modbus读取浮点数的功能
|
||
- 优化了get_from_id的逻辑
|
||
4. [autotest.xml]: 新增了scenario_time只写寄存器
|
||
|
||
v0.1.8.0(2024/07/04)
|
||
1. [APIs: do_current.py]: 完成了堵转电流和惯量负载电机电流的采集和处理,至此,电机电流的自动化工作基本完成
|
||
|
||
v0.1.8.1(2024/07/05)
|
||
1. [APIs: do_brake.py]: 完成了制动性能测试框架的搭建,可以顺利执行完整的测试程序,但是未实现急停和数据处理
|
||
2. [APIs: aio.py]: 修改了do_brake主函数的参数
|
||
3. 增加工程文件target.zip
|
||
|
||
v0.1.8.2(2024/07/08)
|
||
1. [APIs: do_brake.py]: 完成了制动性能测试逻辑,只不过制动信号传递生效延迟不可控,暂时pending
|
||
2. [APIs: do_current.py]: 修改曲线数据时序,主要是value data取反即可,解决了波形锯齿明细的问题
|
||
3. [APIs: openapi.py]: modbus新增了触发急停信号的寄存器 stop0_signal,并重写了解除急停,socket新增了register.set_value协议
|
||
|
||
v0.1.9.0(2024/07/10)
|
||
1. 完成了制动性能的自动化采集
|
||
2. 完善了modbus浮点数读写相关的功能
|
||
3. 修改了target.zip工程,该工程目前适配电机电流和制动性能
|
||
|
||
v0.1.9.1(2024/07/12)
|
||
1. [APIs: do_brake.py]
|
||
- 修改正负方向拍急停的逻辑,基本原理为:运行之前发送正负方向信号pon给RL,RL根据信号以及速度正负号运作
|
||
- 由于上述修改,正负方向急停准确率可达100%
|
||
2. [APIs: aio.py]
|
||
- 修改write2textbox的输出逻辑,实现更加灵活的自定义输出,同时修改相关部分
|
||
3. [APIs: openapi.py]
|
||
- modbus类新增指示政府方向急停的信号pon,将modbus类入参中的tab_name删除,并修改tab_name的值为'openapi'
|
||
- socket类种修改tab_name的值为'openapi'
|
||
|
||
v0.1.9.2(2024/07/13)
|
||
1. [APIs: do_brake.py]
|
||
- 修改ready_to_go信号的接收逻辑,适配大负载机型
|
||
2. [APIs: do_current.py]
|
||
- 修改ready_to_go信号的接收逻辑,适配大负载机型
|
||
- 调整单轴测试时间为35s,适配大负载机型,调整堵转电流持续时间15s,适当减少测试时间
|
||
- 将act信号置为False的动作放在初始化,增加程序健壮性
|
||
- 修改所有输出文件的命名,在扩展名之前加入时间戳
|
||
- 删除多余的时序矫正语句——item['value'].reverse(),使输出的曲线为平滑的自然顺序
|
||
3. [current: current.py]
|
||
- 在find_point函数种,当无法找到正确点位时,继续执行,而不是直接终止执行
|
||
- max功能计算逻辑矫正,应该是取绝对值的最大值
|
||
- 整体梳理了trq/trqh的传递路径,现已修正完毕
|
||
- 减速比rr数据源修改为configs.xlsx
|
||
4. 在current工程main函数增加 VelSet 100语句
|
||
|
||
v0.1.9.3(2024/07/15)
|
||
1. [APIs: openapi.py]
|
||
- 修改modbus连接失败报错输出形式,使之只在automatic test页面显示
|
||
- 将该文件移动至toplevel,为后面扩展做准备
|
||
- 修改heartbeat文件路径,使后续打包的时候更方便
|
||
2. [APIs: aio.py]
|
||
- 修改heartbeat文件路径,使后续打包的时候更方便
|
||
- 修改write2textbox函数的打印逻辑,先判断网络相关
|
||
|
||
v0.1.9.4(2024/07/15)
|
||
1. [profile: aio.py]:完善durable text相关逻辑
|
||
2. [profile: do_brake/do_current/btn_functions.py]:删除validate_resp函数,修改execution函数
|
||
3. [profile: factory_test.py]
|
||
- 新增耐久/老化测试程序
|
||
- 实现六轴折线图显示
|
||
4. [profile: openapi.py]:多次合并遗留问题处理
|
||
5. templates文件夹组织架构调整
|
||
|
||
v0.2.0.0(2024/07/17)
|
||
1. [profile: aio.py]
|
||
- 增加velocity相关逻辑
|
||
- 修改负载信息为曲线信息
|
||
2. [profile: factory_test.py]
|
||
- 增加velocity相关逻辑
|
||
3. [profile: current.py]
|
||
- 修正减速比获取的规则
|
||
4. [profile: openapi.py]
|
||
- HmiRequest模块:日志取消记录move.monitor相关
|
||
- HmiRequest模块:增加了durable_lock变量,控制文件读写互斥
|
||
|
||
v0.2.0.1(2024/07/19)
|
||
1. [main: aio.py]
|
||
- 修改了x轴显示,使之为时间刻度
|
||
- 修改pre_warning函数,增加了durable test的初始化
|
||
2. [main: factory_test.py]
|
||
- 增加了数据计算错误的判断逻辑
|
||
- 增加了历史数据保存的逻辑
|
||
- 增加了文件读写互斥的逻辑
|
||
- 修改功能为输出有效电流和最大电流,并将数据结构简化
|
||
|
||
v0.2.0.2(2024/07/26)
|
||
1. [main: current.py]
|
||
- 修正堵转电流无法正确写入结果文件的问题
|
||
2. [main: do_brake.py]
|
||
- 初始速度采集等待时间设置为可通过configs.xlsx配置文件调整的
|
||
- 初次速度采集停止逻辑修改为tasks.stop指令(未验证)
|
||
- 急停信号触发前,pending时间设置为固定值10s
|
||
- 实现正负方向速度采集逻辑
|
||
- 工程名变更逻辑实现修改为通配符,方便后续根据机型保存文件
|
||
- 增加超差后写诊断的逻辑,并可以通过configs.xlsx配置文件调整
|
||
- 程序输出中增加时间戳,方便调试定位日志时间
|
||
3. [main: do_current.py]
|
||
- 工程名变更逻辑实现修改为通配符,方便后续根据机型保存文件
|
||
4. 为工程文件添加更详细的注释
|
||
5. 补充了do_current/do_brake的流程图
|
||
6. [main: openapi.py]
|
||
- 将modbus motor_on/off的实现方法改为高电平脉冲触发
|
||
7. configs.xlsx配置表新增write_diagnosis/get_init_speed两个参数
|
||
|
||
v0.2.0.3(2024/07/27)
|
||
1. [APIs: do_brake.py]: 精简程序,解决 OOM 问题
|
||
2. [APIs: do_current.py]: 精简程序,解决 OOM 问题
|
||
3. [APIs: factory_test.py]: 精简程序,解决 OOM 问题
|
||
4. [APIsL openapi.py]
|
||
- 心跳修改为 1 s,因为 OOM 问题的解决依赖于长久的打开曲线开关,此时对于 hr.c_msg 的定时清理是个挑战,将心跳缩短,有利于清理日志后,避免丢失心跳
|
||
- 新增 diagnosis.save 命令,但是执行时,有问题,待解决
|
||
|
||
v0.2.0.4(2024/07/30)
|
||
1. [APIs: do_brake.py]: 修复制动数据处理过程中,只取曲线的最后 240 个数据
|
||
2. [APIs: aio.py]: 判定版本处,删除 self.destroy(),因为该语句会导致异常发生
|
||
- 心跳修改为 1s,因为 OOM 问题的解决依赖于长久的打开曲线开关,此时对于 hr.c_msg 的定时清理是个挑战,将心跳缩短,有利于清理日志后,避免丢失心跳
|
||
- 新增 diagnosis.save 命令,但是执行时,有问题,待解决
|
||
|
||
v0.2.0.5(2024/07/31)
|
||
此版本改动较大,公共部分做了规整,放置到新建文件夹 commons 当中,并所有自定义模块引入 logging 模块,记录重要信息
|
||
1. [t_change_ui: clibs.py]
|
||
- 调整代码组织结构,新增模块,将公共函数以及类合并入此
|
||
- 将一些常量放入该模块
|
||
- 引入logging/concurrent_log_handler模块,并作初始化操作,供其他模块使用,按50M切割,最多保留10份
|
||
- prj_to_xcore函数设置工程名部分重写,修复了多个prj工程可能不能执行的问题,并优化输入密码的部分
|
||
2. [t_change_ui: openapi.py]
|
||
- 完全重写了 get_from_id 函数,使更精准
|
||
- 在 msg_storage 函数中,增加 logger,保留所有响应消息
|
||
- 删除 heartbeat 函数中的日志保存功能部分
|
||
- 心跳再次修改为 2s...
|
||
3. [t_change_ui: aio.py]
|
||
- 增加了日志初始化部分
|
||
- detect_network 函数中修改重新实例化HR间隔为 4s,对应心跳
|
||
- create_plot 函数中增加 close('all'),解决循环画图不销毁占用内存的问题
|
||
4. [t_change_ui: do_brake.py]
|
||
- 使用一直打开曲线的方法规避解决了 OOM 的问题,同时修改数据处理方式,只取最后 12s
|
||
- 优化 ssh 输入密码的部分
|
||
5. [t_change_ui: do_current.py]
|
||
- 保持电流,只取最后 15s
|
||
- 优化 ssh 输入密码的部分
|
||
6. [t_change_ui: all the part]: 引入 commons 包,并定制了 logging 输出,后续持续优化
|
||
7. [APIs: btn_functions.py]: 重写了告警输出函数,从日志中拿数据
|
||
8. [APIs: aio.py]: 将日志框输出的内容,也保存至日志文件
|
||
9. [APIs: do_brake.py]
|
||
- 修改获取初始速度的逻辑,只获取configs文件中配置的时间内的速度
|
||
- 新增 configs 参数 single_brake,可针对特定条件做测试
|
||
10. [APIs: all]: 添加了 logger.setLevel(INFO),只有添加这个,单个模块内才生效
|
||
|
||
v0.2.0.6(2024/08/09)
|
||
1. [t_change_ui: all files]
|
||
- 修改了 logger 的实现
|
||
- 尤其是 clibs.py,使用日志字典,重写了日志记录的功能
|
||
|
||
v0.2.0.7(2024/08/16)
|
||
1. [t_change_ui: clibs.py]:修改了 hmi.log 的日志等级为 WARNING
|
||
2. [t_change_ui: openapi.py]:根据第一步的修改,将此模块日志记录等级调整至 warning
|
||
3. [current: current.py]
|
||
- README新增了整机自动化测试的前置条件,即滑块需要滑动到最右端
|
||
- current修改了文件校验的逻辑
|
||
4. [t_change_ui: aio.py]
|
||
- 修改变量命名,widgit -> widget
|
||
- 根据第 5 点变动,同步修改代码实现
|
||
- 调整 UI 界面代码顺序,使之符合 layout.xlsx 描述
|
||
- 将版本检查的部分单独封装成一个函数,在 detect_network 线程初始化时调用一次,并且程序启动也不会受到阻塞
|
||
5. [t_change_ui: layout.xlsx]:修改了组件布局方式
|
||
|
||
|
||
> 前两个修改点,修复的是网络提示的颜色不正确问题,因为日志将 textbox 中的内容也作为 debug 信息写入 hmi.log 了
|
||
|
||
v0.2.0.8(2024/08/20)
|
||
1. [t_change_ui: clibs.py]
|
||
- 从外部拷贝 icon.ico 文件到 templates 目录
|
||
- 在 assets 目录新建 logs 目录,存放日志文件,并增加了相应的逻辑保证正常执行
|
||
2. [t_change_ui: aio.py]:增加 App 窗口图标代码
|
||
3. [t_change_ui: openapi.py]:将重复输出的网络错误提示,从 textbox 中转移到 debug.log 日志文件中
|
||
4. [main: openapi.py]:新增 rl_task.set_run_params 指令支持,可设定速度滑块以及是否重复运行
|
||
5. [main: do_brake/do_current/factory_test.py]:在初始化运动时增加 `clibs.execution('rl_task.set_run_params', hr, w2t, tab_name, loop_mode=True, override=1.0)`
|
||
|
||
v0.2.0.9(2024/10/09)
|
||
1. [main: do_brake.py] 采集完成后,pending 3s,使速度完全将为 0
|
||
|
||
v0.2.1.0(2024/12/05)
|
||
1. [current: do_current.py] 增加了 hw_sensor_trq_feedback 曲线的采集
|
||
2. [current: current.py] 增加了 hw_sensor_trq_feedback 曲线数据的处理,以及修改了之前数据处理的逻辑
|
||
3. [current: clibs.py] 新增可手动修改连接 IP 地址的功能,存储在 assets/templates/ipaddr.txt 中,默认是 192.168.0.160
|
||
|
||
v0.2.1.1(2024/12/16)
|
||
1. [main: do_brake.py] 修改了 SSH 的固定 IP 为 clibs 中读取的内容,并删除了每次都 reload 工程的动作,改为只在修改 RL 工程时 reload 一次,旨在减少最近频繁出现的“无法获取overview.reload-xxxxxx”请求的响应,初步判断是 xCore 的问题,非 AIO 问题,已反馈待版本修复
|
||
2. [main: wavelogger.py] 新增异常数据校验功能
|
||
|
||
|