数据分析软件的设计和实现

2015-07-02 16:08李珅
山东工业技术 2015年12期

摘 要:航空设备上传数据的分析存在数据量大、数据不直观、关键数据段不易捕捉等问题。针对这些问题,作者提出了一个软件解决方案—数据分析软件。本文介绍了该软件的框架结构和几个关键类(class)的设计和类之间的逻辑关系,并展示了该软件在实际工作中的效果。最后分析了数据分析软件的扩展性和应用前景。

关键词:类;DataLine;Translator;DataDrawer

航空设备数据分析一直是一个难题,因为数据按ICD协议上传,需要转化为可读数据才能分析设备的运行状态。但是设备的上传速率一般在毫秒级,所以设备运行一个小时可以输出上百兆的数据,人工分析这些数据费时费力且错误率高,容易错过关键数据。

针对这种情况,作者设计了一种专门分析设备上传数据的软件(简称数据分析软件)。使用数据分析软件处理百万行的数据只需要不到一分钟的时间,而且该软件可以将数据制成曲线,可以更容易地捕捉到关键数据。

1 数据分析软件

数据分析软件包含两个模块:数据转换模块和数据绘制模块。

1.1 数据转换模块

1.1.1 时间类

航空设备上传的数据一般以时间为基准,因此数据转换时需要保留原始数据的时间信息,这样才能将数据绘制成以时间为X轴的曲线。时间类的定义如图1:

基类Time继承了IComparable接口,所以Time类重载了 “!=”,” <”, “>”,”==”四个操作符,这样Time类的对象之间可以比较大小,所以转换后的数据可以按时间前后排序。

1.1.2 数据类

在数据分析软件中,数据是以行为单位的,每一行数据有多个域,不同行数据的域名相同,域内的数据不同。数据行类定义如图2。

DataLine的对象代表一行转换后的数据,ToString接口可以将DataLine里存储的数据以文本的形式输出。DataLine是一个抽象类,需要用他的子类实例化对象。由图可见,MLSData集成了DataLine类,在成员变量中加入了一个MLSTime的对象_time用以表示该行数据的上传时间,并且可以用CompareTo接口比较两个MLSData对象的时间先后。其实MLSData的CompareTo接口只是调用了成员变量_time的CompareTo,如图3。

1.1.3 翻译器类

翻译器实现的功能是将一行原始数据转换为可读数据,翻译器定义如图4。

Translator是一个抽象类,其中定义了一个抽象函数Translate,这个函数有一个类型为String的形式参数data,并返回一个DataLine类(或其子类)的对象。其中data表示一行文本格式的原始数据,返回值DataLine表示转换后的数据。当需要分析按新版本ICD协议上传的数据时,只需创建一个新的Translator子类,并按ICD协议重写Translate函数即可。

1.2 数据绘制模块

数据绘制模块类关系图如图5:

父类DataDrawer是一个抽象函数,他实现了绘制曲线的一些基本功能。子类MLSDrawer集成了DataDrawer的基本功能,并添加了数据段放大功能。MD_WarningLine添加了告警线的显示功能,分析人员可以清晰地看到数据告警的位置,并针对该段数据进行分析。MultiLineDawer添加了多曲线绘制弄能,可以将多组数据的曲线绘制在同一坐标系内,让分析人员可以进行多组数据间的交叉比对。

2 实际应用

如图6,设备上传数据经数据转换模块处理后输出可读数据。

数据绘制模块读取分析结果数据后,可以将结果中的一组或多组数据绘制成曲线。

在曲线绘制区域内拖动鼠标可已放大局部数据,如图9。

3 结语

本文介绍了一种数据分析软件的结构设计和实现方法。在实际应用中,数据分析软件大大提高了数据分析和设备错误排查的效率。该软件的应用并不仅限于航空数据的分析,实际上它可以翻译和绘制任何种类的数据,但原始数据必须满足以下两个条件之一:(1)原始数据含有时间信息;(2)原始数据不含时间信息,但数据以固定速率上传。第二种情况下需要在数据分析软件中扩展一个TimeGenerator类输出等间隔的MLSTime类对象,并将该对象加入转换后的DataLine中。可见随着数据分析软件的不断扩展,该软件的应用领域会越来越广。

作者简介:李珅(1981-),男,陕西耀县人,硕士研究生,研究方向:数字信号处理。endprint