feat(FOC): 添加FOC控制器初始化函数、支持电压自适应PID调整

添加了FOC控制器的init()方法,用于统一初始化电机控制参数,
包括速度环、角度环和电流环的PID参数设置。同时优化了CAN通信
中的PID参数计算逻辑,引入电压补偿机制,提高了电机控制精度。
This commit is contained in:
cbb
2026-01-21 11:48:31 +08:00
parent c0b5f6902b
commit 3f24292ac1
5 changed files with 46 additions and 21 deletions
+5 -4
View File
@@ -597,13 +597,14 @@ void CAN_transmiter::communication_check() {
// 解析PID参数
u16 P_config = unpack_bytes_to_u16(receive_message.rx_data, 15);
FOC.current_loop.set_P_percent(current_loop_p * P_config);
float voltage = FOC.limit_voltage;
FOC.current_loop.set_P_percent(current_loop_p * P_config / voltage);
P_config = unpack_bytes_to_u16(receive_message.rx_data, 17);
FOC.vel_loop.set_P_percent(vel_loop_p * P_config);
FOC.vel_loop.set_P_percent(vel_loop_p * P_config / voltage);
P_config = unpack_bytes_to_u16(receive_message.rx_data, 19);
FOC.angle_loop.set_P_percent(angle_loop_p * P_config);
FOC.angle_loop.set_P_percent(angle_loop_p * P_config / voltage);
P_config = unpack_bytes_to_u16(receive_message.rx_data, 21);
FOC.vel_inVelAngloop.set_P_percent(vel_angloop_p * P_config);
FOC.vel_inVelAngloop.set_P_percent(vel_angloop_p * P_config / voltage);
} else if (receive_message.rx_efid == CANFD_RESET_ID) {
u8 first_byte = receive_message.rx_data[0];
u8 eigth_byte = receive_message.rx_data[7];