直流无刷电机仿真分析——基于simulink官方例程BLDC Speed Control
Posted 王张飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直流无刷电机仿真分析——基于simulink官方例程BLDC Speed Control相关的知识,希望对你有一定的参考价值。
这里分析一下simulink
自带的demo
—BLDC Speed Control
;
整体的框图如下所示:
我在图中标注了12个部分的区域,每个区域的作用如下:
Signal Builder
:创建和产生波形分段线性的可互换的信号组 ;Control
:是simulink中的subsystem,里面进一步封装了底层的实现;Gate Driver
:是simulink中的subsystem,这里封装了逆变器的门极驱动信号;Inverter
:控制器驱动双向AC/DC三臂变换器 ;Buck Converter
:控制器驱动DC-DC降压调节器Gate Driver DCDC
:是simulink中的subsystem,这里封装了DCDC的驱动信号;- 理想恒压源;
Vdc
:是simulink中的subsystem,这里封装了母线电压传感器和母线电压通路;BLDC
:梯形反电动势的三相绕组无刷直流电动机;- 物理区域部分,包括了横转矩负载还有位置检测的环节;
Signal Builder
signal builder
位于 Library: Simulink / Sources
,创建和产生波形分段线性的可互换的信号组 ;
具体如下图所示;
Control
Control
模块的输入:
RPMReq
:用户输入期望的转速;rpm
:系统反馈的转速;Hall
:系统反馈的霍尔信号,用于计算位置,以及产生驱动信号;Vdc
:母线电压;
Control
模块的输出:S
:BLDC
的驱动信号;S_DCDC
:DCDC
的驱动信号;
下面进入subsystem
进一步分析内部的逻辑结构;
这里是一个典型的串级控制系统,设置了重要两个环路:- 外部速度环,上图中框图 1 所示;
- 内部电压控制环,上图中框图 2 所示;
速度环
速度环框图如下所示:
下面简单分析一下,下列序号和图中序号对应:
- 其中
RPMReq
是期望的速度给定值; |u|
是取输入的绝对值,这里即取给定速度RPMRef
的绝对值;rpm
是反馈的转速,期望给定速度减去反馈转速就可以得到偏差e,然后输入给PI
控制器;Sign
这个模块可以判断输入数据的正负,输出±1
;Speed controller
是一个离散的PI控制器,并且带了输出限幅;输入为e
,即期望RPMReq
和反馈rpm
的偏差;Hall
是反馈的霍尔信号,可以用于计算转子当前的位置,从而输出相应的驱动信号给电机;Commutation
换相系统,根据反馈的hall信号和当前的方向,从而产生相应的驱动信号;
这里重点看一下Speed controller
,下面是它的具体参数:
做一下简单的分析:
- 比例参数:保存在变量
Kpw
中,可以在worksapce中修改; - 积分参数:保存在变量
Kiw
中,可以在worksapce中修改; - 积分初始化条件:这里设置0;
- 输出饱和上限限制:最大不能超过系统的
Vdc
,这里保存在变量中; - 输出饱和下限限制:最小为0;
- 采样时间:保存在变量
Tsc
中;
这是一个典型的速度闭环,因为整体系统采用了串级PI的控制方式,所以最终速度PI控制器的输出量会给到下一个环节,即电压环节。
然后还要分析一下换相信号是如何计算的:
下面简单分析一下:
Bit concatenate
:这是一个subsystem,底层封装如红框内所示;先做一个增益计算,然后求和输出为y
,这里需要进一步观察输入的霍尔信号的情况;- convert是
Data Type Conversion
- 数据偏移1;
- Direct Lookup Table (n-D):里面保存了正转和反转的相序;
- Switch:组合两路信号为一路信号,根据不同的方向,选择使用不同的相序;
在输入的hall信号增加了scope,得到如下霍尔信号;
霍尔信号经过Bit concatenate
模块之后;
其中输入信号u
满足:
u = [ A , B , C ] u =
[A,B,C][A,B,C]
\\beginbmatrix A , B , C \\endbmatrix u=[A,B,C]
其中A,B,C分别为霍尔信号的ABC,即霍尔1,霍尔2,霍尔3;
所以输出信号y
满足:
y = [ A , B , C ] ∗ [ 4 2 1 ] y=
[A,B,C][A,B,C]
\\beginbmatrix A , B , C \\endbmatrix*
⎡⎣⎢421⎤⎦⎥[421]
\\beginbmatrix 4 \\\\ 2 \\\\ 1 \\endbmatrix y=[A,B,C]∗⎣⎡421⎦⎤
继续检测节点3处u-1
模块的输出变量,具体如下所示;
可以看到到这里是扇区信号,这里将扇区信号进行u-1
操作是为了配合后面的模块,索引号需要从 0
开始;
具体如下图红色框图1中模块所示;
2-D T[k]
中保存着二维数组,这里使用了两个2-D T[k]
,根据方向的不同,来决定使用哪个2-D T[k]
数组;
dir=1的时候:
[
0 0 0 1 1 0;
0 1 1 0 0 0;
0 1 0 0 0 1;
1 0 0 0 1 0;
1 0 1 0 0 0;
0 0 0 1 0 1
]
dir=0的时候:
[
0 1 1 0 0 0;
0 0 0 1 1 0;
1 0 0 0 1 0;
0 1 0 0 0 1;
0 0 0 1 0 1;
1 0 1 0 0 0
]
这里的驱动信号依次是,GaH
,GaL
,GbH
,GbL
,GcH
,GcL
;
GaH
GaL
GbH
GbL
GcH
GcL
0
1
1
0
0
0
0
0
0
1
1
0
1
0
0
0
1
0
0
1
0
0
0
1
0
0
0
1
0
1
最终输出的信号具体如下图所示:
换相信号直接输出给Gate driver,
电压环
这里是一个电压控制环节,具体如下图所示;
做一下简单的分析:
Vdc_ref
是上一级PI控制器的输出,也就是Speed controller
的输出;Voltage controller
是电压PI控制器,后面进一步分析;PWM
是subsystem
,底层还封装了一层了,将PI控制器的输出信号转化为PWM的调制信号输出给DCDC控制器;Vdc
是反馈回来的母线电压,经过一阶低通滤波器;- 这是离散的一阶低通滤波器,将母线电压Vdc滤波之后反馈给Vdc_ref,两者计算得到偏差
e
;
这里在看一下Voltage controller
,具体如下图所示:
这里可以看到,一共有六个参数:
- 比例参数
Kpv
; - 积分参数
Kiv
; - 积分初始条件为
0
; - 饱和上限限制为
1
; - 饱和下限限制为
0
; - 采样时间为
Tsc
;
下面继续看一下PWM
子系统,具体如下所示:
简单分析一下:
- 频率转换器,用于不同频率的信号之间的协同工作;
DCPWM
使用了PWM Generator
模块,具体可以参考相应的帮助文档;- convert:数据类型转换器;
- NOT:非门;
最终G1
输出到Gate driver DCDC
;
门级驱动
这里有两个门级驱动信号,一个是DCDC的输出驱动,一个是逆变器的三个桥的门极驱动,分别是:
- Gate driver DCDC;
- Gate driver;
物理环节
后面终于到了物理环节的分析,因为电机是将电能转化成机械能,所以这里不可避免的要涉及到物理信号的模型。
下面简单分析一下:
- 线性采样电阻
- BLDC 梯形反电动势的三相绕组无刷直流电动机;
iabc
经过封装的subsystem;
经过电流传感器得到abc
三相电流;- Mechanical Rotational Elements:机械旋转组件
- 反馈角速度还有转速,下面进行简单分析;
- 转矩,经过封装的subsystem,
- Inertia:表示理想机械转动惯量;
- Torque Source:产生与输入信号成比例的力矩的机械能的理想来源;
- 物理网络环境和求解器配置 ;
- 负载 ,全局变量;
Simulink信号和Simscape信号之间要做转换,转换模块有:
- PS-Simulink Converter,从物理端口转到Simulink信号;
- Simulink-PS Converter, 从Simulink信号转换到物理信号;
matlab版本:2020a
Simscape --> Utilities --> PS-Simulink Converter or Simulink-PS Converter
仿真结果
以上是关于直流无刷电机仿真分析——基于simulink官方例程BLDC Speed Control的主要内容,如果未能解决你的问题,请参考以下文章
直流无刷电机仿真分析——基于simulink官方例程BLDC Speed Control
直流无刷电机仿真分析——基于simulink官方例程BLDC Speed Control