基于SVPWM的永磁同步电机高性能控制仿真系统
项目简介
本项目是一个完全基于MATLAB脚本(.m文件)实现的永磁同步电机(PMSM)矢量控制仿真系统。区别于传统的Simulink图形化建模,本项目通过纯代码方式构建了完整的电控系统闭环,涵盖了电机数学模型、磁场定向控制(FOC)、空间矢量脉宽调制(SVPWM)算法以及双闭环PI控制策略。该系统模拟了电机在启动、稳态运行及负载突变情况下的动态响应,是理解PMSM底层控制逻辑与SVPWM原理的理想参考。
功能特性
- 纯代码仿真环境:不依赖Simulink图形模块,直接运用MATLAB矩阵运算与逻辑控制实现全系统仿真,便于深入理解算法细节。
- 高精度电机建模:基于d-q轴电压/电流微分方程,使用欧拉法(Euler method)实现电机电气与机械方程的时间步进积分。
- FOC矢量控制:实现了经典的id=0转子磁场定向控制策略。
- SVPWM调制算法:内置空间矢量扇区判断与作用时间计算逻辑,优化电压矢量合成。
- 双闭环PI控制:包含转速环(ASR)与电流环(ACR),均具备积分抗饱和(Anti-windup)与输出限幅功能。
- 前馈解耦控制:在电流环中引入了电压前馈解耦项,消除了d-q轴之间的耦合影响。
- 多维数据可视化:提供转速、转矩、三相电流、d-q轴电流及SVPWM扇区与占空比的实时波形显示。
系统要求
- MATLAB R2018a及以上版本(无需特殊工具箱,基础版即可运行)。
使用方法
- 确保MATLAB当前工作路径包含
main.m 文件。 - 直接运行
main 函数。 - 控制台将显示“仿真开始”提示。
- 等待计算完成后(约几秒至十几秒,取决于计算机性能),系统将自动弹出三个分析图表窗口。
- 用户可通过修改代码顶部的“系统参数初始化”区域来调整电机参数、PI增益或目标工况(如转速、负载)。
main.m 代码功能与实现逻辑分析
代码主体采用离散时间步进仿真,主要流程包含以下几个关键部分:
1. 系统参数初始化
代码首先定义了仿真步长(默认为10us,对应100kHz计算频率)和总时长。随后初始化了以下关键参数:
- 电机本体:定义了定子电阻、d/q轴电感、永磁体磁链、极对数、转动惯量及摩擦系数。
- 逆变器:设定直流母线电压及最大输出电压限幅。
- 控制器:配置ASR(速度环)和ACR(电流环)的Kp、Ki参数及输出限幅值。
- 目标工况:预设了目标转速(1000 RPM)和在0.1秒时的突加负载(2.0 N.m)。
2. 状态变量与主循环
仿真采用
for 循环遍历时间向量,模拟实际控制器的实时运行过程:
- 指令生成:将RPM转速指令转换为rad/s,并根据当前时间判断是否施加负载转矩。
- 反馈测量:模拟传感器读取当前的机械角度与电流,并计算电角度(归一化到0-2pi)。提供了用于观测的反算三相电流逻辑。
- 速度环控制:计算转速误差,通过PI控制器生成q轴参考电流(iq_ref),d轴参考电流(id_ref)恒定为0。
- 电流环控制:
* 计算id、iq的误差。
* 通过PI控制器计算基础电压控制量。
*
解耦处理:引入
we * L * i 项对电压进行补偿,消除d-q轴间的耦合电动势。
- 坐标变换:执行逆Park变换,将d-q轴电压转换为两相静止坐标系下的Alpha-Beta电压。
- SVPWM调制:调用调制函数计算三相作用时间与扇区,输出逆变器重构电压。
- 电机物理模型(Plant):
* 利用计算出的实际电压,结合电机电压平衡方程(微分方程),计算d-q轴电流的导数(did/dt, diq/dt)。
* 根据电磁转矩方程与机械运动方程,计算转速导数(dw_dt)。
* 利用欧拉积分法更新下一时刻的电流、转速与位置状态。
- 数据记录:将每一步的关键变量存入Log结构体,用于后续绘图。
3. 可视化模块
仿真结束后,代码生成三幅图表:
- 图1:对比参考转速与实际转速的跟踪效果,以及电磁转矩对负载阶跃的动态响应。
- 图2:展示三相定子电流(局部放大观察正弦度)和d-q轴电流的稳态与动态波形。
- 图3:分析SVPWM的内部变量,包括扇区切换情况和三相占空比的变化波形。
关键算法与函数细节
PI_Controller (PI控制器)
实现了位置式PI控制算法。
- 包含比例项与积分项计算。
- 抗饱和机制:对积分器的累若值进行动态限幅,防止偏差长期存在导致的积分饱和(Windup)现象。
- 同时对最终控制输出进行最大/最小值限幅。
Coordinate Transformations (坐标变换)
- Clarke / InvClarke:实现三相静止坐标系(abc)与两相静止坐标系(alpha-beta)之间的等幅值变换。
- Park / InvPark:实现两相静止坐标系与两相旋转坐标系(d-q)之间的变换,利用电角度的正弦/余弦值进行旋转投影。
SVPWM_Modulation (SVPWM调制核心)
- 扇区判断:基于Alpha-Beta电压计算三个参考电压变量(Vref1, Vref2, Vref3),通过其符号组合(N值)精确定位当前电压矢量所在的六边形扇区。
- 时间计算:根据扇区位置,计算相邻两个非零电压矢量及零矢量的作用时间(Ta, Tb, Tc),最终输出用于驱动电机的占空比或等效平均电压。