飞机维修现场控制系统的设计与实现
2011-11-27张华伟周桂林
张华伟,周桂林
(中国南方航空股份公司北京分公司,北京 101318)
1 系统需求
中国南方航空公司北京分公司是一个年轻的公司,目前南航在首都机场每日起降220余架次。这对于南航北京分公司年轻的飞机维修队伍是一个巨大的挑战。飞机维修任务量大、时间集中、机型繁多和维修人员少、队伍年轻、缺少信息化手段成为主要矛盾。此前,因信息不畅时有漏接飞机事件发生。传统的维修调度和现场生产控制流程如下:
1)MCC(维修控制中心)主控人员监控运行网,获知飞机运行动态信息;
2)MCC副控根据机型预分配任务;
3)MCC副控准备工卡,对讲机联系车间领工卡;
4)车间工卡员领工卡,安排生产人员;
5)车间生产人员完成工作,签完放行单,对讲机通知MCC主控。
该流程存在如下弊端:
1)信息传递主要依赖于电话和对讲机,存在不可回溯性;
2)生产调度和工卡准备完全依赖人工,存在不科学不合理,信息不全面,存在人工失误的可能;
3)信息缺少必要的回馈,MCC很难监控生产人员的工作进度;
4)飞机时间的变更通知完全依赖于MCC的人工监控,存在漏通知的可能。
2 系统设计
2.1 基于信息化的流程再造
借助信息化手段,针对传统业务流程进行改造,如图1所示。
1)系统按飞机进港和出港把来自SOC系统的动态数据匹配起来。并自动填入来自机场的停机位信息。
2)系统自动把前后4 h内航班维修任务的进行状态呈现给MCC,并以不同颜色显示需关注的内容。
3)系统根据机型自动把任务预分配给相应的车间。MCC可人工进行调整。
4)工卡员只要双击1架飞机,就可以进行派工。系统自动弹出人员列表供选择,维护人员和具有放行能力的人员自动分开。系统对人员进行如下过滤:签入人员,具有该机型工作能力的人员,具有相应维护级别能力的人员;并把当前无任务的人员排在前面,有任务的人员排在后面,同时标出所在停机位和派工时间。
5)工卡员双击飞机号对应工卡栏,系统自动打印任务单和对应工卡。任务单上具有如下信息:飞机信息、航班信息、停机位、预达时间、起飞时间、飞机主要配件件号、飞行中的故障信息等。
6)维护人员领取工卡,工卡员双击置入领卡时间。维护人员到达停机位要通过对讲机向MCC报告,MCC置入到位时间。
7)放行人员签字完毕,通过对讲机呼叫MCC,MCC双击飞机号对应放行时间栏,系统自动置入放行时间。
8)维护人员完成工作后将工卡交回,工卡员双击交卡时间栏置入时间,完成工作。
2.2 基于颜色的警告系统
上述流程中各个时间点和完成状态系统均有记录,并通过相应的监控界面展示给相应的岗位,如图2所示。如果有个别关键点没有及时完成或者机位冲突等需要系统提醒或警告用户时,系统采用基于颜色的警告方案。该警告系统采用国际标准四级警告,自轻至重依次为蓝色、黄色、橙色和红色。用户在使用系统时,只需关注颜色点即可不会漏掉关键工作,大量节约人力,避免人为差错。
2.3 系统的数据库设计
系统核心数据库是运行数据库,因本系统是维修控制系统,需其他相关系统和数据的支持,所以会涉及到一系列的数据接口。如图3所示,首先需要南航SOC数据的支撑,本系统用到的飞机执行航班的动态数据主要来源于此;此外需与地面运行服务系统BOSS相互交换数据;南航飞机资料库提供飞机的基本信息和主要航材件号;维修单位数据库提供航线各个航站所具备的机务维护资质信息;维修人员数据库提供机务维修人员的维修能力和护照信息;航线工卡数据库提供飞机航线维护的各种工卡。系统按照业务逻辑组织各种数据,呈献给用户的是一个完整的数据视图,涵盖用户工作流程中所需要的主要信息。
图2 系统警告Fig.2 Warning of system
2.4 体系结构
系统由现场运行,业务逻辑层,数据访问、数据接口层,数据库服务器4部分构成,如图4所示。
现场运行的主要功能是现场信息传递及现场控制,主要包括MCC监控页面、车间监控页面、现场管理页面、外站运行监控页面等,实现现场运行信息在各个页面间快速、准确传递,支持现场工作人员监控飞机运行状态、生产调度、车间人员工作分配、车间工作情况监控等。
业务逻辑层,主要负责系统的数据集成,工作流程的系统实现,提供后台维护等,将从其他系统提取的数据进行整合,实现相应的匹配算法、排序算法等,支持后台维护人员、机型数据,为现场控制提供人员、机队等详细信息。
数据访问层、数据接口层提供数据的高效访问。数据库服务器采用SQL Server2005为数据存储提供支持。
3 技术实现
本系统采用微软.Net技术,使用C#语言通过Visual Studio 2008 R1实现。系统是采用B/S(浏览器/服务器)架构的Web系统,为了加强操作和交互性及用户体验,系统使用了大量的AJAX和JavaScript技术。
3.1 基于ADO.NET Entity Framework数据访问层
运行数据库采用微软的SQL Server 2005,微软.Net提供了一系列的数据访问技术,特别是针对SQL Server数据库做了优化。其中ADO.NET Entity Framework是最新推出的以ADO.NET为基础所发展出来的对象关系映射(O/R Mapping)解决方案,如图5所示。
Entity Framework利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象(entity),而数据字段都转换为属性(property),关系则转换为结合属性(association),让数据库的E/R模型完全地转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。而在抽象化的结构之下,则是高度集成与对应结构的概念层、对应层和储存层,以及支持Entity Framework的数据提供者(provider),让数据访问工作得以顺利与完整的进行[1-2]。
1)概念层:负责向上的对象与属性显露与访问。概念层定义了对象模型(object model),让上层的应用程序可以如面向对象的方式访问数据,概念层结构使用CSDL(conceptualschemadefinitionlanguage)语言定义。
2)对应层:将上方的概念层和底下的储存层的数据结构对应在一起。对应层结构使用MSL(mapping specification language)语言定义。
3)储存层:依不同数据库与数据结构而显露出实体的数据结构体,和Provider一起,负责实际对数据库的访问和SQL的产生。储存层结构是负责与数据库管理系统(DBMS)中的数据表做实体对应(physical mapping),它使用 SSDL(storage schema definition language)语言定义。
3.2基于LINQ的逻辑处理
LINQ(language integrated query)是 Visual Studio 2008中的领军人物。借助于LINQ技术,可以使用一种类似SQL的语法来查询任何形式的数据。目前为止LINQ所支持的数据源有SQL Server、XML以及内存中的数据集合。开发人员也可以使用其提供的扩展框架添加更多的数据源,例如MySQL、Amazon,甚至是Google Desktop。
使用LINQ以完全面向对象的方式操作来自实体对象模型中的对象集,从而满足业务逻辑的需要[1-2]。
3.3 基于飞机号的航班匹配
基于飞机号的进港航班和出港航班的智能匹配是本系统的关键逻辑之一。
从SOC获取的航班信息是以航段为单位,即一个进港航班、一个出港航班分别是一条信息,现场控制系统是基于对飞机的,需将进、出港航班以飞机号进行匹配,将一次进港航班和一次出港航班联结为一条完整的进出港航班信息,该信息的前半部分是进港航班数据,后半部分是出港航班数据。为此,根据航班情况设计匹配算法如下。
1)1架飞机1天只执飞1个航班。就以该航班为基础,在系统中新建一条信息。
2)1架飞机1天执飞多次航班。分几种情况:①如果没有前飞,以出港航班为基础新建一条信息。②如果没有后续航班,以进港航班为基础新建一条信息。③其他情况,以一次进港,一次出港2个航班为基础,创建一条包括进出港航班数据的信息。
以1架飞机为例,系统从SOC提取出该飞机今天执飞航班数量,并按预计起飞时间升序排序,判断第1个航班是进港还是出港,如果是出港,就以该航班为基础在系统新建一条信息。如果是进港航班,判断是否有后续航班,如果没有,就将该航班以一条信息存进系统;如果有,就以最近出港航班匹配进港航班并存进系统;然后判断是否还有进港航班,如此循环,直到所有航班匹配完成。
为了更好地关注当前进出港航班信息,将航班进行排序是需要考虑的重要问题之一。系统按照未进港航班按预计到达时间排序,进港后按预计起飞时间排序的原则,设计了智能排序算法,以保证将当前需要关注的进出港航班信息有序地呈现在用户面前。其核心就是设定时间变量,在航班进港时,将时间变量置为进港预计到达时间,航班进港后,将时间变量置为出港预计起飞时间。
3.4 跨日期航班的排序处理
在系统中,有一部分特殊航班需要特别关注,那就是跨日期航班。对于这类航班,首先要解决的是排序问题,采用了如下解决方案:
在系统中设定一个时间点,如凌晨3:00,在日历天的当天,判断当前和时间点的关系,如果当前时间大于时间点,则取当天的航班和日历天明天的航班信息,并将明天的航班时间加24 h;如果当前时间小于时间点,则取日历天昨天的航班和当天的航班,并将今天的航班时间加24 h。这样就解决了跨日期航班的排序问题。
3.5 基于AJAX和JavaScript的页面优化
为了改善用户体验,实现类似于桌面系统一样的快捷操作,系统使用了大量的AJAX和JavaScript技术。
由于系统的实时性要求比较高,使用了AJAX技术,用JavaScript发送一个XmlHttpRequest给服务器,然后再用传回的数据通过JavaScript实现页面的局部刷新,减轻和服务器交换数据的压力,减少带宽,提高系统运行效率[3-4]。
系统通过重写Render方法、创建公共跳转页面等方法,用JavaScript技术实现了点击、双击等类似于桌面系统的快捷操作。用户能方便地通过点击、双击等查看重要的提示信息、与系统交互,如各起降机场相关信息、执飞航班飞机详细参数等。
应用JavaScript实现的悬浮导航栏,不仅方便用户操作,更使整体界面简洁明了,提高了用户体验。
4 结语
飞机维修现场控制运行系统的成功开发和推广,为进一步实现地面运行控制全面信息化奠定了基础,必将为民航信息化注入新的生机与活力。
[1]哈密尔顿.ADO.NET 3.5经典实例[M].北京:机械工业出版社,2009.
[2]张 骏.ADO.NET数据库应用开发[M].北京:机械工业出版社,2008.
[3]章产民.ASP.NET3.5AJAX客户端编程精选166例[M].北京:科学出版社,2009.
[4]马劳克林.深入浅出Ajax[M].南京:东南大学出版社,2008.