【电机控制Simulink仿真】BLDC(一):三相逆变系统的建模
电控算法工程师除了需要在ARM等控制器上进行算法编写、底层调试,还需要会在MATLAB平台中对电机系统建模进行仿真。本专栏将着重讲解PMSM、BLDC 以及 广义伺服系统的Simulink仿真设计。若不理解BLDC工作原理,请跳转嵌入式实践教程分享:Simulink实际上是MATLAB中的一个工具,用于控制设计、机械设计等对可视化要求较高的环境下。MATLAB以及Simulink的安装请各位自行搜
电控算法工程师除了需要在ARM等控制器上进行算法编写、底层调试,还需要会在MATLAB平台中对电机系统建模进行仿真。本专栏将着重讲解PMSM、BLDC 以及 广义伺服系统的Simulink仿真设计。
若不理解BLDC工作原理,请跳转嵌入式实践教程分享:


Simulink实际上是MATLAB中的一个工具,用于控制设计、机械设计等对可视化要求较高的环境下。MATLAB以及Simulink的安装请各位自行搜索,本文使用2020b版本的MATLAB进行演示,版本之间界面操作有区别,还请各位仔细权衡。
此外,建议大家只保留电机相关的插件,以免拖慢MATLAB文件搜索速度,节省更多的电脑存储空间。
一、BLDC环节创建
BLDC作为控制系统的输出环节或近输出环节,在系统构建的过程中起到极其重要的作用。
创建一个BLDC,我们需要打开Simulink的库浏览界面。

搜索框中搜BLDC或在SimScape中选Electrical/Electromechnaical/Permannent Magnet(永磁式)

将图片托甩到白板,即可添加环节,双击环节方框,打开配置界面,检查Winding Type,使用星形连接方法。

右键框图,在simscape中选择三相扩展显示

这样,我们BLDC的UVW(ABC)三相就显示在了框图中。

我们在这个过程中使用了一个名为Simscape的软件模块,它能够以网络方式实现物理仿真,并严格遵循能量守恒等基本原则, 具体内容不做过多阐述,详见MATLAB的帮助页面。
n,指的是电机的自然相位,英文全称Neutral Phase,可以近似为星形连接的中点
R,指的是电机转子输出,通常通向执行器和采样机构,输出运控量
C,指的是电机的外壳,通常可以输出一些过程量
接下来我们需要严格配置电机的其他部件,以构建一个完整的电机系统。
(1)电机外壳
利用库浏览中的 Mechanical Rotational Reference (机械转动参考部件),将它与电机的外壳进行连接。

(2)运动传感
利用Ideal Rotational Motion Sensor(理想旋转运动传感器)

旋转传感器C端,连向模块的执行机构,一般是一个机械参考部件。
W,测量角速度输出
A,测量角位移(角位置)输出
二者实际上就是我们电控中常用的光电/磁电传感器数学模型,角速度、角位移为增量式传感器的功能,角位置为绝对式传感器的功能。
(3)电机负载
所谓电机负载,就是我们加在电机上的螺旋桨、轮胎、机械臂等。他们通常具有一定的惯性,在控制理论中他们的机械系统被视为惯性环节,会造成控制系统输出存在延迟,但它的影响是永远存在且难以直接消除的。
在库浏览中获取Inertia部件,并Ctrl+R进行旋转(这里跟PCB不一样,空格没用),将惯性输出端连入R输出网络。

(4)自然输出接地
这里要注意,Simulink中模块若来自不同的电气域则无法被网络直接连接,需要用域转换模块进行转换。然而,Simulink中有来自各种域的GND,我们最好直接选择simscape中的electrical reference作为GND,而不是随便搜一个GND出来。

这样,就能直接连接了
(5)示波器的配置
如果我们需要看到传感器的输出,则需要配置示波器
这里进行使用两个示波器分别测量角速度和角位置
注意,Simulink示波器和Simcape物理器件属于不同电气域,需要加入转换模块。
最终连接效果如下:

(6)求解器配置
将求解器挂载于电机输出网络,打开配置:
勾选使用本地求解,采样周期0.001s
勾选线性回归,设置为时域回归、自动模式
勾选在1D3D下应用滤波选项

二、三相逆变系统搭建
现在解决了最难理解的机械系统,那么三相驱动电路就比较容易了。
(1)MOSFEF设置
拖出一个Simscape域的MOSFET,设置阈值电压为0.5。
有人就会质疑,CMOS电平不是常用3V3的容限标准吗,为什么会设置0.5V并且以一个简单的阈值来衡量高低电平,不引入噪声容限的概念。
其实在仿真中,我们绝大部分情况下没必要完全贴近实际工程,而是以执行效率优先。
接下来回忆三项半桥电路什么样子?

是不是长这样,想不出来建议回看嵌入式电控的专栏
(2)总线电压引入
因为是仿真不怕被鞭尸,这里上个强电,用100V DC去供电。

(3)空间状态输入
根据《现代控制理论》中空间状态方程的知识,我们这里有6个MOS管,用6维输入向量:
[u1(t), u2(t), u3(t), u4(t), u5(t), u6(t)]
来分别表示AH AL......CL
在浏览库中找到Constant,
设置属性,把输入向量打进去,数字间不用带标点符号

随后,使用Demux(数据分离器)将输入向量中6个维度的信号分离,
设置输出为6个信号



为了减少线路使图像更美观,我们采用了FROM和goto模块。
FROM,线路信号的终点
goto,线路信号的起点
此外,用simulink转ps模块将goto信号输入MOS
这样,我们的三相逆变系统就如下图所示。

三、参数调整
修改霍尔传感器输出单位为degree

此外,修改ps-Sim模块的输出分别为deg/s和deg
然后,进行电机内部参数的调整
最大磁链1Wb,霍尔安装角度120,磁极对数为1

设置dq电感,定子零序电感,相电阻如下 
inertia惯性参数设置为0.2

四、进行仿真
仿真10s后,得到如下图像。发现角速度和位置都进行收敛震荡后回到0
说明单相导通下,转子经历波动后又返回原来的状态,电机未成功启动。

更多推荐



所有评论(0)