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
|
76f7987238
|
feat(FOC): 实现电角度零位自动校准并修复ADC采样干扰问题
- 新增FlashEEPROM用于保存零位校准角,掉电不丢失
- 实现安全的零位校准算法:运行中禁止校准、对齐后重新采样、保存到Flash
- 重构ADC架构:分离ADC0(PWM同步电流采样)和ADC1(VBUS/DRV温度轮询)
- 解决ADC采样冲突:移除ADC0的regular连续扫描,避免与注入组抢占资源
- 修复VBUS电压读取错误:从DMA缓冲区改为直接ADC1单次转换
- 修正开环控制Uq幅值限幅逻辑,保留符号避免反转时抖动
- 更新CAN协议:电流数据改为有符号16位打包,支持负电流传输
- 调整版本号至v26.8.16.7
|
2026-08-16 02:13:37 +08:00 |
|
cbb
|
42c9f2f669
|
feat(can): 添加节点ID设置命令的安全防护和改进闪存写入逻辑
- 添加目标节点验证机制,防止SET_NODE_ID命令被错误处理
- 修改节点ID范围验证逻辑,限制为1到0xFF
- 调整闪存写入顺序,在确认写入成功后再发送响应
- 修复SET_NODE_ID消息处理中的边界条件检查
fix(can): 启用自动总线离线恢复功能
- 将CAN参数auto_bus_off_recovery从DISABLE改为ENABLE
- 提高CAN通信的稳定性和自动恢复能力
chore(config): 更新软件版本号并添加编译时间信息
- 将软件补丁版本从24更新到25
- 添加APP_BUILD_DATE和APP_BUILD_TIME宏定义
- 新增getAppBuildTime函数获取编译时间信息
- 添加Flash页大小相关注释说明
perf(debug): 调整ST-Link调试器时钟频率
- 将调试器时钟从10MHz降低到4MHz
- 提高调试连接的稳定性
refactor(static_test): 移除静态测试文件列表
- 删除static_test_automotive_business_20260523/files.csv文件内容
|
2026-08-13 01:14:07 +08:00 |
|
cbb
|
b71fba2016
|
feat(FOC): 添加角度同步Uq前馈补偿和速度环优化
- 实现update_angle_sync_uq_feedforward函数,支持mode2和mode3的角度同步 Uq前馈补偿,按物理360°查表学习负载/阻力差异
- 实现get_mode3_velocity_p函数,mode3低速时降低速度环P参数减少抖动
- 在velocity_control和angle_control_with_velocity_limit中集成Uq前馈补偿
- 优化normalizeAngle360函数,大角度时先扣整圈数避免while循环过多
- 调整配置参数,降低DEFAULT_vel_loop_p并添加详细的Uq前馈补偿配置
- 更新电源电压参数使用本周期采样值,避免电压滞后影响
|
2026-05-24 04:56:33 +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 |
|
cbb
|
4c4e47e9e3
|
refactor(FOC): 添加Doxygen文档注释并优化SVPWM算法性能
添加了完整的Doxygen文档注释到FOC算法模块的所有函数、类和变量,提升了代码可读性和维护性。同时优化了SVPWM算法实现,将atan2f替换为符号法扇区判断,显著提升计算效率(约15周期vs atan2f 300周期),并改进了arm_sin_cos_f32替代sqrtf提高性能。
feat(FOC): 统一电气角度计算避免重复运算
重构代码以统一电气角度计算,在各个控制循环中只计算一次电气角度并传递给需要的函数,避免了多次重复的fmodf运算和角度归一化操作,提升了实时控制性能。
refactor(Filter): 改进α-β观测器角度处理精度
修改角度卡尔曼滤波器在归一化角度空间[0,360)内工作,避免大累积角度的浮点精度损失问题,确保静止状态下不会产生虚假速度,同时保持与下游代码的兼容性。
refactor: 为算法模块添加完整文档注释
为所有算法模块(FOC、Filter、pid、thermal)添加了详细的Doxygen文档注释,包括函数说明、参数描述、返回值说明等,便于代码理解和API文档生成。
|
2026-05-23 22:46:32 +08:00 |
|
cbb
|
bec7c11b87
|
feat(FOC): 添加齿槽转矩补偿功能
- 实现齿槽转矩补偿算法,通过查表+线性插值方式计算补偿电压值
- 添加齿槽转矩校准功能,支持正转3次+反转3次的非阻塞校准状态机
- 在所有控制模式中集成齿槽转矩补偿,包括开环、角度、速度、电流和MIT模式
- 硬编码预校准的正反转补偿表数据
- 通过CAN命令支持运行时触发校准功能
- 添加相关配置参数和调试开关
|
2026-05-19 01:26:42 +08:00 |
|
cbb
|
9955132e0e
|
feat(FOC): 添加速度目标突变检测和积分清零机制
- 在velocity_control()函数中添加目标速度突变检测,当速度变化
超过5.0f时自动清零积分项
- 在angle_control_with_velocity_limit()函数中添加相同的速度
突变检测逻辑
- 在MIT_Mode()函数中实现速度环积分清零功能
- 添加reset_integral()方法到PID控制器用于清零积分项
refactor(Filter): 将角度卡尔曼滤波器替换为α-β观测器
- 重构EncoderAngleKalman类,将内部卡尔曼滤波器改为α-β观
测器算法
- 保留原有的接口名称和参数以维持兼容性
- 添加ANGLE_OBSERVER_ALPHA和ANGLE_OBSERVER_BETA配置参数
- 修改速度获取逻辑,直接从观测器状态获取速度估计值
perf(systick): 实现基于DWT的CPU使用率监测
- 使用DWT周期计数器精确测量任务执行周期
- 添加busy_task_enter()和busy_task_exit()函数追踪忙碌周期
- 实现每秒统计CPU占用率并提供get_cpu_usage()接口
- 在CAN数据包中添加CPU使用率传输字段
fix(Can): 修复CANFD数据包中的整数打包问题
- 将16位整数正确拆分为两个字节进行传输
- 修正了test_u16数据的字节序打包方式
chore(config): 更新软件版本号并优化配置参数
- 将版本号从26.4.26更新到26.5.17
- 调整角度/速度α-β观测器的相关增益参数
|
2026-05-17 23:40:53 +08:00 |
|
cbb
|
e95673fc4e
|
fix(algorithm): 修改FOC控制器中的角度计算和校准参数
修正了FOC控制器中电气角度计算的符号错误(减法改为加法),
移除了不必要的空行,并优化了velocity_open_loop函数中的注释
格式。同时修正了角度控制中PID计算的目标角度差值顺序。
BREAKING CHANGE: 角度校准参数从硬编码值改为配置常量。
|
2026-05-17 03:54:26 +08:00 |
|
cbb
|
d6f784db60
|
fix(FOC): 修复SVPWM相电压计算中的角度单位转换错误
SVPWM相电压计算中,arm_sin_cos_f32函数期望接收度数而非弧度,
需要将local_angle乘以RAD2DEG进行单位转换。
同时修正了开环速度控制中的电压计算公式,
将固定电压改为基于目标速度的约束电压,
并调整了电机控制频率配置。
|
2026-05-16 21:22:14 +08:00 |
|
cbb
|
c6e00e1a49
|
feat(ADC): 重构ADC采样系统以支持同步电流采集
- 将ADC缓冲区从6通道减少到3通道,专门用于MCU温度、DRV温度和VBUS监测
- 实现了注入组ADC同步采样,通过TIMER1 TRGO触发三相电流同时采样
- 添加了PWM中心对齐模式以提供更好的采样窗口
- 在FOC控制器中增加了ADC错误检查和三相公共模偏置消除
- 优化了电流采样更新机制,使用中断驱动的数据搬运
- 调整了ADC通道配置,规则组用于后台温度/VBUS采样,注入组用于PWM同步电流采样
|
2026-05-16 13:09:57 +08:00 |
|
cbb
|
12b2577d6b
|
feat(can): 实现CANFD协议栈及DMA优化
- 添加CANFD DMA接收功能,使用32位宽数据传输提升效率
- 实现CANFD收发队列管理,支持异步消息处理防止丢帧
- 重构CAN中断处理机制,采用FIFO0中断配合DMA完成数据接收
- 添加CANFD DLC长度转换表,规范化数据长度处理
- 实现临界区保护机制,确保多线程环境下的数据安全
- 优化发送队列机制,使用邮箱空闲中断进行消息调度
- 添加DMA错误处理,增强系统稳定性
- 移除原有8字节限制,支持CANFD最大64字节数据传输
|
2026-05-15 23:04:04 +08:00 |
|
cbb
|
94d5fda0b6
|
feat: 更新CMSIS和GD32C10x_DFP包版本并优化代码
- 升级ARM::CMSIS从4.5.0到6.1.0版本
- 添加ARM::CMSIS-DSP@1.16.2依赖包
- 升级GigaDevice::GD32C10x_DFP从1.0.1到1.5.0版本
- 移除FOC.cpp中未使用的systick.h头文件
- 移除pid.cpp中未使用的<algorithm>头文件
- 更新GD32C10x固件库至V1.7.0版本(2026-01-30)
- 修复ADC驱动中的无符号整数运算问题
- 优化BKP、CAN、CTC等外设驱动中的FlagStatus返回逻辑
- 改进CAN驱动的消息发送和传输停止函数实现
- 修复CRC、DMA、FMC等驱动中的数据类型和变量声明问题
- 清理和修正各驱动文件中的文档注释
|
2026-05-06 00:14:16 +08:00 |
|
cbb
|
f4fb23d640
|
feat(FOC): 添加快速电压检测功能和PWM调试模式
新增基于跌幅检测的快速电压保护机制,在100us周期内响应电压异常,
当电压跌幅超过阈值或低于绝对下限时立即关机保护。同时添加PWM输出
调试模式便于硬件测试。
BREAKING CHANGE: 重构了电压检测逻辑,采用峰值跟踪算法替代固
定阈值检测,提高在动态供电环境下的可靠性
|
2026-04-26 03:36:21 +08:00 |
|
cbb
|
bdf03517b3
|
feat(CAN): 添加静默模式支持并优化节点ID处理
- 添加静默模式功能,在接收到base_id=0x0000消息时停止发送10秒
- 修正节点ID加载逻辑,区分有效节点ID(0-65534)和Flash擦除状态(0xFFFF)
- 添加静默模式相关的状态检查和时间管理功能
- 在CAN通信检查中集成静默模式处理流程
fix(FOC): 修复速度控制中的方向参数应用
- 在velocity_control、angle_control_with_velocity_limit和MIT_Mode函数中
正确应用DIR参数调整速度误差的符号
- 添加详细注释说明DIR参数对速度误差计算的影响
refactor(systick): 添加毫秒级系统时间功能
- 实现get_systick_ms()函数提供毫秒级系统时间
- 添加SysTick中断处理程序更新系统时间计数器
chore(init): 调整初始化顺序优化系统启动流程
- 将EEPROM初始化移至CAN初始化之前,确保正确的依赖关系
|
2026-03-19 23:49:08 +08:00 |
|
cbb
|
9f56ab394e
|
feat(CAN): 实现多节点CAN总线通信与节点ID管理功能
- 添加CAN调试宏定义,支持条件编译调试信息输出
- 实现节点ID相关功能,包括构建CAN ID、消息过滤、获取/设置节点ID
- 支持Flash存储节点ID,提供加载和保存功能
- 实现节点ID设置和查询命令处理
- 更新CANFD发送函数使用节点ID构建发送ID
- 添加消息过滤逻辑,只处理目标节点的消息
- 重构DMA中断服务程序,优化数据传输处理
- 替换printf为调试宏,便于生产环境控制调试输出
|
2026-03-15 02:38:50 +08:00 |
|
cbb
|
2b93a4537c
|
refactor(FOC): 移除代码冲突标记并优化FOC控制器实现
- 移除了所有git冲突标记(<<<<<<< HEAD, =======, >>>>>>>)
- 清理了校准步骤相关注释代码
- 修复了Iq,Id计算中的角度处理逻辑
- 优化了PID控制器参数设置和初始化流程
- 重构了SVPWM相电压设置方法,移除了重复的相电压设置函数
- 修复了关闭功能和电源电压安全限制的计算
feat(CAN): 增强CAN通信协议支持多种控制模式
- 实现了目标电流、速度、角度的多参数控制
- 添加了PID参数动态配置功能
- 支持7种不同控制模式的切换
- 实现了控制模式切换时PID状态重置机制
refactor(pid): 扩展PID控制器功能接口
- 添加了set_P方法替代原有的set_P_percent
- 新增set_limit方法用于输出限幅控制
- 实现了reset方法用于PID状态重置
- 优化了PID参数设置接口
fix(timer): 优化定时器任务调度机制
- 重构了任务调度的时间片管理逻辑
- 实现了基于查找表的任务分配方式
- 优化了100us、1ms、10ms、100ms等不同周期的任务调度
- 提高了系统实时性表现
perf(config): 优化系统配置和数学常量定义
- 添加了必要的GD32头文件包含
- 重新组织了PID参数命名规范
- 定义了常用数学常量如三角函数相关数值
- 优化了定时器频率和周期计算公式
|
2026-03-09 01:48:12 +08:00 |
|
cbb
|
1ee2f68a89
|
Merge branch 'master' of http://172.30.0.1:8418/cbb/Robot_v2
|
2026-03-09 01:47:30 +08:00 |
|
cbb
|
a26dd1cc8e
|
feat(can): 增强CAN通信缓冲区管理机制
- 实现循环缓冲区队列管理CAN消息接收
- 添加缓冲区满/空状态检查函数
- 实现消息出队列dequeue_rx_message功能
- 在中断处理程序中添加消息入队列机制
- 优化CAN消息处理流程,支持批量处理
refactor(motor): 优化电机控制类结构和安全机制
- 重命名PID控制器参数变量名以提高可读性
- 添加过热关机标志位thermal_shutdown和相关处理函数
- 实现过热关机shut_down_thermal和过热恢复resume_from_thermal功能
- 调整关机逻辑,添加drv_stop调用确保电机完全停止
- 修正电流环控制中的占空比设置,改为单相保持
feat(motor): 实现FOC控制算法改进和零点校准功能
- 实现电机零点校准函数calibrate_zero_position用于位置补偿
- 修正FOC控制器中的电气角度计算,集成KTH7823校准角度补偿
- 新增d轴电流计算功能
- 重构PID参数初始化方式,使用统一的电压限制配置
- 更新SVPWM相电压设置算法,改进角度归一化处理
- 修改缺省扇区输出占空比从0.0f改为0.5f以提高稳定性
fix(control): 修复控制回路方向和频率计算问题
- 修正角度控制回路中的误差计算方向
- 修正开环速度控制中的频率参数使用
- 修正速度环控制中的误差计算方向
- 修正MIT模式下多级PID控制器的参数设置和误差计算
refactor(filter): 修正编码器速度计算算法
- 移除速度计算中的冗余乘法因子2
feat(pid): 扩展PID控制器功能
- 添加reset方法用于重置PID内部状态
chore(build): 更新开发工具版本和ADC配置
- 更新csolution版本至2.13.0
- 调整ADC采样时间配置以优化性能
|
2026-03-09 01:35:26 +08:00 |
|
cbb
|
9689841148
|
feat(FOC): 添加电流卡尔曼滤波器并优化MIT控制模式
- 优化MIT控制模式的角度和速度计算
- 调整多个PID控制器的参数配置
- 增强卡尔曼滤波器的数值稳定性
|
2026-02-08 18:53:55 +08:00 |
|
cbb
|
173fadadd2
|
feat(FOC): 重构FOC控制器实现并修复SVPWM算法支持
- 修复类名拼写错误:FOC_Controlroller -> FOC_Controller
- 移除不必要的角度归一化函数,直接使用fmod优化性能
- 添加完整的SVPWM算法实现,提高电机控制效率
- 重构PID参数配置,使用动态参数调整机制
- 增加电流反馈功能,实时监测电机运行状态
- 优化电压安全限制,提高系统稳定性
- 更新控制模式映射,支持更多控制策略
- 改进CAN通信协议,增加电流反馈传输
|
2026-02-02 02:23:16 +08:00 |
|
cbb
|
c9934849c5
|
feat(FOC): 重构FOC控制器实现并修复SVPWM算法支持
- 修复类名拼写错误:FOC_Controlroller -> FOC_Controller
- 移除不必要的角度归一化函数,直接使用fmod优化性能
- 添加完整的SVPWM算法实现,提高电机控制效率
- 重构PID参数配置,使用动态参数调整机制
- 增加电流反馈功能,实时监测电机运行状态
- 优化电压安全限制,提高系统稳定性
- 更新控制模式映射,支持更多控制策略
- 改进CAN通信协议,增加电流反馈传输
|
2026-02-02 02:12:14 +08:00 |
|
cbb
|
25e2edfd0c
|
Merge pull request 'DRV8313兼容性合并' (#1) from DRV8323 into master
Reviewed-on: http://192.168.31.10:8418/cbb/Robot_v2/pulls/1
|
2026-01-24 01:55:30 +08:00 |
|
cbb
|
1596b2beb0
|
DRV8313兼容版
refactor(algorithm): 移除冗余头文件
移除不必要的stdint.h头文件引用,统一使用<cstdint>
refactor(sys): 清理系统级头文件依赖
移除未使用的头文件引用,统一整型类型定义,优化初始
化过程中的GPIO配置
|
2026-01-24 01:50:39 +08:00 |
|
cbb
|
3f24292ac1
|
feat(FOC): 添加FOC控制器初始化函数、支持电压自适应PID调整
添加了FOC控制器的init()方法,用于统一初始化电机控制参数,
包括速度环、角度环和电流环的PID参数设置。同时优化了CAN通信
中的PID参数计算逻辑,引入电压补偿机制,提高了电机控制精度。
|
2026-01-21 11:48:31 +08:00 |
|
cbb
|
c0b5f6902b
|
docs(config): 新增软件和硬件版本号定义
- 定义SOFTWARE_VERSION 26.1.19.1
- 定义HARDWARE_VERSION 25.12.01.0
- 定义BOOT_VERSION 26.1.12.0
feat(motor-control): 实现FOC控制算法速度环优化
refactor(can-protocol): 升级CANFD通信协议支持版本管理
- 实现版本号管理和CANFD_VERSION_ID协议
- 扩展CMD_ID消息解析支持PID参数动态配置
- 添加版本管理器实例并实现版本信息发送功能
- 优化CANFD异步发送数据长度判断逻辑
fix(angle-sensor): 修正角度传感器方向和偏移校准
- 添加ANGLESENS_OFFSET补偿参数
- 反转角度传感器读数方向(DIR = -1.0f)
- 在角度计算中应用负向因子和偏移量
chore(memory-layout): 调整Flash存储布局和版本配置
- 扩展BOOTLOADER_SIZE从16KB到24KB
- 更新APPLATEST_START_ADDR和APPBACK_START_ADDR偏移
- 重新分配OTA配置参数存储区域
- 增加EEP_DEBUG调试开关
refactor(pid-controller): 增强PID控制器功能接口
- 添加set_P_percent方法支持百分比参数设置
- 格式化PID计算代码提升可读性
- 保留积分和微分环节的约束保护机制
|
2026-01-20 01:28:52 +08:00 |
|
cbb
|
9f84c85a28
|
feat(can): CAN休眠唤醒移动到BOOT以进行以支持40k硬件看门狗
- 更新深度睡眠实现,在跳转到bootloader前记录睡眠状态到Flash
- 添加gd32c10x_fmc.h头文件以支持Flash内存控制功能
- 将prepare_deep_sleep重命名为app_prepare_deep_sleep以提高命名清晰度
- 在CAN通信检测中添加应用层休眠准备功能
- 在接收OTA启动ID时解锁FMC、设置APP为非激活状态并锁定FMC
- 移除main.cpp中的看门狗复位休眠逻辑
- 在config.h中添加睡眠配置相关的常量定义
- 改进OTA_SET函数的Flash写入逻辑,优化数据更新流程
- 在OTA初始化和应用移动过程中添加FMC解锁锁定操作
|
2026-01-12 01:03:43 +08:00 |
|
cbb
|
72506ce87d
|
feat(FOC): 集成ARM数学库优化FOC算法实现
- 引入arm_math.h库以使用ARM优化的数学函数
- 将角度归一化从弧度制改为角度制,使用360.0f替代2*PI
- 使用arm_sin_cos_f32替代查找表实现正弦余弦计算
- 移除注释中的ARM Clark和Park变换函数调用
- 修正机械角度计算中的时间常量为TIMER2_FREQUENCY倒数
- 移除传感器角度到弧度的转换,保持原始角度值
- 激活电流环控制中的Iq/Id计算并发送CAN数据
|
2026-01-07 23:13:21 +08:00 |
|
cbb
|
fccb93dd41
|
feat(can): 添加OTA功能实现AB分区
- 添加新的CANFD消息ID处理,支持OTA请求响应
- 实现OTA状态检查和ACK发送功能
- 优化CAN_transmiter类方法声明格式
refactor(flash): 重构OTA设置和应用数据移动功能
- 修改OTA_SET函数参数类型从bool到u32
- 优化move_app_data函数实现,添加CRC校验和错误处理
- 添加调试输出信息和看门狗喂狗机制
- 修复数据移动过程中的地址计算错误
refactor(config): 优化Flash分区配置和常量定义
- 重新组织Flash分区地址常量定义
- 添加OTA相关CANFD消息ID定义
- 移动CANFD相关常量到合适位置
docs(flash): 更新函数注释和文档说明
- 更新move_app_data函数的注释说明
- 添加代码注释以提高可读性
fix(initial): 修复OTA初始化和看门狗配置
- 将看门狗初始化移到main函数中合适位置
- 修正OTA初始化逻辑
- 添加CAN模块外部引用
|
2026-01-05 00:55:00 +08:00 |
|
cbb
|
d0198fdff7
|
更新OTA功能,config独立成文件统一定义
refactor(build): 更新项目配置和链接器设置
- 修改GD32C103CB的ROM基地址和大小配置
- 更新系统时钟向量表偏移量设置
- 在cproject.yml中添加BIN输出格式支持
- 增加-O3优化级别和代码移除选项
- 更新csolution版本依赖
feat(device): 优化ADC采样和配置管理
- 将DengFOC依赖替换为FOC模块
- 从config.h引入配置常量
- 重命名FILTER_SIZE为ADC_FILTER_SIZE以提高清晰度
- 优化温度和电流采样滤波实现
refactor(algorithm): 简化FOC控制函数接口
- 为angle_control、velocity_control等函数移除不必要的参数
- 统一函数指针类型定义
- 优化电流计算函数的代码格式
- 调整PID控制器初始化参数
|
2026-01-04 22:26:22 +08:00 |
|
cbb
|
abd64da360
|
feat(FOC): 添加带速度限制的角度闭环控制功能
新增angle_control_with_velocity_limit函数,实现带速度限制的角度控制,
包含角度PID和速度PID双环控制,防止电机转速过快导致的不稳定。
- 新增带速度限制的角度控制函数
- 配置新的PID控制器用于速度内环和角度外环
|
2025-12-23 11:55:09 +08:00 |
|
cbb
|
8732174855
|
refactor(flash): 重构EEPROM数据存储逻辑以提升可靠性
- 修改FlashEEPROM类的数据读写流程,优化地址掩码和数据对齐方式
- 引入新的宏定义和常量用于数据校验及地址解析
- 调整系统配置保存函数,支持更精确的CRC校验机制
- 移除旧的角度保存接口,统一通过系统配置保存函数处理
- 在CAN通信检查中替换save_angle调用为format操作
- 增加调试开关EEPDEBUG控制打印信息输出
- 更新健康管理和系统休眠时的EEPROM保存策略
|
2025-12-22 02:20:25 +08:00 |
|
cbb
|
7354a71c51
|
feat(can): 增加CAN睡眠与唤醒功能并优化通信检查逻辑
- 在CAN通信类中添加了CAN_Sleep()和CAN_Wakeup()方法,支持设备进入低功耗模式
- 优化CAN通信检查逻辑,通过解析接收数据的首字节和末字节实现多种控制命令
- 支持远程复位电机、保存角度、清零角度、进入睡眠等操作
- 解决CAN发送邮箱满时可能导致的通信阻塞问题,增加重初始化机制
- 调整mailbox不可用计数逻辑,防止持续打印错误信息
refactor(flash): 移除软件CRC计算模块,改用硬件CRC外设
- 删除自定义CRC.cpp和CRC.h文件及其相关类实现
- 使用GD32硬件CRC模块替代软件算法,提高效率和可靠性
- 更新FlashEEPROM类中的CRC校验方式,调用crc_block_data_calculate进行计算
- 修正Flash地址遍历范围以适配新CRC逻辑及页面管理策略
- 修改save_angle接口签名,不再手动传入角度值,改为内部读取FOC实时角度
feat(timer): 新增RTC闹钟中断处理函数声明
- 在Timer.h中声明rtc_set_wakeup_interval和RTC_ALARM_IRQHandler
- 为后续实现基于RTC的定时唤醒功能做准备
chore(config): 同步csolution工具版本更新并调整组件配置
- 更新RTE_Components.h生成工具版本至2.12.0
- 启用BKP、CRC、RTC等标准外设组件宏定义
- 从项目配置文件中移除旧CRC源文件引用
- 添加SystemCoreClockUpdate调用确保系统时钟同步
refactor(main): 主循环任务调度重构并增强初始化流程
- 将主循环中的任务处理提取为独立do_task函数,提升代码可读性
- 提前执行电机初始化,并根据看门狗复位标志决定是否立即进入深度睡眠
- 调整EEPROM初始化顺序,保证依赖关系正确
- 添加sys/initial.h头文件包含以支持新增系统初始化逻辑
|
2025-12-20 19:53:52 +08:00 |
|
cbb
|
7c2860f302
|
feat(can): 增加EEPROM状态码和系统配置保存功能
- 在CAN通信中增加EEPROM状态码字段,并通过CAN FD发送
- 实现Flash EEPROM对系统配置参数的CRC校验与保存
- 改进目标角度、速度等关键参数的读写逻辑,支持掉电保存
- 调整EEPROM地址映射,优化错误处理和状态反馈机制
- 修复CRC计算相关问题,增强数据可靠性
|
2025-12-18 18:23:34 +08:00 |
|
cbb
|
d6cf143e87
|
fix(flash): 修改角度存储类型为float并更新读写逻辑
将FlashEEPROM中角度数据的存储类型从u16改为float,并相应地更新了读写函数。
新增readFloat和writeFloat函数以支持浮点数存储,同时调整了虚拟地址类型为u8。
修改了save_angle和read_angle函数实现,确保角度值能正确保存与读取。
优化了格式化函数中的数据解析方式,提高数据存储可靠性。
|
2025-12-17 02:34:08 +08:00 |
|
cbb
|
02572df688
|
fix(flash): 优化Flash EEPROM读写逻辑并修复角度保存问题
移除调试打印语句,改进Flash读写稳定性。
使用类型别名统一数据访问,增强代码可读性。
修正CAN通信中角度保存逻辑,确保正确写入实时角度值。
完善错误处理机制,增加对齐检查和状态反馈。
调整EEPROM起始地址以避免潜在冲突。
|
2025-12-17 01:38:48 +08:00 |
|
cbb
|
7371f97882
|
feat(PID): 调整速度与角度环PID参数
更新了FOC控制器中的速度环和角度环PID参数以改善控制响应,并微调电流环参数提升稳定性。
feat(Filter): 改进卡尔曼滤波器初始化逻辑及速度计算方式
引入系统运行时间计数器,修正编码器角度和速度卡尔曼滤波器的初始化流程,并基于实际时间间隔优化角速度估算精度。
refactor(Filter): 移动成员变量声明顺序
调整`EncoderAngleKalman`类中`last_angle`成员变量的访问权限和声明位置,增强封装性和可读性。
feat(Flash): 新增Flash EEPROM功能支持
添加FlashEEPROM类及相关头文件,支持电机角度等关键数据掉电保存,并在CAN通信复位时进行角度存储操作。
refactor(Timer): 优化定时器配置和中断优先级设置
删除冗余的TIMER3定义,修改TIMER1中断服务函数可见性,并调整NVIC子优先级分配,确保中断响应合理有序。
feat(AngleSensor): 完善角度传感器初始化与角度设定接口
重构角度传感器初始化方法并新增角度设置函数,支持从Flash读取初始角度值并与减速比结合应用。
feat(Health): 实现母线电压监测与保护策略
新增电源管理函数,在母线电压异常下降时自动关闭电机输出,防止因供电不足导致设备损坏。
|
2025-12-16 22:39:39 +08:00 |
|
cbb
|
839a32ff04
|
refactor(main): 统一外设初始化流程
集中所有外设初始化于main函数起始处,通过返回值确认各模块是否成功启动;
refactor(adc): 修改采样器初始化返回值
将sampler构造函数替换为带返回值的init方法,在main函数中加入初始化结果判断,
确保系统启动时硬件配置正确加载。
feat(motor): 引入motor模块并重构电机控制逻辑
将GPIO操作封装进motor_sleep和motor_resume函数,提升代码可读性和维护性。
引入motor.h头文件,并在main.cpp中进行电机初始化统一管理。
修改FOC控制器中的shutdown与resume方法调用新接口。
refactor(filter): 优化卡尔曼滤波器实现
重命名状态变量xp为x,简化访问逻辑;移除冗余注释及未使用的getlastAngle方法;
调整getVelocity计算系数,提高速度估算精度;增加init方法支持初始状态设置。
refactor(angle_sensor): 移除冗余速度计算功能
删除传感器内部的速度估算相关数组和方法,交由外部滤波器处理以降低耦合度。
更新SPI片选宏定义以区分不同设备,并增强错误处理机制。
refactor(can): 调整CAN通信ID及初始化流程
更改状态与配置帧的标识符ID,添加对特定命令ID的响应处理如电机复位指令。
将CAN_transmiter构造函数改为init方法,配合主程序完成模块化初始化检查。
|
2025-12-08 02:48:59 +08:00 |
|
cbb
|
93cbf18f1f
|
feat(FOC): 实现电流环控制并优化相关逻辑
新增了电流环控制功能,包括通过三相电流计算 Iq 的 `cal_Iq_Id` 方法,并在 `current_control` 中实现了基于 PID 的电流控制逻辑。同时对电压设置、占空比计算等部分进行了调整与优化。
refactor(filter): 移除冗余的电流卡尔曼滤波器实现
删除了 `Filter.cpp` 和 `Filter.h` 中关于 `CurrentKalman` 类的冗余代码,统一外部定义,简化结构。
refactor(health): 改进热量控制器算法和数据类型
将热累积计算改为更精确的分段处理方式,并引入 Q16.16 定点数提升运算精度与性能;增加对异常温度值的判断修正。
fix(CAN): 调整电流发送顺序及标志位设置位置
修改 CAN 发送中 V 相与 W 相电流打包顺序,确保通信正确性;调整发送标志设置逻辑至主循环任务内触发。
chore(headers): 清理无用头文件引用和结构调整
移除了多个源文件中不必要的头文件包含(如 `<cstdio>`、`<array>`),并对部分全局变量声明做了 extern 处理以避免重复定义问题。
|
2025-12-05 00:46:19 +08:00 |
|
cbb
|
871e33e10f
|
fix:修复任务调度不准确的问题,
feat:优化电流采样速率
feat:优化PIDramp效率
feat:优化角度采样效率
fix:回滚CAN打包逻辑
feat:去除timer3
feat(FOC): 优化帕克逆变换与克拉克逆变换计算方式
将原有的三角函数计算替换为查表法,提高运算效率。同时添加了 sqrt(3)/2 的预计算常量,并优化了电压限制部分的计算逻辑,减少重复运算。
|
2025-11-23 18:31:47 +08:00 |
|
cbb
|
59f161bd73
|
refactor(angle): 引入角度卡尔曼滤波器 EncoderAngleKalman
新增 EncoderAngleKalman 类以处理编码器角度噪声,改善角度反馈质量,并配合速度滤波器提供更准确的速度估算。
perf(CAN): 优化CAN数据打包与状态标识字段
改进 pack_u16_to_bytes 等函数实现方式,使用 reinterpret_cast 提高效率;
扩展 Status_code 为多个独立状态位,增强诊断能力。
feat(FOC): 添加电机锁止和停止功能
新增 drv_stop 和 drv_hold 方法用于控制电机占空比,支持紧急制动与角度保持。优化了FOC控制器的接口设计,提升安全性和可控性。
fix(filter): 修正中值滤波器数组大小动态分配问题
将 medium_filter 函数中的排序数组改为使用传入参数 size 动态定义,避免固定大小带来的资源浪费或越界风险,提高滤波精度和稳定性。
chore(project): 移除冗余文件及代码清理
移除了 thermal.cpp/h 文件及相关引用,调整项目结构,删除未使用的全局变量定义、注释和头文件包含,精简系统初始化流程。
|
2025-11-22 23:59:43 +08:00 |
|
cbb
|
a7a3805839
|
feat(ADC): 电流采样支持负数
将 CURRENT_OFFSET 从 0 修改为 -1.60f 以校准电流采样偏差。
同时将 ADC 规则通道的采样时间从 55.5 周期调整为 28.5 周期,提高采样响应速度。
feat(timer): 新增 TIMER1 中断及 PWM 周期位置触发功能
新增 TIMER1_CH3 用于在 PWM 周期特定位置(如 50%)触发中断,并配置相关 NVIC 和中断处理逻辑。
修改 TIMER3 的定时周期注释与实际值一致,为 50 微秒。
重新组织 TIMER2 中断中的任务调度顺序,提升执行效率和逻辑清晰度。
refactor(main): 重构主循环任务处理顺序
调整 main.cpp 中任务执行顺序,确保高优先级任务及时处理。
将部分传感器更新任务移动至更合理的位置,保证数据同步性和控制实时性。
|
2025-11-22 02:21:33 +08:00 |
|
cbb
|
67a1c04458
|
refactor(timer): 引入任务调度机制替代硬编码定时操作
通过定义 `TaskScheduler` 结构体和相关枚举类型,
将原TIMER2中断中耦合的操作解耦成多个独立任务标志,
便于后续维护和扩展,并提高系统实时响应能力。
feat(FOC): 优化电压安全范围与PID参数配置
将电压计算中的 `voltage_power_supply` 替换为更安全的 `v_safe`,
并引入电压有效性检测逻辑。同时调整PID控制器参数以适配12V供电场景。
此外,统一布尔变量初始化方式,提升代码可读性和安全性。
chore(build): 更新CMSIS工具链版本依赖
更新vcpkg配置文件中CMSIS Toolbox的版本要求,
从2.11.0升级至2.12.0,确保构建环境兼容最新功能及修复。
|
2025-11-13 02:04:58 +08:00 |
|
cbb
|
db2d08032c
|
feat(FOC): 优化FOC控制逻辑与热管理机制
- 移除冗余的三值约束宏定义 `_constrain3`
- 修改关机逻辑,引入 `thermal_uncontrol` 标志替代旧 shut_down 计数方式
- 调整恢复函数中错误标志位清零逻辑
- 将部分 uint8_t 类型成员变量改为 bool 类型以提高可读性
- 在类中添加电源电压成员变量并调整 PID 参数初始化
- 移除 PID 控制器中不必要的 CAN 测试代码
- 添加 thermal 控制相关文件引用及初始化
- 使用 switch 替代多重 if-else 提高控制模式处理效率
- 引入基于定时器的任务负载均衡调度机制
- 初始化热量控制器并在主循环中调用更新逻辑
|
2025-11-12 00:46:26 +08:00 |
|
cbb
|
7a602dda48
|
fix(FOC): 修正大角度下会导致角度控制失控的问题
移除冗余的 `_electricalAngle` 函数,修正 `setPhaseVoltage` 中电气角度的计算方式
在定时器中断中增加实时角度更新,支持新增的无 PID 角度控制模式。
|
2025-11-10 02:08:03 +08:00 |
|
cbb
|
b33574d392
|
fix(FOC): 修复角度控制中的冗余CAN传输与传感器角度获取错误
- 修正速度控制中角度传感器数据读取错误,使用current_sensorangle替代getRawAngle
- 在Timer中断中统一使用angle_control进行角度闭环控制
- 完善角度传感器类的角度读取逻辑,增加current_angle_deg和current_angle_rad成员变量
- 添加getcurrent_sensorangle接口用于获取当前原始角度值
|
2025-11-08 21:04:35 +08:00 |
|
cbb
|
99cc397931
|
feat(FOC): 优化SVPWM算法并重构角度控制逻辑
- 引入新的三值约束宏 `_constrain3` 用于SVPWM计算优化
- 修改 `setPhaseVoltage` 函数签名,移除冗余的角度参数,内部自动计算电气角度
- 调整PWM占空比计算方式,提高电压利用率和控制精度
- 移除旧的DEG2RAD和RAD2DEG常量定义,改由initial.h统一管理
- 在initial.h中新增减速比常量REDUCTION_RATIO,并修正拼写错误
- 为角度传感器类更新速度滤波器尺寸,提升速度估算稳定性
- 更新PID控制器时间片常量,简化dt计算逻辑,提高执行效率
- 切换角度闭环控制至新NPID版本,增强系统响应性能
- 修正CAN通信中的目标角度解析逻辑,确保指令正确应用
|
2025-11-08 02:15:14 +08:00 |
|
cbb
|
971374d8ec
|
feat(FOC): 增加闭环速度控制算法
- 重构setPhaseVoltage函数实现,提高执行效率
- 增加update_power函数,动态更新电源电压
- 优化velocity_open_loop函数,调用、setPhaseVoltage避免重复代码
- 实现angle_control和velocity_control闭环控制函数
- 调整PID控制器参数初始化及增加参数设置接口
- 改进电流和编码器速度卡尔曼滤波器实现
- 更新CAN通信数据打包逻辑,增加测试字段
- 在定时器中断中集成多种控制模式切换逻辑
- 完善角度传感器数据处理,改进速度计算方法
- 减小速度滤波数组大小,提升响应速度
|
2025-11-06 02:07:15 +08:00 |
|
cbb
|
516a7bd41d
|
refactor(foc): 重构FOC控制算法与角度传感器接口
- 移除冗余的电机方向和极对数参数传递逻辑
- 简化电气角度计算函数,直接读取角度传感器数据
- 调整电压设置函数,优化PWM输出逻辑
- 注释掉未使用的速度开环控制调用,启用角度闭环控制
- 增加角度和速度获取接口,支持原始值和输出级值区分
feat(sensor): 完善角度传感器数据处理与速度估算
- 增加速度滤波缓冲区,提高速度估算精度
- 改进角度绕回检测阈值,增强鲁棒性
- 添加获取原始角度和速度的接口
- 增加SPI DMA传输超时打印信息
fix(can): 修正CAN通信中的数据打包与解析问题
- 正确发送电机实时速度数据
- 修正CAN FD数据包长度以匹配实际内容
- 角度目标值增加缩放因子适配外部控制指令
|
2025-11-03 02:38:43 +08:00 |
|
cbb
|
974b8e6675
|
feat(FOC): 添加电源电压更新功能
在 FOC 控制器中新增 `update_power` 方法,用于实时获取母线电压,
提升控制系统对电源状态的感知能力。
feat(CAN): 优化 CAN 配置与通信处理
将 CAN 相关宏定义改为 constexpr 常量,并引入角度转换因子。
修正接收数据解析方式,增强通信稳定性与精度。
feat(angle_sensor): 实现角度累积与绕回处理
重写角度传感器驱动,支持角度连续测量与自动绕回处理。
新增 `update`、`getAngle` 和 `reset` 接口,提高角度读取准确性。
feat(main): 增加角度传感器磁感应强度测试
在主函数初始化阶段调用磁感应强度检测函数,辅助判断传感器工作状态。
|
2025-11-02 01:54:01 +08:00 |
|