交互式维护系统中有限状态机的设计与实现
2020-05-16吕镇邦沈新刚邹会荣施伯乐
吕镇邦 沈新刚 邹会荣* 施伯乐
1(航空工业西安航空计算技术研究所 陕西 西安 710068)2(复旦大学计算机科学与技术学院 上海 200433)
0 引 言
机载维护系统是从飞机的多个子系统和成员设备中获取数据信息,并通过嵌入式计算机实现故障诊断与隔离、飞机状态参数监测和交互式维护等功能,为维护人员提供维修服务与技术支持[1-4]的专用系统。
交互式维护是机载维护系统的子系统和核心功能之一。它是由维护人员通过座舱显示器或便携式终端启动的,包含一系列连续测试步骤的成员设备状态检测过程。在不拆卸成员设备的情况下,通过交互式维护过程协助维护人员完成机载设备的系统测试、模糊组故障诊断与隔离、故障确认、校准和调零以及更换外场可替换单元(Line Replaceable Unit,LRU)之后的设备接口和性能测试。
目前,国内飞机外场维护中存在着维护场景复杂、专用设备种类繁多、状态转换频繁、维护过程不规范、智能化支持程度低、维护和维修活动耗时长、成本高昂等诸多问题,常规系统设计方法难以解决。针对上述问题,本文提出了一种基于有限状态机的交互式维护系统开发方法,描述了系统设计框架和通信协议,设计了符合飞机维护领域标准(ARINC624标准,A624)的状态机模型,并解决了状态机模型的多线程设计和同步问题,实现了人机交互维护过程,使得交互过程规范、通用和可控。
1 有限状态机基本原理
有限状态机(Finite State Machine,FSM)简称状态机,因状态都是离散或可枚举而得名。它是一种有限数目的状态以及在这些状态之间转移和动作等行为的数学模型[5],也是嵌入式系统设计中一种重要的、容易建立的、应用较为广泛的、以描述控制特性为主的建模方法。它贯穿了从系统分析到设计的所有阶段,描述了研究对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。
FSM一般定义[5]为:M=(Q,I,O,q0,δ,λ),其中:Q是状态集合,包含模型中的所有状态;I是模型中的所有输入;O表示状态的所有输出;q0表示初始状态;δ是状态转移函数,QxI→Q;λ为输出函数,QxI→O。FSM由状态集、事件集、行为及迁移四大要素组成。
2 交互式维护系统
2.1 设计框架
交互式维护功能作为机载维护系统的子系统和核心功能之一,为维护人员和成员设备之间的交互式测试提供了帮助和服务。它由维护人员手动操作座舱显示器或便携式维护终端(Portable Maintenance Access Terminal,PMAT)显示屏上的可视化测试界面,选择维护测试界面上所提供的菜单和消息指令,发送测试请求命令。交互式维护系统将会显示合适的预定义测试条件和交互式的消息指令,并将测试请求命令转发给指定的成员设备。当成员设备接收到请求命令之后,需要作出响应动作,执行合适的测试项。最后,利用相关的通用工具,根据响应内容,生成可视化的测试响应界面及测试数据,返回给两种显示屏显示,供维护人员使用。这一过程可反复执行,直到交互式测试过程结束为止。
交互式维护系统的设计框架包括6个功能单元,分别是:配置文件管理单元、A624管理单元、页面管理单元、XML-RPC(XML-RPC,XML Remote Procedure Call)管理单元、网络接口单元和公用库。如图1所示。
图1 交互式维护系统的设计框架
图1中,当交互式维护系统开始初始化时,配置文件管理单元读取由相关通用配置工具开发的页面配置数据库、数据源配置文件。页面配置数据库定义了交互式页面控件信息、成员设备信息、通信协议、成员设备自定义信息等,而数据源配置文件中定义了软件接口信息等。
A624管理单元负责控制交互式状态机模型,管理各个状态之间的跃迁,和成员设备一起完成交互式测试与维护。当A624管理单元监听到来自Web人机界面的维护人员请求,且有请求事件发生时,状态机接收请求,根据请求类型作出相应的处理,之后以XML-RPC的形式将结果进行封装并发送给成员设备。同时,该管理单元还要监听来自成员设备的响应。当成员设备接收到维护人员请求时,成员设备作出响应,状态机模型收到响应之后,将其插入一个输出队列并设置输出事件。A624管理单元必须按照ARINC624标准[6]的要求打包测试命令或响应数据帧。
页面管理单元负责控制交互式维护测试页面,当收到来自Web人机界面的测试请求命令后,向A624状态机模型发送测试请求,从A624管理模块获取成员设备响应信息,并从数据库中获取当前页面的控件信息,组织成可显示的格式化页面信息,通过XML-RPC管理单元把页面内容发往Web人机界面,并在座舱显示器和PMAT屏幕上显示相关页面内容。
XML-RPC管理单元负责各单元模块的解析、处理从网络接口发送和接收到的XML-RPC命令或页面信息,它是维护系统和Web人机界面之间进行交互的数据接口。
网络接口单元负责套接字管理,为基于TCP、UDP的网络数据发送、接收提供接口函数,为维护系统和Web人机界面、成员设备之间的通信提供便利。
公用库主要提供多种函数,用于支持交互式维护系统的其他功能。如线程函数、数据缓存函数、链表、队列函数、校验等功能函数。
2.2 通信协议
由于交互式维护过程比较复杂,3个状态机模型之间进行通信的协议都是定制协议。在定制过程中需要最大限度地提高灵活性,使其具有良好的增长潜力。同时,该通信协议的设计应与机载系统的其他通信协议保持一致,应完全符合飞机维护领域的标准。交互式维护系统的通信协议格式包含消息头、消息标识、消息状态和消息内容,共4部分组成。其中:消息头记录了发送消息的应用程序ID,表示消息是由哪些功能软件发出的,如故障诊断与报告或飞机状态监测等;消息标识记录了消息名称和消息的传送方向,如获取测试进行中的消息命令,是A624状态机发送请求命令给成员设备;消息状态记录了4种状态:无数据、正常操作、功能测试和无需计算数据;消息内容以字符串的方式记录了具体的传送内容。
2.3 状态机的优势
由于交互式维护系统本身具有复杂的交互性和多样的交联性,系统共设计了3个状态机模型,分别为:
1) 维护人员状态机模型:负责向成员设备发起请求。
2) A624状态机模型:负责接收维护人员发送的请求,并将请求协议封装成测试命令,转发给成员设备;根据成员设备响应反馈,结合相关数据形成的页面信息,将其发送给维护人员的显示终端。
3) 成员设备状态机模型:负责执行消息命令,并将响应反馈给A624状态机模型。
在交互过程中,3个模型相互配合、协同工作才能完成整个请求响应过程。为了满足复杂的通信协议、丰富的消息类型、频繁的请求响应,系统软件设计以A624状态机模型为核心,采用双端设计,既要考虑维护人员的操作请求状态,又要讨论成员设备的响应状态。3个状态机模型根据不同时刻不同请求命令和响应消息,形成闭环,完成人机交互过程。
为了明确各成员设备的具体行为,直观清楚地表述状态之间的关系,交互式维护系统应用有限状态机的基本原理,设计了数量较多的状态集和事件集,通过当前的一组输入和已知的状态,根据不同的测试指令和反馈消息完成状态迁移并进行交互测试。
3 交互式维护系统中有限状态机
3.1 状态机模型交互关系
为了顺利地完成维护人员和成员设备之间的交互式维护过程,需要维护人员状态机模型、A624状态机模型及成员设备状态机模型三者之间的协同工作。它们三者之间通过事先约定的通信协议,采用请求命令和响应命令(XML-RPC方式)的应答模式,利用3个状态机模型的状态迁移,将维护人员的请求命令通过A624状态机模型转发给成员设备状态机模型。当成员设备接收到请求命令之后,首先响应请求命令,然后进行相应动作的处理,使用通用配置工具组织交互式维护测试页面,获取数据信息,最后将准备好的页面信息发送给A624状态机模型,将页面信息回显到座舱显示器和PMAT显示屏上。3个状态机模型之间的请求、响应的交互关系如图2所示。
图2 状态机模型之间的交互关系
3.2 状态机模型设计
交互式维护系统中设计了维护人员状态机模型、A624状态机模型和成员设备状态机模型。此处着重讲述A624状态机模型的具体设计。为了符合飞机维护领域的业内标准,A624状态机模型设计时完全遵循ARINC624协议[6-7]。该状态机模型定义了6个测试状态,8个消息及命令,主要负责交互式测试过程中6个状态之间的迁移,当收到触发事件,状态机模型就根据事件集进行状态跃迁。
3.2.1 状态集设计
在设计交互式维护系统中的状态机模型前,首先需要确定维护人员的3个状态和4个事件,完成维护人员状态机模型的设计。然后,根据交互式维护系统的需求定义,确定A624状态机模型的6个状态和8个事件。最后,确定成员设备状态机模型的3个状态和7个事件,完成成员设备状态机模型设计。
A624状态机模型提取出如下的6个状态,形成状态集合:
① 维护等待禁止响应状态;
② 维护正常状态;
③ 维护等待测试状态;
④ 维护执行测试状态;
⑤ 维护等待操作状态;
⑥ 维护等待终止响应状态。
3.2.2 事件集设计
通过状态集可以设计出状态转换条件所需的事件。A624状态机模型的设计过程中,事件集大致包含如下消息及命令:
① 发送维护测试运行请求命令;
② 发送维护测试中止请求命令;
③ 发送显示命令请求;
④ 发送维护测试继续请求命令;
⑤ 接收正在维护测试响应;
⑥ 指明当前存在的禁止条件,接收禁止维护测试响应;
⑦ 确认当前维护测试中止命令;
⑧ 测试完成,发送维护测试完成命令。
3.2.3 事件和状态转换模型
当交互式维护系统加电初始化之后,A624状态机模型处于“正常状态”,开始监听维护人员的请求命令及成员设备的响应命令。当维护人员发出维护测试请求命令,传输测试运行命令操作,状态机模型进入“等待测试”命令状态。若状态机模型接收到成员设备的测试中响应命令,则向Web人机界面显示成员设备测试中,进入“执行测试”状态,等待成员设备状态机模型响应,并生成具体的测试数据。如果状态机模型接收到成员设备的状态信息,且测试完成位有效,则向Web人机界面显示测试结束命令,并返回“正常状态”。若状态机模型接收到维护人员的继续请求命令,则向成员设备发送“继续测试”命令,并返回“执行测试”状态,重复上述过程。若状态机模型接收到设备中止响应,则向Web人机界面显示测试中止命令,并返回“正常状态”。其状态转换模型如图3所示。
图3 A624事件和状态转换模型
3.2.4 状态机多线程设计
为完成人机界面和成员设备之间的交互测试,交互式维护系统需要同时创建4个线程,实施A624状态机多线程同步运行管理模式。创建的4个线程分别是:网络管理线程、A624状态机线程、事件管理线程和XM-LRPC管理线程。其中,网络管理线程和事件管理线程定义为周期性线程,其余的2个线程定义为非周期性线程。4个线程之间的运行关系如图4所示。
图4 A624状态机多线程运行关系
图4中,网络管理线程主要负责实时监听端口,接收来自成员设备的数据信息,解析A624命令或响应消息,把消息加入A624输入队列,并设置消息事件。
A624状态机线程主要负责状态机的6种状态之间的条件迁移。A624状态机基于不同的输入,包括维护人员的操作指示和成员设备的命令或响应消息,在各个状态之间跃迁,并向成员设备发送操作命令,向维护测试页面反馈执行结果。
事件管理线程主要负责检索事件列表,当发现有事件项被设置时,触发事件。事件管理线程是周期性线程,每秒执行1次,它为网络管理线程、A624状态机线程、XML-RPC管理线程之间的同步提供支持。
XML-RPC管理线程主要负责接收来自Web人机界面的XML-RPC请求、创建A624状态机请求,并设置请求事件,等待状态机返回请求执行结果,组织页面控件信息,和执行结果一起生成维护测试页面,以XML-RPC的形式输出到Web人机界面显示。
3.2.5 状态机多线程同步
A624状态机的输入、输出数据必须同步,以确保机载设备测试状态和维护终端显示内容的实时性和一致性。交互式维护系统采用4个线程同步运行,并通过队列事件实现各线程之间的数据同步。
当交互式维护系统运行时,网络管理线程和A624状态机线程之间的同步需要A624输入队列作为接口。当收到来自成员设备的命令或响应后,网络管理线程把A624命令或响应消息加入A624输入队列。A624状态机线程从A624输入队列取出命令或响应消息,基于消息内容产生状态跃迁。
当交互式维护系统运行时,XML-RPC管理线程和A624状态机线程之间的同步需要A624请求队列作为接口。当收到来自Web人机界面的操作指示后,XML-RPC管理线程创建A624请求,并加入A624请求队列。A624状态机线程从A624请求队列取出维护人员操作指示,根据指示内容产生状态跃迁。
当交互式维护系统运行时,A624状态机线程和XML-RPC管理线程之间的同步需要A624输出队列作为接口。当收到成员设备命令或响应后,A624状态机把命令或响应消息加入A624输出队列。XML-RPC管理线程从A624输出队列取出命令或响应消息,同当前页面控件信息一起,组织成页面信息输出到Web人机界面。
网络管理线程、XML-RPC管理线程通过事件列表和A624状态机线程同步需要事件列表作为接口。运行时,当网络管理线程、XML-RPC管理线程、A624状态机线程向各个同步队列中插入命令或响应消息后,设置队列事件,事件管理线程周期性的检索事件列表,当发现某一同步队列中的事件被设置后,触发事件,通知其他线程从队列中提取命令或响应消息。
3.3 状态机模型实现
机载维护系统中交互式维护功能的实现是借助于SCADE、Eclipse、Java和VxWorks等开发环境,以维护人员操作的测试页面、交互式维护系统和成员系统数据仿真平台所产生的数据信息组成,实现了维护人员和成员设备之间的交互式维护过程。并为维护人员呈现了可视化的测试界面,完成了维护人员、交互式维护系统和成员设备之间的数据请求和响应功能,确认了成员设备的正常状态或故障状态,验证了3个有限状态机模型在交互式维护系统开发中的正确性。状态机模型实现结果如图5所示。
图5 状态机模型实现结果
通过在机载维护仿真平台中的使用,具有状态机模型的交互式维护功能符合飞机维护领域的规范,支持多种测试场景的用户可配置操作,提供测试前置信息、测试抑制信息、测试干扰信息、测试交互信息、测试状态信息和测试结果信息的规范化显示;支持多线程处理机制,在每个线程中分别独立运行图2中的3个状态机,同时,并发管理多个成员设备的交互式测试,处理响应速度快,并支持处理能力的进一步扩展。
4 结 语
本文提出了一种基于有限状态机的交互式维护系统开发方法,描述了系统设计框架和通信协议,设计了3个典型的符合飞机维护领域标准的状态机模型,详述了各状态之间的状态迁移,解决了状态机多线程设计和同步问题,实现了维护人员和成员设备之间的交互式维护过程。通过在机载维护仿真平台中的实际应用和检验,证实了采用有限状态机的设计理念可准确描述被测对象的行为,提高复杂软件系统的通用性和健壮性。该设计理念完全可用于同类或其他相关系统的软件设计与开发中[8-9]。交互式维护功能作为机载维护系统的主要支撑技术,为后续飞机型号的机载维护系统开发奠定了良好的技术基础。