永磁同步电机simulink仿真——PMSM直接转矩控制DTC

用最快的方法在simulink里搭建一个基础的直接转矩控制模型,不熟悉的话可以参考下,有空更新每个步骤细节和其他实现方法,创作不宜,记得点赞收藏。

说明:1.仿真搭建参考袁雷的仿真书籍(s-function代码实现)和学长提供的模型(纯模块实现)

           2. 有的仿真起步时会出现反转的情况,后面给出了说明

 

1 直接转矩控制框图

话不多说,先看框图

cf710c3bd7fe4fbcbd1135b9568bdd3b.png

77cc55380e994df591a289dbb904eb8f.png

 

 

2 直接转矩控制控制simulink仿真模型

直接转矩的原理这里不详细概述了,涉及到的东西太多,只做简单说明,有空专门针对每个模块进行说明,根据框图中的模块,直接转矩控制在Simulink模型和model里需要的模型如下:

e0201b4edd874fb98be530025a57d247.png

 

 下面对每个模块的参数进行说明,也可以根据实际需要自行设置修改

 2.1 Powergui和仿真设置

选择模块列表:

611047d90cdc4c8fb61818f80cac8611.png

找到对应模块:(后面都是通过模型名找到对应的模型图双击或者拖到仿真界面上)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYk=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYk=,size_8,color_FFFFFF,t_70,g_se,x_16

习惯了用定步长,这里设置可选

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYk=,size_20,color_FFFFFF,t_70,g_se,x_16

 2.2 功能模块

永磁同步电机模块(Permanent MagnetSynchronous Machine):

7dec1babd64f43608428498fa76ae488.pngwatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYk=,size_20,color_FFFFFF,t_70,g_se,x_16

c50de43007124cacafca9df42b09d2e1.png

 

 

逆变器桥(Universal Bridge)和直流电源(DC Voltage Source):

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYk=,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYk=,size_11,color_FFFFFF,t_70,g_se,x_16

 电流电压测量(Three-Phase V-I Measurement):

d47215d094ce44ddaddcb5364274da12.png

 

PID模块(PID Controller):

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYk=,size_20,color_FFFFFF,t_70,g_se,x_16

两个Relay模块(滞环):

8a9846440d8f42cfa869f239702349fd.png

 

bus selector模块(这里需要分离出电机中转速、转矩信号):

连接到电机选择转速,转矩

速度需要转化为转速/分(60/(2pi))

a83c82a0c6a64763a689038371de5b0a.png     4e76036e538f4cc9b8ce2b0264211ab7.png

 

其他模块

sum模块:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYk=,size_20,color_FFFFFF,t_70,g_se,x_16

 mux和demux模块:

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGnmn5DlvIDov4flhYk=,size_11,color_FFFFFF,t_70,g_se,x_16

 2.3 算法模块

坐标变换模块 (3->2)

677f1daa198943c0b4b45de729ad3a90.png

模块为(fcn)

02f3a1b44ca747b0900456f48a99809b.png

磁链计算模块:

251806ea42a140f8acafcd7a88921696.png

98611a56cec84575851b23aab646b960.png

 磁链和转矩计算模块中要注意的是电机初始状态为0,其磁链在alpha上的分量须加上转子磁链,不加会导致扇区判断错误,也就是没加的情况下电机开始出现反转的原因。

扇区判断:(代码实现或者模块实现2选1)

1)(S-Function)代码实现

b6b7af0e6912437ea13327c1805b4c57.png

function[sys,x0,str,ts]=sector(t,x,u,flag)
switch flag,

  %%%%%%%%%%%%%%%%%%
  % Initialization %
  %%%%%%%%%%%%%%%%%%
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes;

  %%%%%%%%%%%%%%%
  % Derivatives %
  %%%%%%%%%%%%%%%
  

  %%%%%%%%%%%
  % Outputs %
  %%%%%%%%%%%
  case 3,
    sys=mdlOutputs(t,x,u);

  %%%%%%%%%%%%%%%%%%%%%%%
  % GetTimeOfNextVarHit %
  %%%%%%%%%%%%%%%%%%%%%%%
  case {2,4,9}
    sys=[];

  otherwise
    error(['Unhandled flag =',num2str(flag)]);

end

function [sys,x0,str,ts]=mdlInitializeSizes

sizes = simsizes;

sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed

sys = simsizes(sizes);
x0  = [];
str = [];
ts = [-1 0];
u(1) = 0.175;
function sys=mdlOutputs(t,x,u)
if(u(1)==0)
    N=1;
else
    a1=u(1);
    b1=u(1)*(-0.5)+(sqrt(3)/2)*u(2);
    c1=u(1)*(-0.5)-(sqrt(3)/2)*u(2);
if a1>0
    a=0;
else
    a=1;
end
if b1>0
    b=0;
else
    b=1;
end
if c1>0
    c=0;
else
    c=1;
end
N=4*a+2*b+c;
end
    sys = N;

 2)模块实现

16b914f7b204413da18c23bd54720a18.png

 f6c2169bf1e94c8cb3cbac1beb53cd2e.png

这里每个模块具体就不介绍了,点开试一试就知道了。

磁链计算:

8c73814b6b684903873e13f3022b125b.png

 根据转矩磁链和扇区计算输出脉冲:(代码和模块2选1)

1)代码实现:

9e04daefbb86473a9ab69d172f1d0eb0.png

f6879a28dc064eb0819a139de4da3274.png

对应参数设置如下

 d27febab148d4a8a900b071646fda706.png

S-function代码如下

3de9a36a9cfa4aa4b6250052ae4d7a63.png

function[sys,x0,str,ts]=PMSM_switch(t,x,u,flag)
switch flag,
    
    case 0,
     [sys,x0,str,ts]=mdlInitializeSizes;
    case 3,
     sys=mdlOutputs(t,x,u);
       case {2,4,9}
    sys=[];

  otherwise
    error(['Unhandled flag =',num2str(flag)]);

end

function [sys,x0,str,ts]=mdlInitializeSizes

sizes = simsizes;

sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 3;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed

sys = simsizes(sizes);
x0  = [];
str = [];
ts = [-1 0];

function sys=mdlOutputs(t,x,u)
V_Table=[2 4 6 1 3 5;4 1 5 2 6 3;3 6 2 5 1 4;5 3 1 6 4 2];
%V_Table=[5 6 1 2 3 4;3 4 5 6 1 2;6 1 2 3 4 5;2 3 4 5 6 1];
x=2*u(1)+u(2)+1;
sys=V_Table(x,u(3));










 

2 )模块实现

c63dc942eaa84ec695314062a3d59ecb.png

5c971245f90d4cdb89aadab04a84f9a0.png

参数如下

5b9e85d55cbc421bb71ce9e374c0d031.png

9375565599ee49e3b0d3464ea8889443.png

3 仿真

模型搭建好后,选择仿真时长0.4s:

在需要观测的地方添加示波器模块(scope),以转速和转矩为例:

11b09c3c84254d388be729d934a5a343.png

PID参数选择为:(可自行调整)

2f0305fab58c4ebcaff50ce3973d0207.png

 

电机运行,观察示波器波形

速度:

8a6f0f8f5f544244887cc5687623b03a.png

转矩:

3e10dda970644d58b2b547eb5962fcb3.png

 电流:

dd92589722c14042b294e1678d6cd5c3.png

效果还不错哈。

祝各位早日完成论文^ ^。

S-function模块说明

如果不会用该模块可以选择用纯模块实现,S-function使用方法以后介绍。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### 关于永磁同步电机DTC控制 #### 实现方法 对于永磁同步电机(PMSM),直接转矩控制(DTC)旨在简化控制系统结构并提高动态响应速度。在实现上,DTC不需要复杂的坐标变换过程来解耦定子电流分量,而是基于定子磁链和电磁转矩这两个物理量来进行控制[^1]。 具体来说,在构建PMSM-DTC系统时,通常会设计一个开关表用于决定逆变器的工作状态。此开关表依据当前检测到的定子磁链位置以及期望改变的方向选取合适的电压矢量施加给电机绕组,从而达到调节目的。为了更精确地跟踪目标性能指标,还可以引入自适应机制调整参数设置以应对负载变化等情况[^2]。 ```matlab % MATLAB/SIMULINK中的简单DTC逻辑片段示意 function u = dtc_logic(e, w_ref) % e为误差信号,w_ref为参考角频率 if abs(e) >= threshold && sign(e)*w_ref > 0 u = select_voltage_vector(); % 根据规则选择电压矢量 else u = maintain_current_state(); end end ``` #### 工作原理 DTC的核心在于利用瞬态特性而非稳态模型进行快速决策。它通过对实际运行过程中采集的数据即时处理,使得即使是在非理想条件下也能保持良好的鲁棒性和稳定性。相比于传统的磁场定向控制(FOC), DTC减少了计算负担的同时提高了系统的抗干扰能力。 当采用空间矢量调制(SVM)技术配合DTC方案时,能够进一步优化输出波形质量,减少谐波失真度,并且有助于降低能耗损失。此外,由于省去了繁琐的速度传感器环节,整体成本也有所下降。 #### 应用实例 在电动汽车领域内,PMSM凭借其优越的动力表现成为驱动装置的理想选择之一;而在风力发电机组方面,则是因为具备较高的效率转换率而备受青睐。无论是哪类应用场景下,实施有效的DTC策略均能显著提升设备的整体效能及用户体验感。 例如,在某款电动车辆的设计中采用了无传感式的PMSM-DTC架构,不仅实现了零速启动功能而且还增强了低速区间的扭矩输出线性度。这表明即便面对复杂多变的实际工况环境,该种类型的控制器依然表现出色。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值