基于Android的综合航电数据监控平台的研制
2016-11-17王海斌丁发军
王海斌,钱 伟,丁发军
(中国民航飞行学院 飞机修理厂,四川 广汉 618307)
基于Android的综合航电数据监控平台的研制
王海斌,钱 伟,丁发军
(中国民航飞行学院 飞机修理厂,四川 广汉 618307)
分析了通航领域中综合航电系统数据传输的现状,讨论了针对航电系统数据传输进行地面在线监控的必要性;并根据航电系统的工作原理和数据监控的研发流程,研制了一款基于嵌入式操作系统的数据监控平台;监控平台硬件部分在Arm处理器基础上,设计并实现了数据采集、处理和电源管理等一系列功能模块;平台软件的开发基于嵌入式Android系统,在该系统环境下设计了监控平台软件构架;并开发了测试资源的底层驱动层、硬件抽象层(HAL) 、本地调用层(JNI)和应用程序;通过多部被测航电系统进行验证,该监控平台运行稳定,系统误差可忽略,满足了航电系统数据监控的实际需求;从工程应用结果表明,该综合航电系统数据监控平台已通过民航局地面测试项目认证,并应用于实际生产中。
航电系统;数据监控; Android
0 前言
随着通航产业的发展,新置通用飞机已全部安装综合航电系统。综合航电系统功能先进、操作便捷,但整个系统运行依赖于高速数据传输模式,若数据传输通道出现异常,将会严重影响飞机安全飞行[1-3]。为确保航电系统数据传输的安全性,对传输通道进行定期检测显得十分重要[4]。如何在地面构建一个数据监控平台,实现对航电系统数据传输高效地检测成为本文研究的重点。便捷高效地实现数据通道检测不但能够确保系统安全运行,还能够提前发现系统潜在故障,并且能够通过检测平台确认故障子部件,为技术人员维修排故提供重要的依据[5]。
本文针对某型综合航电系统进行数据监控平台开发,该型综合航电系统为目前通航应用最为广泛的型号,其数据传输采用高速以太总线完成[6-7]。本文在搭建相关硬件平台的基础上,应用了嵌入式开发技术,并在Android系统下开发了相关驱动及应用程序。下面结合数据监控平台的研制过程,详细阐述其系统组成构架、软硬件关键技术及其工程应用结果。
1 系统结构
综合航电系统主要由显示组件、核心组件、航姿组件、音频组件、大气参数组件、发动机参数组件和应答机组件等7个组件组成[8-9]。其中,核心组件是交联综合航电系统的枢纽,各组件的传输数据经过核心组件统一转换为高速以太数据格式,传输给显示组件。系统控制指令也是通过该高速以太数据经核心组件,传输给各功能组件[10]。因此,实现对高速以太数据的监控和测试成为本监控平台研究的重点。数据监控平台作为一个节点嵌入到综合航电系统中,处于实时接收和数据处理的位置,如图1所示。
图1 监控平台与航电系统连接图
2 监控平台硬件组成
监控平台硬件结构主要由数据处理模块、数据采集模块、电源模块、存储模块等组成。数据采集模块利用以太总线与航电系统实现连接,该模块实现了数据接收。平台通过数据处理模块进行算法处理,并通过用户界面实现系统控制,其系统组成如图2所示。
数据处理模块中CPU处理器采用TI AM3358BZ,其主频可支持1 GHz,可轻松实现对以太总线数据进行一系列处理[11]。在总线传输数据协议方面采用IEEE 802.3标准网络协议,与航电系统以太协议保持一致。数据采集模块以太网收发器采用RTL8211E网络芯片,该芯片是瑞昱最新推出,并支持1000Base-T。电源管理芯片采用TPS65910电源管理芯片,该芯片是TI推出的针对CPU供电的电源管理IC,内部集成了3个降压,1个升压以及8个差分电压,满足了平台所有特定的电源需求。显示模块采用三菱GT1275-VB 10.4寸触摸屏,功耗较低且操作便捷。平台的采集数据以及处理结果可自动至外部存储模块,该模块是由SD卡存储模式实现。
3 监控平台软件开发
3.1 监控平台Android系统架构
Android是Google开发的基于Linux开源手机平台,它包括操作系统、应用程序和用户界面。虽然Android最初作为手机软件平台的操作系统,但其本质确是一款非常优秀的嵌入式开发平台[12]。考虑到Android比传统Linux系统更加强大,在设计开发航电系统监控平台时采用Android4.0作为操作系统。
但由于Android在系统构架很大程度上为实现手机功能进行设计,因此,在针对监控平台开发时,就必须对Android系统构架进行一系列修改。将通话、通讯录以及短信等模块删除,仅留下平台所需模块—Android核心模块,主要包括Package Manager 、System Service、Hardware Service和System Server等。经过定制和修改过的Android系统架构如图3所示。
图3 平台Android系统架构
监控平台软件系统共分4层:最底层为Linux核心及驱动层,该层封装了相关硬件设备,为上层提供了统一接口,可移植性极强;第2层为系统运行库层,提供系统函数库组件;第3层为应用程序框架层,包含所有开发所用各类库;顶层为应用程序层,包括系统应用程序模块的开发。
3.2 监控平台驱动开发
Android系统驱动程序开发基于Linux内核基础上进行的,其应用程序使用Java开发,所以应用程序在调用设备驱动时并不能像直接调用,必须通过Java虚拟机的本地调用方法(JNI)实现。另一方面,为增强驱动程序可移植性,在Android架构添加一个硬件抽象层(HAL),从而为硬件设备的调用提供一个高级封装[13]。
监控平台功能运行最终通过应用程序来实现,在应用层中系统控制程序调用平台控制服务。平台控制服务通过JNI方法使得虚拟机加载本地库,然后向HAL层获取共享库文件(*.so),由共享库文件调用在Linux内核中的设备驱动。图4为监控平台Android驱动程序架构设计。从驱动程序架构来分,整个驱动程序设计可分为:底层驱动设计、硬件抽象层(HAL)设计、本地调用层(JNI)设计、平台控制服务层设计4个层次。
图4 Android驱动程序架构
3.2.1 底层驱动设计
驱动程序的最终目的,是为使上层应用程序能够使用这些硬件提供的服务来为用户提供软件功能。其处理过程是,驱动程序将硬件设备抽象成文件,应用程序将这些文件来进行处理[14]。
对于Linux标准设备驱动程序可直接使用,只需针对具体设备参数修改相应内核驱动程序,然后再进行配置及编译,并增加应用层JNI接口。此类驱动包括以太总线驱动、显示驱动、音频驱动以及存储驱动。
本文以以太总线驱动为例进行说明,在Linux内核中已具备基本网卡驱动,但针对平台采用的DM9000E网卡芯片需要进行一定的修改。
步骤1:需在头文件加入#include
Static struct platform_device TI3358_device_dm9k={
.name = “dm9000”,
.id = 0,
.num_resources = ARRAY_SIZE(TI3358_dm9k_resource),
.resource = TI3358_dm9k_resource,
.dev = { .platform_data = &TI3358_dm9k_platdata,}
};
步骤2:对相应的MAC地址进行修改:
#if defined(CONFIG_ARCH_ TI3358)
Printk(“Now use the default MAC address:10:22:45:67:ad/n”);
步骤3:配置并编译内核;
利用配置菜单对DM9000E网卡进行配置,主要在Networking support和Device Drivers两项进行配置,具体实现如下:
[*]Networking support→
[*]TCP/IP networking
[*]Device Drivers→
[*]Ethernet(10 or 100Mbit)→
<*> DM9000 support
菜单配置完毕,保存并编译出镜像,按此方式依次完成平台所需其余驱动模块的开发。将修改后内核驱动进行重新编译生成zImage.bin文件,移植到嵌入式系统并运行,以便软件系统上层进行调用开发。
3.2.2 硬件抽象层(HAL)设计
硬件抽象层是通过HAL Stub方法实现,HAL Stub是一种代理方法,Stub以共享库(*.so)格式存在。HAL Stub方法访问底层驱动一种间接调用方式,Stub向硬件抽象层提供操作的回调函数。
JNI层访问HAL层时,通过函数hw_get_module ( )获取设备模块ID,并向HAL层申请设备Stub,JNI层获得Stub对象后,即可把Stub作为一个抽象硬件进行操作。图5为平台硬件抽象层(HAL)实现过程。
图5 平台硬件抽象层(HAL)实现过程
下面程序为以太总线Stub的HAL结构体:
struct ethernet_module_t {struct hw_module_t common;}
struct ethernet_module_t {struct hw_module_t common;
int id;
int(*ns_set)(struct ethernet_control_device_t*dev,int32_t ethernet);}
将结构体ethernet_module_t初始化,该结构体包含了Stub的模块信息,主要包括:
Id:Stub的模块ID,通过id查找相关设备;
methods:定义回调函数open(),负责申请结构体ethernet_control_device_t的空间,注册回调函数接口,并打开相关设备驱动。
3.2.3 本地调用层(JNI)设计
硬件抽象层编译后生成“*.so”文件,保存文件系统 “/sysem/lib/”目录下。平台控制服务层运行后,由JNI虚拟机装载本地库函数,具体实现过程如图6所示。
图6 平台本地调用层(JNI)实现过程
平台控制服务层通过调用System.load ()函数,使得JNI虚拟机加载本地库函数,这一过程是虚拟机通过调用JNI_OnLoad()函数来实现:
1)把虚拟机信息保存到硬件抽象层结构体中;
2)建立平台控制服务层与硬件抽象层JNI函数表;
3)返回虚拟机、硬件抽象层使用的JNI信息。
加载完后,平台控制服务层就可以通过JNI函数表把Java函数转换为本地函数执行。
在本地调用层中定义JNI函数方式代码段如下:
public final class Service extends Service.Stub {
static {System.load(“/system/lib/libled.so”); }
private static native boolean as_init();
private static native boolean as_set(int ***);}
3.3 应用程序设计
监控平台应用程序设计方面考虑进行模块化设计,主要分为界面模块、测试模块、故障诊断模块和告警模块4个模块,如图7所示。
图7 系统应用程序架构
测试参数单位理论值(允许误差)被测系统1被测系统2被测系统3被测系统4通道1通道2通道1通道2通道1通道2通道1通道2最大误差RPMr/min2500(±10)25012500249924982501250224992500+2EGT℉1600(±20)16021596160516011597160416051601+5OILPRESpsi115.0(±0.5)115.1115.0115.0115.0115.1114.8115.0115.0-0.2FFLOWGPHgph15(±2)1514151515141515-1ALTFt1500(±20)15021496150315001500150115021500-4HDG°45.0(±2.0)45.045.145.045.045.249.745.045.1-0.3
界面模块采用Activity方式实现,由主界面、模块选择、用户设置和帮助组成。模块选择用于选择测试部件、测试模式以及告警事件的显示和查询等。用户设置用于密码管理、语言切换、时区和时间的设置、网络地址的设置。帮助模块用于为使用者提供在线帮助。
测试模块采用Service方式实现,主要包括数据接收和处理模块,用于数据的采集和处理。数据接收实现监控平台与被测系统的数据通信,并将数据进行存储。数据处理模块针对采集的以太数据进行一系列算法处理,并与标准数据库数据进行参数比对,最终实现传输数据的监控。
故障诊断模块通过操作数据实现的,是在对测试数据分析、评估基础上实现的。针对数据异常情况进行处理,将故障进行定位,最终为用户提供排故指导策略。
告警模块利用Broadcast Receiver方式实现,负责数据通信异常的告警事件,同时调用告警显示界面显示对应的信息。
4 平台测试结果及误差分析
利用综合航电数据监控平台针对4部被测系统全部性能参数进行自动测试,提取测试结果,并进行分析和比对,最终验证监控平台系统误差。考虑到被测系统性能参数较多,本文仅列举了部分较重要参数,实测情况如表1所示。
根据表1列举的测试参数实测情况可知,测试参数误差均在理论允许误差范围内。针对实测参数误差进行分析可知,其误差来源为监控平台和被测系统两部分,而对于监控平台而言,其误差来源于平台软件和硬件资源。
1)误差源1:平台软件方面。
软件方面误差源主要指传输数据处理的实现,即监控平台针对被测系统的传输数据进行一系列处理过程是否产生误差。
被测系统传输数据总线为Ethernet协议,该总线协议为国际通用标准格式,监控平台的数据处理基于标准协议基础上,实现Ethernet数据的编解码算法。因此,数据处理分析不产生误差。
2)误差源2:平台硬件方面。
硬件方面误差源主要指数据传输线路。数据转换电路在转换瞬间会产生瞬时脉冲信号,对系统Ethernet信号会造成瞬时干扰,存在产生误码的可能性。根据被测系统Ethernet总线通信协议规定,传输数据具有自校、奇偶检验功能。经验证,瞬时干扰误码不会对传输信号产生附加误差。
综上分析,监控平台对测试结果产生的附加误差可忽略。并通过表1中4部被测系统实测数据验证,测试误差均在性能指标要求范围内,且误差来源为被测部件本身。
5 结束语
基于Android系统的航电数据监控平台作为综合航电系统上的一个关键节点,通过以太总线与系统进行通信,对航电系统的航姿、大气数据、发动机参数等组件进行地面在线监测。最终实现了对综合航电系统传输数据测试,以及各飞行参数组件的功能测试。经实测,监控平台以10 Mbps的通信速率运行,且保持测试状态稳定。目前,该项目已通过民航局地面测试项目认证,已应用于综合航电系统定检达20余套,取得了良好的应用效果。
[1] 赵 明.通用飞机综合航电技术发展综述[J].电讯技术,2014,54(3):374-378.
[2] 郑 澜,王运盛.适用于民机IMA的通用机载软件开发平台[J].电讯技术,2012,52(6):1027-1029.
[3] 周 庆,刘 斌,余正伟,等.综合模块化航电软件仿真测试环境研究[J].航空学报,2012,33(4):722-733.
[4] 孙 兵,何 瑾,陈广厦.基于DSP的CAN总线与以太网互联系统研制[J].仪器仪表学报,2008,29(2):377-380.
[5] 滕秋琴.ARM嵌入式系统网络接口设计[J].电讯技术,2008,48(10):84-86.
[6] Littlefield-Lawwill J,Viswanathan R.Advancing open standards in integrated Modular avionics:An industry analysis[A].AIAA/IEEE Digital Avionics Systems Conference-Proceedings.Piscataway[C].NJ:IEEE,2007:2B11-2B114.
[7] 梁永生,张基宏,张乃通.IEEE标准容限内以太网转发时延的测试与分析[J].电子学报,2008,36(1):46-50.
[8] Steve Gorshe, Jeff Mandin.Introduction to IEEE 802.3 av 10Gbit/s Ethernet Passive Optical Networks(10G EPON) [J].China Communications,2009,6(4):136-147.
[9] 熊华钢,周贵荣,李 峭.机载总线网络及其发展[J].航空学报,2006,27(6):1135-1144.
[10] 汪健甄,许宗泽. 航空电子高速数据总线性能分析及其实时性仿真[J].南京航空航天大学学报, 2008,40(3):345-347.
[11] 曾祥文,宋树祥,宾相邦.嵌入式Linux下波特率自适应的CAN总线驱动的实现[J].测控技术, 2015,34(8):104-107.
[12] 詹成国,朱 伟,徐 敏.基于Android的测控装置人机界面的设计与开发[J].电力自动化设备, 2012,32(1):119-122.
[13] 农丽萍,王力虎,黄一平. Android在嵌入式车载导航系统的应用研究[J].计算机工程与设计, 2010,31(11):2473-2475.
[14] 韩 迪,潘志宏.基于Android移动设备传感器的体感应用[J].华南理工大学学报(自然科学版), 2012,40(9):75-77.
Development of Comprehensive Avionics Data Monitoring Platform Based on Android
Wang Haibin, Qian Wei,Ding Fajun
(Aircraft Maintenance Factory of CAFUC,Guanghan 618307, China)
The paper analyzes the current situation of data transmission of the integrated avionic system in the field of general aviation and discusses the necessity to conduct ground on-line monitoring of data transmission of the integrated avionic system. Besides, the paper develops a data monitoring platform based on the embedded operating system according to the working principle of the avionic system and the R&D procedures of data monitoring. The hardware part of the monitoring platform is mounted on the ARM microprocessor, which realizes a series of functional modules like data collection, data processing, power management etc. The platform software is developed based on the embedded Android system, under the environment of which the software architecture of this monitoring platform is designed. Moreover, the paper has also developed the bottom driver layer, hardware abstraction layer (HAL), java native interface (JNI) and application programs of the test resources. Verified by several tested avionic systems, this monitoring platform runs stably and the systemic errors can be ignored, which satisfies the practical needs of data monitoring of the avionic system. As indicated by the engineering application results, this data monitoring platform for integrated avionic system has passed the ground test project certification of the Civil Aviation Administration and has been applied in practical production.
avionics system; data monitoring; Android
2015-11-30;
2015-12-29。
国家民航局科技项目(MHRDZ201003)。
王海斌 (1984-),男,内蒙古赤峰市人,硕士研究生,工程师,主要从事机载航电设备的维修与飞机维修工程方面的工作。
1671-4598(2016)06-0098-04
10.16526/j.cnki.11-4762/tp.2016.06.027
TP277
A