1. Simulink基础与电机控制概述
大家好,我是老张。做嵌入式电机控制这些年,从最早的手写C代码到后来用Simulink自动生成,这条路我走了不少弯路。今天咱们聊聊Simulink电机控制的基础,特别是永磁同步电机(PMSM)的数学模型。这些东西看着枯燥,但你要是真搞懂了,后面做代码生成会顺很多。
1.1 Simulink环境介绍
Simulink说白了就是一个图形化的编程工具。你不需要一行行敲代码,而是拖拽模块、连线、设置参数,就能搭出一个完整的控制系统模型。我个人习惯把Simulink当成一个「快速原型验证平台」——先在软件里把算法跑通,再生成代码烧到芯片里。
打开Simulink,你会看到几个核心区域:
- 模块库浏览器:左边那一堆,里面藏着电机控制常用的模块,比如PI控制器、SVPWM、坐标变换等
- 模型画布:中间的大白板,你就在这上面搭积木
- 仿真配置面板:设置步长、求解器类型,这些直接影响仿真精度和速度
Simulink的求解器选择是个坑。电机控制仿真一般用定步长求解器,比如ode3或ode4。为什么?因为代码生成后,芯片里的控制周期是固定的,你仿真也得用固定步长才匹配。我曾经用变步长仿真调好的参数,生成代码后电机抖得跟筛子似的——后来才发现是求解器不匹配。
1.2 电机控制基本概念
电机控制,说白了就是让电机按照你想要的转速和转矩转起来。这里面有几个核心概念,我一个个说。
1.2.1 控制架构
最常见的电机控制架构是级联控制,也就是外环套内环:
- 速度环:最外层,控制电机转速。输出是电流指令
- 电流环:内层,控制电机电流。输出是电压指令
- PWM调制:最底层,把电压指令变成开关管的导通信号
你想想看,为什么搞这么复杂?因为电流环响应快,速度环响应慢。把快的放里面,慢的放外面,这样系统才稳定。我刚开始做电机控制时,把速度环和电流环的带宽设反了,结果电机一启动就过流保护——嗯,那教训挺深刻的。
1.2.2 坐标变换
电机控制里绕不开坐标变换。三相静止坐标系(abc)下的电压电流是交流量,控制起来很麻烦。所以我们要把它变换到两相旋转坐标系(dq)下,变成直流量,这样用PI控制器就能轻松搞定。
常用的变换有:
| 变换名称 | 作用 | 公式核心 |
|---|---|---|
| Clark变换 | abc → αβ | 三相变两相静止 |
| Park变换 | αβ → dq | 静止变旋转 |
| 逆Park变换 | dq → αβ | 旋转变静止 |
| 逆Clark变换 | αβ → abc | 两相变三相 |
1.3 永磁同步电机(PMSM)数学模型
搞电机控制,数学模型是根基。PMSM的数学模型看着公式多,但核心就两个方程:电压方程和转矩方程。
1.3.1 dq坐标系下的电压方程
在dq旋转坐标系下,PMSM的电压方程是这样的:
ud = Rs * id + Ld * (did/dt) - ωe * Lq * iq
uq = Rs * iq + Lq * (diq/dt) + ωe * (Ld * id + ψf)
这里面:
- ud、uq:d轴和q轴电压
- id、iq:d轴和q轴电流
- Rs:定子电阻
- Ld、Lq:d轴和q轴电感
- ωe:电角速度
- ψf:永磁体磁链
注意看,d轴和q轴的方程是耦合的。d轴方程里有ωe * Lq * iq这一项,q轴方程里有ωe * Ld * id这一项。这就是为什么电机高速时,d轴和q轴会互相影响。做电流环解耦时,就是要消除这个耦合项。
1.3.2 转矩方程
PMSM的电磁转矩公式:
Te = 1.5 * p * [ψf * iq + (Ld - Lq) * id * iq]
这里面:
- Te:电磁转矩
- p:极对数
- 第一项 ψf * iq 是永磁转矩
- 第二项 (Ld - Lq) * id * iq 是磁阻转矩
对于表贴式PMSM(SPMSM),Ld ≈ Lq,磁阻转矩几乎为零。这时候转矩只和iq成正比,控制起来简单——你只要控制iq就能控制转矩。但对于内置式PMSM(IPMSM),Ld < Lq,磁阻转矩不可忽略。这时候可以利用id来产生额外的转矩,这就是最大转矩电流比(MTPA)控制的基础。
1.3.3 运动方程
电机转起来还得看运动方程:
Te - Tl = J * (dωm/dt) + B * ωm
这里面:
- Tl:负载转矩
- J:转动惯量
- ωm:机械角速度
- B:阻尼系数
这个方程告诉你,电机加速靠的是电磁转矩减去负载转矩。转动惯量越大,加速越慢。我在做伺服电机控制时,客户要求快速启停,结果发现负载的转动惯量太大,怎么调参数都追不上——最后只能换大电机。
1.4 在Simulink中搭建PMSM模型
理论讲完了,咱们看看怎么在Simulink里搭一个PMSM模型。Simulink自带的电机模块库里有现成的PMSM模型,但我建议初学者自己搭一遍,这样对数学模型的理解会更深刻。
搭建步骤:
- 用积分器模块搭建dq电流的微分方程
- 用乘法器和加法器实现电压方程中的耦合项
- 用转矩方程计算电磁转矩
- 用运动方程计算机械转速和位置
- 用坐标变换模块把dq电流变回abc电流
嗯,到这里咱们把Simulink基础、电机控制概念和PMSM数学模型都过了一遍。这些东西是后面做代码生成的基石。下一章我会讲怎么在Simulink里搭建完整的FOC控制环路,包括电流采样、坐标变换、PI调节器和SVPWM调制——到时候咱们再细聊。
记住一句话:模型搭得清楚,代码生成才靠谱。别急着跑,先把基础打牢。