重用定制代码Stateflow图表
您可以将定制代码集成与Stateflow用C或c++编写的®图表在仿真软件金宝app®模型。通过共享数据和函数之间你的自定义代码和Stateflow图表,您可以增加Stateflow的功能和利用现有代码。
集成定制Stateflow图表的C代码
这个例子展示了如何使用自定义C代码定义常量,变量,函数,您可以访问在你的模型图。关于集成定制c++代码的更多信息在你的图表,看看访问定制c++代码Stateflow图表。
在这个例子中,Stateflow表调用一个自定义代码函数命名custom_function
。该函数读取图表输入信号
和本地数据阈值
,比较它们的值,并返回三种自定义全局常量命名高
,媒介
,低
。图表使用函数的值来确定是否要过渡到一个新的国家后的增量或一个自定义的变量的值命名的精神性custom_var
。
看到这张图的自定义代码访问,打开配置参数对话框,,模拟目标窗格中,选择代码信息选项卡。
的包括头信息参数包含一个
# include
声明中指定头文件sf_custom_header.h
。这个文件包含三个静态全局常量的定义和声明变量custom_var
和功能custom_function
。的源文件参数指定源文件
sf_custom_source.c
。这个文件集的初始值custom_var
为零和定义了功能custom_function
。
这两个文件都位于同一文件夹包含模型。在不同的文件夹访问自定义代码文件,使用相对路径名。有关更多信息,请参见指定自定义代码相对路径。
当你模拟模型,Stateflow编译源文件和图表为单个功能墨西哥人文件。因为自定义定义出现在机器生成的头文件sf_custom_sfun.h
在模型中,每一个图表可以访问期间定制代码仿真。
为您的模型配置自定义代码
指定自定义代码设置模拟
配置您的模型在模拟访问自定义代码,使用模拟目标面板的配置参数对话框。
打开配置参数对话框。
在模拟目标窗格中,在代码信息选项卡中,指定这些参数:
包括头信息——输入代码包括顶部的生成
头文件,声明自定义函数和数据在生成的代码中。生成的代码出现在顶部的所有源代码文件和生成的代码是可见的。例如,使用这个参数输入模型
。h# include
和#定义
语句。包括自定义头文件时,必须附上双引号中的文件名。有关更多信息,请参见包括头信息(金宝app模型)。请注意
使用MATLAB的图表®作为动作语言不支持金宝app
#定义
报表的自定义代码。分享常数之间的图表和您的自定义代码,使用静态全局常量而不是宏。你指定这个参数可以包含的代码
走读生
声明的变量或函数,如extern int x
或外面的空白myfun(空白)
。然而,如全局变量或函数定义int x
或空白myfun(空白)
导致连接错误,因为他们多次出现在源文件生成的代码。
包括目录——输入一个空格分隔的列表,包含自定义头文件的文件夹路径中包括直接头文件参数或间接在编译后的目标。有关更多信息,请参见包括目录(金宝app模型)。
源文件——输入源文件列表编译和链接到目标。你可以单独的源文件用逗号,空间,或者新行。有关更多信息,请参见源文件(金宝app模型)。
库——输入一个空格分隔的列表包含自定义对象代码的静态库链接到目标。有关更多信息,请参见库(金宝app模型)。
定义了——输入一个空格分隔的列表添加预处理器宏定义生成的代码。有关更多信息,请参见定义了(金宝app模型)。
编译器标志——输入额外的编译器标志添加到您的自定义代码被编译时编译器的命令行。有关更多信息,请参见编译器标志(金宝app模型)。
链接器标志——输入额外的链接器国旗时要添加到链接器命令行与您的自定义代码。有关更多信息,请参见链接器标志(金宝app模型)。
下先进的参数中,选择导入自定义代码(金宝app模型)。
如果你的模型包含库图表、配置自定义代码设置为每个库模型,图表有助于您的模型。有关更多信息,请参见配置自定义代码库模型。
信息通过使用命令行API设置模拟选项,看看以编程方式设置配置参数。
指定自定义代码设置为代码生成
配置您的模型为代码生成访问自定义代码,使用代码生成>自定义代码面板的配置参数对话框。生成代码时,您的模型可以使用相同的自定义代码设置,它使用模拟或使用独特的定制代码设置。
使用相同的自定义代码设置用于模拟,选择使用相同的自定义代码设置为模拟目标。指定自定义代码设置的模拟目标窗格中描述指定自定义代码设置模拟。
使用独特的定制代码设置,明确使用相同的自定义代码设置为模拟目标。在代码信息选项卡中,指定自定义代码设置为代码生成。参数的描述在该选项卡中,看到的指定自定义代码设置模拟。
有关更多信息,请参见使用相同的自定义代码设置为模拟目标(金宝app仿真软件编码器)和集成外部代码通过使用模型配置参数(金宝app仿真软件编码器)。
调用自定义代码函数的状态和转换
你可以调用自定义代码函数从任何国家的行为或过渡或从其他函数。
调用自定义代码功能,使用指定的签名函数声明头文件。包括一个实际的参数值为每一个正式的参数在函数签名:
return_val = function_name (__arg1、最长,…)
请注意
之间不共享定点数据自定义代码和Stateflow图表。
指定自定义代码相对路径
当你更新你的模型或启动模拟,模型在这些文件夹搜索自定义代码文件:
当前文件夹
模型文件夹(如果这个文件夹不同于当前文件夹)
您所指定的自定义的文件夹列表
MATLAB搜索路径上的所有文件夹,不包括工具箱文件夹
您可以指定您的自定义代码的位置通过路径相对于其中一个文件夹。例如,假设,在前面的示例中,您为您的自定义代码存储源文件和头文件的子文件夹CustomCode /源文件
和CustomCode / HeaderFiles
模型的文件夹。要访问这些文件,使用包括目录参数指定子文件夹的相对路径。
或者,您可以使用相对路径名指定单独的头文件和源文件:
下包括头信息,输入:
# include”。/ CustomCode HeaderFiles / sf_custom_code_constants_vars_fcns_hdr.h”
下源文件,输入:
。/ CustomCode / HeaderFiles / sf_custom_code_constants_vars_fcns_src.c
相对路径语法指南
当你为自定义代码构建相对路径,遵循这些语法指南:
使用一个时期(
。
)来表示相对路径的起点。使用正斜杠(
/
)或反斜杠(\
)文件分隔符,不管您使用当前的平台。在双引号(附上路径
“…”
)如果他们包含非标准路径字符如空格或连字符(- - - - - -
)。将表达式与美元符号(
…美元
MATLAB的工作区中)来评价他们。例如,假设CustomCodeFolder
是一个变量,您定义在MATLAB工作区“module1的”
。如果您指定您的自定义代码文件使用路径名工作。\ \ \ CustomCodeFolder美元来源
搜索,那么模型中的自定义代码文件文件夹工作。\ \ \ module1的来源
。