访问现有的Stateflow对象
关于Stateflow对象句柄
创建Stateflow®通过Stateflow API对象给你立即处理(参见新创建的对象创建Stateflow对象)。你也可以连接到Stateflow对象已经存在你目前没有API处理。
找到对象和属性
有几个对象方法用来遍历Stateflow层次定位现有的对象。例如,您可以使用找到
方法。
与找到
方法,您指定的搜索通过指定组合这些类型的信息:
对象的类型
对象的属性名来查找和它的价值
这个示例搜索通过模型对象米
每一个状态对象的名称“上”
。
onState = m.find(“是”、“Stateflow.State”,“——”,“名字”,“上”);
如果一个找到
命令发现不止一个符合要求的对象,它返回符合条件的对象数组。这个例子中返回一个数组中的所有图表模型:
chartArray = m.find(“是”、“Stateflow.Chart”);
使用数组索引访问单个表的属性和方法。例如,如果前面的命令返回三个图表,该命令返回的名称属性第二个图发现:
name2 = chartArray (2) . name;
提示
访问属性Stateflow对象在图书馆一个链表,做以下之一:
显式打开库模型。
查看相关子系统或块在主模型。
编译或模拟模型。
做一个步骤加载库模型到仿真软件金宝app®工作区。只是打开一个主要模型,指的是一个有关Stateflow图表并不能保证Stateflow API可以找到一个链表。
默认情况下,找到
命令发现深度控制在一个对象的对象。这包括零的水平的控制,这是搜索对象本身。例如,假设状态一个
,对应于状态对象sA
,包含两个状态,A1
和A2
。使用一个找到
发现所有的州的命令一个
:
州= sA.find(“是”、“Stateflow.State”);
前面的命令发现三种状态:一个
,A1
,A2
。
请注意
在指定的东西时要小心你想要找到的找到
根的方法或模型对象。使用找到
这些对象的方法可以返回匹配您所指定的参数模型对象。金宝app例如,如果rt
是一个根对象的句柄,命令吗找到(“名字”,“ABC”)
可能会返回一个仿真软件子系统或金宝app块命名美国广播公司
。查看参考找到
方法的一个完整的描述方法及其参数。
找到对象在不同级别的控制
一旦你找到一个特定的对象在一个Stateflow图表名称或另一个属性,您可能想找对象,它包含(孩子),或包含的对象(父母)。找到子对象,使用找到
方法。找到一个父对象,使用方法向上
。
发现子对象
的找到
方法发现对象的深度控制在一个指定的对象。如果你想限制的控制搜索深度找到
命令,可以使用深度
开关。例如,找到状态对象中的所有对象sA
在第一个级别的控制,使用这个命令:
objArray = sA。找到('-depth', 1);
但是,别忘了,找到
命令总是包括零的水平的控制,这是对象本身。所以,前面的命令还包括状态对象的列表中找到。然而,您可以排除国家一个向量的对象objArray
用MATLAB®函数setdiff
如下:
objArray = setdiff (objArray, sA);
这个命令返回一个集合的所有连接的第一级控制在国家所代表的状态对象sA
:
juncArray = sA.find(“是”、“Stateflow.Junction”,“深度”,1);
这个命令返回一个数组的所有转换内部状态的各级控制:
transArray = sA.find(“是”、“Stateflow.Transition”);
找到一个父对象
的向上
方法发现任何给定对象的父容器对象。假设您有一个图表包含州A1和A2。同时,国家A1 A11包含状态。在这个例子中,sA11 A11处理的状态。这意味着
> > pA11 = sA11.up;> > pA11。名字ans = A1
返回一个句柄pA11
国家A1, A11的父状态,
> > ppA11 = pA11.up;> > ppA11。名字ans =
返回一个句柄ppA11
国家,州A1的父母。
检索最近选定的对象
您可以检索最近选择的物体在一个图表使用sfgco
函数。这个函数返回对象句柄或一个向量的处理取决于这些条件:
如果…… | 然后sfgco 返回…… |
---|---|
没有开放的图表 | 空矩阵 |
没有选择列表 | 单击图表最近的把手 |
你选择一个对象在一个图表 | 所选对象的句柄 |
你在一个图表中选择多个对象 | 向量处理的选择对象 |
你选择对象在多个图表 | 处理最近最近选定的对象的选择图表 |
例如,假设您运行sf_boiler
模型和开放砰砰的枪声控制器
图表。如果您选择了从
状态图,sfgco
返回:
ans =路径:sf_boiler /继电器式控制控制器/加热器的Id: 20机:[1 x1 Stateflow。机)的名字:“掉”的描述:“LabelString: [1 x27 char]字形大小:12 ArrowSize: 8测试点:0图表:[1 x1 Stateflow。图表]BadIntersection: 0子视图:[1 x1 Stateflow。图文档:”标签:[]RequirementInfo:“ExecutionOrder: 0 HasOutputData: 0位置:[31.7440 - 40.9730 214.1807 - 88.1000]分解:“EXCLUSIVE_OR”类型:”或“IsSubchart: 0 IsGrouped: 1调试:[1 x1 Stateflow.StateDebug]
获取和设置对象的属性
一旦你获得一个特定的对象,您可以直接或通过访问其属性得到
方法。例如,您获得一个状态对象的描述年代
用一个命令:
od = s.Description;
od = s.get(“描述”);
od =(年代,“描述”);
你改变一个对象的属性直接或通过集
方法。例如,你改变状态对象的描述年代
用一个命令:
年代。描述= '这是在国家。';
年代。年代et('Description', 'This is the On state.');
集(年代,“描述”,“这是在国家。”);