首页/文章/ 详情

玩转电机控制MATLAB几种类型的仿真验证框架

4月前浏览1518

前言:电机控制的开发验证有多种途径和方式,常见的分为模型仿真验证和硬件测试两大类。接下来以MATLAB+CCS的IDE开发环境来进行仿真模型框架的搭建和对比。  

一、内容安排  

本期文章主要介绍并对比几种不同类型的仿真框架搭建,模块化搭建、M语言实现、C集成和CCS工程代码搭建(硬件测试)。从几个方面来比较不同类型的仿真验证框架优势和缺点。  

表1 不同类型的仿真模型对比    

在接下来的电机控制学习过程中,除控制理论外还需要加强自己的验证工具和编程能力的提高。    

二、不同类型的仿真框架的搭建  

学习本章内容的前提需要安装MATLAB(内置C编译器)和CCS软件,并具备一定的C语言的编程能力。以前期文章介绍的SVPWM为仿真验证内容进行对比。  

2.1 模块化仿真框架  

MATLAB模块化仿真,就是从封装器件库里直接拖取现成的作用模块,根据控制理论(一般是微分方程)进行搭建形成验证系统。但如果系统复杂,模块化仿真未必能够进行准确地模拟。  

模块化仿真通用性差且不利于后续持续性开发。个人觉得搭建控制验证仿真框架,此类型的应当只是备选方案。

图2.1 模块化搭建的SVPWM系统  

图2.2 马鞍波  

2.2 M语言实现的仿真框架  

图2.3 M语言实现的SVPWM系统  

图2.4 马鞍波  

M语言实现的控制系统,像基本的硬件模拟(电机、逆变器)可以采用封装模块,控制部分可以采用M语言进行实现,过程简单方便且通用性强、利于后续的持续性开发。  

2.3 C集成类型的仿真框架  

C集成类型的仿真搭建具有一定的难度,本节简单介绍一下该类型的仿真框架的搭建过程。首先MATLAB得安装C编译器,模型代码存放得路径得全英文。  

2.3.1 什么是S-Function  

S-Function为你提供了一种在Simulink模型中增加自制块的手段,你可以使用MATLAB和C语言来创建自己的块。按照下面一套简单的规则,你可以在S-Function中实现自己的算法。在你编写一个S-Function函数,并将函数名放置在一个S-Function块中(在用户定义的函数块库中有效)之后,通过使用masking定制用户界面。  

2.3.2 在模型中使用S-Function  

为了将一个S-Function组合到一个Simulink模型中,首先从Simulink用户定义的函数库中拖出一个S-Function块,然后在S-Function块对话框中的S-Function name区域指定S-Function的名字。如下图所示:

图2.5 S-Function块、对话框、及决定块功能的源文件之间的关系  

在本例中,模型包含了两个S-Function块,这两个块使用同一个源文件(mysfun,可以是一个C MEX文件,或者是一个M文件)。如果一个C MEX文件与一个M文件具有相同的名字,则C MEX文件被优先使用,即在S-function块中使用的是C MEX文件。  

2.3.3 S-Function的工作原理  

要创建S-Function,你必须了解S-Function是如何工作的。要了解S-Function如何工作,则需要了解Simulink是如何进行模型仿真的,那么由需要了解块的数学公式。因此本节首先从一个块的输入、状态和输出之间的数学关系开始介绍。  

仿真过程:    

Simulink模块的执行分几个阶段进行。首先进行的是初始化阶段,在此阶段,Simulink将库块合并到模型中来,确定传送宽度数据类型采样时间,计算块参数、确定块的执行顺序,以及分配内存。然后,Simulink进入到“仿真循坏”,每次循环可认为是一个“仿真步”。在每个仿真步期间,Simulink按照初始化阶段确定的块执行顺序依次执行模型中的每个块。对于每个块而言,Simulink调用函数来计算块在当前采样时间下的状态、导数和输出。如此反复,一直持续到仿真结束。

图2.6 Simulink执行仿真的步骤  

2.3.4 S-Function的回调程序  

2.3.5 S-function实现过程的解析  

simstruc.h 文件定义了一个名为SimStruct 的数据结构,Simulink 使用它来维护S-function的有关信息。simstruc.h 文件也定义了一些宏,可让你的MEX 文件在SimStruct 中设置某些值,或从SimStruct 中获取某些值。  

2.3.6 CMEX仿真的搭建    

只需要搞明白输入/输出即可,sfunction内部的模板可以参考范例。    

图2.8 C MEX仿真波形变化  

2.4 CCS工程代码实现的验证框架  

使用CCS软件编程涉及到的就是硬件验证,后续会重点介绍CCS工程模板的搭建实现过程和配套硬件的验证内容。  

三、总结  

基于MATLAB+CCS的IDE开发环境,方便后续持续性开发,首选M语言实现或C MEX类型的仿真验证框架。  

讨论:采用状态机类型的仿真类型在电机控制领域是否常见?      




来源:浅谈电机控制
通用MATLABSimulink理论电机控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-05-09
最近编辑:4月前
清风烈酒
硕士 签名征集中
获赞 44粉丝 4文章 50课程 0
点赞
收藏
作者推荐

内置式永磁同步电机MTPA控制策略的学习

导读:本章文章主要重点介绍一下内置式永磁同步电机的MTPA。通过仿真与id=0的控制策略进行对比,MTPA的动态性能明显优于前者。一、前言图1MTPA控制策略的内置式永磁同步电机有感矢量控制框图在恒转矩区对电机进行控制时,同一转矩对应的id、组合很多。在坐标系下的这些组合点连接起来就形成了等转矩曲线。等转矩曲线上距离坐标原点最近的点,对应的就是幅值最小的定子电流矢量,将这些点连接起来就是MTPA控制轨迹。MTPA控制除了利用永磁转矩,还可以充分利用永磁同步电机的磁阻转矩,而且相同力矩下的定子电流最小,使得铜损也最小,因此MTPA控制方式可以提高电机运行效率,改善系统的动态性能。图2MTPA运行轨迹二、MTPA的介绍及常见的几种方法MTPA控制算法是非常复杂的非线性函数,为了在微控制器中实现MTPA控制算法,需要对公式进行优化或者拟合。一种方法是利用优化算法,直接计算出一定转矩、磁链下的交、直轴给定指令电流值。还有一种方法是曲线拟合法,该方法将电磁转矩和交、直轴的电流的电流关系式进行标幺化处理,再使用MATLAB等计算工具软件对其标幺化关系式进行拟合反解,根据对计算的快速性和准确性等不同的需求,可以使用2阶或者3阶甚至更高阶的多项式函数进行曲线拟合,为了提高拟合公式的准确性,将电磁转矩和交、直轴的电流关系进行分段求解。该方法比较简单,但是依赖准确的电机参数。三、MTPA的实现及验证推导了MTPA控制的原理后,接下来就是具体怎么实现MTPA控制了。介绍一种常用的MTPA控制算法:公式计算法。图3MTPA的实现Id=0MTPA图3不同控制策略下的仿真波形变化从波形上可以直观的发现,MTPA的动态过程的定子电流最大值要小于id=0的控制策略的定子电流变化,与上述的理论一致。---这里推荐一本电机控制学习的一本值得学习的参考书,内容包含理论和实际应用。来源:浅谈电机控制

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈