SR20飞机FDR数据批量分析算法实现
2017-03-31孟现召
孟现召
摘 要:在EGView軟件辅助下分析FDR数据是SR20飞机健康状况监控和故障诊断的必要手段,但对机队而言,每天将会产生大量的待分析FDR数据,单靠人工无法完成。采用计算机对大量FDR数据进行初步筛选后再进行人工重点分析将是提高监控效率的有效手段。为此,用VB.NET编写了客户端程序调用客户机上安装的Excel软件对FDR数据进行解读和初步分析,工程师仅重点关注筛选出的需要再次进行人工分析确认的数据文件即可,提高监控效率。
关键词关键词:SR20飞机;FDR数据;批量分析;vb.net;监控效率
DOIDOI:10.11907/rjdk.161945
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2016)008-0147-03
0 引言
通用航空领域受成本等诸多因素的限制,航空器上机载设备相对较为简单[1],在维修实践中维修人员对航空器故障的判断只能依靠飞行员的口头描述和地面测试等,容易受到信息传递质量的影响,特别是对那些在地面测试中难以重现的故障,给工程技术人员排故带来许多不便。
某飞行学院引进的Cirrus SR20飞机上装备的Cirrus Perspective Avionics系统能够将飞行中的相关参数实时记录在FDR(Flight Data Recorder)数据文件中[2-3],产生的数据文件在专用的EGView软件窗口界面中能以曲线图的形式详细展现出各参数的变化过程[4],为工程技术人员事后研判故障提供了更加直观的数据重现。及时分析每天的FDR数据是对SR20飞机进行健康状况监控和故障诊断的必要手段。
但对该飞行学院40架SR20飞机的机队而言,每天都会产生大量的待分析FDR数据,这些数据如果全部都由人工逐一分析的话工作量大且难以保证分析结果的时效性,从而使对飞机的健康状况监控失去意义。
本文讨论基于vb.net[5-6]的Microsoft Windows平台对SR20飞机FDR数据进行批量分析的软件编译实现方法。
1 编译过程
1.1 方案设计
FDR数据文件为逗号分隔值文件(.csv),可以使用Microsoft Office Excel软件打开,这些FDR数据文件存储在飞机Perspective 系统SD卡上。由于分析数据需要占用一定时长,故将数据收集与数据分析分开,批量分析方案分为上传和分析两个部分。上传环节从飞机上取出SD卡并用手持机将数据文件上传至远程数据库[7-8],执行逻辑如图1。
批量分析时,软件数据库下载FDR数据文件[7-8]并调用客户机上的Microsoft Office Excel软件打开该文件,按单元格解读所需的数据并执行预定的判断算法以确定对应的飞机是否存在参数异常,如是则将数据文件上传至指定文件夹中,以备人工介入作进一步分析;如否,则将文件名称写入存档清单后上传文件至远程数据库。批量分析环节的执行逻辑如图2所示。
完成初步筛选后工程师只需要重点关注需进行人工分析核实的FDR数据文件即可,提高监控效率。
1.2 创建工程项目
启动Microsoft Visual Studio 2008,配置开发环境为Visual Basic,使用Windows窗体应用程序模板创建具有Windows用户界面的应用程序项目,选择.NET Framework版本为3.5。由于需要调用Excel,故需要在工程项目建立后对项目添加Microsoft Excel 12.0 Object Library的COM引用,方法是在“添加引用”的“COM”选项卡中找到Microsoft Excel 12.0 Object Library后“确定”,然后
Microsoft Excel 12.0 Object Library
Microsoft Office 12.0 Object Library
Microsoft Visual Basic for Applications Extensibility 5.3等3个COM引用会被自动添加。然后在窗体代码窗口导入命名空间:
Imports System.Data
Imports Microsoft.VisualBasic
Imports System.IO
Imports System.Data.SqlClient
Imports Microsoft.Office.Interop
最后,按照图2的执行逻辑在设计器窗口窗体容器内添加Label、ComboBox、OpenFileDialog、Button等控件。
1.3 算法编译
1.3.1 上、下载文件算法编译
为防止数据丢失,对FDR数据文档采用二进制数据流形式存入数据库varbinary(max)数据类型字段中[9]。为操作方便,将数据文档与二进制流之间的互转封装为两个函数以便调用,其中数据文档转二进制流函数为:
Private Function returnbinarydata(ByVal fileurl As String) As Byte()
'返回流数据
If fileurl <> "" Then
Dim myfilestream As New System.IO.FileStream(fileurl,IO.FileMode.Open)
Dim streamdata(myfilestream.Length - 1) As Byte
myfilestream.Read(streamdata,0,myfilestream.Length)
myfilestream.Close()
returnbinarydate = streamdata
Else
returnbinarydata = Nothing
End If
End Function
二进制流转数据文档函数为:
Private Function returnfile(ByVal userdata As Byte(),ByVal filename As String,ByVal savepath As String) As Integer
'返回文档
If Directory.Exists(savepath) = False Then
Directory.CreateDirectory(savepath)
End If
If userdata.Length > 0 Then
Dim myfilestream As New System.IO.FileStream(savepath & filename,IO.FileMode.Create)
myfilestream.Write(userdata,0,userdata.Length)
myfilestream.Close()
returnfile = 1
Else
returnfile = 0
End If
End Function
采用流数据存取的操作方式,避免将数据文档直接存放在网络文件夹中因误修改文件夹路径等原因造成后期调取文档时出现“找不到文件”的错误,在数据库与WinForm客户端程序之间交互数据非常方便。
1.3.2 FDR数据解读算法编译
首先需打开FDR數据文件。在Button的Click事件中定义OpenFileDialog属性并声明相关变量。
OpenFileDialog1.FileName = ""
OpenFileDialog1.Filter = "Excel文件(*.csv;*.xlsx)|*.csv;*.XLSX"
OpenFileDialog1.Title = "请选择拟上传的文件"
OpenFileDialog1.ShowDialog()
获取拟上传文件的文件名和扩展名,对不符合的文件类型做出提醒并终止运行。
Dim fileExtension As String
fileExtension=System.IO.Path.GetExtension(OpenFileDialog1.FileName).ToLower()
Dim openfilename As String
openfilename = OpenFileDialog1.FileName
调用客户机系统内安装的Microsoft Excel 2007,并在后台完成数据解读:
Dim xlsapp As New Excel.Application
xlsapp.Visible = False
xlsapp.Workbooks.Open(openfilename)
Dim myTable As Excel.Worksheet
myTable = xlsapp.ActiveWorkbook.Sheets.Item(1)
Dim rowscount As Integer
rowscount = myTable.UsedRange.Rows.Count
Dim columncount As Integer
columncount = myTable.UsedRange.Columns.Count
Dim teststr As String
Dim r As Integer
For r = 1 To rowscount
teststr = myTable.Cells.Item(r,1).text
Next
从FDR数据文件中获取到的关键受控参数有:发动机转速RPM、进气压力MAP、燃油流量FF、排气温度EGT、气缸头温度CHT、气压高度P.ALT等,这些参数记录在.csv文件特定列的单元格中。以上算法列出了逐行在第1列中取得所需数据的方法,采用同样的方法可实现获取FDR数据文件中任意指定列的数据,即可完成在上传FDR数据文件时对数据进行解读。
1.3.3 判断逻辑算法编译
预置的发动机状况“异常”模型有大车贫油、中转速贫油、过度调贫、爆震、气门卡阻、以及气门疑似烧蚀等,获取到RPM、MAP、FF、EGT、CHT、P.ALT等关键参数后将这些参数与模型特征值进行对比即可捕捉FDR数据中的关键特征点。本文以“大车贫油”为例阐述判断逻辑算法编译的方法。首先声明变量,
Dim RPM As Double
Dim MAP As Double
Dim FF As Double
Dim PALT As Double
当地机场的地面气压高度在200~1300英尺之间,故设置判断阈值为1500英尺,当PALT < 1500时判断飞机在地面;此时推全油门发动机转速应在2650RPM左右,对应的全油门燃油流量FF应大于16GPH,否则判断为大车贫油,将变量isLean赋值为“True”否则为“False”,即完成对“大车贫油”特征的判断。
Dim isLean As Boolean
If PALT < 1500 And RPM > 2600 And FF < 16 Then
isLean = True
Else
isLean = False
End If
其它各“异常”特征点的捕捉方法大致相同,均为将飞机实际运行参数与特征阈值进行组合对比判断即可。
对捕捉到具有“异常”特征的FDR数据在文件名中加入机号和特征描述后转入对应类别的文件夹中由工程师人工介入处理。
2 算例测试
编译完成后,按照图2的逻辑对所编译出的批量分析软件进行了实例测试,如图3所示。
测试表明批量分析软件能够实现对远程网络文件夹中FDR数据文件进行下载、分析和对存在“异常”的数据文件自动修改文件名,软件运行正常;对批量分析后的结果进行人工抽检,分析表明该软件分析的准确性达到了设计要求。
3 结语
数据分析类工具有可程序化的特点,通过合理的算法編译能够实现计算机辅助分析,从而在一定程度上解放人力。编译出的批量分析软件能够完成对大量数据的初步筛选工作,使工程师能够将有限的精力集中在关键数据分析上,保证对飞机健康状况监控的时效性,对更好地保障飞机系统的可靠性具有重要意义。
参考文献:
[1]王铁军.通用航空维修现状与思考[J].中国民用航空,2012(5):18-20.
[2]Cirrus Design Corporation.Airplane maintenance manual for the cirrus design SR20 (Reissue B6)[M].Duluth:Cirrus Design Corporation,2014.
[3]Garmin International Inc.Cirrus perspective line maintenance manual[M].Olathe:Garmin International,2013.
[4]EGTrends.EGView reference guide[EB/OL].http://www.egtrends.com/Home_Page.html.
[5]张梅峰.Visual Basic.NET程序设计与算法基础[M].北京:电子工业出版社,2003.
[6]周元哲.Visual Basic.NET程序设计[M].西安:西安电子科技大学出版社,2014.
[7]郭亮.基于VB.NET的ADO.NET对象与数据库的交互探究[J].数字通信世界,2015(7):46-46.
[8]陈曼.基于ADO.NET数据库访问实例的设计实现与应用[J].软件导刊,2010,9(7):101-103.
[9]刘正龙,罗玉军.基于ASP.NET在数据库中存储二进制图像文件的研究[J].西华师范大学学报:自然科学版,2012,33(4):412-417.
(责任编辑:陈福时)