重用自定义代码Stateflow图表
您可以将用C或c++编写的自定义代码与statflow集成在一起®Simulink中的金宝app图表®模型。通过在自定义代码和Stateflow图表之间共享数据和函数,可以增强Stateflow的功能,并利用该软件来利用现有的代码。
状态流程图通过使用与其他可重用函数相同的语法调用自定义代码函数:
return_val=function_name(__arg1,最长,……)
请注意
不要在自定义代码和状态流程图之间共享定点数据。
选择合适的模拟程序
要选择正确的模拟过程,请单击最能描述您的目标的突出显示块。
使用自定义代码定义全局常量
此示例展示如何使用自定义C代码定义适用于模型中的所有图表的常量。
该模型包含一个带有输入的Stateflow®图表,您可以在模拟期间通过切换模型中的手动开关将其设置为0或1。
图表包含两种状态一个
而且B
.在本例中,定义了两个名为真正的
而且假
为了保护图表中状态之间的转换,而不是使用值1和0。这些自定义定义提高了图表操作的可读性。真正的
而且假
不是状态流数据对象。
输入定义两个常量的自定义代码:
打开“模型配置参数”对话框。
选择模拟目标窗格。
在头文件subpane,输入
#定义
而且# include
语句。例如,在这个例子中,你用下面的代码定义全局常量:
#定义TRUE 1 #定义FALSE 0
因为两个自定义定义出现在生成的机器头文件的顶部sf_custom_code_global_constants_sfun.h
,你可以使用真正的
而且假
在属于这个模型的所有图表中。
使用自定义代码定义常量、变量和函数
此示例展示如何使用自定义C代码定义适用于模型中的所有图表的常量、变量和函数。
该模型包含一个状态流图,其中包含来自正弦波块的输入信号。
图表包含两种状态一个
而且B
,三个数据对象:input_data
,local_data
,out_data
.图表访问一个名为my_global
并调用命名为my_function
.
配置模型以访问自定义代码:
打开“模型配置参数”对话框。
选择模拟目标窗格。
在头文件subpane,输入
#定义
而且# include
语句。当包含自定义头文件时,必须将文件名括在双引号中。在包括目录子窗格中,输入包含自定义代码文件的文件夹的名称。若要访问模型文件夹子文件夹中的自定义代码文件,请使用表单的相对路径名
。\ subfolder_name
.在源文件子窗格中,输入包含自定义代码的源文件的名称。要访问位于模型文件夹子文件夹中的源文件,请使用表单的相对路径名
\ subfolder_name \ source_file.c
.
在这个例子中,自定义代码使用以下配置定义了三个常量、一个变量和一个函数:
的头文件Subpane包含以下语句:
# include“sf_custom_code_constants_vars_fcns_hdr.h”
的包括目录子窗格包含单个句点(
.
)来指示所有的自定义代码文件驻留在与模型相同的文件夹中。的源文件子窗格包含以下文件名:
sf_custom_code_constants_vars_fcns_src.c
自定义头文件sf_custom_code_constants_vars_fcns_hdr.h
包含三个常量的定义:
#定义TRUE 1 #定义FALSE 0 #定义MAYBE 2
头文件还包含变量的声明my_global
这个函数my_function
:
Extern int myglobal;Extern int my_function(int var1, double var2);
自定义源文件sf_custom_code_constants_vars_fcns_src.c
与statflow生成的代码一起编译成一个S-function MEX文件。
因为自定义定义出现在生成的机器头文件的顶部sf_custom_code_constants_vars_fcns_sfun.h
,您可以在属于此模型的所有图表中访问它们。