层次状态机在船舶电站监控系统中的应用
2013-10-17蒋子峰
蒋子峰,刘 奇
● (中船重工第704研究所)
层次状态机在船舶电站监控系统中的应用
蒋子峰,刘 奇
● (中船重工第704研究所)
采用层次状态机的方法设计相关软件,层次状态机可使监控系统中各种状态结构清晰、性能稳定,并能减少代码重用,降低软件复杂度。
船舶电站;监控系统;层次状态机
0 引言
船舶电站监控系统对电站分系统实施自动控制、管理、监测、越限报警和安全保护功能,以保护电站分系统经济、安全、连续和稳定运行,保障电站分系统的生命力。控制软件需要实时维护电站中的发电机组启动、停机、合闸、分断、加减速和升降压等半自动操作状态,机组失电自启动、功率增减机、故障换机等自动操作状态,及各种状态之间的转换[1-2]。由于整个系统牵涉到各种行为状态之间的复杂转换以及状态转换的触发条件,找到一种能对电站各种复杂状态统一归类,并能使由特定事件触发的状态转换能清晰明了,已成为电站监控软件要解决的重要问题。
1 层次状态机
层次状态机(Hierarchy State Machine)是对状态行为建模的最直观方法,也是实现事件驱动系统的形式方法,主要用来描述行为状态及其子状态的生命周期。通过层次状态机可了解到一个对象能到达所有状态以及对象收到的事件对对象状态的影响等。它能说明事件是如何改变一个对象的状态,从而实现状态与状态之间的转换[3-4]。
层次状态机中几个重要的概念如下,状态:状态是对象生命周期中满足某种条件,执行某些动作或等待某些事件发生的一个阶段;事件:事件是一个在时空中显示出现的特定现象,可以触发状态转换;转换:转换是从一个状态结点到另一个状态结点的移动。
层次状态机的一个显著特点是引入了层次式状态。它较非层次状态机多了状态嵌套的概念,外层状态称为父状态,内层状态称为子状态。行为状态的层次化就是把所有行为状态按层次分类并规定了行为状态的转换规则——事件到来后首先交给相应的子状态处理,如果子状态不处理,再把此事件交给子状态的父状态处理。从某种程度上讲,层次状态机限制了状态的跳转,状态内的状态不需要关心外部状态的跳转,这样就实现了无关状态间的隔离,从而降低了状态机的复杂度。
2 电站监控软件的层次状态建模
2.1 初始化状态机
根据层次状态机的原理,创建层次状态机状态的基本事件类型,代码如下:
2.2 行为状态初始化
采用状态层次化的方法设计船舶电站监控系统,首先需要把系统中所有状态分类,分类的原则应采用“里氏替代法则”(Liskov Substitution Principle,LSP)来进行判断,LSP要求:在所有使用父类的场合,其子类能够完全代替父类。
电站机组启动、停机、合闸、分闸、加减速、升降压由机组控制器管理,其行为状态图如图 1所示。其中HSM_TOP为状态机的顶层。
S_CONTROL_TOP为机组控制器层,在此层该状态除了接收上述提到的4个基本事件外,同时处理包括应急停机、控制方式转换、绕阻过热跳闸、异常分断、异常停机等事件信号;对于启动、停机、合闸、分断和卸载状态,各有两个子状态用于细化相应过程的实现;其余状态均为没有子状态的一般状态。
电站跨接开关和岸电开关的合闸、分断,失电自启动、功率增减机和故障换机由电站控制器负责管理,其行为状态如图2所示。
图1 机组控制器层次状态图
图2 电站控制器层次状态图
其中HSM_TOP为状态机的顶层;S_CONTROL_TOP为电站控制器层,在此层该状态除了接收上述提到的4个基本事件外,同时处理包括失电自启动和控制方式转换等事件信号;对于跨接和岸电的合分闸状态,各有两个子状态用于细化相应过程的实现;其余状态均为没有子状态的一般状态。
3 电站监控软件的层次状态转换
3.1 层次状态机状态转换的原则
层次状态机的状态转换是和entry、exit操作绑定在一起的,规定任何一个状态转换只能进入一个没有子状态的状态,由于层次继承关系的存在,实际上嵌套的各个状态形成了一个树形结构。层次状态机定义状态的转换操作为:确定原状态和目标状态的最小公共父状态(least common ancestor,LCA),执行原状态到LCA之间的exit操作,再执行状态转换的事件操作,最后执行LCA到目标状态的entry操作。寻找LCA的代码算法为:
步骤1 计算原状态到top状态的路径;
步骤2 计算目标状态到top状态的路径;
步骤3 比较top状态到原状态和目标状态前一状态是否相等,若不相等,top状态则为两者的LCA,否则把top状态放入其前一状态,并转入步骤1。
比如机组控制器需要从S_IDLE状态转移到S_STOP状态,按照层次状态机状态转换的规则,状态转换的具体流程为:首先计算S_IDLE和S_STOP的公共最小父状态LCA,为S_CONTROL_TOP;S_IDLE执行exit操作直至进入LCA;执行此状态转换的事件操作;最后执行LCA到S_STOP的entry操作。
3.2 机组控制器状态转换
机组控制程序设置一个没有子状态的idle状态接收各种机组控制信号,并根据机组控制器控制策略判断满足各种状态情况下层次状态机应该转入的其他状态。机组控制器状态转换图,如图3所示。
图3 机组控制器状态转换图
3.3 电站控制器状态转换
电站控制程序设置一个没有子状态的 idle状态接收各种电站控制信号,并根据电站控制器控制策略判断满足各种状态情况下层次状态机应该转入的其他状态。电站控制器状态转换图,如图4所示。
4 结语
描述了一种新型的用于船舶电站监控系统的软件设计方法——层次状态机,更好的实现了船舶电站中各种复杂状态的建模和状态转换。采用层次状态机方的优点在于使得电站状态逻辑更加严密、性能高效,对状态图的操作接近状态操作的理想程度,从而使得需要特殊处理的逻辑点较少,特别适用于对稳定性要求较高的军用船舶电站监控系统。
图4 电站控制器状态转换
[1]肖涛森, 罗克露. 层次状态机在集群设备中的应用[J].微计算机信息.
[2]褚华, 陈平,一种层次状态图的自动生成方法[J]. 西安电子科学大学学报, 2005, 32(5): 15-18.
[3]刘志声. 谈系统分层 [EB/oL]. http: //blog.csdn.net/liuzhisheng/archive/2007/12/18/1950121.aspx.
[4]Stephen Prata. C++Prinmer Plus(中文版)[M]. 北京: 人民邮电出版社, 2005.
又一艘Havyard 833 PSV-MV“Kongsborg”命名交船
2013年6月5日Havyard集团在挪威Stavanger市举行新一艘Havyard 833型平台供应船,船号111的命名仪式,向法罗群岛船东Skansi Offshore交付了MV Kongsborg。命名仪式完成后,MV Kongsborg直接开赴工作海域。船东Sansi Offshore已与挪威BG公司签订了1+2年的期租合同,服务于Florø海上油田的半潜平台Transocean Searcher。
船东Skansi Offshore目前有三艘平台供应船为挪威BG公司和BP公司服务,另二艘平台供应船为挪威Statoil公司服务,她们都是Havyard设计建造。
Havyard 833型平台供应船是在原成功的设计Havyard 832型基础上研发的大型平台供应船。
Havyard 832型已交付16艘,Havyard 833型也已交付3艘。她们的设计满足了当前海洋石油领域对平台供应船大型化,多功能,深水区域,安全以及高效环保的要求。此船的设计还具备250人的救助功能,溢油回收满足NOFO 2009,优良的线型和优化的机械系统配置使其在不同工况下都能达到较低燃油消耗率。
Application of Hierarchical State Machine in Monitoring System of Ship Power Station
JIANG Zi-feng, LIU Qi
(No.704 Research Institute, CSIC, Shanghai 200031, China)
Using hierarchical state machine can not only make the structure of monitoring system in different states clear, it can also stabilize the performance, reduce the code reuse and reduce the complexity of the software.
ship power station;monitoring system; hierarchical state machine
T183
A
蒋子峰(1984-),男,助理工程师。主要研究方向:船舶电站。