首页 理论教育S-Function介绍与应用

S-Function介绍与应用

【摘要】:S-Function可以使用MATLAB、C、C++、Ada或Fortran语言创建。S-Function的形式是非常通用的,且适用于连续、离散和混合系统。S-Function的应用在大多数情况下是创建自定义的Simulink块。一个S-Function包含了一组S-Function回调程序,用以执行在每个仿真阶段所必需的任务。在模型仿真期间,Simulink对于模型中的每个S-Function块调用适当的程序。如果S-Function中具有连续状态,Simulink在积分微步中调用S-Function的输出和导数部分。这是Simulink能够计算S-Function状态的原因。

S-Function(System-Function)是系统函数的简写,是Simulink中的一个模块,在Simu-link集成模块不能满足需求的时候,允许用户根据实际需要自定义功能模块,添加到Simu-link进行仿真。S-Function可以使用MATLAB、C、C++、Ada或Fortran语言创建。使用MATLAB自带的MEX工具,将C、C++、Ada和Fortran语言的S-Function编译成MEX-文件,然后动态地连接到MATLAB中。S-Function通过使用一种特殊的调用语法让其与Simu-link中的其他模块一起进行仿真。S-Function的形式是非常通用的,且适用于连续、离散和混合系统。S-Function提供了一种在Simulink模型中增加自制块的手段,按照下面一套简单的规则,可以在S-Function中实现自己的算法。在编写一个S-Function函数,并将函数名放置在一个S-Function块中(在用户定义的函数块库中有效)之后,通过使用masking定制用户界面。

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

图7-3所示模型包含一个S-Function块,用到源myfunction,可以是一个C MEX-文件或者M文件。S-Function的应用在大多数情况下是创建自定义的Simulink块。可以使用S-Function作为一些类型的应用,这些应用包括:

1)向Simulink增加一些新的通用块。

2)增加作为硬件设备驱动程序的块。

3)将已有的C代码合并到仿真中。

4)使用一组数学方程式来对系统进行描述。

5)使用图形动画

978-7-111-49275-7-Chapter07-4.jpg

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

使用S-Function的一个优点是可以创建一个普通用途的块,在一个模型中多次使用,而且可单独改变模型中所使用的每个块的参数。一个S-Function包含了一组S-Function回调程序,用以执行在每个仿真阶段所必需的任务。在模型仿真期间,Simulink对于模型中的每个S-Function块调用适当的程序。通过S-Function程序来执行的任务包括:

1)计算下一步采样点。如果创建了一个变步长块,那么在这里计算下一步的采样点,即计算下一个仿真步长。

2)计算主步长的输出。在该调用完成后,所有块的输出端口对于当前仿真步长有效。

3)按主步长更新离散状态。在这个调用中,所有的块应该执行“每步一次”的动作,如为下一个仿真循环更新离散状态。

4)计算积分。这适用于连续状态和/或非采样过零的状态。如果S-Function中具有连续状态,Simulink在积分微步中调用S-Function的输出和导数部分。这是Simulink能够计算S-Function状态的原因。如果S-Function(仅对于C MEX)具有非采样过零的状态,Simulink在积分微步中调用S-Function的输出和过零部分,这样可以检测到过零点。

本节利用MATLAB中的Simulink建立了基于MPPT算法的光伏发电系统仿真模型,其中不同的MPPT算法采用了C语言编写,并利用S-Function制成相应的模块添加到Simulink中进行仿真建模。