文档

通过使用创建图表StateflowAPI

创建一个新的模型和图表

  1. 关闭所有模型。

  2. 类型的函数sfnew创建一个新的,新的Stateflow untitled模型®图表。

MATLAB®是图表创建默认动作的语言sfnew。打开一个新的C图表或改变默认动作语言,明白了修改一个图表的动作语言

你只有一个模型金宝app®模型在内存中。不要打开图表。你现在可以访问的API对象代表了模型本身。

访问对象

Stateflow API,每个模型您创建或加载到内存中表示一个对象的类型。之前访问Stateflow图表创建在前面的小节中,您必须首先连接到它对象。然而,在Stateflow API,被包含的对象Stateflow API对象,因此您必须使用的对象返回的函数sfroot访问一个对象:

  1. 使用此命令可获得一个句柄对象:

    rt = sfroot;
  2. 使用的句柄对象,rt,发现对象代表你的新untitled仿真软件模型和分配处理金宝app在这个命令:

    m = rt.find(“是”、“Stateflow.Machine”);

而不是一个模型,如果有几个模型打开,该命令返回一个数组不同的你可以通过索引访问的对象((1),(2)等),你可以确定一个特定的对象使用每个模型的属性,特别是的名字模型的属性,也就是名字。例如,您可以使用的名字属性来找到一个对象命名myMachine使用这个命令:

m = rt.find (isa, Stateflow。机”、“——”,……“名称”、“myMachine”);

然而,由于你现在只有一个模型加载,对象句柄在第2步返回的命令您刚刚创建的对象模型。你现在可以使用了访问空表,这样您就可以开始填充Stateflow对象。

图表对象的访问

访问本机对象,你访问对象包含你的新表返回一个句柄对象为您的新模型,。执行这些步骤来访问新的图表:

  1. 访问新图表对象,并将其分配给工作空间变量ch如下:

    ch = m.find(“是”、“Stateflow.Chart”);

    在前面的命令中,找到的方法对象返回一个数组的所有图表属于这种模式。因为只创建一个图表,这个命令的结果是您创建的图表。如果你创建了一些图表,找到方法返回一个数组的图表,你可以通过索引访问(例如,ch (1),ch (2)等等)。

    您还可以使用标准函数符号相反的点符号前面的命令。在本例中,第一个参数是对象句柄,

    ch =找到(m,‘是’,‘Stateflow.Chart’);
  2. 打开Stateflow图表使用这个API命令:

    ch.view;

    前面的命令调用视图的方法图表对象的句柄ch。指定的表出现。其他Stateflow API对象视图方法。

在图表创建新对象

在前面的小节中,您创建了一个新的处理图表对象,ch。继续通过创建新对象对你的图表使用这些步骤:

  1. 创建一个新的国家图表对象ch使用这个命令:

    sA = Stateflow.State (ch);

    这个命令是一个Stateflow API构造函数的新状态Stateflow.State是一个国家的对象类型,ch是一个工作空间变量包含处理到父表的新状态,然后呢sA是一个工作空间变量接收返回的句柄的新状态。

    现在一个空的状态出现在左上角的图表。

  2. 使用ch.view命令来前台查看图表。

  3. 指定一个名称和位置的新状态的属性赋值状态对象如下:

    sA。Name = ' A ';sA。位置= [50 50 310 200];
  4. 创建新的状态A1和A2内部状态与这些命令和分配属性:

    sA1 = Stateflow.State (ch);sA1。的名字= 'A1'; sA1.Position = [80 120 90 60]; sA2 = Stateflow.State(ch); sA2.Name = 'A2'; sA2.Position = [240 120 90 60];

    这些命令创建和使用工作空间变量sA,sA1,sA2现在处理的新国家,出现如下。

  5. 创建一个从3点位置(右侧)的A1到9点钟位置(左)的A2这些命令:

    tA1A2 = Stateflow.Transition (ch);tA1A2。源= sA1;tA1A2。目的地= sA2;tA1A2。SourceOClock = 3;tA1A2。DestinationOClock = 9;

    一个过渡现在看起来如图所示。

  6. 添加标签E1的过渡状态A1A2使用这个命令:

    tA1A2。LabelPosition = (180 140 0 0);tA1A2。LabelString =“E1”;

    现在的图是这样的:

    状态和转换标签在这个图表是简单的一行标签。进入更复杂的多行标签,看到的在状态和转换输入多行标签。标签转换也有一个LabelPosition属性可以使用标签移动到更好的位置。

  7. 使用这些命令来移动标签从A1, A2过渡到正确的5像素:

    pos = tA1A2.LabelPosition;pos pos (1) = (1) + 5;tA1A2。LabelPosition = pos;
  8. 完成你的新表通过添加默认转换到州和A1来源分20像素以上,10像素顶部左边的中点每个状态:

    %添加一个默认的过渡状态dtA = Stateflow.Transition (ch);dtA。目的地= sA);dtA。DestinationOClock = 0;xsource = sA.Position (1) + sA.Position (3) / 2;ysource = sA.Position (2) -30;dtA。SourceEndPoint = [xsource ysource];dtA。MidPoint = [xsource ysource+15]; % Add a default transition to state A1 dtA1 = Stateflow.Transition(ch); dtA1.Destination = sA1; dtA1.DestinationOClock = 0; xsource = sA1.Position(1)+sA1.Position(3)/2; ysource = sA1.Position(2)-30; dtA1.SourceEndPoint = [xsource ysource]; dtA1.MidPoint = [xsource ysource+15];

    你的完整的图是这样的:

  9. 保存模型与新表到当前文件夹myModel:

    sfsave (m。的名字,'myModel');

    这个命令使用了的名字模型对象的属性保存模型在一个新名字。

另请参阅

|||||

相关的话题