黑船 · 2月1日

C集成的MATLAB/Simulink类型仿真学习总结

导读:本期文章主要介绍一种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 的名字。如下图所示:

image.png
图1-1 S-function 块、对话框、及决定块功能的源文件之间的关系

1.2 S-Function的工作原理

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

1.2.1 Simulink块的数学关系

Simulink 块包含一组输入、一组状态和一组输出。其中,输出是采样时间、输入和块状态的函数。

image.png

u:S-Function模块的输入;y:S-Function模块的输出;x:就是S-Function要实现什么功能所对应的函数。

1.2.2 C MEX S-Function的一般格式

image.png

二、SVPWM模块C MEX实现

image.png
image.png

为了验证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)加入技术交流群,请备注研究方向。
推荐阅读
关注数
2454
内容数
35
专注电机控制,偶尔不务正业
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息