feat(FOC): 添加FOC控制器初始化函数、支持电压自适应PID调整
添加了FOC控制器的init()方法,用于统一初始化电机控制参数, 包括速度环、角度环和电流环的PID参数设置。同时优化了CAN通信 中的PID参数计算逻辑,引入电压补偿机制,提高了电机控制精度。
This commit is contained in:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user