张勇平, 张静远, 尹文进
有限状态机在鱼雷搜索策略程序设计中的应用
张勇平, 张静远, 尹文进
(海军工程大学 兵器工程系, 湖北 武汉, 430033)
为了提高鱼雷搜索策略程序设计效率和程序可读性, 方便修改逻辑和调试程序, 提出了基于有限状态机的鱼雷搜索策略程序设计方案; 通过分析鱼雷在搜索、跟踪和识别目标等不同自导阶段的自导逻辑关系, 提出了自导状态、事件、活动的确定原则并建立了相应的模型; 结合有限状态机理论, 建立了自导逻辑的事件状态变迁关系图, 提出了基于有限状态机的程序实现方案。通过仿真, 对所建模型和设计方案进行了仿真验证。仿真结果表明, 状态机程序运行稳定, 调试和跟踪方便, 尤其为增加状态、更改逻辑和调试程序提供了便利。
鱼雷; 自导逻辑; 有限状态机; 搜索策略; 程序设计
随着现代鱼雷智能化的不断提高, 其复杂的自导逻辑和搜索策略对自导程序的设计提出了更高的要求。采用传统的程序设计方法需要设置众多的标志位和多层嵌套的条件判断语句, 并且标志位的更改和判断经常在不同嵌套层的判断语句中。这种程序设计思想不仅使代码冗长、程序可读性和可移植性降低, 而且调试困难, 不便于后期更改逻辑。状态机(state machine, SM)不仅可以使程序中多事件之间的逻辑关系变得简洁明了, 同时它强大的错误处理能力、用户选择测试、条件执行等功能使多事件间的逻辑关系处理变得更为简单。把状态机应用到鱼雷搜索策略程序设计中, 使用一个枚举型状态变量就可以代替几十个标志位, 状态的变更和选择在同一嵌套层内完成, 程序流程清晰, 可读性强。不仅有利于研制初期自导逻辑的修改完善, 而且可以减少程序设计中的错误。
国内对有限状态机(finite state machine, FSM)的研究成果较多, 文献[1]对状态机的理论和应用进行了深入研究, 文献[2]~[5]对状态机的具体应用进行了研究。但是, 有限状态机的应用难点不在于对其理论的掌握, 而在于对具体应用中状态和事件的正确定义和建模。从可查阅的文献来看, 还没有把FSM应用到鱼雷搜索策略程序设计中的研究成果。本文基于有限状态机理论, 对鱼雷自导逻辑进行分析和研究, 对其状态、事件和活动等进行建模分析, 提出了鱼雷搜索策略程序设计方案, 并通过鱼雷制导性能仿真系统对设计方案进行了仿真验证。
FSM又称有限自动机(finite automation, FA), 由状态的有穷集和状态之间的转移关系组成, 是一种具有离散输入输出系统的数学模型, 主要为研究有限存储的计算过程和某些语言类而抽象出来的[6]。FSM拥有有限数量的状态, 每个状态可以迁移到零个或多个状态。它以一种“事件驱动”的方式工作, 可以通过事件驱动下系统状态间的转移, 来表达一个控制系统的控制流程。根据接受器和转换器的不同可以分为多种类型, 接受器判断是否接受输入, 转换器对给定输入产生一个输出, 常见的转换器有Moore机和Mealy机。Moore机对每一个状态都附加有输出动作, 其输出只与当前的状态有关。Mealy机对每一个转移都附加有输出动作[1], 其输出与当前的状态和输入有关。 Mealy机具有非自包含性, 在较复杂的系统中, 将增加系统的开发和维护的难度。Moor机具有自包含性, 有利于系统的开发和维护[7]。
定义FSM是一个5元组
2.1.1 状态的确定原则
状态是物质或对象的生命周期中满足某种条件、执行某些动作或等待某些事件发生的一个阶段, 能持续一段时间[8]。分析鱼雷自导系统的工作过程并定义一个对象, 该对象的属性为鱼雷各种自导参数的组合。如果某时刻该对象对鱼雷产生相同或类似的控制行为, 那么该对象便可作为FSM的一个状态。
2.1.2 事件的确定原则
对状态产生的影响包括“内因”和“外因”两种, “外因”是运行于该状态以外且对该状态产生影响的各种因素, “内因”是状态的异常工作及正常工作积累量变后的质变。“内因”和“外因”可以抽象为“事件”, 是时空中显式出现的特定现象, 它可以触发状态转移[9]。由系统内部产生的触发事件为系统事件, 外部触发事件为外部事件。分析鱼雷自导工作过程, 那些促使自导系统调整或更改参数的特定现象可以归结为事件。
2.1.3 活动的确定原则
活动是FSM中的一系列控制行为的组合, 是和某一个状态或事件相关联的。鱼雷自导系统在工作过程中根据不同的状态和事件而做出的某些控制行为可以称之为活动, 这些活动是不能引起状态改变的。
2.2.1 状态的建模
鱼雷从入水到自导开机阶段是按照固定的程序航行, 不在本文的研究范围之内。鱼雷从自导开机到命中目标期间的状态是非常复杂和众多的。限于篇幅, 不可能逐一建模分析。下面重点对未发现目标以及发现后丢失目标两种情况下的状态进行建模分析, 以主流的鱼雷前视声自导技术为例进行讨论。
未发现目标情况下, 假设鱼雷按设定的弹道程序航行并搜索目标。在没有内部或外部事件触发时, 鱼雷以某一种弹道形式搜索目标。同一种弹道形式有着相同或类似的自导、控制参数组合, 因此, 每一种搜索弹道形式可以归结为一种状态。各种状态建模如下。
状态1: 直航搜索
状态2: 蛇形搜索
状态3: 环形搜索
状态4: 螺旋线形搜索
状态5: 渐开线形搜索
自导系统检测到目标后, 便转入目标捕获、核实过程[10]。假设鱼雷自导探测逻辑如下: 由于检测目标时的虚警存在, 需要2个脉冲周期的核实确认。检测到目标后, 自导系统调整发射波束偏移角使其指向目标, 此时, 自导系统处在一种发现目标状态。在随后的2个脉冲周期中, 若有1个脉冲检测到目标则认为自导系统捕获到目标。之后调整水平舵的控制参数使鱼雷在水平面上对准目标, 在下一个脉冲周期到达前, 各种参数保持不变, 自导系统处在捕获状态。在随后的2个脉冲周期中, 若有一个脉冲检测到目标便认为该目标已经过核实确认。此后, 鱼雷调整水平和垂直舵的参数, 转入双平面跟踪, 同时调整波束参数, 自导系统处在追踪状态。若2个脉冲周期中都未检测到目标, 自导系统则认为探测到的是虚假目标, 此后更改为探测到该目标前的航向继续搜索。根据上述分析, 各种状态建模如下。
状态6: 发现
状态7: 待捕获
状态8: 捕获
状态9: 待核实
状态10: 核实
2.2.2 事件的建模
按照事件的确定原则, 鱼雷自导系统中弹道定时器触发的弹道变更信号是时间累积到限定值触发的信号, 可以归结为一种系统事件。另外, 自导系统检测到目标、识别出气幕弹、噪声干扰器和诱饵都会促使鱼雷改变弹道和自导参数, 因此是一种外部事件。根据上述分析, 自导系统的事件建模如下。
事件1: 变更弹道信号
事件2: 检测到目标
事件3: 未检测到目标
事件4: 识别出气幕弹
事件5: 识别出噪声干扰器
事件6: 识别出点源诱饵
事件7: 识别出尺度诱饵
2.2.3 活动的建模
按照活动的确定原则, 调整水平和垂直舵的角度是和弹道定时器的发出变更弹道信号相关联的。因此, 可以归结为一种活动。调整发射波束偏移角、接收波束偏移角等自导参数是在检测到目标或识别出假目标等事件时做出的, 不会引起状态的改变, 因此是一种活动。关闭和启动弹道定时器与发现和丢失目标2个状态相关联的, 可以视为一种活动。另外, 某些事件发生时需要改变自导状态, 这也是一种特殊的活动。按照上述分析, 自导系统的活动建模如下。
活动1: 调整水平舵的角度
活动2: 调整垂直舵的角度
活动3: 改变鱼雷航速
活动4: 调整发射波束偏移角
活动5: 调整接收波束偏移角
活动6: 调整发射脉冲周期
活动7: 调整发射脉冲宽度
活动8: 关闭弹道定时器
活动9: 启动弹道定时器
鱼雷自导系统未发现目标情况下的逻辑和状态变迁关系比较简单, 此处不予讨论。根据上述所建的状态和事件模型以及自导逻辑, 建立事件-状态变迁关系, 见图1。
鱼雷自导系统中引起状态变迁的事件都是以脉冲周期为间隔发生的, 事件发生后切换到一个新的状态, 然后调整相关的自导参数和弹道控制参数。从状态机的理论来看, 该状态机的一系列活动都只与某一个状态有关。因此, 把自导状态机设计成Moore机更为合适。这也为日后改变自导逻辑提供了方便, 只需更改或加入新的状态和与该状态相关的活动即可, 便于自导程序的维护和升级。
图1 事件-状态变迁图
鱼雷自导逻辑是非常复杂的, 涉及到目标识别、丢失目标后再搜索和水声反对抗等, 其状态数目有好几十种, 采用面向对象的方法处理则需 要设计几十个类, 这无疑增加了程序的复杂性。这里采用流程状态机实现是比较方便的, 其执行图见图2。其中, 活动可以分为入口动作和出口动作2种。入口动作是变迁到新状态时执行的与新状态有关的一系列活动[11], 包括调整波束参数和变更弹道参数等。出口动作是原状态变迁到一新状态中, 执行的原状态出口活动, 主要是把状态设定为下一个新状态。
3.3.1 数据结构及函数的设计
状态和事件的数据结构采用枚举数据类型即可实现, 状态入口动作和状态出口动作分别采用一个函数实现。设计如下。
Event{DetectTarget, IdentifyBlister, IdentifyNois
图2 状态机执行图
DetectFunction() //检测函数
{
TorpedoGuideState= DetectTarget; //完成自导检测过程并对事件变量赋值
}
State_EntryFunction() //状态入口函数
{
AdjustBallisticParameter(); //调整弹道控制参数
AdjustBeamParameter(); //调整波束参数
AdjustPulseParameter(); //调整脉冲参数
}
State_ExitFunction() //状态出口函数
{
TorpedoGuideState=NextState;
//把状态设置为下一个状态
}
3.3.2 程序架构的设计
要实现状态机的基于事件的状态变迁过程, 需要重复判断的选择机制。以C++程序设计语言为例, 采用switch-case语句就可以很好的实现上述状态机的功能。程序架构设计如下。
switch(TorpedoGuideState)
{
case Research: //状态1;
{
Research_EntryFunction(); //状态入口函数
Research_ExitFunction(); //状态出口函数
break;
}
case FindTarget:
{
FindTarget _EntryFunction(); //状态入口函数
FindTarget _ExitFunction(); //状态出口函数
break;
}
.........
default:
break;
}
在鱼雷自导性能的分布式仿真系统中, 对上述状态机模型在鱼雷联邦成员的程序设计中进行了应用。从鱼雷初始搜索开始, 共建立了26个状态模型, 11个事件模型和24种活动, 使用枚举变量定义状态和事件, 利用函数实现特定活动, 采用switch-case语句进行设计。对不同雷目距离、不同自导参数和多种对抗态势下进行了10次鱼雷对潜攻击仿真。其中: 3次结果为鱼雷识别并穿越出噪声干扰器后发现并命中目标; 4次结果为直接发现并命中目标; 3次结果为鱼雷被诱饵诱骗后旋回搜索未发现目标导致攻击失败。上述结果很好地实现了预先设计的逻辑和搜索策略。
有限状态机应用的难点是系统状态、事件以及状态机的正确建模, 本文把有限状态机理论应用到鱼雷搜索策略的程序设计中。通过分析自导逻辑的特点, 研究了自导状态、事件和活动的确定原则, 建立了发现目标情况下自导状态、事件、活动以及状态机的模型, 最后对状态机的执行过程和程序实现进行了研究。基于本文设计的自导程序在鱼雷自导性能仿真系统中进行了仿真验证, 仿真结果表明, 程序运行稳定, 调试和跟踪方便, 尤其是为增加状态、更改逻辑和调试程序提供了便利。
[1] 何兴高, 王忠仁, 刘心松. 有限自动机理论在高速公路收费中的应用[J]. 计算机应用, 2000, 20(3): 59-60.
[2] 张欣. 基于有限状态机的数字同步重频分选器[J]. 系统工程与电子技术, 2001, 22(3): 31-33.
[3] 李凌鹏, 孙文. 有限状态机在防空作战仿真中的应用[J]. 电光与控制, 2005(5): 76-78.
Li Ling-peng, Sun Wen. Application of Finite State Machine in Simulation of Air-defense Combat[J]. Electronics Optics & Control, 2005, 35(5): 76-78.
[4] 张俊. 状态机思路在单片机程序设计中的应用[J]. 今日电子, 2009, 16(2): 37-39.
[5] 陈小琴, 蒋存波, 金红. 状态机原理在控制程序设计中的应用[J]. 制造业自动化, 2007, 29(10): 57-60.
Chen Xiao-qin, Jiang Cun-bo, Jin Hong. The Application of the Finite Automation Principle in Control Program[J]. Man- ufacturing Automation, 2007,29(10): 57-60.
[6] 曹邦武, 姜长生. 基于有限状态机理论的电视指令制导导弹攻击过程研究[J]. 电光与控制, 2007, 38(5): 71-74.
Cao Bang-wu, Jiang Chang-sheng. On TV-command-guided Missile Attacking Process Based on Finite State Machine Theory[J]. Electronics Optics & Control, 2007, 38(5): 71-74.
[7] Drumea A, Popescu C. Finite State Machines and Their Applications in Software for Industrial Control: Meeting the Challenges of Electronics Technology Progress[C]. 2004:25- 29.
[8] 武楠, 房立金, 姜春英, 等. 基于有限状态机的空间对接仿真平台控制系统设计[J]. 机器人, 2007, 24(4): 378-383.
Wu Nan, Fang li-jin, Jiang Chun-ying, et al. Control System Design of a Space Docking Simulation Platform Based on Finite State Machine[J]. Robot, 2007, 24(4): 378-383.
[9] 肖勇军, 施荣华. 基于TMS结构的OSPF邻居状态机设计与实现[J]. 长沙通信职业技术学院学报, 2005, 4(1): 49-52.
Xiao Yong-jun, Shi Rong-hua. Design and Realization of OSPF Neighbor State Machine Based on TMS Architecture[J]. Journal of Changsha Telecommunications and Technology Vocational College, 2005, 4(1): 49-52.
[10] 张静远. 鱼雷作战使用与作战能力分析[M]. 北京: 国防工业出版社, 2005:5-47.
[11] 黎文导, 卢瑜. 有限状态机(FSM)的实现[J]. 青海师范大学学报(自然科学版), 2001, 23(4): 18-21.
Li Wen-dao, Lü Yu. The Realization of FSM[J]. Journal of Qinghai Normal University(Natural Science Edition), 2001, 23(4): 18-21.
Application of Finite State Machine to Program Design of Torpedo Search Strategy
ZHANG Yong-ping, ZHANG Jing-yuan, YIN Wen-jin
(Department of Weaponry Engineering, Naval University of Engineering, Wuhan 430033, China)
A design scheme of torpedo search strategy program based on finite state machine is presented to improve the design efficiency and readability of torpedo search strategy program, and to facilitate the modification of logic and debugging. The definition standard and model of homing state, event, and activity are established by analyzing the torpedo homing logic relations at such stages as searching, pursuit and identification of target. The state transition diagram of homing logic and the implementation of homing program are introduced based on the finite state machine theory. The model and design scheme are validated by simulation, and the results show that the program operation on state machine is stable; the debugging and pursuit are easy; especially, adding state, altering logic and debugging program become convenient.
torpedo; homing logic; finite state machine; search strategy; program design
TJ630.34
A
1673-1948(2012)04-0256-05
2012-03-14;
2012-04-12.
张勇平(1979-), 男, 在读博士, 工程师, 主要研究方向为鱼雷自导技术、水声信号处理及系统仿真.
(责任编辑: 杨力军)