feat(motor): 引入运行禁止机制重构电机控制安全系统
- 添加 run_inhibit.h/cpp 模块作为全局运行闸门,统一管理所有停机/唤醒逻辑 - 移除 FOC 控制器中的 5 个相互引用的开关机函数(shut_down/resume 等) - 将 nFAULT 硬件故障检测从仅上报改为运行门控制,连续采样故障时申请禁止位 - 改进电压检测逻辑,欠压判定现在通过 run_inhibit 统一执行停机动作 - 修正 PB2(nFAULT) 引脚配置为内部上拉输入,避免浮空误读导致系统锁死 - 在 CAN 状态帧中新增 RunInhibit 位图(字节 36-39),实时反映禁止运行的故障源 - 电流采样失效、过热故障现在通过禁止位管理而非直接操作驱动状态 - 校准函数增加运行许可检查,防止在停机状态下意外唤醒驱动
This commit is contained in:
+13
-1
@@ -73,7 +73,10 @@ typedef volatile uint32_t vu32;
|
||||
constexpr u16 SOFTWARE_VERSION_MAJOR = CFG_VER_YEAR % 100; // 年后两位,如 26
|
||||
constexpr u16 SOFTWARE_VERSION_MINOR = CFG_VER_MONTH; // 月
|
||||
constexpr u16 SOFTWARE_VERSION_PATCH = CFG_VER_DAY; // 日
|
||||
constexpr u16 SOFTWARE_VERSION_BUILD = 1; // 当天第几次构建,手动递增
|
||||
// 当天第几次构建(日期由 __DATE__ 自动带出):
|
||||
// 26.10.10.2 = nFAULT(MotorStatus) 由"仅上报"改为运行门
|
||||
// 26.10.11.1 = 停机/解除统一收进 RunInhibit 闸门,删掉 FOC 里 5 个互引的开关机函数
|
||||
constexpr u16 SOFTWARE_VERSION_BUILD = 1;
|
||||
|
||||
// 硬件版本:全手写,仅在 PCB 改版时修改(编译 APP 不影响)
|
||||
constexpr u16 HARDWARE_VERSION_MAJOR = 25;
|
||||
@@ -406,6 +409,15 @@ constexpr float VBUS_ABSOLUTE_MIN = 12.0f; // 绝对最低电压 (V)
|
||||
constexpr u32 VBUS_DEBOUNCE_COUNT = 5; // 快速检测:防抖计数 (5次×100us = 500us)
|
||||
constexpr float VBUS_RECOVERY_RATIO = 0.9f; // 恢复比例(基准电压的90%)
|
||||
|
||||
// ===================== 门驱动 nFAULT(STATUS 帧 motStatus / MotorStatus)=====================
|
||||
// PB2 读门驱动 nFAULT(开漏低有效,固件已配内部上拉)。DRV8313/DRV8323 的
|
||||
// UVLO、热关断、过流都会把它拉低,因此它就是"电机侧出错"的硬件凭据。
|
||||
// 轮询点在 thermalController.update()(TASK_THERMAL_CONTROL,1ms)。
|
||||
constexpr u8 DRV_FAULT_DEBOUNCE_MS = 3u; // 连续 N 次 1ms 采样为低才判故障
|
||||
// 解除禁止后驱动需要重新建立:DRV8313 手册 7.4.1 给 ≈1ms,按 50us 控制节拍取 20 拍。
|
||||
// 建立期内输出保持 0、不派发控制函数(见 sys/run_inhibit.cpp)。
|
||||
constexpr u8 DRV_WAKE_SETTLE_50US = 20u;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user