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 };