将状态机编程的优点与MATLAB的完整功能相结合®,创建一个独立的状态流®在Simulink外绘制图表金宝app®模型。用扩展保存独立图表.sfx
并将其执行为Matlab对象。使用图表动画和图形调试工具来完善您的设计。
有了独立的图表,您可以创建MATLAB应用程序,如:
使用模式逻辑来管理小部件行为的MATLAB App Designer用户界面。看到使用StateFlow图表设计人机接口逻辑.
使用顺序逻辑的通信协议和数据流处理应用程序。看到使用图表对象为通信协议建模.
数据采集工具箱™或仪器控制工具箱™应用程序,用于使用基于定时器的逻辑来监视和控制外部任务。看到通过使用statflow实现财务策略.
这些应用程序可以在不需要statflow许可证的情况下共享和执行。有关更多信息,请参见分享独立图表.
要构造独立的状态流图,请使用编辑
函数。例如,在MATLAB命令窗口,输入:
编辑chart.sfx
chart.sfx
时,状态流编辑器将打开一个名称为图表
.控件定义的图表,编辑器将打开自解压
文件。
保存独立图表后,帮助
函数显示在MATLAB中执行它的信息:
帮助chart.sfx
要从MATLAB命令窗口关闭一个独立的图表,请使用sfclose
功能:
sfclose图表
要在MATLAB中执行一个独立的图表,首先创建一个状态流图表对象。使用的名称自解压
文件为独立图表作为一个函数。将数据的初始值指定为名称-值对。例如,此命令创建图表对象ChartObject.
,初始化data1
和data2
,并执行其默认转换:
chartObject =图(“data1”value1,“data2”value2)
要显示图表信息,例如执行语法,图表数据的值以及活动状态列表,使用disp
功能:
disp (chartObject)
定义状态溢图对象后,您可以通过调用来执行独立的图表步
函数(如有必要,带数据值):
步骤(chartObject,“data1”value1,“data2”value2)
或者,你可以调用其中一个输入事件函数:
event_name (chartObject“data1”value1,“data2”value2)
在这两种情况下,在图表执行之前将值分配给本地数据。
如果您的图表具有图形或MATLAB函数,您可以在MATLAB命令窗口中直接调用它们。调用图表函数不会执行独立的图表。
function_name (chartObject, u1, u2)
请注意
如果你使用纳
在图形或MATLAB函数中,纳
将图表对象计算为输入参数之一。的价值纳
无论您是从图表还是从MATLAB命令窗口调用函数是相同的。
您可以在不打开statflow编辑器的情况下执行独立的图表。如果图表是打开的,则statflow Editor通过图表动画突出显示活动状态和转换。
出于调试和单元测试的目的,您可以直接从statflow Editor执行独立的图表。在执行期间,您输入数据值并从用户界面广播事件。有关更多信息,请参见执行和单位测试状态流图对象.
您可以从Matlab脚本,Simulink模型或App Designer用户界面执行独立图表。金宝app有关更多信息,请参阅:
要停止执行图表,可以通过调用删除
功能:
删除(chartObject)
删除图表对象后,将在图表对象中留在工作区中的任何句柄,但变得无效。要从工作区中删除无效句柄,请使用命令清除
:
清除ChartObject.
如果清除一个有效的图表对象句柄,而同一图表对象还有其他句柄,则不会销毁该图表对象。例如,在执行图表时,statflow Editor包含图表对象的内部句柄。从工作区中清除图表对象句柄不会破坏图表对象或删除编辑器中突出显示的图表动画。要重置动画高亮显示,右键单击图表画布并选择删除高亮显示.
您可以与没有州流许可证的合作者共享独立的图表。
如果您的合作者拥有与您相同或更高版本的MATLAB,他们可以将您的独立图表作为MATLAB对象执行,而无需打开statflow Editor。不支持图表动画和调试。金宝app运行时错误消息不会链接到发生错误的图表中的状态或转换。
请注意
要运行保存在R2019a或R2019b中的独立图表,协作者必须拥有相同版本的MATLAB。
如果你的合作者有一个较早版本的MATLAB,导出一个独立的图表到他们可以使用的格式。您只能导出到R2019a及以后的版本。要完成导出过程,您需要访问要导出的statflow版本。
使用statflow的最新版本,打开独立图表。
在国家图表选项卡上,选择保存>之前的版本.
在“导出到以前版本”对话框中,指定导出图表的文件名。
从另存为类型列表,选择要将图表导出到的较早版本。
点击保存.
使用早期版本的statflow,打开并保存导出的图表。
要从MATLAB命令窗口导出图表,请调用StateFlow函数ExportToversion.
.有关更多信息,请参见将图表导出到早期版本的Matlab.
请注意
试图在保存之前执行导出的图表将导致错误。
statflow对象将数据和操作封装在一个结构中,方法是:
包含独立图表的内部状态变量的私有属性。
一个步
调用实现图表语义的各种操作的函数。
图表对象可以具有与图表中呈现的各种元素相对应的其他属性和函数。
独立的图表元素 | 图表对象元素 |
---|---|
局部和常数数据 | 公共属性 |
输入事件 | 执行图表的函数 |
图形和MATLAB功能 | 您可以从Matlab命令窗口调用的函数 |
创建图表对象时,可以通过将这些配置选项作为名称值对,指定图表行为。
配置选项 | 描述 | 例子 |
---|---|---|
-animationDelay |
指定图表动画用于突出显示每个过渡段的延迟。默认值为0.01 秒。生成没有动画延迟的图表,设置为零。 |
通过指定一秒延迟,创建具有慢动作的图表对象。 chartObject =图(“-animationDelay”1)
|
-enableAnimation |
启用图表动画和调试仪器。默认值为真正的 . |
创建禁用动画和调试检测的图表对象。 chartObject =图('-enablianimation'假)
|
-eventQueueSize |
指定用于事件和时间逻辑操作的队列的大小。默认值为20. .若要禁用事件排队,请将其设置为零。有关更多信息,请参见独立图表中的事件. |
创建一个图表对象,该对象忽略在图表处理另一个操作时发生的所有事件而不发出警告。 chartObject =图('-EventQueureSize',0)
|
-executeInitStep |
启用默认转换的初始执行。默认值为真正的 . |
创建图表对象,但不执行默认转换。 chartObject =图(“-executeInitStep”假)
|
-warningOnUninitializedData |
在初始化图表对象后启用关于空图表数据的警告。默认值为真正的 . |
创建图表对象时消除警告。 chartObject =图('-warningonuninitializeddata'假)
|
在“状态溢编辑器”中,您可以使用“符号”窗格为图表数据指定初始值。创建图表对象时,图表数据按照其范围按字母顺序初始化。首先初始化常量数据。本地数据初始化。
如果使用表达式指定初始值,则图表尝试通过以下方式解析表达式:
使用图表中的其他数据的值。
在搜索路径上调用函数。
例如,假设您为本地数据指定初始值x
通过使用表达式y
.然后:
如果图表中有一个常数叫做y
,y
以前初始化x
.本地数据x
分配了与初始值相同的初始值y
.
如果图表具有称为本地数据y
,x
以前初始化y
.本地数据x
赋给空数组。如果配置选项-warningOnUninitializedData
被设定为真正的
,则会出现警告。
如果图表没有命名的数据y
,x
通过调用函数来初始化y
.如果文件y.m
不在搜索路径上,则发生此错误:
未定义的功能或变量'y'。
statflow不搜索MATLAB工作区来解析初始值,因此即使调用了一个变量,也会出现这个错误y
在Matlab工作区。
Matlab作为动作语言的经典图表语义。您可以使用MATLAB的完整功能,包括限制在Simulink中的代码生成的那些函数。金宝app看到通过脚本和模型执行状态流程图对象.
请注意
在独立状态溢图中,操作系统命令符号!
不支持。金宝app执行操作系统命令时,可使用该功能系统
.
流程图,图形功能和MATLAB函数。看到图表中的可重用组件.
使用模式向导将MATLAB代码转换为图形函数。看到转换MATLAB代码到状态流流程图.
图表本地和恒定数据而不限制类型。看到执行和单位测试状态流图对象.
输入事件。看到使用StateFlow图表设计人机接口逻辑.
运营商已经改变
,hasChangedFrom
,hasChangedTo
用于检测本地数据值的变化。
请注意
独立的状态流图不支持对矩阵元素或结构中的字段的更改检测。金宝app
时序逻辑运算符:
独立图表定义绝对时间时序逻辑,以时钟时钟时间为标准,其精度限制在1毫秒。
函数getActivestates.
访问图表执行期间活动的状态。要将活动状态存储为单元格数组,请输入:
solated = getActivestates(ChartObject)
Stateflow函数exportAsClass
将独立图表导出为等效的MATLAB类。使用此函数调试运行时错误,否则很难诊断。例如,假设您在执行控制MATLAB应用程序的状态流程图时遇到错误。如果将图表导出为MATLAB类文件,则可以使用应用程序中的类替换图表,并使用MATLAB调试器诊断错误。导出图表chart.sfx
作为类文件chart.m
,输入:
StateFlow.ExportasClass(“chart.sfx”)
Simulink特定的内容:金宝app
采样时间和连续时间语义。
C行动语言。
金宝app作为状态的Simulink函数和Simulink子系统。
输入、输出和参数数据。
数据存储内存中的数据。
输出和本地事件。
输入、输出和本地消息。
其他限制:
没有Mealy或Moore语义学。
没有状态转换表。
无真相表函数。
没有由国家提供的本地数据或函数。
没有过渡操作(在输入到目标状态之前退出转换后源状态后执行的操作)。
disp
|编辑
|exportAsClass
|ExportToversion.
|帮助
|sfclose