3Stateflow建模与应用1021final

上传人:小** 文档编号:55612268 上传时间:2022-02-18 格式:DOC 页数:56 大小:1.98MB
收藏 版权申诉 举报 下载
3Stateflow建模与应用1021final_第1页
第1页 / 共56页
3Stateflow建模与应用1021final_第2页
第2页 / 共56页
3Stateflow建模与应用1021final_第3页
第3页 / 共56页
资源描述:

《3Stateflow建模与应用1021final》由会员分享,可在线阅读,更多相关《3Stateflow建模与应用1021final(56页珍藏版)》请在装配图网上搜索。

1、第 3 章 Stateflow 建模与应用Stateflow 是有限状态机( finite state machine )的图形工具,它通过开发有限 状态机和流程图扩展了Simulink的功能。Stateflow使用自然、可读和易理解的形式,可使复杂的逻辑问题变得清晰与简单, 并且还与 MATLABSimulink 紧密集成, 为包 含控制、优先级管理、工作模式逻辑的嵌入式系统设计提供了有效的开发手段,是 本书的核心内容之一。 读者在 58 章将看到 Stateflow 应用于 MCU 器件的嵌入式开 发,尤其显得得心应手, 一些采用传统方法难于实现的算法, 如果利用 Stateflow 建

2、模却非常容易。 大到导弹、 航空航天器的控制, 小到点亮一个发光二极管, Stateflow 都非常称职。 Stateflow 状态图模型,还可利用 Stateflow Coder 代码生成工具,直 接生成 C 代码。Stateflow 的主要功能包括:使用层次化、可并行的、有明确执行语义的元素,来描述复杂的逻辑系统。 采用流程图定义图形化函数。利用真值表实现表格形式的功能。 使用临时逻辑处理状态转移与事件。 支持 Mealy 和 Moore 有限状态机。 可集成用户自定义的 C 代码。 可用动画的形式显示状态图的仿真运行过程,并可记录数据。 调试器使用图形化断点进行单步调试,并可观察其中的数

3、据。本章主要内容:Stateflow 工作原理与基本概念建立 Stateflow 状态图与流程图Stateflow 的层次结构与并行机制Stateflow 应用3.1Stateflow 基本概念Stateflow 对象可分为图形对象与非图形对象。图形对象有状态、历史节点、迁移、默认迁移、连接节点、真值表、图形函数、 Embedded MATLAB 函数、盒函数、 Simulink 函数;非图形对象有事件、数据、目 标。本节首先介绍常用的对象:状态、迁移、数据、事件的概念和使用,连接节点 留待 3.3 节、历史节点留待 3.4 节,其余对象留待 3.5 节说明。Stateflow 状态机使用一种

4、基于容器的层次结构管理 Stateflow 对象, 也就是说, 一个 Stateflow 对象可以包含其他 Stateflow 对象。最高级的对象是 Stateflow 状态机,它包含了所有的 Stateflow 对象,因此也就包含了 Simulink中的所有Stateflow状态图,以及数据、事件、目标对象。 同样地,状态图包含了状态、盒函数、函数、数据、事件、迁移、节点与注释事件(note events )。用户可以使用这一系列对象,建立一个Stateflow状态图。而具体到一个状态,它也可以包含上述的对象。图3.1.1抽象地说明了这样的关系,而图3.1.2则具体地说明了 Stateflo

5、w状态机的组成。状态机数据/目标事件1f状态/状态图数据/盒函数/1 1事件函数标注1迁移节点图3.1.1Stateflow层次机构(数据字典)流程團/狀态图ul 二仙二Qpn0hoJ-1j *bbbb 丄+-:“:i-:,+:-f.+:E-:模块,如图3.1.3所示,添加入模型图3.1.2 Stateflow 状态机的组成3.1.1状态图编辑器在Simulink模块库浏览器,找到Stateflow 窗口,如图3.1.4所示。Simuink Design verifierSlmutoik ExtrasSimuink Verificalton 呂 nd VabdationStateltowSyB

6、tm Wentlflcalioci IboNmTarget Support PackageTarget for Microch|i(TWI) dsPICVehicle Network lb亦btxxVideo and Image Processing Blockset图 3.1.3 Stateflow 模块用户也可以使用以下命令,建立带有Stateflow状态图的Simulink模型,如图3.1.4所示,同时打开 Stateflow模块库,如图3.1.5所示。sfFile Edit View Simulation Format Tools 旦 dp0 asx ife e 1丄Chartf 12

7、5%ode45图3.1.4 带有Stateflow 状态图的 Simulink模型ChartTruth TableExamples(Double click to open theStateflow Examples Library)图 3.1.5 Stateflow 模块库用户还可以直接使用以下命令,快速建立带有Stateflow状态图的Simulink模型。sfnewFile Edit View Simulation laols Fermat Add Patterns Help*双击Chart模块,打开Stateflow编辑器窗口,如图 3.1.6所示,左侧工具栏列 出了 Stateflo

8、w图形对象的按钮。图3.1.6 Stateflow 编辑器窗口3.1.2状态状态可以理解为事件驱动系统中的模式,可分为激活与非激活状态,而状态是 否激活则是由状态图中的事件与条件决定的,若没有预先定义的事件或条件发生, 状态将一直保持其原先的激活或非激活状态。1. 状态的层次结构状态可以包含除了目标(详见第3.6.6节)以外的所有 Stateflow对象,所以状态内部可以有其他状态,如图3.1.7所示,处于外层的 A称作超状态(或父状态),处于内部的B称作子状态。每一个状态都有其父状态,图3.1.7中,状态A的父状态就是 Stateflow状态图本身。图3.1.7超状态与子状态2. 状态的横向

9、结构在Stateflow状态图的顶层或某一超状态下,通常并存有多个状态,它们之间的关系可分为互斥与并行。(1)互斥状态(OR)互斥状态的矩形框边缘显示为实线,同一级的互斥状态,至多允许激活一个状 态。如图3.1.8所示的状态图,状态 A与状态B是互斥的,它们只能有一个处于激 活状态;当状态 A被激活时,同样其子状态A1与A2也只能有一个处于激活状态。图3.1.8互斥状态(2)并行状态(AND)并行状态的矩形框边缘显示为虚线,同一级的并行状态,可在同一时刻被激活。如图3.1.9所示的状态图。状态 A与状态B是并行的,它们可同时处于激活状态; 子状态A1与A2也同时处于激活状态,而子状态B1与B2

10、只能有一个处于激活状态。B1:A1:A21iirR i in*1a1Ri21li1h*1h匕 JfJ图3.1.9并行状态状态层次结构与并行机制的详细概念与应用,见3.4与3.5节。3. 状态标签状态名仅是状态标签的一部分,完整的标签格式如下,第一行是状态名,以下 若干行是各类动作,用户可以设置全部或部分的状态动作,当然也可以不设置任何 动作。name/状态名en try:entry actions进入该状态时的动作duri ng:duri ng acti ons处于该状态时的动作exit:exit actions退出该状态时的动作on eve nt_n ame:on eve nt_name a

11、ctions某事件发生时的勺动彳作.name actions事件发 土口口 J动作bin d:even ts, data指定需要限制作用范围的事件与数据状态名状态名可由字母、数字、下划线组成,如果状态名后跟随的是回车符,则斜线是可有可无的。根据Stateflow的分层结构,同级的各个子状态不允许重名,但不同级的状态则不受限制。图3.1.10所示的Stateflow状态图是有效的,尽管看上去状态C1、C2有重名现象,但在Stateflow分层结构中,它们的全名分别是:A.OnA. OffB. OnB.OffJ图3.1.10状态名状态动作状态动作如表3.1.1所列。表3.1.1状态动作类型动作类型

12、缩写说明en tryen进入当前状态时的动作duri ngdu处于当前状态,并且某事件发生时的动作Executes when the state isactive and a specific even toccursexitex离开当前状态时的动作bi nd无约束一个事件或数据,使得仅当前状态及 其子状态有权限广播该事件或修改该数据on eve nt n ame无当前状态接收1次广播事件时的动作1on after( n, eve nt n ame)无当前状态完整接收n次广播事件后的动作on before (n, eve nt n ame)无当前状态完整接收n次广播事件前的动作on at(n,

13、 event n ame)无r当前状态完整接收n次广播事件时的动作on every (n,event n ame)无当前状态每接收n次广播事件时的动作每个动作类型,用户可指定多个具体动作,每个动作之间以回车、分号、逗号 区隔,动作类型关键词后必须跟随一个半角冒号。(1) entry 动作关键词为entry (或缩写为en )。如果用户在状态名后加入斜线,并直接跟随具体动作,则该动作默认为进入动作。如图3.1.11所示,进入状态 A时,y=3,同时又执行y+,最终的结果y=4。rA/y=3“y+X-图 3.1.1 1 entry 动作during动作关键词为during (或缩写为du)。如图3

14、.1.12所示,进入状态 A时,y=3,同 时不断执行y+。若求解器的定点步长取0.2,仿真时长取2,则最终的结果y=13。A en:y=3;du:y+;图 3.1.12 during 动作exit动作关键词为exit (或缩写为ex)。如图3.1.13所示,系统处于状态 A,当A的激 活时间达到5个仿真步长,退出状态A,进入状态B,最终的结果y=4,如图3.1.14 所示。B4en:y=1; duy+; ex:y=y-1;after(5,tick)口1图 3.1.13 exit 动作图3.1.14输出结果(4)广播事件动作表3.1.1所列的广播事件动作,能实现各种的事件触发。以单次广播事件动

15、作为例,关键词为on event_name,其中event_name表示某一广播事件名,事件名应是唯一的。如图3.1.15所示,系统处于状态 A,当检测到事件stop,立即执行c()。AB-en:y=1;du:y+; on stopx();v图3.1.15广播事件动作bind动作关键词为bind。如图3.1.16所示,变量y、事件start被绑定在状态 A,这表示 仅有A状态及其子状态有权限修改变量y并广播事件start,其他状态B能够读取变en:y=1 ;start;量y、监听到事件 start,但无权修改变量 y、广播事件start。Aen:y=1; du:y+; bind:y;start

16、;图 3.1.16 bi nd 动作若运行该状态图,系统提示变量 y仅能由状态A及其内部的状态迁移修改,事 件start仅能在状态 A。View Font SizeMessageSourceReported BySummary; Parse ErrorBStateflowData y伴24 can be modified only in states and transition.;O Parse ErrorBStatefl owEvent start (*29) an be broadcast only in states and trans.M Parse ErrorititePaneO

17、Model erro Unknown SimulinkEvent start#29) un be broadcast only in states and tirans.Q statE/Chart.BDat:a y1(124) canbe modifiedonly in states and tranaiVlona contained inspates towhichifl bound OwnMflose图3.1.17错误提示与其他动作不同,bind动作不需要判断当前状态是否已激活,也就是说它在整 个Stateflow状态图范围内都是有效的,因此不同状态不允许约束同一个变量与事 件。如图3.1

18、.18所示,状态A、B同时约束了变量y,系统提示这是不允许的。/Beny=1; duy+; bindy;Hbind:y;丿图3.1.18无效的bind动作Vi ew fontMfissdgie Source Reported By Sumniiry. .a. .1 .g : at ii, u. n. .i. .i. .n .i b: aa n. n. . i. . i. . . i: a a liu n. . . . u i: a a ;iu n . . . i. . u ui: ai is, i. i. .i. .u .u .is ,iaii ai. ;. i. i. .u .u .i &

19、.iai: is, i. i. .i. .i. .i. . i; i a . a a. i i.: Piarse Error yStateflow Multiple slatts A 1印 and B (*20) a ire both bound to y (*23. Tlhis is “ t mmim mmirBiiwn viiwim Mminmi!rarrmaiiBni ar Parse Error siPant Maciel er., Unknown Simullnik iMuttlple states A *19 and 6 (*20) are boundi to y *23|, Th

20、is hsQ sl/ChartyHultiplo* statflff Aand B 叢96图3.1.19错误提示3.1.3迁移1. 迁移Stateflow状态图使用一条单向箭头曲线表示迁移,它将两个图形对象连接起 来,多数情况下,迁移是指系统从源状态向目标状态的转移。在迁移曲线上加上标签,可以指定系统在何种条件下从源状态向目标状态转移。如图3.1.20所示,当系统处于状态A1时间达到1秒,即向状态 A2迁移。Z、A1after(1,sec)A2IX图3.1.20状态迁移2. 默认迁移默认迁移是一种特殊的迁移形式,它没有源对象。用于指定同一级有多个互斥 状态并存时,首先激活的状态。某些情况下,默

21、认迁移也可以加入标签,限制其所指向目标状态的激活。如图3.1.21所示,状态A1与A2是互斥的,当它们的父状态A激活时,状态A1也同时激活。3. 迁移标签迁移标签的完整格式如下,它可用于一般迁移与默认迁移,如图3.1.22所示。eve ntc on ditio n con diti on _actio n/tran siti on_ actio n图3.1.22完整的迁移标签各字段的意义如表3.1.2所示:表3.1.2迁移标签字段标签字段说明event引发迁移的事件con diti on条件动作与迁移的发生条件con diti on action当条件为真时,执行的动作/tran siti o

22、n action发生迁移,进入目标状态前所执行的动作 事件指定迁移的触发事件。如果用户另行指定了触发条件,则当条件为真,且发生 该触发事件时,即发生迁移。这是个可选项,如果用户不指定触发事件,则任何事 件都能够引发该迁移。多个触发事件之间使用逻辑或运算符“分隔。如图3.1.20,当条件after(1,sec)为真时,触发了迁移,系统状态从A1变成A2。 条件条件是一个布尔表达式,当它为真时,一旦发生指定的触发事件,则发生迁移。条件表达式的前后必须使用方括号“”包围。如图3.1.23所示,当条件y=3 为真时,发生迁移。 条件动作当条件表达式为真时,立刻执行条件动作。若事先未指定条件,系统则假设

23、条 件为真,并执行该条件动作。如图3.1.23所示,当条件y=3 为真,条件动作 y=10 立刻执行。 迁移动作当迁移目标有效时,执行迁移动作。若迁移标签由多个字段组成,则当整个标 签有效时,执行迁移动作。如图3.1.23所示,当条件y=3 为真,且目标状态 B有效时,发生迁移,并 执行迁移动作z=20。运行结果如图3.1.24所示:图3.1.23迁移条件与动作Chart图3.1.24输出结果4. 迁移有效条件对于非默认的迁移,当源对象处于激活状态的且迁移标签有效时,发生迁移; 对于默认迁移,当其父状态被激活时,发生迁移。表3.1.3列出了迁移标签的有效条件,用户可以根据需要,选择性地输入迁移

24、 标签的部分或全部字段。表3.1.3迁移标签有效条件标签内容标签有效条件仅事件该事件发生事件与条件该事件发生及条件为真仅条件任何事件发生及条件为真仅行动任何事件发生空任何事件发生3.1.4 数据与事件图 3.1.1 所示的数据字典中,数据与事件是合并在一个圆圈内的,这表明他们 有相似之处,这里合并介绍。1. 数据 数据是非图形的对象,它有一个很重要的特性:作用域,用户在使用数据时必 须明确定义该特性。根据作用域的不同,数据可分为:Stateflow 状态图本地数据( Local ); 自外部 Simulink 模块输入的数据( Input from Simulink ); 向外部 Simuli

25、nk 模块输出的数据( Output from Simulink ); 临时数据定义在 MATLAB 工作空间的数据; 常数( Constant ); 向 Simulink 模型与 Stateflow 状态图外部的目标(代码)导出的数据; 自 Simulink 模型与 Stateflow 状态图外部的源代码导入的数据。数据的简单使用,见 3.2.4 小节。2. 事件事件也是非图形的对象, 它驱动着整个 Stateflow 状态图的运行。 如同数据, 事 件同样有它的作用域,根据作用域的不同,事件可分为:Stateflow 状态图本地事件; 自外部 Simulink 模块输入的事件; 向外部 S

26、imulink 模块输出的事件; 事件的简单使用,见 3.2.4 ;事件的分类,见 3.5 各小节。3. 动作Stateflow 状态图支持状态动作、 条件动作、 迁移动作, 已在上文做了简要介绍。 这里所说的动作可以是一个函数调用,广播事件,数学运算等等。例如: 函数调用: ml.log10(x); ,事件广播:Start;Stop; ”数学运算:x=1;y=2;z=x+y; ”3.1.5对象的命名规则以上简要介绍了常用对象的概念,用户可以使用任意的字母、数字与下划线的 组合为这些对象命名,但名称不能以数字开头,中间也不能有空格。由于Real-Time Workshop 代码生成工具的限制,

27、对象的名称不能超过一定长 度,用户可以在模型参数设置对话框的Real-Time Workshop 宀Symbols面板进行修改,默认的长度是 31,最大的长度是 256,如图3.1.25所示。Auto-generated identifier naming rulesMaximum identifier length: 31图3.1.25设置对象名称的长度表3.1.4列出了一些关键字,它们是 Stateflow动作语言的组成部分,因此是不 能用来为对象命名的。表3.1.4关键字关键字在Stateflow中的用途hasCha nged,hasCha ngedFrom,hasCha ngedTo变

28、更监测complex, imag, real复数数据boolean, double, int8,int16, int32, single,uint8, uint16, uint32数据类型cast, fixdt, type数据类型操作send明确事件cha nge, chg, tick, wakeup隐含事件false, inf, true, t标志位matlab, mlMATLAB函数与数据bind, du, duri ng, en,en try, ex, exit, on状态动作in状态激活after, at, before, every,sec, temporalCo unt时间逻辑3.

29、2Stateflow 状态图长跑比赛时,通常要用到以圈计时的方法,它的意思是:计时器初次开启时,2组数码管皆清零;运动员出发时,按下Start按钮开始计时,数码管1显示实时时间; 第一次回到起点,表示跑完一圈,这时按下LAP按钮,数码管2显示当前的时间值,表示一圈所花费的时间,但比赛仍在进行,因此计时器仍然在计时;再次按下Start按钮,2组数码管同时显示最后的时间;第三次按下 Start按钮,2组数码管清零, 回到初始状态。本节以此为例,说明 Stateflow状态图的建立过程。3.2.1状态1. 添加状态新建一个空白的 Stateflow模型,单击状态按钮,并在Stateflow窗口的适当

30、位置再次单击,加入一个状态,如图3.2.1所示。在加入之前,用户可随时按下键盘的ESC键,或再次单击按钮,取消添加。2. 状态命名在状态矩形框左上角的编辑提示符后,输入状态的名称,如stop,如图3.2.2所示。若需要修改状态名,可将鼠标移至名称附近,待光标变成编辑样式时,再单 击修改,如图3.2.3所示。图3.2.2状态命名图3.2.3状态名修改3. 添加子状态将鼠标移至状态矩形框 4个角落的任意一个,调整其大小,如图3.2.4所示。图3.2.4调整状态框再按步骤、, 这时Stop为超状态,FinishedReset图325父状态与子状态3.2.2迁移1. 添加迁移将鼠标移至源状态矩形框的边

31、缘,当光标变成十字时,如图 左键并拖向目标状态的边缘,然后释放,如图3.2.6所示,按下3.2.7所示,即添加了一个迁移。StopFinished图3.2.7迁移终点图3.2.6迁移起点2. 添加默认迁移单击上将鼠标移至默认状态矩形框的水平或垂直边缘,如图3.2.8所示。添加状态Reset、Finished,放置在状态 Stop的矩形框内,Reset、Finished 为子状态,如图 3.2.5所示。Stop图328选择默认迁移再次单击,即添加了一个默认迁移,如图3.2.9所示。图3.2.9添加默认迁移由于Stop是父状态,还需要针对其中的子状态,设置默认迁移,如图3.2.10所示,关于Sta

32、teflow的层次结构,详见3.4节。3. 迁移变更鼠标放置在迁移的起点或终点,当光标变成圆圈时(图3.2.11 ),按住鼠标左键,可将该端点移至其他状态,如图3.2.12所示。将默认迁移的起点移至某一状态,即转化为默认迁移,如图3.2.13所示,若迁移终点悬空, 所示。即转换为一般迁移;将一般迁移的起点悬空,则该迁移无效,如图3.2.14图3.2.13迁移起点变更4. 迁移标签新建的迁移标签不包含任何文字信息,用户单击迁移曲线一次,曲线上方显示rResetJ/RunRunnr? ”如图3.2.15所示:图3.2.15添加迁移标签将鼠标移至? ”附近,再次单击,当显示编辑光标时,可编辑迁移标签

33、,如图3.2.16 所示。图3.2.16编辑迁移标签图3.2.17移动迁移标签完成编辑后,将鼠标放在标签的任意位置,按住左键并拖动,调整标签的位置,如图3.2.17所示。3.2.3计时器状态图根据以圈计时的特点,整个系统可分为2个父状态:停止与运行。停止状态包含2个子状态:计时器清零Reset、计时器停止Finished ;运行状态也包含2个子状态:计时器运行 Running、以圈计时LAP。如图3.2.18所示:ResetFinishetilRunningLAPV丿图3.2.18添加4个状态再根据各状态之间的联系,添加默认迁移、迁移以及迁移标签,如图3.2.19所示。图中的迁移标签 star

34、t表示按下start按钮这个事件,而 LAP则表示按下LAP 按钮。图3.2.19添加迁移及迁移标签LAPKJ3.2.4数据与事件以圈计时需要2组数码管显示当前以及记录的分、秒、百分秒,另有两个按钮,为此需要添加6个数据与2个事件。数据是向外输出的,而事件是自外输入的。添加数据或事件的方法有两种:使用菜单项Add或使用模型浏览器(ModelExplorer )。前者的优势是添加方便,但菜单项仅提供了添加功能,无法通过菜单 删除已添加的数据或事件,因此我们推荐用户使用模型浏览器。为了照顾读者的不同需求,本文仍旧介绍两种添加方式。1.菜单项在Stateflow 编辑器窗口,选择菜单项Add宀Dat

35、a宀Output to Simulink,如图3.2.20 所示。File fdit View imultion Tcoh FormatRart占 Sture Mcmoryi.i画鱼淫EEvent 藉幽凰画色HQataTarget,.ocal.Input frcm Simulint-,-Add PrtternfS HelpOLitputto Simuli nk.u 卜 cn$tant.,Pairameter.z.图3.2.20添加输出数据在Name栏填入输出变量名min,另外用户在scope栏还可以再次决定变量的作用域,如图3.2.21所示。图3221修改数据名及作用范围2模型浏览器在Stat

36、eflow 状态图的顶层(即不选中任何图形对象),选择菜单项Tools宀Explore,或直接按下Stateflow编辑器窗口的工具栏按钮,打开模型浏览器,并确认已选中左侧模型结构图中的Chart节点,如图3.2.22所示。图3.2.22模型浏览器在浏览器窗口的工具栏找到按钮 与,添加一个数据/事件或删除对应项。在中部窗口选中数据/事件的条目,右侧窗口即显示它的属性,如图3.2.23所 示。与菜单项方法不同的是,使用浏览器添加的数据/事件,默认的作用域是本地(Local ),用户需要手动修改为外部输入或外部输出。Data mmCokrnn View:State fio-A *Data 也of

37、旨 obieztsSech ResultsName;勺:oipe:See:General舸 ue AtlruteminQlputr . .LDBiPa-arr?eterInputOutpjtSiforpliMYDescrplwclType; double* Port:Lock data type seding agairst changes by the fbced iMint to图3223利用模型浏览器修改数据对于事件,用户还需指定它的触发方式,Rising表示上升沿、Failing表示下降沿,而Either表示上升或下降沿皆可触发,本例的两个输入事件start与LAP皆选用Either方

38、式触发,如图3.2.24所示。Name: startRevertyelpScope: Input fr&m Smubnk Port; 1 十 Trigger;EitherkDebuwerb群如oirMstStMUfBrdct 匚 EndoD 匚ip&an;EitherL1Rising帰FallingFuncbon calDo 匚 ument link:图3.2.24利用模型浏览器修改事件有多个数据或事件时,用户还可以指定它们的端口号,合理地排列这些端口, 将有利于以后的 Simulink模块连线。如图3.2.25所示,是完整的数据与事件列表。Column View:StateflowShow

39、Details3 of 13 obiectsNameScopePortRol DataTypeTrigger 5i氏 IniI?i minOutputi ndouble; secOutp ut2 ndouble percentOutp Lit3doubleminbufOutput4doubleHl secbufOutput5doublepercHitbuf Output6Bdouble罗 startInput1Either岁LAPInput2EitherO 422sec=60sec=0;min=min+1C121 ) 82图3.3.3节点大小A1B12EtftlernsY SmartCutCo

40、pyPflSttEatkForwardGo To P-a rentpercent=100sec=60secHDL CoderFont SizeB2RequirementsOrde*A/rcwhead Sizeper匚巳ntuul 00p巳r匚巳匸=5巳匚十1 J1Q 盟sec=60sec=0:mi n=min+1;1 ._; B2图334箭头大小 优先级两个判断节点 A1、B1,均有两条输出迁移,分别标记了数字1、2,这表示迁移的优先级。默认情况下,Stateflow状态图使用显性优先级模式,用户可以自行修改各个迁移优先级。例如,选择迁移曲线的右键菜单项Execution Order ,将优先

41、级由1降低为2,如图3.3.5所示。修改了某一输出迁移的优先级,系统会自动调整同一节点另一迁 移的优先级。图3.3.5迁移优先级为避免用户错误地设置优先级,Stateflow提供了另一种模式:隐性优先级。选择编辑器菜单项 File t Chart Properties,取消 User specified state/transition execution order前的复选框,启用隐性模式,如图3.3.6所示。Name:匚h石 rtMachine:皿已叨巾亡Junctionji a s rmm rs s aState Machine Type; | Classic tUp dote meth

42、od: Inherited 寸 Sample Time:Enable C-bit operationsApply to aU charts in machine now r s坤ified st蜩ration 瓏wti*n鬥 Export Chart Level Graphical Functions (Make Global)/ Use Strong Df扫 Typing v.ith Simulink I/O图336自动设置迁移优先级使用这种模式时,系统根据以下规则,自动设置迁移优先级,从高到低排列为:1. 既有事件又有条件的迁移2. 仅有事件的迁移3. 仅有条件的迁移4. 不含任何限制的迁

43、移注意:同一个Stateflow状态图,只能选用一种优先级模式,但对于有多个状态图的Simulink模型,则不受此限制。2. 自动建立对于简单的流程图,手动建立难度不大,而对于稍复杂的逻辑,用户难免会感 到无从下手。Stateflow提供了快速建立流程图的向导,它可以生成3类基本逻辑:判断、循环、多条件。本小节使用向导,重建图 x的流程图。 单击编辑器菜单项Patterns宀Add .,选择流程图的类型,如图3.3.7所示。File Edrk Vim- muilatian Took Formaft Add Patterns I 旦芒Ip |11C 毎 & 4*廿 总匚 II Add Defis

44、ion 虹二-叭*Add iL&cp卜If-fkc.Add SwitchI*tf-Eketf.Addtom(f-ElFwtf-Else.卜Seve PatternIf-Ellicrf-Elscif-EI&e-.tlcrted-lf.,图3.3.7流程图向导菜单 这里选择 Patterns 宀 Add Decision 宀If-Elseif-Else.,在随后打开的对话框中输入判断条件与对应的动作,如图3.3.8所示。Description:If condition: prcent=100If 日 etkwpercent=O:sec=s 亡 c+1;Elseif condition:sec=0E

45、ks已if actk)n: sec=0:min=rnin+1:Ebse action:Cancel图338新建流程图对话框 生成的流程图如图 3.3.9所示:3. 两种方式的对比尽管用户可以手动建立流程图,但使用流程图向导的优势也是显而易见的: 任何一种流程图都可归结为判断、循环、多条件,或者三者的组合,因此 皆可以使用向导自动生成;使用向导生成的流程图符合 MAAB ( MathWorksAutomotive AdvisoryBoard )规则,这有利于后期模型检查;各种流程图的外观基本一致;将设计好的流程图,另存为模板,便于重用。3.4 层次结构3.4.1 层次的概念Stateflow 的对象具有层次性, 一个 Stateflow 对象可以包含其他 Stateflow 对象, 例如状态内若包含其他状态,则形成父状态,其内部状态称为子状态。当状态具有 第二个层次时,状态就构成了层次。状态具有了层次,迁移自然也具有了层次, Stateflow 允许在不同层次状态之间 存在转移。如果迁移穿越了父状态的边界直接到达了低层次的子状态,则被称之为 超迁移。在状态图中

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!