本帖最后由 a976209770 于 2024-12-26 23:27 编辑
1. FOC算法模块概述
FOC(无传感器磁场定向控制)是一种高效的电机控制方法,它通过直接控制电机的磁场方向来实现高精度的转速和位置控制。在 APM32M3514 电机控制系统中,FOC算法结合了电流环、速度环、以及SVPWM(空间矢量脉宽调制)技术,从而实现对电机的精确控制。
1.1 关键功能- 电流环控制:确保电机输出的力矩与电流成正比。
- 速度环控制:控制电机的转速,通过调整电流命令值来实现目标速度。
- SVPWM调制:通过生成合适的PWM信号来控制逆变器,从而实现对电机相电流的精确控制。
2. FOC算法模块的文件结构
2.1 关键文件
- MOTOR_CONTROL/FOC_Ctrl.c:
- 该文件实现了FOC算法的核心功能,包括电流环控制、速度环控制、SVPWM调制等。
- 文件中包括了 PI控制器 的实现和 空间矢量脉宽调制(SVPWM) 的生成函数。
- MOTOR_CONTROL/inc/FOC_Ctrl.h:
- 该头文件声明了FOC算法所需要的函数原型。
- 包含电流环、速度环控制的函数声明,及SVPWM函数的声明。
3. 电流环和速度环控制的实现
3.1 电流环控制
电流环控制是FOC算法的核心部分,电流环的作用是调节电机的转矩。通过测量电机的电流并与参考电流进行比较,PI控制器将调整电流命令,以确保电机产生正确的转矩。
在 FOC_Ctrl.c 中,电流环的实现代码如下:
// 电流环 PI控制
void CurrentControl(void) {
// 计算Iq轴电流误差
Iq_error = IqRef - Iq_actual;
// 计算电流控制输出
Iq_control = PI_Calculate(Iq_error, &Iq_PI_Params);
// 计算Id轴电流误差
Id_error = IdRef - Id_actual;
// 计算电流控制输出
Id_control = PI_Calculate(Id_error, &Id_PI_Params);
}
电流环控制流程- 误差计算:计算实际电流与目标电流(IqRef 和 IdRef)之间的差值。
- PI控制:使用PI控制器对误差进行调节,输出控制量(Iq_control 和 Id_control)。
- 电流命令输出:根据PI控制器的输出,调整电流参考值,控制逆变器的PWM输出。
PI控制器PI控制器通过调节比例(P)和积分(I)参数,确保电流误差最小化。PI控制器的计算代码如下:
// PI计算函数
int16_t PI_Calculate(int16_t error, PI_Params *params) {
params->integrator += error; // 积分项
int16_t output = (params->Kp * error) + (params->Ki * params->integrator); // 输出项
return output;
}
Kp 和 Ki 为比例和积分增益,控制器根据误差调整电流输出。
3.2 速度环控制
速度环控制是FOC算法的另一重要组成部分,其作用是控制电机的转速,确保电机运行在目标速度下。
速度环控制实现的核心思想是:根据目标速度(s16SpdCmd)和实际速度(s16SpeedActual)之间的误差,调整电流(IqRef)来调节电机的转速。
在 FOC_Ctrl.c 中,速度环的实现代码如下:
// 速度环 PI控制
void SpeedControl(void) {
// 计算目标速度与实际速度的误差
speed_error = s16SpdCmd - s16SpeedActual;
// 通过PI控制器调节速度
speed_control = PI_Calculate(speed_error, &Speed_PI_Params);
// 更新电流参考值
IqRef = speed_control; // 将速度环的输出作为电流参考
}
速度环控制流程- 误差计算:计算目标速度与实际速度之间的差值。
- PI控制:通过PI控制器调节速度误差,输出电流参考(IqRef),用于电流环控制。
4. SVPWM(空间矢量脉宽调制)生成逻辑
SVPWM 是一种高效的调制方法,用于控制逆变器输出的三相电压,从而控制电机的转矩和速度。SVPWM 通过选择合适的矢量组合,实现逆变器的PWM信号生成,从而控制电机的相电流。
4.1 SVPWM生成代码
在 FOC_Ctrl.c 中,SVPWM的实现代码如下:
// SVPWM生成
void SVPWM_Generate(void) {
// 根据控制目标(Iq_control, Id_control)计算所需的电压矢量
float V_alpha = Iq_control * cos(Theta) - Id_control * sin(Theta); // 计算V_alpha
float V_beta = Iq_control * sin(Theta) + Id_control * cos(Theta); // 计算V_beta
// 使用V_alpha和V_beta计算PWM占空比
CalculatePWM(V_alpha, V_beta);
}
SVPWM生成流程- 计算电压矢量:根据电流命令值(Iq_control 和 Id_control)以及转子角度(Theta),计算空间矢量的V_alpha和V_beta分量。
- 计算PWM占空比:根据电压矢量分量计算PWM占空比,最终生成三相电机驱动的PWM信号。
5. 参考速度(s16SpdCmd)的作用
参考速度 s16SpdCmd 是系统输入的重要参数,表示用户期望的电机转速。通过速度环控制,s16SpdCmd 和实际速度之间的误差被PI控制器调节,生成电流参考(IqRef)。电流参考进一步影响电机的力矩输出。
5.1 参考速度与电流控制的关系
// 更新电流参考
IqRef = speed_control; // 速度环输出影响电流参考值
功能说明:
- 目标速度 s16SpdCmd 影响 IqRef 的值,最终通过电流控制系统调节电机的转矩。
6. FOC控制算法的整体流程
整个 FOC 控制过程由多个环节和函数协同工作,包含坐标变换、电流控制、速度控制、以及PWM生成。以下是整个算法的整体流程:
流程图详细描述- 开始:
- 读取电流反馈(Iu, Iv, Iw):
- Clarke变换(Iu, Iv 到 Ialpha, Ibeta):
- Clarke变换将三相电流(Iu, Iv, Iw)转换为 α-β 轴电流(Ialpha, Ibeta)。
- 变换公式:Ialpha=IuIbeta=(Iu+2∗Iv)/√3Ialpha = IuIbeta = (Iu + 2 * Iv) / √3
- Park变换(Ialpha, Ibeta 到 Id, Iq):
- 使用 Park 变换将 α-β 电流转换到 d-q 轴电流(Id, Iq)。
- 变换公式:Id=Ialpha∗cos(θ)+Ibeta∗sin(θ)Iq=−Ialpha∗sin(θ)+Ibeta∗cos(θ)Id = Ialpha * cos(θ) + Ibeta * sin(θ)Iq = -Ialpha * sin(θ) + Ibeta * cos(θ)
- 电流环控制 PI:
- 对 Id 和 Iq 进行 PI 控制,确保电机的转矩和磁场方向精确控制。
- PI 控制函数会计算出新的电流控制命令。
- 速度环控制 PI:
- 计算目标速度 s16SpdCmd 与实际速度 s16SpeedActual 之间的误差,采用 PI 控制调节速度。
- 输出控制信号作为电流参考 IqRef。
- 计算电流参考 IqRef:
- 根据速度环的输出结果调节 IqRef,调整电流参考,以实现目标转速。
- 滑模观测器估算转子角度和速度:
- 使用滑模观测器或其他无传感器方法估算转子的位置和速度。
- 结合电流和电压的反馈信息估算转子位置 (Theta) 和转速 (Speed)。
- 计算电压矢量 Vd, Vq:
- 根据电流参考 IqRef 和 IdRef 计算电机的电压矢量 Vd 和 Vq,这将用来控制逆变器的输出。
- SVPWM生成:
- 使用 SVPWM(空间矢量脉宽调制)生成逆变器控制的PWM信号,控制电机的相电流。
- 通过逆变器调整电机相电压,从而实现对电机转速和转矩的控制。
- 计算PWM占空比:
- 根据 Vd 和 Vq 计算电压矢量的占空比,调节PWM信号。
- 生成PWM信号:
- 生成适用于逆变器的PWM信号,调整逆变器的开关状态。
- 控制逆变器输出三相电压:
- 驱动电机:
- 监测电机状态:
- 系统实时监测电机的运行状态,确保电机在正常工况下运行。
- 状态切换判断:
- 如果检测到停止命令或错误(如过流、过压等),则切换电机的状态。
- 如果没有错误或停止命令,则继续运行。
- 切换到新状态:
- 当发生故障或需要停机时,系统会切换到适当的状态,如 RunState_Freewheel(空转状态)或 RunState_Stop(停止状态)。
- 继续控制电机:
- 如果没有发生状态切换,则系统继续按照FOC算法控制电机。
7. 总结
在本篇文章中,详细介绍了 APM32M3514 中 FOC控制算法 模块的实现,包括电流环控制、速度环控制、SVPWM生成和转子角度估算。通过结合实际代码和流程图,可以更清晰地理解 FOC 算法的工作原理及其实现过程。
FOC 算法的成功实现依赖于多个关键环节的协调工作,包括坐标变换、电流调节、速度控制、转子角度估算和PWM调制等。通过这些步骤,系统能够精确控制电机的转速和转矩。
|