资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,机电系统设计与仿真,Lecture2.4,Stateflow,简介,2.3 Stateflow,Stateflow,是,一种与,Simulink,联合使用的用于控制和管理逻辑的图形设计开发工具。它用,有限状态机,理论,为复杂的系统行为提供清晰的,简明的描述。,2.3.1,Stateflow,的特点,“,Stateflow,is Part of,Simulink,”,“,Stateflow,is a Finite State Machine,“,Stateflow,Adds Flow Diagrams to the State Machine”,“,Stateflow,Simulates its State Machine”,“,Stateflow,Generates Code”,2.3.2. Build a Stateflow Model,通过以下步骤可以建立一个,Stateflow,模型,1),“Create a,Simulink Model,”,2),“Create a,Stateflow Diagram,”,3),“Define Input,Events,and,Input Data,4),“Define the,Stateflow Interface,5),“Define,Simulink Parameters,”,6,),“,Parse,the Stateflow Diagram”,7,),“,Run,a Simulation”,要求:对加热器进行定时加热并保证被加热物体温度不超过,30,摄氏度。,状态,1,:加热, on ;,触发条件:上升沿,on_switch,;,状态,2,:停止加热, off;,触发条件:下降沿,off_switch,;,初始状态:停止加热, off;,检测温度:,20,度、,40,度, temp,例:温度控制,(,stateflow_tempreture.mdl,),Stateflow,模块,stateflow_temp_event,stateflow_heat_data,2.3.3,语法说明,1,状态语句说明,State Label Notation,1,),语句的一般形式,name,/,entry:,entry actions,during:,during actions,bind:,events,data,exit:,exit actions,on,event_name,:,on event_name actions,2,) 状态分解,(State Decomposition),OR,状态分解,图中或是,A,被执行,或是,B,被执行。当,A,被执行时,,A1,或,A2,可以在某一时刻被执行。,AND状态分解,图中当A被执行后,A1 A2被同时执行。或,B,C,同时被执行,。,2,动作,Action,1,)动作类型,(,1,)状态动作类型,State Action Types,每个,State Action,后面都跟,(,:),号,以,(;),或者,(,),结束。,Entry Actions,:,进入模块,Entry actions,第一个被执行。,Exit Actions,:,当出口条件满足时执行,Exit actions,。,如果进入后不满足出口条件,则执行,During Actions,。,否则不执行,During Actions,,,而直接执行,Exit actions,During Actions,:,当没有到其它的状态的传递时,,During Actions,才能被执行。,(,2,) 传递动作类型,Transition Action Types,Event Triggers,在传递标号中,,Event triggers,是第一个出现的事件名。不需要用特殊的字符来区分其它部分。它发出一个确定的事件,使传递开始执行,提供执行的条件。如果缺省,表示可以无条件执行。多个事件用或逻辑符,(,|,),来分隔。,Conditions,Conditions,的前后用,(,),分隔,是布尔形表达。,必须是布尔型,true(1) or false(0).,可以包括以下内容,-,布尔操作的比较数值,-,一个能返回布尔值的函数,condition,表达式不能调用引起,Stateflow,状态或变量改变的函数。,布尔代数可以用,&,(,与,),,,|,(,或,),组合。,Condition Actions,跟在,condition,之后,用,(,),分隔。条件满足后被执行。如果没有条件,当潜在的条件值满足后也可以执行。,Transition Actions,用反斜杠,(,/,),分隔,,Transition,有效后被执行。当有多段条件时,当所有条件都满足才能被执行。,3.,传递,Transition,是连接图形之间的代箭头的连线。它从一个原对象出,发,在一个目的对象终止,箭头代表传递方向。,单向传递,多向传递,1,)传递语句说明,Transition Label Notation,基本结构,event,condition,condition_action,/,transition_action,Event.,定义什么条件会引起传递发生,当,off_count,=0,真,从,ON,传递到,OFF,。,Condition,. ,off_count,=0,Condition Action.,当条件,off_count,=0,真,执行,off_count,+,Transition Action.,传递的执行结果,Light_off,状态之间的传递,通过节点的传递,高层状态之间的传递,当,OFF,被执行,且,Switch_on,发生时,,ON,被执行。,当,ON,被执行,且,Switch_off,发生时,,OFF,被执行。,这里,ON,状态是高层次。,自回路传递,缺省传递,Default Transition,(,1,) 去状态的缺省事件,当第一次被激活时,必须决定执行,S,还是,B,,因为,S,和,B,是并行的,且没有条件。由於缺省传递指向,S,,以此,S,先被执行。,(,2,)去节点的缺省事件,4,节点,Connective Junctions,有相同条件的情况,有一个不确定条件的情况,满足事件,E,时,且,C_one,真,,A,到,B,被执行。,满足事件,E,时,且,C_two,真,,A,到,C,被执行。,满足事件,E,时,且,C_one,和,C_two,都假,,A,到,D,被执行。,自传递节点,当,A,被执行,事件,e,发生,且满足条件,c1,时,从,A,到,B,的传递发生,且执行,a1.,当,A,被执行,事件,e,发生,且不满足条件,c1 (,满足,c1 ),时,从,A,到,A,的传递发生,且执行,a2.,自回路,在状态,A,当事件,E,发生,从,A,向,B,传递,且执行,i=0,。然后执行,i+;func1(),,直到,i10,假。,这里,i=0,为循环确定了初值。由於到,B,的传递没有条件,最后结束于,B,。,同一个源到多目标的节点,到一个共同事件的节点,节点传递举例,8,位,ADC,流程图举例,8,位,ADC,流程图举例,当状态,Sensor,被执行,且事件,UPDATE,发生时。从,Sensor,到节点的内部传递有效,下一段的条件动作,start_adc,(),被执行,启动,ADC,。,第二个节点的自循环回路循环检测,ADC,的状态,当,adc_busy,(),为假,结束自循环。,执行下一段的条件动作,sensorValue,=,read_adc,(),读,ADC,结果到变量。如果,sensorValue,200,,执行,High,。如果,200,sensorValue,100,,执行,Normal.,5,事件和数据,Events and Data,1,) 定义,Events,事件 是,Stateflow,的对象,用来触发一个行为,Adding Events to the Data Dictionary,可以使用,Stateflow,对话框编辑器或者,Explorer,添加不多于,254,个 事件。,从,Tools menu,选,Explore,Using the Stateflow Editor,从,Add menu,选,Event,设置新的,events Properties,双击选定的,event,出现,event properties,对话框后设置,properties,。,从,Scope,选择,event,范围,(,类型,),,包括,Local,,,Input from,Simulink,,,Output to,Simulink,,,Exported,,,Imported,,,Trigger,,,Index,,,Port,,,Description,,,Document Link,等,2,) 定义,Data,Using the Stateflow Editor to Add Data,与添加,event,的 方法相同,Setting Data Properties,与设置,event,的 方法相同,例,试用,Stateflow,编写机械手 作业空间判断程序。,已知极坐标式两自由度机械手的极角范围为,90,90,,极半径范围为,200,400mm.,解:,command,为程序运行状态:,1-,表示工作在轨迹控制模式,需要作业范围的判断;,alarm,是报警信号:,1-,表示超出作业空间;,R,为给定的极半径;,R_min,和,R_max,分别表示最小极半径和最大极半径;,a,为极角;,a_min,和,a_max,分别表示最小极角和最大极角;,Rmin,=200,Rmax,=400,Amin,=-90,Amax=90,Rmin,=200,Rmax,=400,Amin,=-90,Amax=90,有限状态机(,Finite State Machine,),所谓有限状态机,就是指在系统中有可数的状态,在某些事件发生时,系统从一个状态转换成另一个状态,又称为事件驱动的系统。,在有限状态机的描述中,可以设计出从一个状态到另一个状态转换的条件,在每对相互可转换的状态下都设计出状态迁移的事件,从而构造出状态迁移图。,返回,“Stateflow is Part of Simulink”,在,Simulink,中, Stateflow,作为其中的一个模块,用状态流图来表示。,返回,“,Stateflow is a Finite State Machine,Stateflow,是有限状态机器,通过改变状态,有限状态反映为事件,(Events),。,返回,“,Stateflow Adds Flow Diagrams to the,State,Machine”,通过连接,(junction),把状态流图添加到状态机器中。,返回,“,Stateflow Simulates its State Machine”,当完成一个,Stateflow,图,后,可以对它进行仿真。发生的事件变成红色。,返回,“,Stateflow Generates Code”,在仿真过程中,Stateflow,产生它自己的,C-code,来仿真状态流图。,用,Real-Time Workshop(RTW),工具可以从,Simulink,和,Stateflow,得到代码,并可以用于其它环境的控制过程。,也可以从状态流图产生代码。,返回,
展开阅读全文