基于Android智能手机平台的AMT监测系统的设计*
2014-12-07万晓凤雷继棠易其军
万晓凤,雷继棠,易其军
(南昌大学 信息工程学院,江西 南昌 330031)
AMT(机械式自动变速器)是在原来手动变速汽车的基础上,不改变原来发动机、变速器、离合器的结构,外加一套电控驱动装置和控制器,通过模拟最优秀的驾驶习惯控制驱动机构驱动离合器、选档杆、换挡杆完成起步、变档过程的一系列操作而实现自动变速[1]。
AMT系统是一个多输入多输出的复杂系统,参数不仅多而且变化快,为了实时观测AMT系统工作工况、评估系统性能、发现系统问题,在AMT研发调试过程中,需要设计一个监测系统来实时观测系统相关参数的变化。参考文献[2]介绍了一种基于LabVIEW的AMT监测系统的设计,参考文献[3]介绍了一种采用VB语言编写上位机的AMT监测系统,它们都有一个共同的特点就是不能脱离PC机并且采用有线传输方式。由于调试AMT系统时是在空间有限的汽车驾驶舱内,同时汽车也是处于行驶状态,这些监测手段显得不方便。基于此,本文设计了基于Android平台的AMT监测系统,采用蓝牙技术将需要观测的参数通过无线的方式发送到Android手机上,在Android手机上设计了应用程序将这些信息呈现给开发人员。相比于传统的监测手段,该系统充分将开发人员的随身物品作为科研开发的工具,不仅简单方便易于携带而且降低了开发成本。
1 系统原理
AMT监测系统的作用是在AMT系统开发调试阶段协助开发人员实时了解AMT系统的工作状态和评估性能参数,此外开发调试AMT系统时是在空间有限的驾驶舱内进行并且汽车处于行驶的状态。因此AMT监测系统要满足以下要求:
(1)能实时地采集系统状态参数;
(2)提供可视化的、友好的、美观的界面;
(3)简单方便,易于携带。
为满足以上要求,以Android智能手机为平台,采用无线蓝牙通信技术是一种比较满意的方案。
本文设计的AMT监测系统包括三个部分,分别是AMT系统 ECU、蓝牙 RF模块、Android智能手机,AMT系统ECU与蓝牙RF模块为系统下位机负责信息采集发送,Android智能手机为上位机负责信息接收以及提供可视化的界面。上位机与下位机通过蓝牙进行通信。系统组成结构图如图1所示。
图1 系统结构图
系统的工作原理:在手机与下位机蓝牙RF模块配对建立连接之后,AMT系统ECU通过UART将采集到的数据按照定义好的格式发送给蓝牙RF模块,蓝牙RF模块将数据转换成无线信号,Android系统手机内置的蓝牙将数据接收后传送至应用程序,应用程序将这些数据进行处理并以可视化的界面呈现给开发者。
2 系统下位机设计
2.1 硬件平台设计
系统的下位机包括两个部分,分别是AMT系统ECU和蓝牙RF模块。ECU是AMT系统的大脑,负责信号的采集处理和控制决策。由于AMT系统是一个多输入多输出、参数变化快、实时性要求高的系统,需要AMT的ECU有较高的实时处理能力;此外,在研发调试过程中为监测系统状态而加入的数据采集不能影响原有ECU的运行流程,必须是一个独立的并行运行模块,与原有ECU的运行没有任何的耦合关系,因此需要ECU有并行处理能力。一般的基于冯·诺依曼体系结构的微控制都是在时钟的指挥下串行执行程序指令,要想获得较高实时性和并行处理需要对软件的设计进行高度的实时性优化,这样的程序设计比较困难,因此很难满足设计要求。基于此,采用FPGA设计AMT系统ECU,FPGA通过内部逻辑门的互联,以硬件的方式实现对激励的响应,具有很强的实时性同时还可以并行处理。使用的芯片为 Actel的 A3P250,A3P250是基于Flash架构的FPGA,具有上电即可运行、抗干扰能力强、无法破解等特点[4]。蓝牙RF模块采用的是CSR BC04蓝牙芯片,该芯片内部集成遵循V2.0蓝牙规范的蓝牙通信协议,数字 2.4 GHz频段收发,3.3 V工作电压,通过 UART与AMT系统ECU通信,ECU只需将要发送的数据通过UART发送给蓝牙模块即可,无需对蓝牙模块编程。
2.2 软件实现
图2 下位机程序结构图
下位机的软件功能主要是AMT系统ECU中的数据采集发送部分。程序结构图如图2所示,包含3大部分:数据帧封装部分、发送控制部分、UART部分。数据帧封装部分将要发送的数据按一定的格式封装成数据帧,一个数据帧包含13 B的数据,其中第一个字节固定为0xbb作为帧的起始标志,最后一个字节的内容固定为0xaa作为帧的结束标志,其余11个字节的内容为AMT系统和汽车的状态参数;发送控制部分在时钟的统一指挥下产生选通信号和发送使能信号将一帧数据依次传输给UART并启动UART进行发送;UART是软件的核心部分,AMT的FPGA主控制器A3P250自身不带UART,因此采用Verilog语言实现UART的逻辑。在Libero集成开发环境下编写调试程序,完成下位机软件的开发工作。
3 上位机实现
上位机程序是一个Android的应用程序运行在Android智能手机上。Android系统为Android应用程序提供了5个基本组件类型,应用程序按自身需求将对应的组件实例化。5个基本组件类型包括:Activity组件,该组件提供可视化的界面用于人机交互;Service组件,该组件无可视化的界面而是在一段时间内运行于后台;Intent组件,用于组件、应用程序之间的消息传递;BroadcastReceiver组件,该组件用于接收广播消息通知并启动其他组件进行处理;ContentProvider组件,该组件用于应用程序的数据管理。一个Android应用程序都由以上的一个或多个组件构成[5]。
3.1 软件架构
本系统应用程序的设计采用典型的MCV分层设计模型[7],MCV分别代表模型层、控制层、表示层。表示层工作于前台,展现模型的状态,进行数据显示,提供人机交互;控制层提供表示层与模型层之间的流程控制,一方面要将表示层的输入发送至模型层进行处理,另一方面要将模型层的处理结果反馈到表示层进行显示;模型层工作于后台进行数据处理。在本应用程序中表示层是界面显示部分,使用Activity组件实现,蓝牙业务是模型层负责建立蓝牙连接和蓝牙通信,使用Service组件实现,这两个组件都是独立的进程,通过Handler实现跨进程的通信,Handler即为控制层。软件总体架构如图3所示。
图3 软件总体架构
3.2 用户界面
系统中需要观测的参数有车速、发动机转速、档位、离合器位置、换挡杆位置、选档杆位置、加速踏板开度、节气门开度等。以上这些参数都可以直接通过文本框显示,但是这样显示不能反映参数之间的相互作用关系。因此有些参数需要在同一个时间轴上用曲线显示,比如车速与离合器行程曲线,发动机转速与车速曲线。因此界面显示部分包括两个界面,一个是文本框显示界面,一个是曲线显示界面。
界面的布局和控件资源通过XML文件进行定义,采用绝对布局方式。文本框显示界面包含若干个用于数据输出显示的EditText控件和作为标签的TextView控件,该界面为程序默认显示界面,应用程序一打开就显示此界面。曲线显示界面添加了一个SurfaceView控件,用于绘图操作,两个界面通过滑动进行切换。文本框显示界面对象继承Activity类,复写其OnCreate方法和On-Start方法,在 OnCreate方法中进行变量的初始化、调用setContentView设置界面布局的XML文件、调用find-ViewById方法获取界面上各个控件对象;在OnStart方法中创建蓝牙业务对象和通信接口Handler,同时创建Handler的消息处理函数,在消息处理函数中接收蓝牙发送过来的数据并将这些数据进行处理显示。
3.3 蓝牙业务
Android系统对蓝牙网络协议栈提供了支持,提供了一系列基本类和API来实现蓝牙设备之间的数据传输。蓝牙通信的基本类有:(1)BluetoothAdapter类,该类代表了一个本地蓝牙适配器,用于扫描其他蓝牙设备,实例化蓝牙设备和建立监听线程来监听来自远端设备的连接;(2)BluetoothDevice类,代表了一个远端的蓝牙设备,封装了远端蓝牙设备的名称、地址、种类和绑定状态等信息;(3)Bluetoothsocket类,代表一个蓝牙套接字接口,作用是通过输入输出流提供应用程序与其他蓝牙设备的通信接口;(4)Blueboothserversocket类,用于在主机端监听可能到来的连接请求;(5)Bluetoothclass类,它是一个只读性质的集描述了蓝牙的特点和能力[6]。
蓝牙设备之间的通信包括4个步骤:(1)设置蓝牙设备;(2)寻找局域网内可能或者匹配的设备;(3)连接设备;(4)数据传输。当两个蓝牙设备拥有同一个套接字即在同一个RFECOMM信道上时,这两个设备就建立了连接可以进行数据通信了。
蓝牙业务对象在文本框显示界面Activity对象中的OnStart方法中被创建,创建之后作为service工作于后台进行蓝牙业务。当完成蓝牙设备的扫描、配对、连接之后,创建数据监听线程,监听来自远端设备的数据,当接收到数据时,通过 bytes=mmInStream.read(buffer)读出数据,再通过Handler将数据发送给界面显示的Activity。蓝牙业务程序流程图如图4所示。在eclipse集成开发环境中完成应用程序的编写和调试工作。
图4 蓝牙编程业务流程
通过这个数据采集系统,极大地方便了AMT的调试工作,特别是在试车过程中,能实时地观测到AMT系统的工作状态和汽车相关的状态参数,评估系统的性能。为AMT的研发工作提供了极大的便利。
[1]葛安林,沈波.AMT换挡品质的研究[J].汽车技术,2003(2):43-45.
[2]赵梅,胡天亮,张倩,等.基于 LabVIEW 的 AMT数据采集系统设计与研究[J].山东大学学报(工学版),2011,41(6):70-74.
[3]董玉梁,陈慧岩.车辆AMT的数据采集及分析系统[J].工业仪表与自动化装置,2003(4):46-48.
[4]黄明金.基于FPGA技术的虚拟数字存储示波器的设计[D].四川:成都理工大学,2011.
[5]李黎国,张辉,程号.基于Android健康服务终端蓝牙传输软件的设计[J].电子科技,2012,25(5):115-118.
[6]熊狮,吴效明.基于Android系统的生理数据蓝牙传输技术[J].中国医学物理学杂志,2012,29(6):3801-3803.
[7]孟刚.基于Android蓝牙聊天系统的设计与实现[J].信息安全与技术,2012(6):79-82.