基于Stateflow的事件驱动系统研究.docx
《基于Stateflow的事件驱动系统研究.docx》由会员分享,可在线阅读,更多相关《基于Stateflow的事件驱动系统研究.docx(37页珍藏版)》请在冰豆网上搜索。
基于Stateflow的事件驱动系统研究
武汉工业学院
毕业设计(论文)
设计(论文)题目:
基于Stateflow的事件驱动系统研究
——仿真及I/O设计
姓名宋刚
学号02041120
院(系)电气信息工程系
专业自动化
指导教师高峰
2006年6月10日
目录
目录1
摘要2
ABSTRACT3
第一章概论4
第一节离散事件动态系统简介4
第二节交通灯控制技术简介5
第三节Stateflow简介6
第二章基于Stateflow的交通模型介绍10
第一节交通灯控制系统的工作原理10
第二节交通灯设计方案11
第三节模块的封装15
第四节MATLAB串行通信16
第三章基于Stateflow交通灯模型仿真18
第一节定义模型仿真参数18
第二节Stateflow图表仿真的基本步骤19
第三节仿真过程调试21
第四章I/O接口设计28
第一节配置编辑器28
第二节C代码生成29
总结31
致谢32
参考文献33
摘要
本文介绍了一种基于Stateflow的交通灯控制方案。
此交通信号控制是在路口渠化的基础上,把路权依次分配给不同方向的交通流,并从时间上分离交通流.通过先进的交通模型和算法对交通信号控制参数(周期,绿信比和相位差)进行自动优化调整,从而使一组路口或一个区域的路口交通信号实现协调控制并最终达到安全、有效地组织交通流通过路口。
本设计在Stateflow/Simulink的平台上根据上述方案以十字路口交通灯控制系统为仿真对象,对交通灯控制系统进行仿真,进行控制模态仿真验证,验证控制规律的有效性,并对Stateflow/Simulink的I/O接口设计进行研究,为下一步进行半实物仿真做准备。
关键词:
Simulink;Stateflow;交通模型;仿真;I/O接口
ABSTRACT
ThispaperintroducesatrafficlightcontrolsystembasedonStateflow.Workingintheanalyticroad,differenttrafficsignalwillbegiventodifferentdirection.Thiswillseparatetheheavytrafficintimedomain..Throughadvancedtrafficmodelsandalgorithmsfortrafficsignalcontrolparameters(cycleandgreenlettersthanphase)automaticallyoptimizetheadjustment,sothatagrouporaregionatthejunctiontrafficsignalcontrolandultimatelyachievethebesttonetothesafeandeffectivetrafficflowthroughthejunctionorganizations.AttheStateflow/Simulinkplatform,thedesignsimulatesthecontrolmoduleandvalidatetheeffectivenessofthecontrollaw.forthenextstep'shalf-simulation,thedesignalsodosomeworkontheStateflow/SimulinkI/Ointerface.
KeyWords:
Simulink;Stateflow;Trafficmodel;Simulation;I/O
第一章概论
第一节离散事件动态系统简介
系统的状态随离散事件发生而瞬时改变,不能用通常的动态方程来描述,一般称这类系统为离散事件动态系统(DEDS)。
对它的研究始于20世纪80年代初。
目前已发展了多种处理离散事件系统的方法和模型,例如有限状态马尔科夫链、Petri网、排队网络、自动机理论、扰动分析法、极大代数法等。
其理论已经应用于柔性制造系统、计算机通信系统、交通系统等。
离散事件系统的研究虽然取得较大进展,但还没有一套完整的理论体系来评价离散时间系统模型与实际对象的差异。
离散事件动态系统自然延伸就是混合动态系统。
包含离散事件动态系统(DEDS)和连续变量动态系统(CVDS)、两者又相互耦合作用的系统称为混合动态系统(HDS)。
离散事件动态系统(discreteeventdynamicsystems)由异步、突发的事件驱动状态演化的动态系统。
这种系统的状态通常只取有限个离散值,对应于系统部件的好坏、忙闲及待处理工件个数等可能的物理状况,或计划制定、作业调度等宏观管理的状况。
而这些状态的变化则由于诸如某些环境条件的出现或消失、系统操作的启动或完成等各种事件的发生而引起。
常见于通信、交通等公共服务设施,机械、电子等各种离散型生产加工过程,多级管理/控制系统,计算机信息处理等重要技术领域。
由于其状态空间缺乏易操作的运算结构,难以用传统的基于微分或差分方程的方法来研究。
对这种系统首先关心的是它的逻辑行为,这可用其演化过程的状态序列和事件序列来刻画。
系统的功能则表现为只允许发生某些符合要求的状态/事件序列,它们表示完成某些任务或防止各种失误。
用有限自动机、形式语言或Petri网等模型可以很好地描述这种逻辑层次的分析和综合问题。
在并行计算、公共服务和生产加工等系统中要进一步研究各种操作和演化的时间关系以提高系统的效率。
这时可用极大代数、赋时Petri网、Stateflow等工具进行分析,并用计划排序、实时调度等技术进行优化和控制。
进而由于实际上各时间因素往往具随机特性,还要用随机过程、排队网络等模型和理论方法进行分析和研究。
由于问题十分复杂,现有理论分析方法所能解的问题十分有限,所以计算机仿真实验研究是非常重要的实用方法。
与此相应,有摄动分析、似然比等数据分析和优化方法,可使仿真效率大为提高。
离散事件动态系统的研究自20世纪80年代后发展较快。
针对上述各层次不同角度的问题提出了多种理论模型和分析技术。
它们已开始在许多技术领域得到应用,并被认为是大型复杂信息处理和控制系统分析和设计的重要理论基础。
如何将各种模型和理论方法集成起来,形成多层次、多模型的理论体系以全面反映离散事件动态系统的复杂性并给出解决实际问题的有效方法,已成为研究的目标。
本设计使用Stateflow对交通灯控制模型进行仿真研究。
Stateflow是一个为建模和仿真事件驱动系统的集成的设计工具。
Stateflow为嵌入式系统的设计提供了一流的解决方案,包含复杂的逻辑管理,加入了图形化建模和动态仿真把系统概况和设计结合的更紧密。
通过Stateflow,你可以很快的开发出含有状态转换的事件驱动系统的图示模型,而不需要你掌握有限元状态机原理。
你也可以通过StateflowCoder把你的模型生成高效的嵌入式的C代码。
这些特性使得Simulink和Stateflow成为开发嵌入式系统的理想工具,并成功地应用于汽车,宇航,通信等领域。
通过Simulink和Stateflow你可以在统一的环境下设计,建立和仿真整个嵌入式系统的行为。
第二节交通灯控制技术简介
一、交通信号控制技术发展历程
道路交通信号控制技术早在19世纪中叶就已出现。
至今已经发生多次重大变革,大体经历了4个主要的发展阶段:
第一代为机械式交通信号控制技术。
主要依靠目视采集信息并加以判断,由手动闸刀控制红绿灯点亮时间长短。
第二代是固定配时交通信号控制技术。
主要靠经验和历史交通数据确定单台信号机的信号周期和绿信比.由计算机技术实现自动控制.为定周期控制和多时段控制。
目前.国内外很多城市采用此种控制系统。
定周期控制是全天为一个时段,自动运行预置的信号周期和绿信比。
多时段则根据交通需求变化情况,把一天的时间分成若干个控制时段.随时间的推移.按预置的方案自动运行。
这种技术不能实时反映路口的交通流量变化。
第三代是感应式交通信号控制技术。
主要根据车辆检测器测得的交通流数据来调节单台信号机的信号显示时间的控制方式.分为半感应控制和全感应控制。
半感应控制是交叉路口仅部分相位有感应请求的感应控制方式。
全感应控制是交叉路口所有相位均有感应请求的感应控制方式
第四代是线控技术和区域交通信号协调控制技术。
线控技术是把一条道路上多个相邻交叉路口的交通信号协调起来加以控制的控制方式。
区域交通信号协调控制技术是把一个区域内所有交通信号联结起来进行区域协调控制的交通信号控制系统,可分成固定配时协调控制系统、方案实时选择协调控制系统和实时自适应协调控制系统。
固定配时协调控制系统是根据预设的信号配时方案来对整个区域交通实施多时段定时控制的交通信号控制系统。
方案实时选择协调控制系统是对应不同的交通状况事先做好各类控制方案.再根据实时采集的交通流数据选取最适用的控制方案来实施交通控制的交通信号控制系统。
自适应协调控制系统是根据区域内实时采集的交通数据进行联机优化控制的交通信号控制系统
二、交通灯特点
智能化交通(its)是将先进的信息技术、电子通讯系统、自动控制技术、计算机技术以及网络技术等综合运用于整个交通运输,从而实现运输方式和交通管理的现代化。
由于交通系统具有非线性、时变的性质,而智能化交通灯控制把路权依次分配给不同方向的交通流,从时间上分离交通流,通过先进的交通模型和算法对交通信号控制参数(周期,绿信比和相位羞)进行自动优化调整、从而使一组路口或一个区域的路口交通信号实现最佳调控制并最终达到安全、有效地组织交通流通过路口的目的,与固定配时交通信号控制技术相比,有着明显的优越性。
智能化交通管理体系在国外已经有了40多年的发展历史,是目前发达国家普遍采用的交通管理方式,这种方式是在发达的交通网络基础上,应用卫星定位系统,对所辖区域的交通流量实施有效控制,使有限的交通网络功能得到充分合理的利用,极大发挥城市的载体功能。
第三节Stateflow简介
一、Stateflow概述
Stateflow的仿真原理是有限状态机(FiniteStateMachine简称FSM理论)理论,所谓有限状态机就是指在系统中有可数的状态,在某些事件发生时,系统从一个状态转换成另一个状态,用户在有限状态机的描述中可以通过设计状态之间的转换条件来构造出状态迁移图。
Stateflow是有限状态机的图形化实现工具,它可以用于解决复杂的逻辑问题,用户可以用图形化的工具实现各个状态之间的转换,并以图形化的形式绘制出状态迁移的条件,从而构造出有限状态机系统。
由于Stateflow通过生成S-functionAgent从而和Simulink实现了无缝连接。
Stateflow状态流图的执行是基于事件驱动的,这些事件可以来自Stateflow图内部,也可以来自Simulink。
在MATLAB的CommandWindow窗口下输入sfnew,弹出如图1-1窗口,然后
双击Chart图表,显示Stateflow界面如图1-2所示:
图1-1
图1-2
下面简要介绍Stateflow状态流图中的重要概念:
状态(State)在有限状态机理论中用来描述系统运行的模态,在Stateflow中状态用圆角的矩形表示,每个状态都必须有一个名称标签。
状态的行为用两种,即活动状态(Active)和非活动状态(Inactive)。
状态在系统中可以看作记忆元件,一个状态一旦被激活,,它就会保持当前工作模式,直到系统需要改变模式时状态才变为非活动的。
状态按层次又可分为子状态(Substate)和父状态(Superstate),多个子状态可以组合生成一个父状态,状态层次的数目不受限制。
在同层次的状态要么是互斥(Exclusive)的,要么是并行(Parallel)的,如果状态时互斥的,那么在任何时刻只有一个状态是活动的,如果状态之间是并行的,在同一时刻所有状态都可以是活动的。
在Stateflow中互斥的几个状态都用边框为实线的矩形表示,并行的状态则用边框为虚线的矩形表示。
转移(Transition)从一个状态切换到另一个状态被称为状态转移。
在Stateflow中转移一般用带有描述标签的有向线段表示,有向线段的起点为源状态,终点为目的状态。
描述标签指示转移所需的条件和产生的行为,其书写格式如下:
“Event[Condition]{ConditionsAction}/TransitionAction”。
根据事件和条件的不同,一个源状态可以转移到多个不同的目的状态,产生的行为也可以不同。
Stateflow不仅支持子状态内部转移(InnerTransitions)还支持穿越父状态直接到达子状态的超转移(Supertransition)。
Stateflow中还有一种特殊的转移叫默认转移(DefaultTransition),它没有源状态,只有目的状态。
它是系统被激活后第一个自动执行的转移,但是默认转移仅仅在该系统首次激活时有效。
事件(Event)的作用是控制有限状态的执行。
只有某个事件发生后系统才能从一个状态改变到另一个状态。
在Stateflow中,事件是非图形对象,每一个事件都被定义一个独立的名称,如果一个转移使用某个事件作标签,仅当这个事件发生时转移才有效。
事件来源有三种:
Local、InputfromSimulink、OutputfromSimulink。
根据事件的性质可把事件分为本地事件、直接事件、隐含事件、受限事件、时间逻辑事件等。
一个事件一旦被触发后就会发生事件广播,充分利用各种事件的事件广播,可以在某个状态内部触发其他并行状态的执行,从而实现不同状态间的交互和联系。
在众多事件中,时间逻辑事件又有其独特的作用,它是根据事件发生的次数来决定事件的逻辑转换。
时间逻辑操作符及其作用分别如下:
at(n,eventname)—当事件第n次触发时。
every(n,eventname)--当事件每触发n次时。
after(n,eventname)--当事件触发n次后。
before(n,eventname)--当事件第n次触发前。
条件(Condition)是有限状态系统中的有效流,它必须定义在“[]”中,一般跟在事件标签后面来进一步约束转移的发生。
即事件发生和条件为真同时有效时,转移才能发生。
Stateflow中的条件表达式和C语言语法几乎一样,唯一不同的是Stateflow不支持位操作符。
动作(Action)是当转移发生时要执行的操作。
动作又分为条件动作(ConditionsAction)、转移动作(TransitionAction)和状态动作(StateAction)三类。
条件动作和状态动作运行有所区别,条件动作在条件满足时就可运行,书写时必须包含在“{}”中,而转移动作需要在整个转移通道有效时才运行,书写时必须包含在“/”后。
有了条件动作和状态动作的支持,用户利用转移标签,再配合连接节点和图形函数,就可以轻松的以图形化的方式实现高级语言中的分支程序(if-elseif-else)、循环程序(while)和子函数等。
因此,用Stateflow同样可以完成复杂逻辑编程,不同的是它以图形化的方式完成。
还有一类动作不是在转移过程中发生的,而是在状态中执行的。
状态动作一般作为状态名称标签的一部分,定义状态动作时需要使用关键字来标识动作类型,状态动作的动作类型关键字有:
entry---在事件触发状态进入活动状态时执行,它也是默认的状态动作。
exit----在事件触发状态退出活动状态时执行。
during----在事件触发发生,状态保持原有活动状态时执行。
onevent_name---在以event_name命名的事件发生时,状态保持原有活动状态时执行。
连接节点(ConnectiveJunction) 连接节点是转移通路的判决点和汇合点。
它不是记忆元件,因此,转移的执行不能停留在节点上,必须到达某个状态时才能停止,它通常用来构成图形化分支程序。
历史节点(HistoryJunction)历史节点记录了父状态退出活动状态时,具体哪个子状态处于活动状态,当活动状态再次被激活时,如果子状态没有定义显性的直接转移,则历史节点将使其记录的子状态处于活动状态。
二、Stateflow和Simulink的结合
Simulink和Stateflow都是目前广为流行的应用于数学计算、工程设计和建模仿真的软件MATLAB的一部分。
Stateflow可以通过定义输入输出和Simulink交互。
输入输出有数据也有事件。
每个Stateflow模块都属于子封装的Simulink模块。
仿真执行时Stateflow机制把流程图转成Simulink的内部描述S—function。
所以Stateflow生成的逻辑可以直接嵌入到Simulink模型下,两者是无缝结合的。
这样就能在仿真过程用事件驱动连续行为间的切换.Stateflow利用Matlab和simulink集成环境来建模、仿真和分析系统,很容易修改设计、评价设计结果和验证系统在任何设计阶段的动作。
第二章基于Stateflow的交通模型介绍
第一节交通灯控制系统的工作原理
一、交通模型的选择
城市交通模型是由一系列数学模型组合而成。
其分类依据其研究的对象可以划分为城市宏观交通模型和城市微观交通模型两大类。
微观交通模型非常细致地描述交通系统中每一时刻,每一辆车的行为及其相互作用关系。
在本设计中采用微观交通模型,利用各个路口车流量队列长度来确定交通信号的变化。
二、交通灯系统控制原理图
本设计根据传感器测的每个路口的车流量(即车队列的长度),来求取各个交通路口的红绿灯时间。
原理图如下:
图2-1
三、交通信号控制的原理
(一)在每个交叉口设置红绿灯信号控制参数,使其信号控制对本交叉口的所有方向的交通流在交叉口的停顿延误时间为最小;
(二)在多个交叉口信号联锁绿波控制时,寻求满足以上条件同时还保证双向绿波带的形成,并且绿波带宽达到最宽.
四、交叉口交通信号设置:
(一)对互相冲突的不同方向、不同种类的交通流实行有秩序地时间分配控制;
(二)交通流将由无序转变为有序,从而减少交通冲突、增强交通安全,提高交叉口通行能力;
(三)然而不规范的信号配时方案,反而会增加交通延误时间,并且存在潜在交通安全事故因素。
本设计是对双交叉路口设计,其交通网络图及传感器设置如图2-2:
图2-2
第二节交通灯设计方案
一、Stateflow模型的建立
(一)交通灯信号的变化过程就是红、绿、黄之间状态的转变,状态间的转变依据时间长短而变化,每个状态存在活动、非活动两种状态。
打开MATLAB应用程序,在MATLAB的CommandWindow窗口下输入sfnew,得到SimulinkModels界面,双击Chart图,即可进行Stateflow图的编辑。
Stateflow图如图2-3所示:
图2-3
t11表示绿灯时间;t12表示红灯时间;黄灯时间设为3s;由于交通时间是随着车流量(也即车队列长度)的变化而变化的,所以时间是不确定的,有时侯会很小,这样可能会导致某一方向的车没能及时通过而发生车祸,因此,在设计中设置最小时间为5s。
当红灯亮时,时间t12>0,而此时绿灯时间t11=0,状态流红灯方向运行;当绿灯亮时时间t11>0,而此时绿灯时间t12=0,状态流绿灯方向运行;
在Stateflow中有关参数设置,箭头的走向为状态的流向。
sec作为脉冲发生器,有两个用途:
一是作为仿真时启动Stateflow状态图的触发事件;二是作为定时器的时间基准实现系统所需的延时。
红灯(red)亮是显示为2,绿灯(green)亮是显示为1,黄灯(yellow)亮是显示为0,color为本地参数,LED作为显示的输出。
红灯的显示状态图如2-4,绿灯、黄灯的显示状态图与红灯相似。
图2-4
打开Chart图,选择Tools菜单下的Explore,属性设置如图2-5:
图2-5
(二)在双交叉路口中,共有8个路口,也就要有8个显示。
每个交通路口都有一个基本的Stateflow图。
为了减少Chart图,就将每个交叉路口的状态流图放在一个Chart图中,两个交叉路口则要两个Chart图。
将状态设置为同步模式。
交叉路口A的状态图,如图2-6示;交叉路口B的状态图,如图2-7示:
图2-6图2-7
则双交叉路口的Chart图如图2-8:
由于每个方向的交通灯都有红、绿灯两个时间,所以双交叉路口共有18个时间,当红灯亮时绿灯时间为零,当绿灯亮时红灯时间为零。
共有8个显示模块。
红灯显示值设为2,绿灯显示值为1,黄灯显示值为0。
图2-8
二、Simulink模型的建立
由建立的Stateflow图可知,Stateflow输入的是时间值。
只要通过外部模块得到时间既可使模型正常运行。
由此其他模块的建立,首先由外部传感器检测到车辆队列长度,并按照一定的采样时间将数据输入到模型中,再通过控制算法算出时间,最后将时间输入到Stateflow图中便可完成建模。
打开建立的Stateflow交通模型,在MATLAB的CommandWindow窗口中输入simulink,弹出SimulinkLibraryBrower窗口。
在Simulink/User-DefinedFunctions中,鼠标左键放在S-Function模块上不放,拖到模型编辑窗口中。
双击该模块,打开参数对话框,在S-functionname的框中写上编写的算法文件的名字(即sfun2)。
如图2-9示:
图2-9
由于S-Function模块是一个单输入、单输出的模块,而在模型中有多个输入、输出的信号,则需要使用Mux模块和Demux模块将输入合并或输出分开。
三、控制算法
当交通流较大且变化较剧烈时,感应控制是减少车辆延误的有效方法。
对单个交叉口而言,当交通需求较小时,信号周期则应短一些,但一般不能少于5秒,以免某一方向的绿灯时间小于5秒使车辆来不及通过路口影响交通安全;当交通需求较大时,信号周期则应长一些,但一般不能超过120秒,否则某一相位的红灯时间将超过60秒,驾驶员心理上不能忍受。
当交通需求很小时,一般按最小周期运行;当交通需求很大时,只能按最大周期控制,此时,车辆堵塞现象已不可避免。
本设计的智能交通灯中,有三个相位,它们分别为:
1、3、5、7方向绿灯,其他方向红灯;2、5、7、8方向绿灯,其他方向红灯;4、6、2、8方向绿灯,其他方向红灯。
绿灯期间车辆通过路口的速度不超过20km/h。
远端传感器和近端传感器之间的距离(L)直接影响输入量的变化,取L=100m。
算法中的交通需求通常用两种方法描述,一是用交叉口停止线前的排队长度即停止线前相隔一定距离(通常为80至100m)的两检测器之间的车辆数(即队列长度)来表示交通需求;另一种方法是,当占有率不低于某一基准占有率,用占有率表示交通需求;当占有率小于某一基准占有率且交通量不低于某一基准交通量,则用交通量表示交通需求。
检测器在指定的时间内(通常为5分钟)测得的计数值(方波数)为交通量;检测器在指定的时间内(通常为5分钟)测得的方波宽度总和与该时间值的比为占率。
本设计中采用第