前言:电机控制的开发验证有多种途径和方式,常见的分为模型仿真验证和硬件测试两大类。接下来以MATLAB+CCS的IDE开发环境来进行仿真模型框架的搭建和对比。
本期文章主要介绍并对比几种不同类型的仿真框架搭建,模块化搭建、M语言实现、C集成和CCS工程代码搭建(硬件测试)。从几个方面来比较不同类型的仿真验证框架优势和缺点。
表1 不同类型的仿真模型对比
在接下来的电机控制学习过程中,除控制理论外还需要加强自己的验证工具和编程能力的提高。
学习本章内容的前提需要安装MATLAB(内置C编译器)和CCS软件,并具备一定的C语言的编程能力。以前期文章介绍的SVPWM为仿真验证内容进行对比。
MATLAB模块化仿真,就是从封装器件库里直接拖取现成的作用模块,根据控制理论(一般是微分方程)进行搭建形成验证系统。但如果系统复杂,模块化仿真未必能够进行准确地模拟。
图2.1 模块化搭建的SVPWM系统
图2.2 马鞍波
图2.3 M语言实现的SVPWM系统
图2.4 马鞍波
M语言实现的控制系统,像基本的硬件模拟(电机、逆变器)可以采用封装模块,控制部分可以采用M语言进行实现,过程简单方便且通用性强、利于后续的持续性开发。
C集成类型的仿真搭建具有一定的难度,本节简单介绍一下该类型的仿真框架的搭建过程。首先MATLAB得安装C编译器,模型代码存放得路径得全英文。
S-Function为你提供了一种在Simulink模型中增加自制块的手段,你可以使用MATLAB和C语言来创建自己的块。按照下面一套简单的规则,你可以在S-Function中实现自己的算法。在你编写一个S-Function函数,并将函数名放置在一个S-Function块中(在用户定义的函数块库中有效)之后,通过使用masking定制用户界面。
图2.5 S-Function块、对话框、及决定块功能的源文件之间的关系
在本例中,模型包含了两个S-Function块,这两个块使用同一个源文件(mysfun,可以是一个C MEX文件,或者是一个M文件)。如果一个C MEX文件与一个M文件具有相同的名字,则C MEX文件被优先使用,即在S-function块中使用的是C MEX文件。
要创建S-Function,你必须了解S-Function是如何工作的。要了解S-Function如何工作,则需要了解Simulink是如何进行模型仿真的,那么由需要了解块的数学公式。因此本节首先从一个块的输入、状态和输出之间的数学关系开始介绍。
仿真过程:
图2.6 Simulink执行仿真的步骤
simstruc.h 文件定义了一个名为SimStruct 的数据结构,Simulink 使用它来维护S-function的有关信息。simstruc.h 文件也定义了一些宏,可让你的MEX 文件在SimStruct 中设置某些值,或从SimStruct 中获取某些值。
只需要搞明白输入/输出即可,sfunction内部的模板可以参考范例。
图2.8 C MEX仿真波形变化
使用CCS软件编程涉及到的就是硬件验证,后续会重点介绍CCS工程模板的搭建实现过程和配套硬件的验证内容。
基于MATLAB+CCS的IDE开发环境,方便后续持续性开发,首选M语言实现或C MEX类型的仿真验证框架。
讨论:采用状态机类型的仿真类型在电机控制领域是否常见?