基于有限状态机的工控系统软件设计.docx
《基于有限状态机的工控系统软件设计.docx》由会员分享,可在线阅读,更多相关《基于有限状态机的工控系统软件设计.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于有限状态机的工控系统软件设计ronggang导语:通过分析工控系统的特性,提出采用状态机的思想进展工控软件设计。具体阐述了高速状态机的错步问题以及控制层中状态机的状态划分问题摘要:通过分析工控系统的特性,提出采用状态机的思想进展工控软件设计。具体阐述了高速状态机的错步问题以及控制层中状态机的状态划分问题。结合详细的应用实例,给出了基于状态机的实现方法。实验说明,采用状态机的设计方法有助于准确描绘受控对象的行为,软件的强健性和可靠性得到显著进步。关键词:有限状态机工控软件控制环状态划分1.引言1.1工控软件的一般问题工控软件设计可分为基于控制环和基于实时操纵系统两大类。控制环是把各个功能模块
2、连接成首尾相接的环状构造。其特点为任何一个功能模块都不能出现死循环,甚至循环次数过多的循环语句都应防止出现。以保证可以在实时意义上尽可能快地遍历各功能模块,进而知足实时多任务的需求。在各功能模块中一般用状态机来描绘模块所处的状态。而实时操纵系统那么可以通过一套底层机制根据优先级和各任务状态调度各功能模块。此时各功能模块就以“任务作为表现形式。但是在每个任务内部仍然为一个独立的控制环构造,仍然需要用状态机描绘。本文将结合工程理论阐述状态机在工控中的应用,给出通用模型和留意要点。1.2有限状态机有限状态机是一种重要的思想方法。从数学的角度看,它实际是一个五元组M=I,O,S,,其中I,O分别表示输
3、入输出,S为状态向量,为次态方程:SI-S,表示输出方程:SI-O。有限状态机从构造体系上有层级状态机,并发状态机等。层级状态机类似于软件中的子程序调度:更高层的一个状态对应于较低层的一个状态机。这个高层的状态处于底层状态机的某个状态中。这个低层状态称为子状态。与子程序调用受到系统堆栈深度制约不一样,层级状态机可以由开发者根据控制对象的层次性运动规律任意指定深度。与子程序的目的一样,层级状态机也是为了进步控制软件的模块化程度,降低状态分析的复杂度。并发状态机侧重于描绘状态机的调度。状态机本身不能实现什么并发功能,并发的实现是通过软件调度的。假如把状态机理解成一个任务,那么就能理解并发的实现。在
4、控制环中,一个“任务就是一个功能模块,我们只需要把多个状态机串联在环中,也就是实现了多输入多输出的并发控制。此时,多个状态机在空间上是并存的,然而却是分时调用的,调用的周期等同于控制环扫描一周的时间。不过假如CPU运算速度足够快,这个周期将会足够的快,到达“实时的程度,进而这多个状态机也就实现了“并发运行。同理,在多任务操纵系统中,“并发的实现就更轻易理解了,除了在单个任务内存在控制环的并发控制外,在任务之间也同样存在多状态机的并发运行。当然,从CPU的角度而言,只要是单核的,也就从来不存在真正的“并发,它在任何一个特定的时间点都只能处理某个特定状态机。不太多任务操纵系统却提供了一套底层机制来
5、调度原来仅靠控制环来调度的任务。2.有限状态机在前后台信息交互中的作用工控系统一般都具有人机对话界面。其通常的操纵形式为用户进入某个页面,选取某项操纵并执行。人机对话界面通常被设定为一个独立模块。该模块软件构造为一个消息控制环。用户在硬件接口的操纵会通过接口的驱动程序封装成消息参加到专属界面模块的消息队列中。消息控制环循环扫描该队列,如有新消息那么提取并解释然后封装成新消息发往后台执行。前后台软件的接口模块负责分发界面消息到各个执行模块。消息应包括目的模块的编码,命令编码以及命令参数。前后台接口模块的软件构造多采用以下两种形式。align=center图1两种消息分发构造/align形式一的输
6、出构造根据消息数据的目的模块编码直接分发消息到各模块中。形式二那么是根据当前系统所处的状态再分发消息到各模块中。也就是讲形式二在形式一的根底上增加了一个系统级的状态机。下面我们看看两种不同的输出构造会带来何种影响。工控软件设计者通常会碰到两种情况。一是在研发阶段,界面任务与控制任务联调时,双方均有可能出错。对于界面任务而言,有可能自身原因误发消息;而对控制任务,也有可能输出时序出错。此时需要在联调中快速定位故障,缩短研发周期。二是在产品运行中由于恶劣工况的影响,导致缓冲区数据发生异常。比方消息头的模块编码发生位翻转,那么会直接导致控制任务接收到错误的界面消息。对于形式一,假如界面消息出错那么会
7、出现全局的混乱。比方模块1收到消息后开场输出一个控制时序,期间界面层又发来一个错误的消息,使其分发到模块2,于是模块2马上开场输出时序。这个不希望输出的时序在工控中有可能会导致灾难。而在联调时出现这种现象,那么无法立即判定到底是模块1还是界面层出的问题。但假如采用形式二那么可以屏蔽这种混乱。如下列图align=center图2不同分发构造对错误消息的处理示意图/align我们可以看到由于形式二采用全局状态机标定当前软件所处的状态,消息首先会到达相应的状态处理程序,然后才进展分发。此时分发语句可以根据当前的状态屏蔽不应该被调用的模块。即使消息出现错误,也会过滤掉,等待正确消息的到来。而且可进一步
8、优化为当收到错误消息可以通知界面层。可见在控制软件前后台的接口层增加一个标记后台状态的全局状态机有助于增强软件的强健性。3.状态机的错步问题工控软件本质上是根据一定的逻辑条件给出有序的输出。根据输出的次序可以划分不同的状态。逻辑条件在嵌入式领域中就是用户的输入和传感器的状态。正是这些条件决定了状态的跃迁。在这里我们讨论的是根据传感器输入而建立的状态机。很明显,它的运行速度比前述系统级状态机高很多。这种状态机分布在软件的控制层中,正是它们使得受控对象可以有序准确高速的运行。对于这样高速运转的状态机,假如考虑不周全,会使其产生失步或跳步,即高速状态机中的错步现象。由于控制层的状态机的跃迁条件;于传
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 有限状态机 系统软件 设计
限制150内