cbb
|
86ca7666fa
|
feat(motor): 引入运行禁止机制重构电机控制安全系统
- 添加 run_inhibit.h/cpp 模块作为全局运行闸门,统一管理所有停机/唤醒逻辑
- 移除 FOC 控制器中的 5 个相互引用的开关机函数(shut_down/resume 等)
- 将 nFAULT 硬件故障检测从仅上报改为运行门控制,连续采样故障时申请禁止位
- 改进电压检测逻辑,欠压判定现在通过 run_inhibit 统一执行停机动作
- 修正 PB2(nFAULT) 引脚配置为内部上拉输入,避免浮空误读导致系统锁死
- 在 CAN 状态帧中新增 RunInhibit 位图(字节 36-39),实时反映禁止运行的故障源
- 电流采样失效、过热故障现在通过禁止位管理而非直接操作驱动状态
- 校准函数增加运行许可检查,防止在停机状态下意外唤醒驱动
|
2026-10-13 00:47:52 +08:00 |
|
cbb
|
9fbd9c3d30
|
refactor(FOC): 移除齿槽转矩补偿功能
对硬编码的两张 128 点补偿表做谐波分解后确认该补偿无效:
- 能量集中在 k=1(11次/转) 16.1% 与 k=2(22次/转) 82.2%,合计 98.3%;
而 22 极电机的真实齿槽基频应落在槽极 LCM 处(12槽=132次/转 k=12、
18槽 k=18、24槽 k=24),实测幅值仅 0.46/0.12/0.08 mA,在噪声地板内。
即表中属于齿槽的成分不足总能量 0.1%,k=1/k=2 实为电角度零位偏差与
电流采样通道增益/零点失配的特征。
- 表按电角度查表,而电角度含每台独立的 calibration_angle(Flash 读回)。
相位偏 φ 时残差比为 2sin(kφ/2):零点差 30° 电角度时 k=2 残差即等于
原幅值,补偿由减小扰动变为增大扰动。22 极下 2.7° 机械偏差即达此量级,
硬编码全局共用一张表不成立。
- 表采集于 bec7c11(2026-05),其电流链路为改版前方案,此后陆续修正了
采样时刻落在上管导通窗、PA3/4/5 未配 AIN、零点配平未应用等问题。
用当时的链路去测量比其自身误差小三个数量级的量,采到的是链路误差。
删除内容:get_cogging_compensation 查表插值、FOC_DEBUG 校准状态机及
其打印函数与静态缓冲、init() 中两张硬编码表、COGGING_TABLE_SIZE/
COGGING_COMP_SCALE、tasks.cpp 调度 tick、RESET 帧 bit4 触发(该位保留)。
六个控制模式的 Uq 输出去掉补偿项;angle_el_cog 仍供 update_el_sincos
使用,改名回 angle_el。mode3 注释中"反转阻力差异由 REV 齿槽补偿表承担"
的描述一并订正(该依赖本已失效)。
|
2026-09-09 02:53:11 +08:00 |
|
cbb
|
7c4aaa5ee6
|
feat(FOC): 优化FOC控制算法并修复多个控制环路问题
- 重构cal_Iq_Id函数,移除电角度参数传递,改用预计算的sin/cos值
以避免重复三角函数计算,提升性能约15-300周期
- 修复角度同步Uq前馈学习中的运动方向判断逻辑,解决反转时的
震荡问题和正转正常反转震荡的根本原因
- 实现低速缩放因子函数get_mode3_velocity_scale,改进静摩擦
hunting抑制效果
- 优化电压检测逻辑,将阻塞式ADC读取改为连续模式零等待,
提升实时性能
- 修复初始化期间电压分母为零的问题,添加下限保护防止P增益
无穷大
- 实现PID控制器测量微分功能,消除目标阶跃时的微分冲击
- 改进积分抗饱和策略,添加外部饱和泄放功能,优化到位稳定
性能
perf(Filter): 优化中值滤波算法性能
- 针对ADC_FILTER_SIZE=6的固定场景实现最优排序网络,
用12次比较替代通用std::nth_element算法,显著提升性能
- 保留通用回退路径处理其他尺寸情况
|
2026-09-01 02:46:25 +08:00 |
|
cbb
|
e646544f7f
|
refactor(FOC): 重构齿槽转矩校准状态机为独立函数
- 将原本在 calibrate_cogging_tick 中的大函数拆分为多个职责单一的函数
- 新增 start_cogging_calibration、cogging_settling_tick、cogging_sampling_tick、
cogging_stopping_tick、cogging_done_tick 等状态处理函数
- 添加 process_cogging_run_data、start_next_cogging_run、build_cogging_tables、
print_cogging_table、print_cogging_c_array 等辅助函数
- 移动全局 FOC 控制器单例注释到更合适位置
- 添加齿槽转矩校准参数常量定义和详细注释
- 添加防御性编程处理默认状态分支,避免状态机卡死
- 提高代码可读性和维护性
feat(tasks): 添加任务头文件到项目配置
- 在 Robot_V2.cproject.yml 中添加 tasks.h 和 tasks.cpp 文件引用
docs(ADC): 添加ADC转换常量说明注释
- 在 ADC.cpp 中添加关于ADC换算常量的详细注释
- 说明全局采样器单例的初始化和使用方式
|
2026-05-24 01:21:41 +08:00 |
|