余 腾,胡伍生,焦明连,孙小荣
(1. 宿迁学院建筑工程学院,江苏 宿迁 223800; 2. 东南大学交通学院,江苏 南京 210096; 3. 淮海工学院测绘与海洋信息学院,江苏 连云港 222001)
基于Android智能终端的实时地铁变形监测系统软件设计
余 腾1,胡伍生2,焦明连3,孙小荣1
(1. 宿迁学院建筑工程学院,江苏 宿迁 223800; 2. 东南大学交通学院,江苏 南京 210096; 3. 淮海工学院测绘与海洋信息学院,江苏 连云港 222001)
以运营期内南京地铁二号线某区间的连续监测数据为例,在以TM30测量机器人和RTU数据传输集成单元为主体的自动化监测系统硬件基础上,详细论述了基于Android智能终端的实时地铁变形监测系统的软件需求分析、架构设计和功能模块划分,分析了BLE应用程序开发过程中所使用的关键技术和解决的重难点问题,开发了一款方便实用的Android应用程序软件,使得Android智能终端与自动化监测系统能够协同工作。实践证明变形信息传输时效性大为增强,以期在类似工程中推广应用。
地铁变形;监测;BLE;Android;系统
近年来,随着我国经济的快速发展,地铁已成为一种便捷、主流的交通出行方式。地铁交通运载力大,准时准点,速度快,不占用地上空间,我国已建和规划建设地铁的城市已达100余个[1]。鉴于地铁在城市建设和人民生活中的重要地位,且一般位于闹市区,一旦发生事故会产生重大后果,地铁结构安全已成为社会重要问题。
运营期地铁结构安全监测是地铁安全的重中之重,目前总体而言,地铁变形实时监测已基本实现自动化,上海、深圳和南京等地地铁均采用测量机器人系统实时采集变形值[2],海量监测数据得以实时采集,而数据往往不能及时上传到监控端,甚至依赖于有线传输[3],如果数据传输花费大量时间则极大影响地铁安全情况掌握的现势性,实测变形值等安全信息如何及时准确传达给监管部门已成为一个急需研究的课题。
随着智能通信设备普及和信号无线传输技术的发展,包括目前物联网和云计算技术的革新,人们生活方式和资讯浏览习惯已发生变化,监控者不仅局限于在监控室观察,也希望在手机等移动终端上能方便及时查看地铁结构安全信息。目前,Android智能终端发展十分迅猛,因其开放性好、硬件支持丰富和应用程序开发方便而被广泛应用[4],据2015年度资料,Android系统在移动终端操作软件系统占有率已达到80%[5]。
传统WinCE系统的性能和通信均受限制,基于通信技术的变革,而国内尚未见到已开发的基于Android智能终端的实时地铁变形监测系统,同时蓝牙4.0(bluetooth 4.0)标准推出并迅速成为Android智能终端的标配[6],而低功耗蓝牙技术(BLE)原理上可实现Android智能终端与TM30测量机器人系统之间的通信[7]。因此,本文关注并解决软件系统的设计难点,开发的地铁变形监测Android智能终端通过3G/4G/WiFi方式实现了Android智能终端与后台服务器的通信,能够将监测数据实时上传至后台服务器,及时接收地铁主体结构监测数据并绘制实时变形时程曲线,实现远程监控。
地铁车辆高强度运行和管壁周围荷载环境变化都会造成地铁结构变形,地铁结构一旦发生较大整体性或局部不均匀变形,会连带造成列车轨道变形、维护管片错位开裂甚至渗漏、供水排水管道损坏、电力系统损坏等严重后果[8]。且人工监测因采集、处理、上报效率低下和人身安全等因素已逐渐淘汰,因此现阶段地铁结构变形监测必须做到实时性和自动化。
1.1 工程项目背景
本文选取的工程实例来自南京地铁二号线,数据采样于圆通站到雨润大街站区间,监测数据为20 000组连续观测值,时间跨度从2011年至2014年。运营期地铁结构变形自动监测需融合计算机技术、网络技术、电子测量设备技术、数据处理模型理论等各方面的研究成果,经过调研、方案设计、试验、改进到运用,开发了一套自动化监测预报系统并已工作[9]。
1.2 自动化监测系统的结构
本文示例工程中地铁自动化监测系统流程如图1所示。
图1 运营期地铁结构自动化监测系统流程
1.3 采集数据的传输
地铁隧道结构变形监测使用Leica TM30测量机器人自动采集变形数据,并采用GeoMos软件进行数据自动解算分析,RTU为数据采集单元。系统由通信、供电和控制模块组成,测量机器人等传感器将采集的监测原始数据以RS232信号输出,通过RS232转RS485模块转换为RS485信号,有线连接到RTU串口服务器,串口服务器将RS485信号转换为RJ45信号,通过RJ45网线与3G/4G无线模块相连,传感器与RTU之间用8芯网线连接,用于供电及数据通信[10]。数据传输流程如图2所示。
此系统可将数据及时上传至监控室服务器,但不能及时反映到监控者随身携带的手机上,且没有相关软件。基于此,本文研究的问题才有实际意义,但研究需以此系统为平台。
图2 自动化监测系统的数据传输流程
2.1 Android系统与开发平台
监测软件需在Android智能终端上开发相应的BLE应用程序,并与监测系统协同工作。
Android是一种基于Linux的自由及开放源代码的操作系统,主要应用于智能手机和平板电脑等移动设备[11]。Android操作系统的底层建立在Linux系统之上,主要由应用程序层、应用程序框架层、函数库、Android运行时和Linux内核四层组成。系统结构使得层与层之间相互分离,明确各层的分工,这种分工保证了层与层之间的低耦合,当下层的层内或层下发生改变时,上层应用程序无须任何改变[12]。具体的体系结构如图3所示。
图3 Android系统的体系结构
试验选用Windows 7操作系统作为开发平台,在Windows 7操作系统上搭建Android开发平台需要使用到JDK 1.7、Android SDK、Eclipse和ADT(Android development tools)等工具包。在安装和配置好开发环境后,在Eclipse下使用Java语言编写代码开发Android应用程序。Android应用程序编译和打包后会生成APK安装文件,既可以在Android模拟器上运行,也可以下载到Android设备上进行测试[13]。
2.2 无线通信技术
试验采用Android智能终端作为监测系统浏览终端,TM30测量机器人通过短距离无线通信技术建立无线体域网(wireless body area network,WBAN),将监测数据实时传输至智能终端进行显示、分析和上传。采用无线通信技术,整套设备轻巧便携,无需线缆介质,不受卡口和线路的约束,以及地铁运行对缆线的影响。
常用的短距离无线通信技术有IEEE 802.11、ZigBee、蓝牙(bluetooth)、红外、RF射频等[14],其参数对比见表1。
表1 无线通信技术参数对比
考虑到蓝牙比IEEE 802.11的功耗更低[15],同时Android操作系统也在其4.3版本中加入了对蓝牙4.0技术的支持,因此测量机器人与Android智能终端之间选用低功耗的蓝牙4.0通信方式进行通信。
3.1 软件需求分析
BLE应用程序软件需要实现与TM30测量机器人通信、与后台服务器通信、变形时程曲线绘制、开机重启和后台运行功能。
3.2 软件架构设计
在软件需求分析的基础上,需根据BLE应用程序的功能设定,选取合适的软件架构将应用程序划分为不同的功能模块。软件框架应该能将整个软件划分为若干层或若干模块,并表现出清晰的层次化和模块化特点;同时使各层次内和各模块内部高内聚,层次之间、模块之间低耦合[16]。MVC(model view controller)框架模式是一种软件设计典范,其通过将界面显示、业务逻辑、数据处理分离的方法来组织代码,具有耦合性低、可扩展性好和模块职责划分明确的特点[17],因此试验采用MVC框架模式。
根据软件需求分析和MVC框架模式,可以将BLE应用程序分为蓝牙4.0通信单元、服务器通信单元、变形时程曲线绘制单元和变形预警单元4个部分,程序的框架结构如图4所示。
图4 BLE应用程序的框架结构
3.3 Android智能终端与TM30测量机器人通信
Android平台上蓝牙4.0开发流程为蓝牙搜索、连接、数据传输和数据解析存储。
(1) Android智能终端上BLE搜索和连接首先需要获取Android设备的蓝牙设备管理器,再通过已经获取到的蓝牙设备管理器进一步获取蓝牙设备适配器,调用Adapter.startLeScan()函数来搜索有效范围内的所有BLE设备,调用Gatt gatt=device.connectGatt()函数进行BLE连接,连接成功后返回一个BluetoothGatt对象gatt,通过gatt和gattCallback对象就可以和已经连接上的TM30测量机器人进行交互。
(2) 在完成Android智能终端与测量机器人之间的BLE连接后,还需作进一步的设置。BLE通信分为Service、Characteristic、Descriptor 3个部分,每个部分都有UUID作为唯一标示符。一个蓝牙4.0设备可以包含多个Service,一个Service可以含有多个Characteristic,一个Characteristic包含有一个Value和多个Descriptor,一个Descriptor包含有一个Value。Characteristic是Android智能终端与测量机器人之间交换数据的关键,通信设置过程如图5所示。
图5 Android蓝牙4.0通信设置过程
(3) Android智能终端与TM30测量机器人中的蓝牙4.0模块建立连接并完成相关设置后,即可以实现两者之间的数据交换。由于需要交换多种类型的数据,为了确保数据传输和接收的完整性,试验采用数据包的形式来完成数据通信。测量机器人完成一段时间的采样后,将数据按照指定的格式打包后通过蓝牙4.0模块发送至Android智能终端。由于蓝牙4.0模块为短包传输模式,测量机器人通过蓝牙4.0模块向Android智能终端发送数据包时,蓝牙4.0模块会将监测数据包转换为短数据包,每个短数据包中有效数据长度不超过30 byte。Android智能终端接收到一个短数据包后,Android系统会回调onCharacteristicChanged()函数,短数据包中的有效数据即为characteristic.getValue()。由于数据之间的短间隔,为了避免监测数据丢失,必须尽快执行完onCharacteristicChanged()函数,并取出和保存好每一个短数据包中的监测数据。
为了确保BLE通信正常,蓝牙4.0模块内部分别用两个整型的credits记录蓝牙模块可发送的数据包个数和可接收的数据包个数,蓝牙模块每发送一个数据包至Android智能终端上,其内部记录发送的credits就会减1[18]。当记录发送的credits减为0时,蓝牙模块就不能继续向Android智能终端发送数据,直到Android智能终端向其写入新的记录发送的credits,其才能继续向Android智能终端发送数据。
(4) 利用管道流来暂时存储和传输接收到的实时监测数据,是出于对蓝牙4.0传输特性和稳定性的考虑,而且管道流存储容量有限,并不适合直接对其中存储的监测数据进行其他操作。因而需要取出管道流中的监测数据并保存至其他存储方式中,并同时开启新线程来对接收到的监测数据进行解析和存储。具体数据解析流程如图6所示。
3.4 Android智能终端与服务器通信
Android智能终端作为与测量机器人相连的数据接收前端,在完成监测数据的收集后,需要通过3G/4G/WiFi无线网络实时和完整地将监测数据发送到后台服务器,以供远程监测。
良好的网络环境下,使用TCP通信协议可以在两个设备之间进行网络通信,但是在移动网络中,由于无线信号的不稳定性等原因,很容易造成数据丢包和触发不必要的拥塞控制,不能确保Android智能终端将需要上传至后台服务器的数据快速地完成传输,从而导致TCP协议性能下降[19]。因而需要设计一个合适的数据上传缓冲池,从而确保Android智能终端需要上传的数据能够在网络环境可用的情况下都成功上传。
图6 数据解析流程
数据上传缓冲池有用ConcurrentHashMap来管理需要上传的数据包和直接使用双重循环队列来管理需要上传的数据包两种方案。双重循环队列结构如图7所示。
图7 双重循环队列结构
经过试验对比,第一种方案采用动态开辟内存的方式来存储数据包,开辟的内存大小不确定,随着未能成功上传的数据包的增多而增大,动态内存开辟过程中增加了性能消耗,且无法实现数据包的重新传输;第二种方案采用开辟固定大小内存的方式存储数据包,开辟的内存大小可控,且能够实现数据包的重新传输。综合考虑App应用程序的性能,本文选用第二种方案设计数据上传缓冲池。
3.5 变形时程曲线的绘制
Android智能终端在解析出测量机器人传输的监测数据后,即可根据监测数据绘制出实时变形曲线图,供监控者查看。Android系统提供的绘图机制分为2D绘图和3D绘图[20],2D绘图通过Skia来实现,变形时程曲线图的实时绘制是2D绘图。
(1) 直接在View视图上显示图片简单方便,但同时也只能绘制静态或极简单的2D图像,无法实现高品质绘图。Canvas是由Android系统中Skia模块定义的一个2D概念,其拥有一套完整的绘图API函数,通过调用这些API函数能够绘制出所需要显示的图形和动画。Canvas绘图方式可分为调用普通或专用的SurfaceView控件进行绘图。
调用专用SurfaceView控件的Canvas绘图方式中会定义一个单端的线程来实现绘图工作,App应用程序不需要在主线程中去实现绘图,也不需要等待View绘图的刷图,且刷新区域可选,不需对整个控件都刷新,能够达到较高的刷新帧率。要对变形曲线的实时绘制需要达到30帧以上的帧率,因此选择调用专用SurfaceView控件的Canvas进行变形图绘制。
(2) TM30测量机器人的采样频率为100 Hz,并传输为X、Y、H三维的监测数据,即对应于Android智能终端每秒钟会解析出300个监测信号点。为了能够在Android智能终端屏幕上动态地显示地铁隧道某一监测点形变位移走势,可以先在Android智能终端屏幕上绘制网格形状的坐标系,将Android智能终端的屏幕宽度从左至右方向映射为时间轴,长度从下至上方向映射为变形幅度。
变形时程曲线图绘制线程开启后,Android智能终端接收到测量机器人采集数据后,将监测数据写入绘图缓冲区中。每次进行屏幕绘制操作,都根据当前时间与上次进行屏幕绘制时间之间的间隔,从绘图缓冲区中取出对应长度的监测数据,将监测数据点通过SurfaceView实时绘制在Android智能终端屏幕上。如果剩余屏幕宽度不足以绘制,则清空屏幕,从头进行绘制,从而实现变形时程曲线图的动态实时绘制。
4.1 BLE应用程序性能优化
试验中,BLE应用程序优化主要针对开机自启动功能和后台运行功能两方面。
(1) 由于Android智能终端存在电池电量耗尽等因素造成设备关机或重新启动现象,从而导致应用程序在使用过程中非正常关闭,故需要在应用程序中加入开机自启动功能。
(2) Android智能终端作为测量机器人与后台服务器之间的连接器,测量机器人的测量有时是长期连续的,因此需要长时间运行BLE应用程序。考虑到Android智能终端的屏幕耗电量大,同时使用者一般也不会长时间通过Android智能终端来实时观察,故应该将BLE应用程序设置为后台运行模式。在Activity中启动Service有两种方式:①调用bindService()函数来绑定和启动Service,当Activity退出时,Service也会退出,Activity和Service之间可以进行通信;②调用startService()函数来启动Service,当Activity退出时,Service不会退出,Activity和Service之间不可以进行通信[21]。根据BLE应用程序需求分析,本文采用将两种启动方式相结合的方法在Activity中启动Service,这样既可以实现Activity与Service之间的通信,也能实现当Activity退出时Service继续运行,从而实现BLE应用程序在锁频状态下的后台运行。
4.2 软件系统测试
在软件开发过程中,开发者虽然使用了许多能够保证软件质量的方法来分析、设计和实现软件,但软件产品中仍可能存在隐藏错误和缺陷。测试中选用小米4智能手机作为Android智能终端,其主要相关参数为:1920×1080(FHD)分辨率、Android OS 4.4系统、3 GB RAM、四核骁龙CPU、CPU主频2.5 GHz、3080 mAh电池[22]。
以Android智能终端为载体的地铁自动化监测软件开发后需进行测试,主要包括系统功能测试、稳定性测试和BLE应用程序性能测试3部分[23]。
(1) 将安装有BLETest应用程序的小米4智能手机放置在距离测量机器人10 m的地方,启动BLETest应用程序,搜寻BLE设备并建立连接,发送“请求数据”指令,进行实时监测数据的接收和解析。测试界面及结果如图8所示。
图8 BLETest程序测试界面及结果
测试结果表明,小米4智能终端与测量机器人之间可通过蓝牙4.0连接,能够根据预定协议发送和接收数据,Android智能终端能够根据协议成功解析出各种信息,通信功能正常。
此外,还要进行Android智能终端绘制地铁某监测点变形曲线图功能、智能终端与后台服务器通信功能、BLE应用程序优化功能、系统整体功能的测试,试验结果达到预定目标。
(2) 在完成系统各个模块的功能测试后,还需对相关模块进行稳定性测试,才能确保系统能够长期稳定工作。稳定性主要体现在Android智能终端与测量机器人之间蓝牙4.0通信的稳定性。具体测试包括蓝牙4.0单次连接稳定通信时间和蓝牙4.0断线重连性能,试验显示稳定通信时间可达4 h以上,断线重连的次数可达7次。
(3) 通过系统的功能和稳定性测试后,已经能够确定BLE应用程序能够良好地驱动Android智能终端使得软件系统正常稳定工作。同时BLE应用程序的性能直接关系实时系统的整体性能,影响整个产品的用户体验,因而还需要对BLE应用程序的性能作相应的测试和分析。本项目试验从BLE应用程序的CPU占用率、内存消耗和耗电量3个方面来测试分析。
CPU占用率是指应用程序运行时占用CPU时间片的比例,CPU占用率越高,应用程序运行时消耗的CPU资源越多。单个应用程序的CPU占用率过高会导致Android系统卡顿,应用程序运行不流畅,甚至使得应用程序或系统崩溃。一个良好的应用程序在运行时应该占用较少的CPU资源,拥有较低的CPU占用率。使用DDMS工具对BLE应用程序前台运行和后台运行两种情况下的CPU占用率进行测试截图,饼状图中com.nl.holter(user)部分即为BLE应用程序的CPU占用率。
测试结果显示,应用程序前台运行和后台运行的CPU占用率分别为20%和9%,并且在测试过程中其CPU占用率没有明显的波动,这说明软件对CPU资源的利用是比较合理的。
内存消耗测试结果显示BLE应用程序前台运行时Android系统为其分配了33.698 MB的堆内存,已被使用的内存大小为25.867 MB;BLE应用程序后台运行时Android系统为其分配了29.367 MB的堆内存,已被使用的内存大小为22.546 MB。
耗电量的测试结果显示BLE应用程序前台运行时由于手机屏幕耗电过大,仅能维持4 h的正常使用;在锁屏情况下使应用程序后台运行时,能够维持21 h的正常使用。在实际使用中,BLE应用程序多在后台运行,故能够实现实时软件系统的长时间运行。
本文总结了运营期地铁自动化监测流程方法,针对Android智能终端迅速发展普及的现状,分析了基于Android智能终端设计实时地铁监测软件系统的实际意义和可行性,探讨了BLE应用程序的功能需求、软件系统框架、通信连接方法并完成程序设计,最后通过试验成功实现了Android智能终端与TM30测量机器人和后台服务器的连接。
通过小米4手机对基于Android智能终端的实时监测软件系统从功能性及稳定性两方面进行测试,并对BLE应用程序从不同方面进行了性能分析,验证了基于Android智能终端的实时地铁监测系统的可行性和实用性。
随着科技的发展,相对于传统WinCE系统,Android系统开源、免费、执行效率更高、开发体验更好,笔者认为越来越多的工程实时监测嵌入式装置将采用Android系统作为其平台,智能终端作为载体。
[1] 高峰.城市地铁与轻轨工程[M].北京:人民交通出版社,2012.
[2] 胡伍生,钟金宁, 段伟,等.自动化三维高精度智能监测系统在地铁变形监测中的应用[J].东南大学学报(自然科学版), 2013, 43(S1): 225-229.
[3] 杨国东,詹福雷.城市地铁变形监测数据处理[J]. 测绘与空间地理信息, 2014, 37(2): 6-8.
[4] 施懿民. Android应用测试与调试实战[M]. 北京: 机械工业出版社, 2014:91-109.
[5] 王彦恩.2014—2015中国Android手机市场研究报告[EB/OL].[2016-06-24].http:∥zdc.zol.com.cn/505/5056019.html.
[6] 百度百科.蓝牙4.0[EB/OL]. [2016-06-24].http:∥baike.baidu.com/view/3254844.htm.
[7] 钟金宁,段伟,田有良.应用TM30进行地铁隧道变形自动监测的研究[J].测绘通报,2011(7):85-88.
[8] 马振海,于春华.地铁主体结构变形监测的必要性分析[J].铁道工程学报,2008(8):95-97.
[9] 段伟,王敏,钟金宁.地铁隧道结构稳定性自动化监测系统的研究与应用[J].测绘通报,2015(9):91-94.
[10] 赵磊,钟金宁,胡伍生,等.南京地铁隧道自动化变形监测系统研究[C]∥2011年交通工程测量技术研讨交流会论文集.厦门:中国测绘学会,2011:92-96.
[11] 百度百科.Android[EB/OL].[2016-06-24]. http:∥baike.baidu.com/subview/1241829/9322617.htm.
[12] 彭保基. 基于蓝牙及Android的便携式心电仪的设计与实现[D]. 长春:吉林大学, 2014.
[13] 江燕良.基于Android智能终端的远程控制系统[J].电子技术应用,2012,38(8):129-132.
[14] 吕松栋,黎卓芳.蓝牙4.0低功耗技术及其认证要求[J].现代电信科技,2011,41(10):17-20.
[15] 徐金苟.低能耗蓝牙4.0协议原理与实现方法[J].微型电脑应用,2012,28(10):16-19.
[16] 詹成国,朱伟,徐敏.基于Android的测控装置人机界面的设计与开发[J].电力自动化设备,2012, 32(1):119-122.
[17] 百度百科.MVC框架[EB/OL].[2016-06-24].http:∥baike.baidu.com/view/5432454.htm.
[18] 刘怀愚,朱昌杰,李璟.时间复杂度的几种计算方法[J].电脑知识与技术,2011,7(9):4636-4638.
[19] 史梦安,王志勃.基于Android系统的TCP/IP客户端异步通信模块研究[J].软件导刊,2014,13(10):115-118.
[20] 耿祥义,张跃平.Android手机程序设计实用教程[M].北京:清华大学出版社,2013.
[21] 金纯,李娅萍,曾伟,等.BLE低功耗蓝牙技术开发指南[M].北京:国防工业出版社,2016.
[22] 百度百科.小米4[EB/OL]. [2016-06-24].http:∥baike.baidu.com/view/29386745/9665478.htm.
[23] 张新华,何永前.软件测试方法概述[J].科技视界,2012(4):35-37.
Software Design of Real Time Subway Deformation Monitoring System Based on Android Smart Terminal
YU Teng1,HU Wusheng2,JIAO Minglian3,SUN Xiaorong1
(1. Department of Civil Engineering, Suqian College, Suqian 223800, China; 2. Transportation School of Southeast University, Nanjing 210096, China; 3. School of Surveying and Marine Information, Huaihai Institute of Technology, Lianyungang 222001, China)
Taking a section of operation in Nanjing No. 2 subway line continuous monitoring data as an example, based on the hardware of the automatic monitoring system which is based on the TM30 measuring robot and the RTU data transmission as the main body, this paper mainly discusses the requirement analysis,architecture design and function module partition of subway deformation monitoring system based on Android smart terminal,analyzes the key technologies used in the realization of the BLE application and the main methods to solve the key and difficult problems. It develops a convenient and practical application of Android,making Android intelligent terminal and automatic monitoring system can work together. Practice has proved that the timeliness of deformation information transmission is greatly enhanced, and has been expected to be applied in similar projects.
subway deformation; monitoring; BLE; Android; system
余腾,胡伍生,焦明连,等.基于Android智能终端的实时地铁变形监测系统软件设计[J].测绘通报,2017(6):98-104.
10.13474/j.cnki.11-2246.2017.0199.
2016-08-18
国家自然科学基金(41574022);江苏省科技支撑(工业)项目 (BE2014026);江苏省高校自然科学研究项目(13KJB420004)
余 腾(1985—),男,硕士,实验师,研究方向为测量仪器集成开发应用和精密工程测量与数据处理。E-mail:164002786@qq.com
P258
A
0494-0911(2017)06-0098-07