MBD笔记:IPMSM 速度控制模型解析

简介

本文对Matlab官方示例IPMSM 速度控制进行简单分析,观察如何在Matlab/Simulink平台搭建PMSM速度控制仿真模型.

示例模型简介:

示例展示了如何控制基于内置式永磁同步电机 (IPMSM) 的汽车电力牵引驱动装置中的转子角转速. 高压电池通过受控三相转换器(即三相逆变器 Inverter)为 IPMSM 供电. IPMSM 根据负载以电机模式和发电模式运行。理想角速度源提供负载。Control 子系统使用开环方法控制 IPMSM 转矩,并使用闭环方法控制电流。在每个采样时刻,转矩请求都会转换为相关的参考电流。电流控制基于 PI,并且其使用的采样率比转矩控制所用的采样率更快。仿真在电机模式和发电机模式下都使用了多个转矩阶跃。任务调度是在 Stateflow® 中设计的。Scopes 子系统包含示波器,可用于查看仿真结果

仿真模型(顶层):

img

IPMSM 速度控制几个要点:

  1. 绘制电机转速曲线(IPMSMVelocityControlPlotMotorSpeed.m实现);
  2. Converter模块可选择2种仿真模型:精细模型(默认) 或 等效模型;
  3. 通过Simscape Results Explorer查看仿真结果;
  4. 修改模型参数;
  5. 其他.

下面我们通过仿照搭建仿真模型方式,逐步学习、分析示例模型.

仿真模型

注意:模型使用的传感器都是理想传感器,因此检测到的信号不需要额外处理,而真实物理世界的传感器,需要针对不同特性传感器进行处理.

顶层模型

img

主要几个部分:

  1. Input模块,模拟输入目标转速、负载转矩信息;
  2. Control控制模块,将输入的目标转速,检测到的三相电流(iabc)、机械角速度(w)、机械角度(a)、母线电压(Vdc)信息,通过该模块计算得到;
  3. Converter 逆变器模块,接收Control输出6相(3对)PWM波形,驱动IPMSM电机选择,同时采集3相电流iabc;
  4. 负载模块,通过Torque Source(转矩源)接受负载转矩信息,模拟负载转矩,同时测量trq(电磁转矩),w,a(转速、角度);
  5. Scopes模块,示波器统一监测各模块重要信号.

模型设置(属性):

  1. 预加载 IPMSMVelocityControlData;,对应工程目录下IPMSMVelocityControlData.m文件.

img

IPMSMVelocityControlData.m主要内容:

主要初始化 一些全局变量,如最大功率Pmax, 最大扭矩Tmax, Ld d轴电感,Lq q轴电感等.
注意2个变量num, den是在对应的模型封装中定义的.

%% Machine Parameters
Pmax = 35000;      % Maximum power                      [W]
Tmax = 205;        % Maximum torque                     [N*m]
Ld   = 0.00024368; % Stator d-axis inductance           [H]
Lq   = 0.00029758; % Stator q-axis inductance           [H]
L0   = 0.00012184; % Stator zero-sequence inductance    [H]
Rs   = 0.010087;   % Stator resistance per phase        [Ohm]
psim = 0.04366;    % Permanent magnet flux linkage      [Wb]
p    = 8;          % Number of pole pairs
Jm   = 0.1234;     % Rotor inertia                      [Kg*m^2]

%% High-Voltage System Parameters
Cdc  = 0.001;      % DC-link capacitor      [F]
Vnom = 325;        % Nominal DC voltage     [V]
V1   = 290;        % Voltage V1(< Vnom)     [V]
AH0  = 280;        % Initial battery charge [hr*A]

%% Control Parameters
Ts   = 5e-6;       % Fundamental sample time            [s]
fsw  = 10e3;       % PMSM drive switching frequency     [Hz]
Tsi  = 1e-4;       % Sample time for inner control loop [s]
Tso  = 1e-3;       % Sample time for outer control loop [s]

Kp_id = 0.8779;     % Proportional gain id controller
Ki_id = 710.3004;   % Integrator gain id controller
Kp_iq = 1.0744;     % Proportional gain iq controller
Ki_iq = 1.0615e+03; % Integrator gain iq controller

Kp_omega = 3.5;     % Proportional gain velocity controller
Ki_omega = 200;     % Integrator gain velocity controller

%% Zero-Cancellation Transfer Functions
numd_id = Tsi/(Kp_id/Ki_id);
dend_id = [1 (Tsi-(Kp_id/Ki_id))/(Kp_id/Ki_id)];
numd_iq = Tsi/(Kp_iq/Ki_iq);
dend_iq = [1 (Tsi-(Kp_iq/Ki_iq))/(Kp_iq/Ki_iq)];

numd_omega = Tso/(Kp_omega/Ki_omega);
dend_omega = [1 (Tso-(Kp_omega/Ki_omega))/(Kp_omega/Ki_omega)];

%% Current References
load IPMSM35kWCurrentReferences;

上面代码,最后加载 IPMSM35kWCurrentReferences.mat文件. 提供IPMSM 电流参考查表数据,用于 FOC 控制中的 MTPA(最大转矩电流比)+ 弱磁控制.

这个表是通过 离线计算 + 优化算法 生成的,不是实时计算的,因为MCU没有这个算力.

img

  1. 退出时,清理资源

主要清理 预加载时申请的资源

img

Input模块

img

Input模块由Signal Editor模型组成. 参数含义:

场景设置:

参数 当前值 含义
文件名 IPMSMVelocityControlInput.mat 信号数据存储的 MAT 文件
激活场景 Test_1 当前使用的测试工况名称
活动信号 Torque 当前正在编辑的信号(Speed 或 Torque)

信号属性:

参数 当前值 含义
使用来自以下源的属性 Dialog parameters 从对话框参数获取属性设置
将信号属性应用于所有场景 该信号的属性(如单位)对所有场景生效
将信号属性应用于所有信号 不跨信号应用(仅当前信号)

输出设置:

参数 当前值 含义
输出总线信号 不作为总线信号输出
单位 inherit 继承上游/下游单位(或手动指定如 N*m)
采样时间 0 连续采样(或继承模型步长)
插值数据 Signal在离散时间点之间的数据,使用线性插值得到
启用过零检测 精确检测信号跳变/过零时刻,信号穿0瞬间插值,从而避免固定步长采样错过关键事件
最终数据值之后的输出 外插 超出定义时间后,按最后趋势外推

我们打开信号编辑器(对应文件IPMSMVelocityControlInput.mat),能用可视化方式编辑输入数据.

  • 输入转速(Speed)信号

这个转速含义是人工输入的目标转速.. 转速从0逐渐增加到3000RPM.

img

  • 输入转矩(Torque)信号

img

扭矩从0到-98,再到+26.

注:
负数负载转矩,提供驱动力矩,推动电机转动,外部拖动电机,能让逆变器切换到发电模式,能量回馈直流母线;
正向负载转矩,提供阻力矩,阻碍电机转动,电机克服负载做功,能让逆变器切换到电机模式;

Inverter模块

img

主要包含直流325V电池电源、DC-Link 电容(直流母线电容)、母线电压检测电路、逆变器Inverter、驱动门电路、相电流检测电路.

  • 电池电源

img

电池电荷量 = 电池剩余电量,用于 SOC 跟踪和能量管理.
当然,我们已经设置为 “无限”,初值如何设置都不重要.

  • 母线电容

在逆变器系统中起关键作用:

1)稳定母线电压,提供稳定Vdc;
2)吸收纹波电流,滤除逆变器开关引起的高频电流纹波;
3)能量缓冲,瞬时功率交换,补偿电池响应慢;
4)抑制电压尖峰,吸收电机回馈能量,防止母线过压.

img

母线电容容值如何计算?

工程经验公式:

通用设计:

\[C_{dc} = \frac{P_{out}}{2\pi f_{sw} \cdot V_{dc}^2 \cdot \Delta V_{dc} \%} \]

简化公式:

\[C_{dc} \approx \frac{P_{out}}{100 \cdot f_{sw} \cdot V_{dc}} \quad (\mu F/kW) \]

应用场景 经验值
通用变频器 20~50 μF/kW
电动汽车 10~30 μF/kW
光伏逆变器 5~15 μF/kW
高功率密度 3~10 μF/kW

而我们的应用是针对35kW电动汽车驱动,经验值范围15~30μF/kW,所以最终电容值范围525~1050 μF.

而我们取1mF,是合理的.

  • Vdc检测模块

就是一个理想电压传感器,检测母线电压(Vdc),这电压值会提供给Control模块,用于计算、保护策略.

img

1、2都是连接端口(Connection Port),专门连接物理电路(区别于数字电路的Inport模型);
Vdc是Goto模型,用于给指定From模块发送信号.

  • Inverter模块

相当于6个(3对)MOS管/IGBT,由3组互补中心对称的PWM波驱动,Inverter模块再驱动电机工作.

img

保真度级别2个选项区别

选项 内部建模 仿真速度 精度
详细模型 - 开关器件 6 个 IGBT + 二极管逐个建模 慢(1μs 步长) 高,含开关损耗、尖峰
平均模型 - 等效电压源 理想受控电压源 快(100μs 步长) 低,只关心系统动态

官方示例需要精确仿真 PWM 开关过程、电流纹波、损耗分析,因此选详细模型.

开关器件为什么选 IGBT?

器件 适用功率 特点
IGBT >10kW 耐压高、电流大、成本适中
MOSFET <10kW 开关快、导通电阻低
SiC MOSFET 任意 高频、高效、贵

35kW 属于中功率,IGBT 是工业标准.

  • Gate Driver(栅极驱动)模块

img

img

Gate Driver 是驱动 IGBT/MOSFET 开关的专用电路,PWM 控制信号 转换为 6 路 IGBT 栅极驱动信号.

Gate Driver 模型 = PWM 信号分配器 + 死区生成器 + 电平转换器.

该模块2个端口:

1)S端口,接收 PWM 控制指令(来自 PWM Generator或者MCU),告诉 Gate Driver 何时开关各相 IGBT;
2)G端口,输出 6 路经过处理的栅极驱动信号,直接控制 IGBT 开关.

要驱动PMSM,通常是3对(6路)中心对称的互补PWM波形.

  • iabc相电流采集

img

仿真模型用的是理想电路传感器(Current Sensor),采集3相电路. 当然,实际电路中,我们通常会用相电阻采集相电流.

注意:Current Sensor并不能直连Goto模型iabc,因为Current Sensor输出物理信号,而iabc是 Simulink 信号,需要通过PS-Simulink Converter模型转换.

IPMSM电机及负载转矩模块

img

这个模块提供IPMSM模型,转矩源(Torque Source)模拟负载转矩,同时传感器检测机械转矩(trq)、转子的转速和位置(w,a). 另外,解算器(Solver Configuration).

  • IPMSM模块

仿真内置式永磁同步电机电机控制笔记:PMSM无位置传感器控制介绍(IPMSM)

img
img

电气连接:选择复合三相端口,三相abc就会变成一个端口~
IPMSM核心特征:凸极性,即Ld < Lq,设置对应值的时候,需要注意;

零序分量是三相电流平均值\(i_0=\frac{1}{3}(i_a+i_b+i_c)\),零序分量存在的必要条件:三相之和不等于零.

零序:选择“排除”,相当于强制零序分量为0,即\(i_a+i_b+i_c=0\). 物理上,要求电机是星型绕组(Y接),中线没有引出(三相三线制);如果是三相四线制,则要求引出中线.

转子角定义:工程上,通常选择a相磁轴和q轴之间角度,会决定转子位置角\(θ_e\)(电角度)的参考基准.

端口:
~ abc三相复合端口,即相电流输入端口;
R 机械旋转端口(Rotational),电机转轴侧,连接负载/减速器/编码器;
C 机械壳体端口(Casing/Case),电机定子/外壳侧,通常接地或连接机架. C通常接Mechanical Rotational Reference(简称MRRefLoad),而不是GND,因为前者是机械旋转域的0 rad/s参考,而后者是电气域的0V参考.

  • 转矩源(Torque Source)和转动惯量(Inertia)

电机的机械旋转的运动方程(参见MBD笔记:三相PMSM数学模型(一)公式(4)):

\[J \frac{d\omega}{dt} = T_e - T_L - B\omega \]

电机系统中,转矩源(Torque Source)和转动惯量(Inertia)2个模块必须同时加,如果不加 Inertia,则方程变成:

\[0 = T_e - T_L - B\omega \]

转矩源端口:

1)机械旋转端口(Rotational)R,连接旋转轴,传递机械运动(机械角速度ω、机械角度θ、转矩);
2)信号输入端口(Signal)S,即控制信号来自 Input模块的Torque 输入转矩指令值(N·m);
3)机械旋转端口(Casing/Case)C,反作用力矩端口,通常接地(MRRefLoad).

  • trq模块

检测并传递转矩.

img

  • w,a模块

检测并传递机械角速度ω、机械角度θ

img

Control模块

控制核心,接收目标转速信号(RPMReq),检测信号:三相电流(iabc_sens)、机械角速度(w_sens)、机械角度(th_sens)、母线电压(vdc_sens). 通过计算得到6个(3对)互补PWM波形(SPWM/SVPWM),达到目标转速,驱动Inverter工作,带动电机旋转.

这部分对应MCU实际实现.

img

来看下Control主要包含哪些模块:

img

这是一个分层任务调度的FOC(磁场定向控制)系统.

各模块功能:

模块 任务周期 功能 控制类型
Outer Loop Control 1ms(慢速) 转速环 → 生成 $ i_{dq_ref} $ 和 $ T_{q_ref} $ 转速PI
Current Control 100us(快速) 电流环 → 生成 $ V_{dq} $ → 反Park → PWM 电流PI
Measurements 100us(快速) 采样 $ i_{abc}, \omega, \theta, V_{dc} $ 信号采集
PWM Generator 50us(触发) 三相两电平PWM生成 SPWM/SVPWM调制算法

任务调度模块Task Scheduler为其他模块提供循环周期调用入口,调用周期分别是100us、100us、1ms.

任务调度模块 Task Scheduler

img

Simulink每50us执行连接到 Function-Call Generator模块的Stateflow图,然后由Stateflow图 Task Scheduler 调制出3个任务调度子入口:Task100us_1,Task100us_2,Task1ms_1,分别提供100us、100us、1ms周期调用.

img

Stateflow图Task Scheduler实现:

img

可以看到实现原理很简单,就是通过一个计数器cnt求余来实现.

右键stateflow图> 属性,建议将动作语言修改为C,启用时状态为重置. 如果动作语言不设置为C,那么图中可能无法使用C风格代码,生成MCU C代码需要转换,可能产生兼容性问题.

img

Outer Loop Control模块

外环控制模块,实现了速度环PI调节,输入目前转速RPMReq、实际转速we、母线电压Vdc,输出dq轴电流参考idq_ref(电流环的目标值)、饱和转矩参考Tq_ref(经电压/电流限幅后的实际可达转矩)、转矩限幅Tq_Lim(当前工况下的最大允许转矩).

img

Task1ms模块

Task1ms通过Trigger Port(触发端口)实现,用于创建函数调用子系统或触发子系统,实现多速率/事件驱动的任务调度. 需要放在子系统边界,接收Task Scheduler模块产生的触发信号Task1ms_1.

img

为什么触发器类型要设置为 函数调用

因为 函数调用 由软件调度器决定何时执行,可以灵活控制任务顺序和优先级,适合周期性多任务(如1ms转速环、100us电流环).
边沿触发 由硬件事件决定何时执行,与物理信号同步,适合硬件同步采样(如PWM中间点触发ADC).
显然,由Task Scheduler决定何时调用,更适合用 函数调用方式.

Velocity Controller模块

该模块用Velocity Controller模型实现速度PI控制器. 并不之间生成dq轴电流参考(目标值),而是先生成未饱和转矩参考TqRefUnsat,交给下游的PMSM Current Reference Generator来实现生成dq轴电流参考.

img

  • 控制类型:选择P-PI控制.

PI控制和P-PI控制区别:

1)PI控制

速度误差 $ e_\omega = \omega_{ref} - \omega $,输出转矩指令:

\[T_e^* = \left( K_{p-\omega} + \frac{K_{i-\omega} T_s}{1-z^{-1}} \right) e_\omega \]

特点是:

  • 只有一组比例 $ K_{p-\omega} $,积分 $ K_{i-\omega} $;
  • 全程 $ P+I $ 同时作用,积分持续累加误差,消除稳态转速静差

适用于 伺服、机器人、高速启停电机.

2)P-PI控制

分2个阶段:大误差区间(启动 / 转速阶跃突变):仅 P 控制器工作;小误差区间(转速接近给定、稳态阶段:切换 PI 控制器).

(1)大误差区间

用独立参数 $ K_{p-\omega} $(参数界面“P 控制器比例增益”),无积分项:

\[T_e^* = K_{p-\omega} \cdot e_{\omega} \]

纯 P 调节,响应极快,不会积分累积,抑制启动超调、避免积分饱和.

(2)小误差区间

误差缩小到阈值后,自动切入完整 PI,使用另一组 $ K_{p-\omega} $(控制器比例增益)+ $ K_{i-\omega} $ 积分项:

\[T_e^* = \left( K_{p-\omega} + \frac{K_{i-\omega} T_s}{1-z^{-1}} \right) e_{\omega} \]

依靠积分消除稳态转速静差,保证稳态精度.

注意:该阈值在模块内部封装好了,硬编码值为0.01(归一化标幺误差).

适用于 风机、泵类平稳调速.

  • 积分抗饱和增益(Anti-Windup Gain)是防止PID积分器饱和的关键参数,用于限制控制器输出值远超正常范围.

数学原理:

标准PI(无抗饱和):

\[\frac{di}{dt} = K_i \cdot e \]

带抗饱和的PI:

\[\frac{di}{dt} = K_i \cdot e - K_{aw} \cdot (u_{calc} - u_{sat}) \]

其中,\(K_{aw}\)抗饱和增益,积分修正的"强度系数",界面中设置为100;u_calc计算输出(u_calc = Kp·e + Ki·∫e),PI控制器未限幅的原始输出;u_sat饱和输出,经限幅后的实际输出

u_calc = Kp·e + Ki·∫e    (控制器算出来的值,可能很大)
    │
    ▼
┌─────────┐
│ 限幅环节 │  ──→ u_sat = sat(u_calc, -TqLim, +TqLim)  (实际能给出的值)
│ ±TqLim  │
└─────────┘
    │
    └── 差值 = u_calc - u_sat = "被限幅剪掉的部分"
        │
        ▼
    积分更新 Ki·∫e: integral += Ki·e·Ts - Kaw·(u_calc - u_sat)·Ts
                            ↑
                            └── 这里 Kaw = 100

其中,TqLim 是 PMSM Current Reference Generator模块基于当前电机运行状态的物理约束,实时计算得到.

  • 采样时间,离散化采样时间

采样时间-1,代表继承自外部模块,决定了模块执行频率(PI算法执行频率);
离散化采样时间,固定值Tso,决定算法内部计算步长\(\Delta T\)(积分/微分用).

  • 输入端口
端口 名称 含义 类型
wRef 转速参考 目标转速设定值(rad/s) 标量信号
wMechanical 机械转速 实际电机转速反馈(来自编码器/观测器) 标量信号
TqRefSat 转矩限幅 最大允许转矩(饱和限幅值)
TqRefStat与TqLim关系:TqRefStat = stat(TqRef, -TqLim, +TqLim)
标量信号
Reset 复位 积分器清零/控制器复位信号.
0表示正常工作;1表示复位;
布尔/触发

输出端口

端口 名称 含义 类型
TqRefUnsat 未限幅转矩参考 PI控制器输出的原始转矩指令(未饱和) 标量信号

PMSM Current Reference Generator模块

PMSM Current Reference Generator模块是 FOC 系统中连接转速环与电流环的核心桥梁,负责将"转矩需求"转换为"最优电流指令".

为什么说是 最优电流指令?

因为"最优"强调了效率最大化的设计目标.

1)同一转矩,多种电流组合;

对于IPMSM,转矩方程:

\[T_e = \frac{3}{2} p [\psi_f i_q + (L_d - L_q) i_d i_q] \]

给定 $ T_e = 10 , \text{N·m} $,满足该方程的 $ (i_d, i_q) $ 有无数组:

\(i_d\) (A) \(i_q\) (A) 电流幅值 \(\sqrt{i_d^2 + i_q^2}\) 效率
0 5.0 5.0 一般
-2.0 4.2 4.7 较好
-3.5 3.8 5.2 较差
-2.5 4.0 4.6 最优 (MTPA)

2)如果没有选择“最优”,比如简单固定\(i_d^*=0\)(只控制\(i_q\))时,那么电流幅值更大,从而线损\(I^2R\)更大,效率低发热更严重;同时,同样硬件输出更小力矩.

何为最优电流?

所谓“最优”,指经过MTPA(Maximum Torque Per Ampere,最大转矩电流比)优化后的最小电流组合.

给定转矩 $ T_e $,求使电流幅值最小的 $ (i_d, i_q) $:

\[\text{min} \quad I_s = \sqrt{i_d^2 + i_q^2} \]

满足约束:

\[T_e = \frac{3}{2} p [\psi_f i_q + (L_d - L_q) i_d i_q] \]

参数设置:

img

母线电压Vnom=325V、最大功率Pmax=35kW,最大转矩Tmax=205N*m.

  • 端口

输入端口

端口 名称 含义 来源
TqRef 转矩参考 转速环输出的目标转矩 Velocity Controller
wMechanical 机械转速 当前电机转速(用于弱磁判断) 编码器/观测器
Vdc 直流母线电压 逆变器输入电压(用于电压限幅) 母线电压采样

输出端口

端口 名称 含义 去向
idqRef dq电流参考 最优 \([i_d^*, i_q^*]^T\) 矢量 Current Control(电流环)
TqRefSat 饱和转矩参考 经限幅后的实际可达转矩 反馈/监控
TqLim 转矩限幅 当前工况下的最大允许转矩 Velocity Controller(外环限幅)

Current Control模块

img

主要由一个Park Transform(包括Clarke 变换、Park变换)模型、PMSM Current Controller with Pre-Control(PI PMSM电流控制(带前馈补偿))模型组成.

PMSM Current Controller with Pre-Control模块

该模块实现:根据当前dq轴电流参考,实测的dq轴电流(Clarke、Park变换得到)、电角速度、母线电压,通过PI电流控制,输出的dq轴电压参考.

  • 前馈补偿/控制(Pre-Control)

标准PI电流控制(纯PI):

\[V_d = K_p(i_d^* - i_d) + K_i \int (i_d^* - i_d)dt \]

带前馈的PI电流控制(PI + 前馈控制):

\[\begin{cases} V_d = \underbrace{K_p(i_d^* - i_d) + K_i \int (i_d^* - i_d)dt}_{\text{PI反馈}} + \underbrace{\left(-\omega_e L_q i_q\right)}_{\text{前馈补偿}}\\ V_q = \underbrace{K_p(i_q^* - i_q) + K_i \int (i_q^* - i_q)dt}_{\text{PI反馈}} + \underbrace{\left(\omega_e L_d i_d + \omega_e \psi_f\right)}_{\text{前馈补偿}} \end{cases} \]

前馈补偿项含义:

前馈项 物理意义 作用
\(-\omega_e L_q i_q\) d轴交叉耦合电压 补偿q轴电流对d轴的反电动势
\(\omega_e L_d i_d\) q轴交叉耦合电压 补偿d轴电流对q轴的反电动势
\(\omega_e \psi_f\) q轴反电动势 补偿永磁体旋转产生的反电势

为什么会有前馈补偿?前馈补偿项来自哪里?

补偿项来自PMSM的标准定子电压方程(dq旋转坐标系,参见MBD笔记:三相PMSM数学模型(一)的同步旋转坐标系下的数学建模 小节,式(27)):

\[\begin{cases} u_d = R_s i_d + L_d \dfrac{d i_d}{d t} - \omega_e L_q i_q\\ u_q = R_s i_q + L_q \dfrac{d i_q}{d t} + \omega_e L_d i_d + \omega_e \psi_f \end{cases} \]

其中,\(R_si_d,R_si_q\) 定子电阻d、q轴压降,\(L_d \dfrac{d i_d}{d t}\) 电感动态压降,\(-\omega_e L_q i_q\) 为d轴交叉耦合,\(\omega_e L_d i_d\)为q轴交叉耦合,\(\omega_e \psi_f\) 为q轴反电动势.

为什么需要前馈补偿?

主要为了及时消除交叉耦合干扰、反电动势干扰. 我们对比无前馈补偿、有前馈补偿的PI控制:

无前馈补偿(纯PI) 有前馈补偿(PI + 前馈)
交叉耦合和反电动势作为 扰动 由PI慢慢消除 前馈直接抵消已知扰动
动态响应慢,电流跟踪有滞后 动态响应快,电流跟踪更准
高速时PI带宽不足,电流畸变 高速仍能保持良好跟踪
需要更高PI增益(易振荡) 可用较低PI增益,更稳定
  • 端口

输入端口

端口 名称 含义 来源
idqRef dq电流参考 电流环目标值 \([i_d^*, i_q^*]^T\) PMSM Current Reference Generator
idq dq电流反馈 实际测量电流 \([i_d, i_q]^T\) Park Transform(电流采样变换后)
wElectrical 电角速度 \(\omega_e = p \cdot \omega_{mech}\),用于前馈计算 编码器/观测器
VphMax 最大相电压 当前允许的最大相电压幅值(用于输出限幅) \(V_{dc}/\sqrt{3}\) 或 SVPWM调制范围
Reset 复位 积分器清零信号
1表示复位;0表示正常工作
外部控制/故障保护

输出端口

端口 名称 含义 去向
vdqRef dq电压参考 控制器输出的 \([V_d^*, V_q^*]^T\) Inverse Park Transform → Inverser

idq输入信号变换

img

我们用电流传感器测得三相电流,w,a模块的Motion Sensor传感器测得转速、转子位置(角度),如何得到dq轴实际电流?

这就需要用的Clarke变换、Park变换. 这里的 Park Transform实际执行了这2个变换.

为什么dq0之后要接一个Selector?

因为输出的 dq0实际上是3个信号:\(dq_0=[i_d,i_q,i_0]^{T}\),而要求的输入\(idq = [i_d,i_q]^{T}\). 因此,添加一个Selector只取前面2个信号.

img

调制SPWM/SVPWM模块

img

该模块接收三相电压参考和母线电压,生成6路互补PWM信号(3相×上下桥臂),驱动两电平三相逆变器.

img

PWM模式选择 CPWM. CPWM和DPWM区别:

CPWM = 三相始终开关,纹波小、噪声均匀,通用;
DPWM = 每60°钳位一相,开关损耗降低1/3,适合高速高效率应用.

CPWM三相PWM波形:
    ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐    ┌─┐ ┌─┐ ┌─┐
A: ─┘ └─┘ └─┘ └─┘ └─┘────┘ └─┘ └─┘ └─┘
    ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐    ┌─┐ ┌─┐ ┌─┐
B: ─┘ └─┘ └─┘ └─┘ └─┘────┘ └─┘ └─┘ └─┘
    ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐    ┌─┐ ┌─┐ ┌─┐
C: ─┘ └─┘ └─┘ └─┘ └─┘────┘ └─┘ └─┘ └─┘
    
    ↑ 三相始终在开开关关

DPWM三相PWM波形:
    ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐    ┌─┐ ┌─┐ ┌─┐
A: ─┘ └─┘ └─┘ └─┘ └─┘────┘ └─┘ └─┘ └─┘
    ┌───────┐       ┌───────┐
B: ─┘       └───────┘       └────────────  ← 钳位到高/低电平,60°不开关
    ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐    ┌─┐ ┌─┐ ┌─┐
C: ─┘ └─┘ └─┘ └─┘ └─┘────┘ └─┘ └─┘ └─┘
    
    ↑ B相在60°区间内保持常数(钳位)

连续PWM选择SPWM,简单直观,后续可以修改成SVPWM. SPWM和SVPWM区别:
SPWM = 纯正弦调制,简单直观,电压利用率86.6%;
SVPWM = 注入零序三次谐波,电压利用率100%,等效提升15.5%输出能力,是现代电机控制主流选择

详见MBD笔记:SVPWM技术(二)MBD笔记:SPWM技术(三)

开关频率(载波频率)为fsw=10kHz,采样时间Ts=5e-6s=5μs,即采样频率200kHz.

注意:这里的采样频率用于PWM内部比较器,用于生成10kHz PWM载波.

如下图,PWM输出信号为什么要连接一个Rate Transition模型?

img

Rate Transition是用来处理不同速率和任务之间的数据完整性. PWM Generator执行周期是模块的执行周期Task100us_2(100μs),而输出的S信号会接到Gate Driver模块(电气模块),进而驱动Inverter. 显然,电气模块的速率会更快,因此数据的读取是从 慢→快 (模块显示NoOp).

Measurements模块

这部分主要负责处理测量数据,主要包括:三相电流检测值处理、机械角速度检测值处理、机械角度检测值处理、母线电压检测值处理. 当然该模块并不负责数据采集,因为数据采集由传感器模块负载.

传感器采集的数据,往往不能直接使用,因为PMSM存在极对数,我们测得机械角度/机械角速度,而程序通常需要电角度/电角速度;母线电压可能存在干扰,抖动,因此需要滤波处理.

img

如下面的模型,几个信号的处理,很简单:

img

有3点需要提:

1)从机械角度(累积值)转换成电角度时,需要将电角度限制在 [0,2π) 范围内,防止角度无限累积导致的问题.

2)母线电压滤波

img

img

注:参数(num, den)的定义参见下文.

使用双线性变换(传递函数\(\frac{Y(Z)}{U(Z)}\))实现一阶低通数字滤波器(平滑滤波),Tf≈0.99s,接近 1 秒超大惯性,截止频率极低(≈0.16Hz),只保留母线超慢变化,完全滤除开关纹波、负载瞬态波动

实现一阶低通滤波的传递函数:

\[H(z) = \frac{Y(z)}{U(z)} = \frac{0.009901 + 0.009901 z^{-1}}{1 - 0.9802 z^{-1}} \]

对应时域原函数:

\[y[k] = 0.9802 \, y[k-1] + 0.009901 \, (u[k] + u[k-1]) \]

为什么使用双线性变换,而不用经典的后向欧拉方法对母线电压滤波?

后向欧拉时域原函数:\(y[k]=α*y[k-1]+(1-α)u[k]\)

这是由于 母线电压滤波的特殊需求要求决定的:

母线电压 Vdc 特点:

  1. 直流分量: 缓慢变化(电池放电、负载变化)
  2. 开关纹波: 10kHz 高频
  3. 负载瞬态: 中频波动
  4. 目标: 只保留超慢变化

滤波器要求:

  1. 截止频率极低: ~0.16Hz
  2. 完全滤除开关纹波
  3. 相位延迟不重要(Vdc用于限幅,非快速控制)

双线性变换:双边平均 u[k]+u[k−1] 相当于梯形积分,更平滑,比后向欧拉更精确匹配连续系统频率响应,对直流增益无误差,更适合需要精确低频特性的母线电压滤波.

Vdc Filter的参数可视化输入,我们是通过封装编辑器实现的.

Vdc Filter参数设置:

img

Vdc Filter封装编辑器:

img

定义2个参数(num, den),根据用户输入数据自动计算. (num, den)会在模块内部计算传递函数时用到.

img

3)PwmEnable 实际上是一个欠压保护机制

img

通过Relay模型实现:
当电压 < 0.5* VDC_VECT(1) (137.5V)时,PwmEnable信号为0,这会导致PWM Generator输入的三相电流iabc=0,会停止输出PWM波形,电机会停止旋转;
只有当电压上升恢复至VDC_VECT(1)(275V)时,PwmEnable信号恢复为0,会恢复对PWM Generator的iabc信号输入.

注意:VDC_VECT是IPMSM35kWCurrentReferences.mat导入的一个数组(由IPMSMVelocityControlData.m触发加载),内容如下. VDC_VECT(1) 代表第1个元素275.

img

仿真结果

仿真结果,主要通过Scopes模块来观察.

img

该模块监测各重要信号波形,便于开发人员排查问题,对仿真程序运行没有实质影响.

各个Scope仿真波形如下:

RPM Scope:

img

黄:rpm_ref (转速参考);蓝:rpm(实测转速)

TQ Scope:

img

黄:Tq_ref(转矩参考);蓝:Tq_meas(实测转矩);红:Tq_lim(正向转矩限幅);绿:-Tq_lim(反向转矩限幅)

IABC Scope:

img

黄:a相电流(测量值);蓝:b相电流(测量值);红:c相电流(测量值)

Vdc Scope:

由于母线电压可能不稳定,因此添加一个Rate Transition模块(对应传递函数\(1/z\)),时域上延迟1个周期显示Vdc_sw(采集并滤波后的Vdc)

img

黄:Vdc_sw(软件处理后的母线电压)

THETA Scope:

转子位置(电角度,0~2π rad)

img

黄:theta(转子位置,相对于a轴的电角度)

VDQ Scope:

PI+前馈补偿 输出的d、q轴电压

img

黄:d轴电压;蓝:q轴电压

PWMENABLE Scope:

由Vdc检测的欠压保护机制,输出的PwmEnable信号.

img

黄:PwmEnable(PWM使能信号)

ID Scope:

d轴电压参考,PI+前馈补偿 的输入d轴电压信号(Park变换后的输出)

img

黄:idq_ref(1)(d轴电压参考);蓝:idq(1) d轴电压信号

IQ Scope:

q轴电压参考,PI+前馈补偿 的输入q轴电压信号(Park变换后的输出)

img

黄:idq_ref(2)(q轴电压参考);蓝:idq(2) q轴电压信号

调用后处理脚本

例程还有一个后处理脚本IPMSMVelocityControlPlotMotorSpeed.m,用来绘制电机转速曲线、三相电流曲线. 如果需要显示,则可以采用下面2个方法(可选).

运行方法:

  • 方法 1:仿真后手动matlab命令运行
sim('IPMSMVelocityControl');
IPMSMVelocityControlPlotMotorSpeed;
  • 方法2:

模型属性的StopFcn回调中添加IPMSMVelocityControlPlotMotorSpeed;代表行,如下图.

img

绘制的电机转速曲线、三相电流曲线:

img

可以看到,电机实际转速曲线跟目标转速(转速参考)曲线大致相同;
三相电流并不是纯正的正弦波形,由于是PWM逆变器输出方波调制而成,经电机电感滤波后仍有开关纹波;在启动、加速过程中,电流幅值变换也不是正弦波.

posted @ 2026-06-19 13:46  明明1109  阅读(18)  评论(0)    收藏  举报