From a66a55bcd3f6fda39077cd4996cdc729550d21d6 Mon Sep 17 00:00:00 2001 From: gitea Date: Sat, 13 Jul 2024 11:36:35 +0800 Subject: [PATCH] =?UTF-8?q?v0.1.9.2(2024/07/13)=201.=20[APIs:=20do=5Fbrake?= =?UTF-8?q?.py]=20=20=20=20-=20=E4=BF=AE=E6=94=B9ready=5Fto=5Fgo=E4=BF=A1?= =?UTF-8?q?=E5=8F=B7=E7=9A=84=E6=8E=A5=E6=94=B6=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E9=80=82=E9=85=8D=E5=A4=A7=E8=B4=9F=E8=BD=BD=E6=9C=BA=E5=9E=8B?= =?UTF-8?q?=202.=20[APIs:=20do=5Fcurrent.py]=20=20=20=20-=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9ready=5Fto=5Fgo=E4=BF=A1=E5=8F=B7=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E6=94=B6=E9=80=BB=E8=BE=91=EF=BC=8C=E9=80=82=E9=85=8D=E5=A4=A7?= =?UTF-8?q?=E8=B4=9F=E8=BD=BD=E6=9C=BA=E5=9E=8B=20=20=20=20-=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=8D=95=E8=BD=B4=E6=B5=8B=E8=AF=95=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=B8=BA35s=EF=BC=8C=E9=80=82=E9=85=8D=E5=A4=A7=E8=B4=9F?= =?UTF-8?q?=E8=BD=BD=E6=9C=BA=E5=9E=8B=EF=BC=8C=E8=B0=83=E6=95=B4=E5=A0=B5?= =?UTF-8?q?=E8=BD=AC=E7=94=B5=E6=B5=81=E6=8C=81=E7=BB=AD=E6=97=B6=E9=97=B4?= =?UTF-8?q?15s=EF=BC=8C=E9=80=82=E5=BD=93=E5=87=8F=E5=B0=91=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E6=97=B6=E9=97=B4=20=20=20=20-=20=E5=B0=86act?= =?UTF-8?q?=E4=BF=A1=E5=8F=B7=E7=BD=AE=E4=B8=BAFalse=E7=9A=84=E5=8A=A8?= =?UTF-8?q?=E4=BD=9C=E6=94=BE=E5=9C=A8=E5=88=9D=E5=A7=8B=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A8=8B=E5=BA=8F=E5=81=A5=E5=A3=AE=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aio/README.md | 13 ++++++++++++- aio/code/automatic_test/do_brake.py | 11 ++++++----- aio/code/automatic_test/do_current.py | 20 ++++++++++++-------- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/aio/README.md b/aio/README.md index ba2820e..2e2c652 100644 --- a/aio/README.md +++ b/aio/README.md @@ -132,7 +132,7 @@ pyinstaller --noconfirm --onedir --windowed --add-data "C:/Users/Administrator/A > **需要注意的点** -1. 使用之前需要手动修改!!负载信息!!点位信息!!,确保所有点位不会发生撞击之后,再进行自动化测试 +1. 【重要】使用之前需要手动修改!!负载信息!!点位信息!!,确保所有点位不会发生撞击,确保所有程序正常运行之后,导出工程,再进行自动化测试 2. 工程文件不能手动重命名,需要重命名存档,可以导入HMI,然后另存为 3. 务必正确填写configs.xlsx中的Target页面,A1单元格可以选择正负方向急停,但不完全保证100%,大概有95%左右的准确度 4. 由于xCore系统问题,运行过程中可能会出现机器人宕机问题,如果遇到,可以手动重启控制柜,重新运行 @@ -140,6 +140,8 @@ pyinstaller --noconfirm --onedir --windowed --add-data "C:/Users/Administrator/A 6. 运行自动化程序之前,确保机器处于正常状态,无故障,未触发急停 7. 需要额外硬件接线,详细参考configs.xlsx中急停接线图sheet页 8. 注意观察二轴100%臂展时,是否可以获取到正确的数据 +9. 将autotest.xml导入到寄存器,并新建一个modbus,命名为autotest +10. 针对五轴机型,六轴数据可以填写1-5轴任意一轴的点位信息 #### 6) 电机电流自动化测试 @@ -462,3 +464,12 @@ v0.1.9.1(2024/07/12) 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的动作放在初始化,增加程序健壮性 + diff --git a/aio/code/automatic_test/do_brake.py b/aio/code/automatic_test/do_brake.py index 171310b..b937264 100644 --- a/aio/code/automatic_test/do_brake.py +++ b/aio/code/automatic_test/do_brake.py @@ -227,15 +227,16 @@ def run_rl(path, loadsel, hr, md, config_file, prj_file, result_dirs, w2t): _response = execution('state.switch_auto', hr, w2t) _response = execution('state.switch_motor_on', hr, w2t) _response = execution('rl_task.run', hr, w2t, tasks=['brake', 'stop0_related']) - for i in range(3): + _t_start = time() + while True: if md.read_ready_to_go() == 1: md.write_act(True) break else: - sleep(1) - else: - w2t("未收到机器人的运行信号,需要确认RL程序编写正确并正常执行...", 0, 111, 'red', 'Automatic Test') - + if (time() - _t_start) // 20 > 1: + w2t("20s内未收到机器人的运行信号,需要确认RL程序编写正确并正常执行...", 0, 111, 'red', 'Automatic Test') + else: + sleep(1) # 4. 第一次打开诊断曲线,并执行采集8s,之后触发软急停,关闭曲线采集,找出最大速度,传递给RL程序,最后清除相关记录 if count == 1: _response = execution('diagnosis.open', hr, w2t, open=True, display_open=True) diff --git a/aio/code/automatic_test/do_current.py b/aio/code/automatic_test/do_current.py index 8c81968..f57caf9 100644 --- a/aio/code/automatic_test/do_current.py +++ b/aio/code/automatic_test/do_current.py @@ -308,6 +308,8 @@ def run_rl(path, hr, md, loadsel, w2t): _response = execution('diagnosis.open', hr, w2t, open=False, display_open=False) md.trigger_estop() md.reset_estop() + md.write_act(False) + sleep(1) # 让曲线彻底关闭 _response = execution('state.switch_manual', hr, w2t) _response = execution('state.switch_motor_off', hr, w2t) @@ -334,19 +336,19 @@ def run_rl(path, hr, md, loadsel, w2t): # 4. 开始运行程序,单轴运行15s _response = execution('rl_task.run', hr, w2t, tasks=['current']) - for i in range(3): + _t_start = time() + while True: if md.read_ready_to_go() == 1: md.write_act(True) - sleep(1) - md.write_act(False) break else: - sleep(1) - else: - w2t("未收到机器人的运行信号,需要确认RL程序编写正确并正常执行...", 0, 111, 'red', 'Automatic Test') + if (time() - _t_start) // 20 > 1: + w2t("20s内未收到机器人的运行信号,需要确认RL程序编写正确并正常执行...", 0, 111, 'red', 'Automatic Test') + else: + sleep(1) # 5. 打开诊断曲线,并执行采集 - sleep(7) # 保证程序已经运行起来,其实主要是为了保持电流的采集而设定 + sleep(10) # 保证程序已经运行起来,其实主要是为了保持电流的采集而设定 _response = execution('diagnosis.open', hr, w2t, open=True, display_open=True) display_pdo_params = [ {"name": "hw_joint_vel_feedback", "channel": 0}, @@ -365,7 +367,9 @@ def run_rl(path, hr, md, loadsel, w2t): ] _response = execution('diagnosis.set_params', hr, w2t, display_pdo_params=display_pdo_params) scenario_time = 0 - if number < 6 or number > 8: + if number < 6: + sleep(35) + elif number > 8: sleep(15) else: _t_start = time()