From 299093553aadc2e3cd23e0d917fdc900971f4140 Mon Sep 17 00:00:00 2001 From: tk Date: Thu, 4 Jul 2024 14:56:01 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=B1=BB=09=E5=9E=8B=E3=80=91?= =?UTF-8?q?=EF=BC=9Afeat=20=E3=80=90=E4=B8=BB=09=E9=A2=98=E3=80=91?= =?UTF-8?q?=EF=BC=9Amqtt=E5=9B=9E=E8=B0=83=E6=8E=A7=E5=88=B6=20=E9=92=A9?= =?UTF-8?q?=E5=AD=90=E7=8A=B6=E6=80=81=E5=92=8C=E9=87=8D=E9=87=8F=E4=BC=A0?= =?UTF-8?q?=E6=84=9F=E5=99=A8=20=E3=80=90=E6=8F=8F=09=E8=BF=B0=E3=80=91?= =?UTF-8?q?=EF=BC=9A=20=09[=E5=8E=9F=E5=9B=A0]=EF=BC=9A=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=A3=9E=E6=9C=BA=E9=92=A9=E5=AD=90=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=9E=8D=E5=90=88=20=09[=E8=BF=87=E7=A8=8B]?= =?UTF-8?q?=EF=BC=9A=E6=B7=BB=E5=8A=A0=20=E5=9B=9E=E8=B0=83=E9=87=8C?= =?UTF-8?q?=E9=9D=A2=20=E6=8E=A7=E5=88=B6=E9=92=A9=E5=AD=90=E7=9A=84=20?= =?UTF-8?q?=E5=87=BD=E6=95=B0=20=09[=E5=BD=B1=E5=93=8D]=EF=BC=9A=20?= =?UTF-8?q?=E3=80=90=E7=BB=93=09=E6=9D=9F=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 类型 包含: # feat:新功能(feature) # fix:修补bug # docs:文档(documentation) # style: 格式(不影响代码运行的变动) # refactor:重构(即不是新增功能,也不是修改bug的代码变动) # test:增加测试 # chore:构建过程或辅助工具的变动 --- src/commser.cpp | 11 +++++++++++ src/motocontrol.h | 21 +++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/commser.cpp b/src/commser.cpp index f0aacf5..cfa20d6 100644 --- a/src/commser.cpp +++ b/src/commser.cpp @@ -190,6 +190,9 @@ void mqtt_receiveCallback(char *topic, byte *payload, unsigned int length) case 0: { // 收钩 + ESP_LOGD(MOUDLENAME, "Mqtt_HOOK_UP"); + if (motocontrol.getcontrolstatus().is_autogoodsdown) + up_action(SPEED_BTN_FAST); } break; case 1: @@ -200,16 +203,24 @@ void mqtt_receiveCallback(char *topic, byte *payload, unsigned int length) case 2: { // 暂停 + ESP_LOGD(MOUDLENAME, "Mqtt_HOOK_PAUSE"); + if (motocontrol.getcontrolstatus().is_autogoodsdown) + Hook_stop(); } break; case 3: { // 继续 + ESP_LOGD(MOUDLENAME, "Mqtt_HOOK_resume"); + if (motocontrol.getcontrolstatus().is_autogoodsdown) + Hook_resume(); } break; case 4: { // 重置重量 + if (motocontrol.gethooktatus() == HS_Stop) // 先判断钩子状态 “已停止” + begin_tare(); // 重置 } break; } diff --git a/src/motocontrol.h b/src/motocontrol.h index 651b6bb..332e656 100644 --- a/src/motocontrol.h +++ b/src/motocontrol.h @@ -9,7 +9,7 @@ #define WHEEL_PERIMETER (WHEEL_DIAMETER * 3.1416) // 轮子周长 #define ROPE_MAXCOUNT (ROPE_MAXLENGTH / WHEEL_PERIMETER) // 最大圈数 -#define INSTORE_LENGTH_MIN_NONE 12.0f // 最小入仓长度,没有挂东西的情况,在最慢的速度下低于该长度也需要以SPEED_INSTORE缓慢入仓 cm -------加了软减速后必须根据速度改变!!!! +#define INSTORE_LENGTH_MIN_NONE 12.0f // 最小入仓长度,没有挂东西的情况,在最慢的速度下低于该长度也需要以SPEED_INSTORE缓慢入仓 cm -------加了软减速后必须根据速度改变!!!! #define INSTORE_LENGTH_MIN_GOODS 10.0f // 最小入仓长度,有挂东西的情况 在最慢的速度下低于该长度也需要以SPEED_INSTORE缓慢入仓 cm -------加了软减速后必须根据速度改变!!!! #define INSTORE_LENGTH_SPEED 0.05f // 0.0001f最小入仓长度速度平方的(输出轴速度)比例,越快越长,加了软减速后必须根据速度改变!!!! @@ -20,8 +20,8 @@ #define SPEED_BTN_MID 100 // 按键中等收放线速度 #define SPEED_BTN_FAST 200 // 按键最快收放线速度 #define SPEED_HOOK_FAST SPEED_MAX // 货物下放速度--有目标长度得情况下 -#define SPEED_HOOK_SLOW 100 // 货物快到地面速度--有目标长度得情况下 -#define SPEED_HOOK_CHECK 100 // 货物下放速度--没有目标长度得情况下能检测到脱钩的合适速度 +#define SPEED_HOOK_SLOW 100 // 货物快到地面速度--有目标长度得情况下 +#define SPEED_HOOK_CHECK 100 // 货物下放速度--没有目标长度得情况下能检测到脱钩的合适速度 #define SPEED_HOOK_UP SPEED_MAX // 钩子回收速度 #define SPEED_UNBLOCK 0.1 // 舵机堵转需要缓慢转的速度 @@ -29,8 +29,8 @@ #define TM_SERVOLOCK 300 // 舵机转到Lock和Unlock等待的时间ms #define TM_ACC_HS 500 // 货物快到地面减速时间--覆盖自动加减速时间--这个地方稍微长一些 -#define SERVO_LOCKPOS 1000 //1920 // 舵机锁定位置 -#define SERVO_UNLOCKPOS 1120 //1800 // 舵机解锁位置 +#define SERVO_LOCKPOS 1000 // 1920 // 舵机锁定位置 +#define SERVO_UNLOCKPOS 1120 // 1800 // 舵机解锁位置 #define SERVO_BLOCKUNLOCKPOS 1100 // 舵机堵转需要转回的位置--可以和SERVO_UNLOCKPOS一样,为了速度快也可以更小 #define HOOK_WEIHT_MIN 100 // 最小货物重量 小于这个认为没挂东西 (克) @@ -55,7 +55,7 @@ typedef struct bool is_toplocked; // 已到顶锁住 bool is_overweight; // 是否超重 bool is_havegoods; // 是否有货物 - bool is_autogoodsdown; //正在自动放线中 + bool is_autogoodsdown; // 正在自动放线中 float zero_cnt; // 0长度位置 float speed_targe; // 当前目标速度 MotoStatus motostatus; // 电机运行状态 @@ -111,12 +111,13 @@ private: void unlockservo(); void set_hook_speed(float hooksspeed); void sethooksstatus(HookStatus hookstatus); + public: Motocontrol(); // 构造函数 ~Motocontrol(); // 析构函数 void setspeed(float motospeed, float acctime = -1); // 设置速度 - void stoprun(float acctime = 0); // 停止运行 - void stopautodown(); //停止自动下放模式 + void stoprun(float acctime = 0); // 停止运行 + void stopautodown(); // 停止自动下放模式 void setzero(); // 设置0长度位置 int16_t getlength(); // 得到长度 void update(); // 更新 @@ -130,7 +131,7 @@ public: void moto_goodsdown(float length = 0.0f); // 放下货物,自动回收 void moto_goodsdownresume(); // 恢复自动放线 HookStatus gethooktatus() { return _hooksstatus; } // 得到挂钩状态 - String gethooktatus_str(bool chstr=true); // 得到挂钩状态(中英文) + String gethooktatus_str(bool chstr = true); // 得到挂钩状态(中英文) - void weightalign(bool weightalign); // 重量传感器是否校准--必须校准才能执行moto_hookdown + void weightalign(bool weightalign); // 重量传感器是否校准--必须校准才能执行moto_hookdown };