1.MATLAB是什么?对于电机控制有什么作用?
你可以把 MATLAB 理解为:
一个专门给工程师用的"超级计算器 + 画图工具 + 仿真软件"组合体。
它比普通计算器强太多:
-
会做非常复杂的数学计算
-
会画各种曲线、波形、三维图
-
能模拟真实世界的物理系统
-
能处理电机、电控、信号分析、控制算法等领域的问题
工程师用它的频率,大概等于程序员用 VSCode。
MATLAB 有个非常关键的模块 Simulink。
你可以把 Simulink 理解为:
一个"搭积木式"的仿真平台,你用方块拼图,就能模拟电机、电池、控制器、电流环、速度环、FOC 等各种东西。
不用写代码,只要拖方块、连线,就能跑电机。
比如你可以拖:
-
三相电源模块
-
PMSM 模块
-
SVPWM 模块
-
PI 控制器
-
霍尔传感器
-
逆变器模块
-
测量电流、电压模块
然后点一下"run",电机就开始在你的电脑里跑起来了(数字世界的电机)。
MATLAB 可以在你动手做硬件之前,把电机控制系统预演一遍,提前发现问题、优化参数。
1.1 验证电机控制算法(FOC、BLDC、SVPWM)
你可以做:
-
FOC 电流环仿真
-
速度环 PI 调参
-
Clarke、Park 变换可视化
-
SVPWM 调制查看
-
负载变化时电流响应
效果就像 oscilloscope(示波器)+ 电流采样 + 力矩传感器,只是全部在电脑里跑。
1.2 不用烧 MOS、电机、不冒烟,就能测试各种工况
比如想测试:
-
堵转会不会过流
-
加载 20kg 时电机电流多少
-
给一个 18V 电池下,能不能跑到 4000rpm
-
PWM 改成 20kHz 会有什么效果
-
PI 参数调得太猛会不会振荡
-
逆变器死区对电流采样影响
真实硬件测试这些可能会烧电机,但 MATLAB 里就完全无风险。
1.3 电机参数(L、R、Ke、极对数)对系统的影响
你可以任意修改:
-
电阻 R
-
电感 Ld/Lq
-
反电动势常数 Ke
-
极对数 p
然后观察输出转速、电流、电压、转矩变化。
这是做电机驱动非常重要的一步。
1.4 电机 + 控制 + 负载联合仿真
比如做割草机器人,MATLAB 可以模拟:
-
电机
-
草地阻力(负载)
-
轮胎摩擦
-
电池电压下降
-
控制器的 PID
-
整机动力系统
这就是"系统级仿真"。
做机器人公司(大疆、宇树、云深处)一定会用。
1.5 生成代码 → MCU 实际运行
Simulink 可以:
一键把仿真里的控制算法生成 C 代码(含 PI、Clarke、Park...),放到 ST、TI 等 MCU 中运行。
这就是为什么 ST、TI 的电机控制开发都支持 MATLAB。
MATLAB的安装和使用网上教程很多,周末两天自己动动手研究一下就基本能熟悉了。
2.MATLAB仿真Clark变换
公式推导在我的另一篇博客里
https://blog.csdn.net/weixin_41011452/article/details/155206760?spm=1011.2124.3001.6209

仿真结果如上图,就是完全按照那个公式去仿真的,不过有几点需要注意。
1.三个定子电流ABC的参数时间要使用仿真时间,仿真时间设置成你想要的即可,建议0-1S,太大了的话MATLAB编译时间太长。
2.振幅的话就是你电流的峰值,频率的话就是2πf,单位是弧度/秒。
3.相位的话ABC三相定子呈120度分布,所以A相就是0,B相就是+120度,就是2/3π,C相就是-120度,就是-2/3π。
4.采样时间这个要注意,根据奈奎斯特采样定理,采样频率要大于两倍的信号频率,但是工程里一般都是大于10倍,我们的信号频率是50Hz,那么采样频率就要至少是500Hz,采样频率越大,在一个正弦波的信号周期内采集的点就越多,示波器看到的正弦波信号就越平滑,我这里选择的是100KHz,看起来非常平滑。

鼠标双击点开clark这个模块,就可以看到具体的信息,上面的f(u)和下面的这个公式就是α和β的clark变换公式,就是那个方程的推导结果。反Clark变换道理也是一样的这里就不展示了。
3.MATLAB仿真Park变换

Park变换的仿真我是直接从定子三相ABC电流到Park后的dq电流,仿真里把Clark变换省略了,就是把公式进一步整合了一下,本质上还是需要从定子三相ABC电流→Clark变换后的αβ电流→Park变换后的dq电流。
从αβ到dq需要增加一个角度θ,如果你没有 θ,就不能做:
-
坐标旋转
-
FOC 透磁/转矩分离
-
得到恒定的 dq 电流
模型中左下角:
1)"-C-" 是一个常数输入
这里输入了一个常数是 ω = 2π·50(314 rad/s),那就是恒定转速
2)"K Ts / (z−1)" 是离散时间积分器
这个就是:
θ(k) = θ(k-1) + ω(k) * Ts
也就是:角度 = 上一时刻角度 + 当前角速度 × 采样时间
θ = ∫ ω dt
左下角这个模块就是把输入的电角速度 ω(rad/s)积分成电角度 θ(rad),然后送给 Park 变换使用。
同样鼠标双击park模块,dq的两个变换公式也能详细看到,这里就不再推导了。

3.MATLAB仿真SVPWM
4.MATLAB仿真PMSM模型(SMO+PLL)
先把目录防放在这,未完待续