项目:永磁同步电机基于MRAS无传感器控制系统仿真
1. 项目介绍
本项目是一个基于MATLAB代码(main.m)实现的永磁同步电机(PMSM)无传感器矢量控制(FOC)仿真系统。该项目不依赖Simulink图形化模块,而是通过脚本编写离散化时间步进逻辑,完整模拟了电机运行、控制算法计算及状态更新的过程。
系统的核心在于使用模型参考自适应系统(MRAS)替代传统的机械位置传感器(如编码器),实现对电机转子转速和位置的实时估算。控制策略采用经典的双闭环结构(转速环与电流环),并基于$id=0$的磁场定向控制理论,适用于表贴式永磁同步电机(SPMSM)。
2. 功能特性
- 纯脚本仿真架构:完全使用MATLAB脚本语言构建,实现了从工况生成、电机物理模型(隐含)、坐标变换到控制算法的全流程离散化仿真。
- 无传感器MRAS观测器:实现了基于Popov超稳定性理论的MRAS转速估算算法,在估计的旋转坐标系下构建可调模型。
- 双闭环FOC控制:包含外环转速PI控制和内环电流PI控制,实现了$id=0$的解耦控制策略。
- 动态工况模拟:代码内置了复杂的运行工况,包括转速阶跃变化和负载突变,用于验证算法的动态响应。
- 参数化设计:电机参数(如电阻、电感、磁链)和控制参数(PI增益、自适应增益)均集中定义,便于调节和分析。
3. 系统要求
- MATLAB R2016a及以上版本(无需Simulink模块库,仅需基础MATLAB环境)。
- 建议内存:4GB及以上。
4. 使用方法
- 打开MATLAB软件,定位到项目所在目录。
- 直接运行
main.m 脚本。 - 脚本将执行参数初始化,并开始进行时域仿真循环。
- (注:由于提供的代码片段在循环结束前截断,完整运行需要补全循环结尾的数据记录与绘图部分)。
5. 代码逻辑与算法实现细节
main.m 文件主要包含系统初始化和仿真主循环两大部分。以下是对实际代码逻辑的详细分析:
5.1 参数初始化与状态定义
- 电机模型:定义了一台4极对数的表贴式永磁同步电机(SPMSM),其中d轴与q轴电感相等(8.5mH)。
- 仿真设置:设定了10kHz的采样频率(步长1e-4秒)和0.8秒的总仿真时长。
- 控制器增益:分别为转速环和电流环配置了PI参数,并为MRAS观测器配置了自适应增益(gamma)和积分增益。
- 状态变量:初始化了电机的实际状态(虽然代码主要关注控制侧)、控制器的积分项状态以及MRAS观测器的内部状态(估计电流、估计转速、估计角度)。
5.2 仿真主循环逻辑
代码通过一个 for 循环模拟时间步进,每一名为一个采样周期。
#### A. 工况生成(输入信号)
- 转速指令:系统在0-0.4秒设定参考转速为1000 RPM,在0.4秒后阶跃至1500 RPM,用于测试系统的跟踪性能。
- 负载转矩:在0.2秒时模拟突加5 Nm负载,用于测试系统的抗扰性能。
#### B. 传感器模拟与坐标变换
- 代码利用实际电角度进行Park/Clarke变换的模拟,生静止坐标系下的Alpha-Beta电流。
- 关键逻辑:尽管系统知道实际角度(用于模拟电机物理行为),但在MRAS算法和后续的反馈控制中,严格限制仅使用估算角度或由此推导的变量。
#### C. MRAS 转速估算器(核心算法)
代码实现了一个在
估计的同步旋转坐标系下工作的MRAS观测器:
- 坐标变换:利用上一时刻的估计角度(
hat_theta_e)对静止坐标系的电流(i_alpha, i_beta)和电压进行旋转变换,得到基于估计角度的反馈电流(id_fb, iq_fb)和电压。 - 参考模型:这里实际上将变换后的电机实际电流视为参考模型的输出。
- 可调模型:基于电流状态方程构建。代码使用前向欧拉法离散化求解d轴和q轴电流的微分方程。
* 方程考虑了定子电阻压降、电感交叉耦合项($L_q cdot omega cdot i_q$ 等)以及反电动势项。
- 自适应律:依据Popov超稳定性理论,选取q轴电流误差(
iq_fb - hat_iq)作为误差信号。该误差通过一个比例-积分(PI)环节(变量 hat_omega_e 和 mras_int)来实时校正估算转速 hat_omega_e。 - 位置更新:估算转速积分得到估算位置
hat_theta_e,并进行归一化处理(0到2pi)。
#### D. 转速环控制 (PI)
- 计算参考转速与MRAS估算转速(非实际转速,体现无传感器特性)之间的误差。
- 通过PI控制器计算q轴参考电流
iq_ref。 - 包含了积分限幅(抗饱和)和输出限幅(最大电流限制20A)。
- FOC策略设定d轴参考电流
id_ref = 0。
#### E. 电流环控制 (PI)
- 计算参考电流与反馈电流(基于估算角度变换得来)的误差。
- 前馈解耦:代码实现了电压前馈解耦策略。
* d轴电压叠加了
-Lq * w * iq 项。
* q轴电压叠加了
Ld * w * id + w * Psi_f 项(反电动势补偿)。
- 通过PI控制器生成最终的电压指令
ud_cmd 和 uq_cmd。
#### F. 电压限幅
- 代码片段末尾展示了对输出电压矢量幅值的限制逻辑,以确保不超过SVPWM调制的直流母线电压利用率限制($V_{dc} / sqrt{3}$)。
---
注意:本说明文档严格基于提供的代码内容编写。代码中实际采用了在估计旋转坐标系下的电流模型作为MRAS的可调模型,而非静止坐标系下的磁链或反电动势模型。系统闭环控制完全依赖于MRAS的估算值,体现了无传感器控制的特点。