导读:本期文章主要介绍一种C集成的Simulink类型的MATLAB仿真,这种仿真类似于半实物仿真,更好的贴合硬件实物。以SVPWM模块的C集成实现,来简单介绍一下C MEX工作原理。
一、C MEX S_Function模块介绍
S-Function(系统函数)为扩展Simulink的性能提供了一个有力的工具。S-Function 可以使用MATLAB®,C,C++,Ada,或Fortran 语言来编写。使用MEX 实用工具,将C,C++,Ada,和Fortran 语言的S-Function 编译成MEX-文件,在需要的时候,它们可与其它的MEX-文件一起动态地连接到MATLAB 中。
S-Function 使用一种特殊的调用格式让你可以与Simulink 方程求解器相互作用,这与发生在求解器和内置Simulink 块之间的相互作用非常相似。S-Function 的形式是非常通用的,且适用于连续、离散和混合系统。
1.1 在模型中使用S-Function
为了将一个 S-function 组合到一个Simulink 模型中,首先从Simulink 用户定义的函数块库中拖出一个S-Function 块,然后在S-Function 块对话框中的S-Function name 区域指定明确的S-Function 的名字。如下图所示:
图1-1 S-function 块、对话框、及决定块功能的源文件之间的关系
1.2 S-Function的工作原理
要创建 S-function,你必须了解S-function 是如何工作的。要了解S-function 如何工作,则需要了解Simulink 是如何进行模型仿真的,那么又需要了解块的数学公式。因此,本节首先从一个块的输入、状态和输出之间的数学关系开始介绍。
1.2.1 Simulink块的数学关系
Simulink 块包含一组输入、一组状态和一组输出。其中,输出是采样时间、输入和块状态的函数。
u:S-Function模块的输入;y:S-Function模块的输出;x:就是S-Function要实现什么功能所对应的函数。
1.2.2 C MEX S-Function的一般格式
二、SVPWM模块C MEX实现
为了验证C MEX模型的正确性,图2-2给出了SVPWM模块的仿真结果。由图2-2的第一通道可知,扇区N的值为3à1à5à4à6à2且交替变换,与表2-1所示的结果相同;由图2-2的第二通道可知,由SVPWM模块得到的调制波呈马鞍波,这样有利于提高直流电压的利用率,有效抑制谐波;由图2-2的第三通道可以看出,得到的相电压为6拍阶梯波,与实际理论相符。因此以上的仿真结果验证了C MEX SVPWM模块的正确性和可行性。
作者:浅谈电机控制
来源:浅谈电机控制
推荐阅读
更多电机控制技术干货请关注电机控制专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。