2. 系统架构设计

任务定义

本案例目标为:针对永磁同步电机(PMSM)磁场定向控制(FOC)应用,在Simulink中搭建一个可扩展的电机控制器模型框架。该框架需包含从逆变器直流母线电压、相电流采样到PWM占空比输出的完整信号链,并预留速度环、电流环控制器的接入接口,为后续案例中的控制算法开发提供固定架构。

模型框架层级设计

采用三层结构组织模型,自上而下分别为:系统级(含电源、电机负载与控制器交互)、控制级(含坐标变换、PI控制器、SVPWM调制)、接口级(ADC采样量化、PWM输出限幅)。该分层确保后续替换或增删算法模块时不影响整体信号路由。

系统级(电源 + 电机 + 控制器交互) Vdc (V) 逆变器 + PMSM (电机模型) TL (N·m) 控制级(坐标变换 + 控制器 + SVPWM) Clarke abc → αβ Park αβ → dq 电流PI控制器 (Id/Iq 双环) 逆Park dq → αβ SVPWM 扇区判断 + 占空比 速度环预留 (ω* → Iq*) 接口级(采样量化 + 输出限幅) ADC采样模块 ia/ib/ic + 量化 电角度计算 θe = θm × P/2 PWM输出限幅 0~100% 占空比 ia/ib/ic θe 占空比信号 相电流反馈 系统级模块 控制级模块

Simulink模型框架搭建步骤

在MATLAB命令窗口执行 sl_new 创建新模型,按以下步骤搭建框架。所有模块参数通过模型工作区(Model Workspace)中的MATLAB结构体 motorParam 统一管理。

1. 系统级模块配置

  • 直流电源:使用Constant模块,值设为 motorParam.Vdc(默认300V);
  • 逆变器与电机:使用Simscape Electrical中的 PMSM 模块,参数设置为 motorParam.Rs、motorParam.Ld、motorParam.Lq、motorParam.FluxPM、motorParam.P(极对数);
  • 负载转矩:使用Step模块,初始值0,终值 motorParam.TL(默认5N·m),阶跃时间设为0.1s。

2. 控制级信号链搭建

按上图布局,依次连接以下模块(均从Simulink/Simscape库拖入):

  1. Clarke变换:使用Fcn模块或MATLAB Function模块实现 i_alpha = ia; i_beta = (ia + 2*ib)/sqrt(3);
  2. Park变换:输入 i_alpha、i_beta 和电角度 theta_e,输出 id = i_alpha*cos(theta) + i_beta*sin(theta),iq = -i_alpha*sin(theta) + i_beta*cos(theta);
  3. 电流PI控制器:使用两个离散PI控制器(Id环和Iq环),采样时间设为 motorParam.Ts(默认1e-4s),比例增益 Kp = motorParam.Kp_i,积分增益 Ki = motorParam.Ki_i;
  4. 逆Park变换:将PI输出的 Vd*、Vq* 变换回 V_alpha、V_beta;
  5. SVPWM模块:使用MATLAB Function实现扇区判断与占空比计算,输入 V_alpha、V_beta、Vdc,输出三相占空比 Ta、Tb、Tc(范围0~1)。

3. 接口级与反馈回路

  • ADC采样:从PMSM模块引出三相电流 ia、ib、ic,通过Gain模块乘以 motorParam.Kadc(ADC比例系数)模拟量化;
  • 电角度计算:从PMSM模块引出机械角度 theta_m,通过Gain模块乘以 P/2 得到电角度 theta_e;
  • PWM输出限幅:SVPWM输出的占空比经过Saturation模块限幅至 [0.05, 0.95],防止上下桥臂直通;
  • 闭环连接:将限幅后的占空比通过PWM调制模块(或直接连接)送回逆变器门极信号输入端。

4. 模型参数初始化代码

在模型回调函数 InitFcn 中添加以下参数定义:

% 电机参数
motorParam.Rs = 0.2;        % 定子电阻 (Ω)
motorParam.Ld = 0.005;      % d轴电感 (H)
motorParam.Lq = 0.005;      % q轴电感 (H)
motorParam.FluxPM = 0.1;    % 永磁体磁链 (Wb)
motorParam.P = 4;           % 极对数
motorParam.Vdc = 300;       % 直流母线电压 (V)
motorParam.TL = 5;          % 负载转矩 (N·m)

% 控制参数
motorParam.Ts = 1e-4;       % 电流环采样时间 (s)
motorParam.Kp_i = 10;       % 电流环比例增益
motorParam.Ki_i = 500;      % 电流环积分增益
motorParam.Kadc = 1/100;    % ADC比例系数 (V/A)

% 速度环预留参数(后续案例使用)
motorParam.Kp_w = 0.5;      % 速度环比例增益
motorParam.Ki_w = 20;       % 速度环积分增益

验证方法与判定标准

完成模型搭建后,按以下步骤验证框架正确性:

  1. 模型编译检查:点击 Ctrl+D 更新图,确认无红色错误提示;
  2. 开环测试:将电流PI控制器输出暂时置为常数(如 Vd*=0,Vq*=10),运行仿真0.1s,观察PMSM模块输出的三相电流是否为正弦波形,且频率与给定电压对应;
  3. 闭环测试:恢复PI控制器连接,设置 Iq_ref = 5A,Id_ref = 0,运行仿真0.5s,通过Scope观察 iq 是否在0.1s内收敛至5A,稳态误差小于2%;
  4. 判定标准:若上述测试中电流波形无畸变、闭环跟踪无稳态误差且无发散振荡,则框架搭建成功,可进入后续控制算法开发。

注意:本案例仅搭建模型框架,PI参数为初始估计值,若闭环测试出现振荡,可适当减小 Kp_i 或增大 Ki_i 重新验证。