《matlab仿真 stateflow学习教程.pptx》由会员分享,可在线阅读,更多相关《matlab仿真 stateflow学习教程.pptx(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 Lecture2.4 StateflowStateflow简介简介第1页/共53页2.3 Stateflow StateflowStateflow 是是一一种种与与 SimulinkSimulink 联联合合使使用用的的用用于于控控制制和和管管理理逻逻辑辑的的图图形形设设计计开开发发工工具具。它它用用有有限限状状态态机机理理论论,为为复复杂杂的的系系统统行行为为提提供供清清晰晰的,简明的描述。的,简明的描述。第2页/共53页 2.3.1 Stateflow 的特点 “Stateflow is Part of Simulink”“Stateflow is a Finite State Mach
2、ine “Stateflow Adds Flow Diagrams to the State Machine”“Stateflow Simulates its State Machine”“Stateflow Generates Code”第3页/共53页2.3.2.Build a Stateflow Model通过以下步骤可以建立一个通过以下步骤可以建立一个StateflowStateflow模型模型1)“Create a Simulink Model”2)“Create a Stateflow Diagram”3)“Define Input Events and Input Data4)“
3、Define the Stateflow Interface5)“Define Simulink Parameters”6)“Parse the Stateflow Diagram”7)“Run a Simulation”第4页/共53页 要求:对加热器进行定时加热并保证被加要求:对加热器进行定时加热并保证被加热物体温度不超过热物体温度不超过3030摄氏度。摄氏度。状态状态1 1:加热:加热 on;on;触发条件:上升沿触发条件:上升沿 on_switch;on_switch;状态状态2 2:停止加热:停止加热 off;off;触发条件:下降沿触发条件:下降沿 off_switch;off_s
4、witch;初始状态:停止加热初始状态:停止加热 off;off;检测温度:检测温度:2020度、度、4040度度 temp temp例:温度控制(stateflow_tempreture.mdl)第5页/共53页第6页/共53页 Stateflow 模块stateflow_temp_event第7页/共53页第8页/共53页第9页/共53页stateflow_heat_data第10页/共53页第11页/共53页第12页/共53页2.3.3 语法说明1 状态语句说明State Label Notation1)语句的一般形式name/entry:entry actionsduring:duri
5、ng actionsbind:events,dataexit:exit actionson event_name:on event_name actions第13页/共53页2)状态分解(State Decomposition)OR 状态分解 图中或是A被执行,或是B被执行。当A被执行时,A1或A2可以在某一时刻被执行。第14页/共53页 AND状态分解 图中当A被执行后,A1 A2被同时执行。或 B C 同时被执行。第15页/共53页2 动作Action 1)动作类型(1)状态动作类型State Action Types 每个每个State ActionState Action后面都跟后面都
6、跟(:):)号,以号,以(;)(;)或者或者(,)(,)结结束。束。Entry Actions:进入模块Entry actions第一个被执行。Exit Actions:当出口条件满足时执行Exit actions。如果进入后不满足出口条件,则执行During Actions。否则不执行During Actions,而直接执行Exit actionsDuring Actions:当没有到其它的状态的传递时,During Actions才能被执行。第16页/共53页(2)传递动作类型Transition Action Types第17页/共53页Event TriggersEvent Trigg
7、ers 在传递标号中,在传递标号中,Event triggersEvent triggers是第一个是第一个出现的事件名。不需要用特殊的字符来区分其出现的事件名。不需要用特殊的字符来区分其它部分。它发出一个确定的事件,使传递开始它部分。它发出一个确定的事件,使传递开始执行,提供执行的条件。如果缺省,表示可以执行,提供执行的条件。如果缺省,表示可以无条件执行。多个事件用或逻辑符无条件执行。多个事件用或逻辑符 (|)来分来分隔。隔。第18页/共53页ConditionsConditionsConditions的前后用的前后用()分隔,是布尔形表达。分隔,是布尔形表达。必须是布尔型必须是布尔型 tr
8、ue(1)or false(0).true(1)or false(0).可以包括以下内容可以包括以下内容 -布尔操作的比较数值布尔操作的比较数值 -一个能返回布尔值的函数一个能返回布尔值的函数condition condition 表达式不能调用引起表达式不能调用引起 StateflowStateflow状态或变量改变的函数。状态或变量改变的函数。布尔代数可以用布尔代数可以用&(与与),|(或或)组合。组合。第19页/共53页Condition Actions 跟在跟在condition condition 之后,用之后,用 ()分隔。条件满足后被执行。如果没有条件,分隔。条件满足后被执行。如
9、果没有条件,当潜在的条件值满足后也可以执行。当潜在的条件值满足后也可以执行。Transition Actions 用反斜杠用反斜杠(/)分隔,分隔,TransitionTransition有效后被执行。当有多段条件时,当所有条有效后被执行。当有多段条件时,当所有条件都满足才能被执行。件都满足才能被执行。第20页/共53页 3.传递Transition 是连接图形之间的代箭头的连线。它从一个原对是连接图形之间的代箭头的连线。它从一个原对象出象出发,在一个目的对象终止,箭头代表传递方向。发,在一个目的对象终止,箭头代表传递方向。单向传递多向传递第21页/共53页1)传递语句说明Transition
10、 Label Notation 基本结构eventconditioncondition_action/transition_action第22页/共53页Event.定义什么条件会引起传递发生,当 off_count=0 真,从ON传递到OFF。Condition.off_count=0 Condition Action.当条件 off_count=0 真,执行 off_count+Transition Action.传递的执行结果Light_off第23页/共53页u状态之间的传递 第24页/共53页u通过节点的传递 第25页/共53页u高层状态之间的传递 当OFF被执行,且 Switch_
11、on发生时,ON被执行。当ON被执行,且Switch_off发生时,OFF 被执行。这里ON状态是高层次。第26页/共53页u自回路传递第27页/共53页u缺省传递 Default Transition(1)去状态的缺省事件 当第一次被激活时,必须决定执行S还是B,因为S和B是并行的,且没有条件。由於缺省传递指向S,以此S先被执行。第28页/共53页(2)去节点的缺省事件 第29页/共53页4 节点Connective Junctions有相同条件的情况 第30页/共53页有一个不确定条件的情况 满足事件E 时,且 C_one 真,A到B被执行。满足事件E 时,且C_two 真,A到C被执行。
12、满足事件E 时,且C_one 和 C_two 都假,A到D被执行。第31页/共53页自传递节点 当A 被执行,事件e 发生,且满足条件 c1 时,从A 到B 的传递发生,且执行 a1.当A 被执行,事件e 发生,且不满足条件 c1(满足 c1)时,从A 到A 的传递发生,且执行 a2.第32页/共53页自回路 在状态 A,当事件 E发生,从A 向B传递,且执行 i=0。然后执行 i+;func1(),直到i10 假。这里i=0为循环确定了初值。由於到B的传递没有条件,最后结束于B。第33页/共53页同一个源到多目标的节点 到一个共同事件的节点到一个共同事件的节点第34页/共53页节点传递举例第
13、35页/共53页第36页/共53页8位ADC流程图举例第37页/共53页8位ADC流程图举例当状态Sensor被执行,且事件UPDATE发生时。从Sensor到节点的内部传递有效,下一段的条件动作 start_adc()被执行,启动ADC。第二个节点的自循环回路循环检测ADC的状态,当adc_busy()为假,结束自循环。执行下一段的条件动作sensorValue=read_adc(),读ADC结果到变量。如果 sensorValue200,执行High。如果 200sensorValue100,执行Normal.第38页/共53页5 事件和数据 Events and Data1)定义 Eve
14、nts事件 是 Stateflow 的对象,用来触发一个行为Adding Events to the Data DictionaryAdding Events to the Data Dictionary 可以使用可以使用 Stateflow Stateflow 对话框编辑器或者对话框编辑器或者 Explorer Explorer 添加不多于添加不多于 254 254 个个 事件。事件。从Tools menu 选 Explore Using the Stateflow EditorUsing the Stateflow Editor从Add menu 选 Event 第39页/共53页设置新的
15、 events Properties 双击选定的双击选定的event event 出现出现 event properties event properties 对话框后设置对话框后设置propertiesproperties。从 Scope 选择event 范围(类型),包括Local,Input from Simulink,Output to Simulink,Exported,Imported,Trigger,Index,Port,Description,Document Link 等第40页/共53页 2)定义 DataUsing the Stateflow Editor to Add
16、Data 与添加与添加eventevent的的 方法相同方法相同u Setting Data Properties 与设置event 的 方法相同第41页/共53页例 试用Stateflow编写机械手 作业空间判断程序。已知极坐标式两自由度机械手的极角范围为已知极坐标式两自由度机械手的极角范围为90909090,极半径范围为,极半径范围为200200400mm.400mm.解:解:commandcommand为程序运行状态:为程序运行状态:1-1-表示工作在轨迹控制模式,需要表示工作在轨迹控制模式,需要作业范围的判断;作业范围的判断;alarmalarm是报警信号:是报警信号:1-1-表示超出
17、作业空间;表示超出作业空间;R R为给定的极半径;为给定的极半径;R_minR_min和和R_maxR_max分别表示最小极半径和最大极分别表示最小极半径和最大极半径;半径;a a为极角;为极角;a_mina_min和和a_maxa_max分别表示最小极角和最大极角;分别表示最小极角和最大极角;第42页/共53页第43页/共53页第44页/共53页Rmin=200Rmax=400Amin=-90Amax=90第45页/共53页Rmin=200Rmax=400Amin=-90Amax=90第46页/共53页有限状态机(有限状态机(Finite State MachineFinite State
18、Machine )所谓有限状态机,就是指在系统中有可数的状态,在某所谓有限状态机,就是指在系统中有可数的状态,在某些事件发生时,系统从一个状态转换成另一个状态,又称为事些事件发生时,系统从一个状态转换成另一个状态,又称为事件驱动的系统。件驱动的系统。在有限状态机的描述中,可以设计出从一个状态到另一在有限状态机的描述中,可以设计出从一个状态到另一个状态转换的条件,在每对相互可转换的状态下都设计出状态个状态转换的条件,在每对相互可转换的状态下都设计出状态迁移的事件,从而构造出状态迁移图。迁移的事件,从而构造出状态迁移图。返回第47页/共53页“Stateflow is Part of Simuli
19、nk”在在 SimulinkSimulink中中,Stateflow,Stateflow作为其中作为其中的一个模块,用状态流图来表示。的一个模块,用状态流图来表示。返回第48页/共53页“Stateflow is a Finite State MachineStateflowStateflow是有限状态机器是有限状态机器,通过改变状通过改变状态,有限状态反映为事件态,有限状态反映为事件 (Events)(Events)。返回第49页/共53页“Stateflow Adds Flow Diagrams to the State Machine”通通过过连连接接(junction)(junctio
20、n)把把状状态态流流图图添添加加到状态机器中。到状态机器中。返回第50页/共53页“Stateflow Simulates its State Machine”当当完完成成一一个个 Stateflow Stateflow 图图后后,可可以以对对它进行仿真。发生的事件变成红色。它进行仿真。发生的事件变成红色。返回第51页/共53页“Stateflow Generates Code”在仿真过程中在仿真过程中 Stateflow Stateflow 产生它自己的产生它自己的 C-codeC-code来仿真状态流图。来仿真状态流图。用用Real-Time Real-Time Workshop(RTW)Workshop(RTW)工工具具可可以以从从SimulinkSimulink和和StateflowStateflow得得到到代码,并可以用于其它环境的控制过程。代码,并可以用于其它环境的控制过程。也可以从状态流图产生代码。也可以从状态流图产生代码。返回第52页/共53页谢谢您的观看!第53页/共53页