您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏平台 > 网状数据模型 >

基于LPC2134和UCOSII的自动售货机状态机模型

发布时间:2019-06-07 19:46 来源:未知 编辑:admin

  由于售货机的功能不断增多,售货机控制系统也相应得不断变得庞大,这就使原来的面向过程的开发方法变得越来难以扩展和维护,根据自动状态机的理论,提出一种在售货机上的状态机模型,该模型对系统状态进行抽象和分离,建立了系统状态表和状态转换表,是一种网状的状态机模型。根据系统事件和当前状态来查找系统状态转换表,如果有匹配项,则进行状态转换。经过实验表明,该模型能解决系统的代码庞大问题,并且使系统开发变得易于维护。

  自动售货机是一种全新的商业零售形式,20世纪70 年代自日本和欧美发展起来。现在,自动售货机产业正在走向信息化并进一步实现合理化。例如实行联机方式,通过GPrs将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保 了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状况下也能保持低温,与以往的自动售货机相比,它能够节约10-15%的电力。进入21 世纪 时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。这就导致了售货机的控制系统(VenclingMachine Controller,VMC)的复杂度大大增加。先前的基于汇编程序的VMC控制系统虽然效率高,但是存在着可扩展性差,程序结构性差,不易维护等缺点。因此本文提出了一种基于ARm7的新型VMC主板的有限状态机的结构,对VMC 进行改进。本文所用的硬件环境为使能lpc2134 的ARM7 主板,有一个RS232 串口接GPRS 模块,一个MDB 总线模块,一个电机驱动模块,外接一个显示和按键模块。

  软件方面采用的操作系统是UcosII操作系统,这是一种开源的实时多任务操作系统,在数据同步和互斥上提供了信号量,消息队列,消息邮箱等功能,本文主要采用的是信号量和消息队列。

  总的来说,有限状态机系统,是指在不同阶段会呈现出不同的运行状态的系统,这些状态是有限的、不重叠的。这样的系统在某一时刻一定会处于其所有状态中的一个状态,此时它接收一部分允许的输入,产生一部分可能的响应,并且迁移到一部分可能的状态。 一个有限状态机(FSM)是一个五元组,M=(S,G,E,A,T)。

  State(状态),就是一个系统在其生命周期中某一时刻的运行情况,此时,系统会执行一些动作,或者等待一些外部输入。

  Guard(条件),状态机对外部消息进行响应的时候,除了需要判断当前的状态,还要判断跟这个状态相关的一些条件是否成立。这种判断称为guard(条件)。guard 通过允许或者禁止某些操作来影响状态机的行为。

  Action(动作), 当一个Event 被状态机系统分发的时候,状态机用Action(动作)来进行响应,比如修改一下变量的值、进行输入输出、产生另外一个Event或者迁移到另外一个状态等等。

  Transition(迁移), 从一个状态切换到另一个状态被称为Transition(迁移)。引起状态迁移的事件被称为triggering event (触发事件),或者被简称为trigger(触发)。

  有限状态机一般有2 种表示方式:状态转移表和状态转移图。通常用有向图来表示有限状态机,其节点代表状态。如图1 所示,售货机售货流程一共分5 个状态,每个状态都是根据消息的不同来进行转换。

  即先定义一个状态和消息的枚举,再通过嵌套的2层switch-case结构实现,外层switch-case结构判断状态,虽然这种方法结构简单,便于理解,但是代码冗长,不便维护,因此不建议在复杂杂的状态机下运行。

  这种实现方法对第一种方法进行了改良,根据State,Event 做成二维表格,表格中的项表示Action和TransMIssion,状态采用枚举量。这种方法结构简单,便于理解,代码比较简练,效率最高,但是代码结构不是太好。

  这种方法用函数地址代替state 值,比较直观,可以方便地增加entry/exit 操作,并且效率较高。

  综合以上几种方式,本文提出一种结合第二种和第三种方式的状态机实现方式,即创立一个状态表和一个状态转换表,其中状态表中有exit,entry,default处理方法,当进入该状态时,先执行entry方法,然后在状态运行时执行default方法,退出状态时执行exit方法,状态之间的切换是通过状态转换表实现的,即首先状态等待一个系统消息,如果在状态转换表中对应当前状态和当前消息的项,则进行消息转换,具体实现如下3.1 数据结构。

  在有限状态机中,状态是通过系统消息和当前状态来查找状态转换表,如果有对应的项则进行转换,没有则继续当前状态:算法如下:

  为状态机添加新状态,只需在状态表中添加新状态及其处理方法,以及在状态转换表中添加该状态的转换方式。

  由于在这里每个状态都是互斥的,因此状态转换时的时间开销主要是花费在查找状态表上面,这里采用了基数排序查找的思想。因此主要查找开销是每个状态的状态转换个数。由于在售货机中,每个状态大概都只有3-4 个状态转换表。因此查找的时间复杂度比O(m)小。

  通过建立有限状态机模型,并应用改进的数据结构与状态转换算法,自动售货机控制器的程序结构更为清晰。原来存在于程序中的诸多标志变量,由状态机的各个状态所取代,使系统具有更好的扩展性;并且模型很好地利用了状态的相关性,缩短了查找所花费的时间。应用于别的嵌入式系统也有较高的意义。

  在ucosiii下写传统的中断服务函数总是进硬件错误,进中断后禁止调度也不行,看 拉伯罗斯 的书,上面写着要用汇编语言写“中断服务...

  在UCOSIII中添加LCD显示任务后手动复位和重新上电后系统不可以运行

  在UCOSIII中添加LCD显示任务后,手动复位或重新上电后系统不能运行,求解。。。 用Jlink仿真时,能够正常运行,当去...

  今天在问ucosii的时候,几个大神级别的说现在学这个ucosii已经没有多大的意义了,而且现在工业上都不用这个ucoii的,当我说是为了...

  想关掉时间戳简单地进行下移植但已经关掉 却没作用还是出现下面这种错误 ...

  STM32 IAR UCOS CSTACK设置ucosiii到startup后任务运行不了

  各位坛友,我的ucosiii跑起来之后到startup之后任务运行不了,仿真后得出以下结果,是什么原因造成的? 系统部分的代码如下:...

  GUI_DispDec((u32)DeviceCode,8); 还是这条指令白屏,大家研究下啦 但是我这样 GUI_DispDec((u32)DeviceCode0x...

  void Start_Task(void* pdata) { OS_CPU_SR cpu_sr; &nbs...

  void USART1_IRQHandler(void) //串口1中断服务程...

  STM32F407 UCOS III实验,介绍基于STM32F407的UCOSIII实例,参考下

  多道脉冲幅度分析器不仅能自动获取能谱数据,而且一次测量就能得到整个能谱,因此可大大减少数据采集时间,....

  随着电力系统的发展,其系统容量越来越大,结构越来越复杂,系统中的自控及继保装置所需处理的信息不断增加....

  分析现有抄表系统存在的问题,在此基础提出了一种由LPC2134ARM 微控制器和ADF7020 构成....

  本文通过ARM7微处理器芯片LPC2134的GPIO实现了与内藏T6963C的液晶显示模块的接口设计....

  多道脉冲幅度分析器不仅能自动获取能谱数据,而且一次测量就能得到整个能谱,因此可大大减少数据采集时....

http://tritecbuilding.com/wangzhuangshujumoxing/85.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有