一个序列图是一种行为图,它将架构的结构元素之间的交互表示为一个消息交换序列。您可以使用序列图来描述静态系统的各个部分是如何交互的。
您可以通过访问体系结构视图库来使用System Composer™中的序列图。序列图与体系结构模型集成。有关如何通过架构模型创建和使用序列图的更多信息,请参见在架构模型中使用序列图.
在本例中,您将分两个阶段学习序列图的基本术语和功能。
使用包含触发器和约束的消息标签添加生命线和消息来表示交互。
包含带有约束的片段和操作数,以进一步指定交互的行为。
序列图中的生命线表示体系结构中的组件。消息表示源生命线和目标生命线之间的一条路径上的通信。消息的路径必须包含来自体系结构模型的至少两个端口和一个连接器。使用嵌套消息时,由于要导航的层次结构,路径会更加复杂。
此图显示了交通灯架构模型和对应的序列图,该序列图描述了一个操作场景。交通灯模型描述了一个骑自行车的交通灯,行人十字路口按钮被按下,灯的变化使行人可以通过。
请注意
交通灯示例使用来自statflow的块®.如果没有statflow许可证,可以打开并模拟模型,但只能进行基本更改,例如修改块参数。
此示例显示了一个交通灯示例,其中包含描述行人过十字路口的序列图。使用这个例子来构造您自己的序列图。
通过导航到打开建筑视图库建模>体系结构视图.
要创建一个新的序列图,单击新>序列图.
一个新的序列图叫做SequenceDiagram1
在View Browser中创建,而序列图标签变得活跃。下元素的属性,重命名序列图抑制
.
选择组件>添加的生命线添加一条生命线。将创建一个没有名称的新生命线,并由虚线表示。
单击向下箭头并选择源
.的源
当行人按下十字路口按钮时,生命线就会检测到。使用命名的向下箭头添加另外四条生命线轮询器
,开关
,控制器
,lampController
.的轮询器
救生索检查人行横道按钮是否被按下,开关
处理信号,控制器
确定行人灯和交通灯应该显示的颜色,以及lampController
改变交通灯的颜色。
画一条线从源
生命线的轮询器
生命线。开始类型西南
在来框,该框将在您键入时自动填写。文本填好后,选择西南
.
自switchout
港口和西南
在模型中连接端口时,将从switchout
港口的西南
端口在序列图中。
消息标签有一个触发器和一个约束。触发器确定消息是否发生,约束确定消息是否有效。对于信号消息,触发器称为边缘.
您可以输入一个条件,该条件指定带有方向和表达式的触发边。您还可以选择在消息中添加方括号内的约束。约束条件由MATLAB组成®作用于目标生命线的输入的布尔表达式。
方向(signalPort (+ | -) positiveReal) [booleanExpression]
边缘有三个方向:
穿越
—边表达式是上升或下降到零以上。
不断上升的
—边缘表达式从严格小于零上升到等于或大于零的值。
下降
—边缘表达式从严格小于零降到等于或小于零的值。
单击消息并双击出现的空消息标签。输入这个条件和约束。
上升(sw-1) (sw = = 1)
该消息将在西南
信号从下方升起1
值为1
或以上。方括号中的约束表示如果西南
不等于1
,则该消息无效。
请注意
消息标签只支持目标元素。万博1manbetx在这个例子中,switchout
是源元素,不能包含。
信号的名字西南
是端口上用于状态流图行为的有效输入数据。的轮询器
具有状态图行为的组件具有西南
在符号窗格。
请注意
信号名称也可以是端口上的数据接口上的数据元素。输入选项卡自动完成端口和数据元素名称。有关更多信息,请参见使用序列图表示系统交互.
在这个例子中,当西南
信号就1
时,人行横道的按钮已按下,并有消息通知轮询器
生命线是公认的。
除了信号事件外,序列图还支持消息事件。万博1manbetx创建一条消息,从轮询器
生命线的开关
生命线。开始键入switchEvent
在来盒子,直到switchEvent
可供选择。
由于体系结构模型中存在一个现有连接,因此从源端口创建消息switchEvent
.
单击该消息并双击出现的空消息标签。输入表示端口和约束的条件。
switchEvent [switchEvent = = 1]
当消息switchEvent
接收,其值为1
,则消息已发生且有效。
您可以使用片段来描述更复杂的序列,比如替代。根据片段的类型,片段有一个或多个操作数。操作数可以包含消息和额外的片段。您可以使用任何生命线的输入将操作数的前置条件表示为MATLAB布尔表达式。
要访问片段菜单:
单击并拖动以选择两个消息。
在省略号(…)上暂停,这似乎是访问操作栏。
复合片段列表出现了:
Alt片段
选择片段
循环片段
Seq片段
严格的片段
Par片段
选择Alt片段
.
的Alt片段
片段使用包含所选消息的单个操作数添加到序列图中。
选择要输入操作数条件的片段。为输入数据选择一个完全限定的名称,并使用约束条件关系。
开关/抑制= = 0
约束是确定操作数何时是活动的先决条件。该约束指定抑制
标志设置为0
.因此,在这个十字路口可以使用人行横道灯。
只有当约束条件为真时,操作数中的消息才能被执行。
的下面突出显示第一个操作数Alt片段
片段并选择片段>添加操作数>插入后,.添加第二个操作数。
向第二个操作数添加约束条件关系。对象中的第二个操作数Alt片段
代表了一个片段elseif
消息将被执行的条件。
开关/抑制= = 1
这个条件表示抑制
标志设置为1
.因此,人行横道不受该十字路口的步行信号控制。
在第二个操作数中创建一个带有消息标签的消息。
对于第一个可选操作数,自抑制
标志设置为0
,第一个消息控制器
生命线被识别时pedRequest
消息被激活。然后,当switchPed
信息值是1
,lampController
生命线会使人行交通灯变绿。
对于第二个可选操作数,由于抑制
标志设置为1
,开关
绕过了控制器
,信息switchPed
值为2
直接到lampcontroller
.的switchPed
信息的价值2
不影响交通信号。
这个交通灯的例子包含了描述行人过十字路口的序列图。模型描述了这些步骤:
交通信号由红转黄再转绿。
当按下人行横道按钮时,如果交通信号是绿色的,则交通信号在一定时间内由黄转红。
行人过马路时,行人信号处于激活状态。
打开包含序列图的System Composer模型。
模型= systemcomposer.openModel (“TLExample”);
打开架构视图库以查看序列图。
openViews(模型)
此示例中的序列图表示体系结构模型中的操作场景。
1.PressDetection
顺序图:行人按人行横道按钮和信号西南
上升到1
.的轮询器
生命线被激活了switchEvent
消息发生在开关
生命线,改变交通信号,让行人通过。
2.SignalSequence
顺序图:行人按人行横道按钮,信号西南
上升到1
.经过一些中介事件后lampController
生命线传送一个触发
信号ped灯
生命线改变行人交通灯的颜色红色的
(停止)绿色
(走),让行人通过。
3.PedestrianCross
序列图:首先交通
值是3.
,表示交通灯颜色为绿色。交通灯从黄色变成环状(2
)变为红色(1
)转为绿色(3.
)一次又一次。当人行横道按钮被按下时控制器
生命线识别有效的pedRequest
交通灯由黄色变为黄色(2
)变为红色(1
),以便行人通过。然后,继续主循环。
4.抑制
序列图:抑制
标志标志确定是否设置了人行横道按钮供行人按下以控制十字路口和十字路口的交通灯信号。当抑制
被设置为0
,则交叉按钮存在。当抑制
被设置为1
,则交叉点按钮不存在。的switchEvent
值是1
,表示行人想要穿过马路。一旦switchEvent
值设置为1
,如果抑制
是0
,控制器
生命线认识到pedRequest
信息,开始改变行人灯的颜色。此外,switchPed
值是1
,交通灯将由黄色变为红色。否则,如果抑制
是1
,switchPed
值是2
,因此交通灯将继续正常运行,而不是改为红色专门让行人通过。
模拟体系结构模型
您可以在设置这些变量之后执行模型。
createWorkSpaceVar (“SwitchInputs”,[0 11 18],[-1 1 -1]);createWorkSpaceVar (“inhibitFlag”1 0);