A.图形功能在状态流中®图表是一个图形元素,可以帮助您重用控制流逻辑和迭代循环。使用使用连接连接和转换的流程图创建图形函数。您可以在状态和转换操作中调用图形函数。使用图形功能,您可以:
创建模块化、可重用的逻辑,您可以在图表中的任何位置调用这些逻辑。
在图表动画期间可视化跟踪模拟行为。
图形功能可以驻留在图表、状态或子图表中的任何位置。函数的位置决定了可以调用函数的一组状态和转换。
如果要在一个状态或subchart及其子状态中调用函数,请将图形函数置于该状态或subchart中。该函数将覆盖该状态或subchart的父级和父级中同名的任何其他函数。
如果要在图表中的任何位置调用函数,请将图形函数置于图表级别。
如果要从模型中的任何图表调用函数,请将图形函数置于图表级别,并启用图表级别函数的导出。有关更多信息,请参阅导出Stateflow函数以供重用.
笔记
图形函数可以访问Stateflow层次结构中位于其上方的图表和状态数据。
例如,此图形函数的名称为f1
. 这需要三个论点(A.
,B
和C
)并返回三个输出值(x
,Y
和Z
)。该函数包含一个流程图,用于计算参数的三个不同乘积。下载188bet金宝搏
在对象选项板中,单击图形功能图标.
在图表画布上,单击新图形功能的位置。
输入函数的签名标签。
函数的签名标签指定函数的名称及其参数和返回值的形式名称。签名标签具有以下语法:
[返回值1,返回值2,…]=函数名称(arg1,arg2,…)
可以对参数和返回值使用相同的变量名。例如,具有此签名标签的函数使用这些变量y1
和y2
作为输入和输出:
[y1,y2,y3]=f(y1,u,y2)
y1
和y2
通过引用传递(作为指针),并且U
通过值传递。通过引用传递输入减少了生成的代码复制中间数据的次数,从而产生更优的代码。
笔记
不要将图表符号的名称用作函数参数或返回值。例如,如果x
或Y
是图表数据,用签名定义函数y=f(x)
导致运行时错误。
要对函数进行编程,请在函数框内绘制流程图,如中所述Stateflow中的流程图.
因为图形函数在调用时必须完全执行,所以不能使用状态。连接连接和转换是图形函数中唯一可以使用的图形元素。
笔记
在图形函数中,不要广播可能导致活动状态更改的事件。在图形函数中,导致退出活动状态的事件广播行为是不可预测的。
在模型资源管理器中,展开图表对象并选择图形函数。函数签名的参数和返回值显示为属于函数的数据项。参数有作用域输入
.返回值具有作用域输出
.
在每个参数和返回值的“数据属性”对话框中,指定数据属性,如中所述设置数据属性.
创建函数所需的任何附加数据项。有关更多信息,请参见通过模型资源管理器添加数据.
您的函数可以访问自己的数据或属于父状态或图表的数据。函数中的数据项可以具有以下作用域之一:
常数
-常量数据在所有函数调用中都保留其初始值。
参数
-参数数据在所有函数调用中保持其初始值。
地方的
-在整个模拟过程中,本地数据在函数调用中保持不变。仅在使用C作为操作语言的图表中有效。
临时
-临时数据在每次函数调用开始时初始化。仅在使用C作为操作语言的图表中有效。
在使用C作为操作语言的图表中,当您希望数据值在整个模拟过程中跨函数调用保持时,请定义本地数据。当您希望在每个函数调用开始时初始化数据值时,请定义临时数据。例如,您可以使用地方的
如果要跟踪调用函数的次数,则可以指定一个循环计数器临时
如果不需要计数器值在函数完成后保持不变,则返回范围。
在图表中使用MATLAB®作为操作语言,您不需要定义本地或临时函数数据。如果使用未定义的变量,Stateflow将创建一个可供函数其余部分使用的临时变量。若要存储跨函数调用的持久值,您的函数可以在图表级别访问本地数据。
提示
您可以从MATLAB工作区初始化函数中的本地和临时数据。有关更多信息,请参阅从MATLAB基本工作区初始化数据.
可以从任何状态或转换的操作或其他函数调用图形函数。如果导出图形函数,可以从模型中的任何图表调用它。有关导出函数的详细信息,请参阅导出Stateflow函数以供重用.
要调用图形函数,请使用函数签名,并在函数签名中包含每个形式参数的实际参数值。
[返回值1,返回值2,…]=函数名称(arg1,arg2,…)
如果实际参数和形式参数的数据类型不同,则函数将实际参数强制转换为形式参数的类型。
您可以选择使图形功能尽可能大。如果函数太大,可以通过在函数框内单击鼠标右键并选择组和子组>分包从上下文菜单中。
要使图形功能框不透明,请右键单击该功能并清除内容预览属性。
要将整个图表窗口用于编程函数,请双击函数框,访问子图表图形函数中的流程图。有关详细信息,请参阅用子图封装模态逻辑.
可以在“模型管理器”或“函数属性”对话框中指定图形函数的属性。
使用模型资源管理器:
要打开模型管理器,请在建模选项卡,选择模型资源管理器.
在模型层次结构窗格中,选择图形功能。
在函数窗格中,编辑图形函数属性。
要使用“函数属性”对话框:
在Stateflow编辑器中,右键单击图形函数。
选择性质.
编辑图形函数属性。
还可以通过使用以编程方式指定图形函数属性Stateflow.Function
有关Stateflow编程接口的更多信息,请参阅Stateflow API概述.
函数名。单击“函数名”链接,将函数带到其本机图表中的前台。
控制生成代码中函数的内联:
汽车
-决定是否根据内部计算内联函数。
内联
-如果未将函数导出到其他图表,并且它不是递归的一部分,则将函数内联。(如果函数通过另一个函数调用直接或间接调用自身,则存在递归。)
函数
-不内联函数。
您的功能签名标签。函数签名标签指定函数的名称及其参数和返回值的正式名称。
功能描述。可以在层次结构中输入函数的简要说明。
链接到该功能的联机文档。您可以输入web URL地址或MATLAB命令,以适当的联机格式显示文档,如HTML文件或MATLAB命令窗口中的文本。当您单击文档链接超链接,Stateflow显示文档。