直流无刷电机仿真分析——基于simulink官方例程BLDC Speed Control

网友投稿 1093 2022-05-30

这里分析一下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模块的输出:

直流无刷电机仿真分析——基于simulink官方例程BLDC Speed 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

]

其中A,B,C分别为霍尔信号的ABC,即霍尔1,霍尔2,霍尔3;

所以输出信号y满足:

y = [ A , B , C ] ∗ [ 4 2 1 ] y=

[A,B,C]

[

A

,

B

,

C

]

⎡⎣⎢421⎤⎦⎥

[

4

2

1

]

继续检测节点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 ]

1

2

3

4

5

6

7

8

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 ]

1

2

3

4

5

6

7

8

这里的驱动信号依次是,GaH,GaL,GbH,GbL,GcH,GcL;

最终输出的信号具体如下图所示:

换相信号直接输出给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

仿真结果

Linux

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图
下一篇:百度地图开发之点聚合功能
相关文章