From cf5a698eb99058a0251542444a1f6faf4e2d4a6b Mon Sep 17 00:00:00 2001 From: lyq Date: Fri, 9 Jan 2026 10:02:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=BB=9A=E5=88=B7=E6=8E=A8?= =?UTF-8?q?=E6=9D=86=E4=B8=8D=E4=B8=8B=E6=B2=89=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/mc/include/mc/can_struct.h | 30 ++++++++++++++--------------- src/base/mc/src/timer_tasks.cpp | 7 ++++--- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/base/mc/include/mc/can_struct.h b/src/base/mc/include/mc/can_struct.h index b7f7b5f..1089fea 100644 --- a/src/base/mc/include/mc/can_struct.h +++ b/src/base/mc/include/mc/can_struct.h @@ -293,43 +293,43 @@ struct can_VCU_motor1_cmd // 设置Byte1 void setByte1(int8_t value) { - data[1] = std::clamp(value, static_cast(0), static_cast(100)); + data[1] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte2 void setByte2(int8_t value) { - data[2] = std::clamp(value, static_cast(0), static_cast(100)); + data[2] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte3 void setByte3(int8_t value) { - data[3] = std::clamp(value, static_cast(0), static_cast(100)); + data[3] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte4 void setByte4(int8_t value) { - data[4] = std::clamp(value, static_cast(0), static_cast(100)); + data[4] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte5 void setByte5(int8_t value) { - data[5] = std::clamp(value, static_cast(0), static_cast(100)); + data[5] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte6 void setByte6(int8_t value) { - data[6] = std::clamp(value, static_cast(0), static_cast(100)); + data[6] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte7 void setByte7(int8_t value) { - data[7] = std::clamp(value, static_cast(0), static_cast(100)); + data[7] = std::clamp(value, static_cast(-100), static_cast(100)); } CANFrame toFrame() const @@ -356,49 +356,49 @@ struct can_VCU_motor2_cmd // 设置Byte0 void setByte0(int8_t value) { - data[0] = std::clamp(value, static_cast(0), static_cast(100)); + data[0] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte1 void setByte1(int8_t value) { - data[1] = std::clamp(value, static_cast(0), static_cast(100)); + data[1] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte2 void setByte2(int8_t value) { - data[2] = std::clamp(value, static_cast(0), static_cast(100)); + data[2] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte3 void setByte3(int8_t value) { - data[3] = std::clamp(value, static_cast(0), static_cast(100)); + data[3] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte4 void setByte4(int8_t value) { - data[4] = std::clamp(value, static_cast(0), static_cast(100)); + data[4] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte5 void setByte5(int8_t value) { - data[5] = std::clamp(value, static_cast(0), static_cast(100)); + data[5] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte6 void setByte6(int8_t value) { - data[6] = std::clamp(value, static_cast(0), static_cast(100)); + data[6] = std::clamp(value, static_cast(-100), static_cast(100)); } // 设置Byte7 void setByte7(int8_t value) { - data[7] = std::clamp(value, static_cast(0), static_cast(100)); + data[7] = std::clamp(value, static_cast(-100), static_cast(100)); } CANFrame toFrame() const diff --git a/src/base/mc/src/timer_tasks.cpp b/src/base/mc/src/timer_tasks.cpp index a5468f6..34728e7 100644 --- a/src/base/mc/src/timer_tasks.cpp +++ b/src/base/mc/src/timer_tasks.cpp @@ -55,15 +55,16 @@ void vcuTimerTask(CANDriver &canctl) if (sweep_state_changed) { // 根据清扫状态设置所有部件 - uint8_t target_value = msg.sweep ? 100 : 0; // 100表示启动,0表示停止 + int8_t target_value = msg.sweep ? 100 : 0; // 100表示启动,0表示停止 + int8_t target_value2 = msg.sweep ? -100 : 100; // -100表示下沉,100表示抬升 // ===== 控制0x211报文 (电机M1-M7) ===== vcu_motor1_cmd.setByte0(msg.sweep ? 1 : 0); // 1表示正向运行,0表示停止 vcu_motor1_cmd.setByte1(target_value); vcu_motor1_cmd.setByte2(target_value); vcu_motor1_cmd.setByte3(target_value); - vcu_motor1_cmd.setByte4(target_value); - vcu_motor1_cmd.setByte5(target_value); + vcu_motor1_cmd.setByte4(target_value2); + vcu_motor1_cmd.setByte5(target_value2); vcu_motor1_cmd.setByte6(target_value); vcu_motor1_cmd.setByte7(target_value); canctl.sendFrame(vcu_motor1_cmd.toFrame());