OBD物联网控制系统的研究与开发
2015-06-15汪玲燕程耕国鲍考明彭攀来
汪玲燕 程耕国,2 鲍考明 程 骅 彭攀来
(武汉科技大学信息科学与工程学院1,湖北 武汉 430081;武汉科技大学冶金自动化与检测技术教育部工程研究中心2,湖北 武汉 430081)
OBD物联网控制系统的研究与开发
汪玲燕1程耕国1,2鲍考明1程 骅1彭攀来1
(武汉科技大学信息科学与工程学院1,湖北 武汉 430081;武汉科技大学冶金自动化与检测技术教育部工程研究中心2,湖北 武汉 430081)
车载诊断系统(OBD)在汽车领域越来越普及,目前市场上针对OBD的应用也很广泛。通过对新一代OBD的研究,提出并设计了一套基于OBD的物联网控制系统。该系统在传统OBD系统的基础上,结合RMI、GPRS和GPS技术,实现了设备与客户端之间的远程通信与导航功能,再通过手机便捷的控制系统,使系统更智能。利用广泛应用的MVC和Hibernate技术,实现系统各项功能。试验结果表明,与传统的OBD系统相比,该系统性能优越、功能齐全、实用性强,能更好地结合设备服务,方便广大车主,是物联网、车联网智能化发展的一大进步,具有一定的市场前景。目前系统已投入到实际运营当中。
物联网 自动控制系统 远程通信 智能化 车联网
0 引言
随着经济的持续发展和人们生活节奏的不断加快,汽车慢慢地成为人们主要的代步工具。最初,车载诊断系统(on-board diagnostic,OBD)的诞生,是为了解决汽车尾气排放而造成的大气污染问题;现在,随着科技的不断进步,OBD技术越来越成熟,经过了一代、二代、乃至三代,已经具备了故障诊断、实时监控、远程传输数据等一系列拓展功能[1]。而物联网指的是利用互联网或局域网等各种通信技术把人和物联系在一起,形成人与物、物与物智能化管理的网络[2]。随着物联网的研究不断成熟,关于物联网的应用也逐渐增多。本系统就是在OBD的基础上,通过物联网技术,将车载OBD系统与人交互、与网络互连,实现车辆的监控、维修、保养、远程控制等功能,进而实现现代化的ITS(智能交通系统)[3]。
近年来,随着通信技术和网络技术的不断发展,各种各样的OBD系统和应用层出不穷,但功能比较单一,大部分只局限于故障诊断这一方面,不能很好地与人交互。传统的人机交互使用的是蓝牙技术,如今,仍有不少系统使用蓝牙技术,但蓝牙实现人机交互有个缺点,就是距离不能太远,这给使用者带来了极大的不方便性。例如百合提努尔一文中使用的就是该技术[4]。意识到这点不足之后,本文研究了新一代OBD的特点,用物联网的思维来思考问题,结合广泛使用的网络技术,通过GPRS和RMI技术来实现无线通信,设计了一种符合现代用户使用习惯的OBD物联网控制系统。该系统既结合了传统系统的故障诊断功能,又与网络互连、与人交互,初步实现了车辆智能化控制,是物联网在车辆方面的一个很好的应用[5]。这使得OBD的发展没有局限于设备本身,反而提供了多元化的思路。车辆在未来将普及到家家户户,这样的智能化控制系统给人们带来了极大的便利。
1 OBD物联网系统的设计
OBD物联网系统的架构设计如图1所示。
图1 OBD系统架构设计图
从图1可以看出,OBD终端安装在车辆上,集合GPRS和GPS通信模块,通过无线网络,与网络互连,实现车辆的实时监控和故障诊断;手机同样通过无线网络,与车交互,人通过手机客户端来控制系统,实现智能控制。根据架构设计,可以将系统分为四个主要模块,分别是车辆模块、OBD设备模块、用户模块和基础数据模块,如图2所示。
图2 OBD系统组成模块
车辆模块主要完成的是车辆的信息化登记与管理、与OBD设备的关联以及硬件的准备等功能,它是该系统的硬件基础。OBD设备模块,集合了GPS和GPRS通信模块,插上SIM卡,完成车辆的监控、实时定位、故障检测、上传故障信息以及网络互连等功能,它不仅是硬件基础,也是物联网网络互连的重要连接设备。用户模块包括应用管理模块,是对用户的登记与管理以及向用户提供各种各样的增值服务,例如,语音导航、实时救援、车辆故障维修、消息提醒等更方便用户的服务。它是该系统服务功能很好的体现。基础数据模块是将车辆信息、OBD信息以及监测到的行车数据等各种数据进行统计分析。当出现问题时,专家根据这些数据,可以分析得出是车辆故障还是网络故障,是否可以正常控制等故障[6]。这四个模块既独立又相互关联。系统分为硬件、手机和Web三大部分,本文从这几个部分整体把握,重点介绍该系统的软硬件设计。
2 OBD物联网系统的硬件介绍
OBD物联网系统要实现的是在OBD的基础上控制车辆和监控车辆,那么硬件基础必定包含车辆和OBD设备。本系统采用的是DUOSEN的16PIN标准OBD。集合的GPRS模块采用工业级无线模块M660。GPS模块采用NEO-6M模块,外挂2 MB存储器,可保存各项行车数据。OBD模块内部结构如图3所示。
图3 OBD模块内部结构
GPRS模块主要采用工业级无线模块M660,支持标准工业接口,支持透明传输以及远程复位等功能,多重工作频段可实现多任务传输,满足各种业务需求。GPS模块采用U-BLOX NEO-6M模块,平均热启动时间小于1 s,具有50通道,灵敏度高,定位误差小,系统还可根据实际需求增加北斗模块;传感器采用ST公司的LIS3DH(x/y/z3轴传感器),支持2G/4G/8G/16G里程模式。这些模块性能优越、灵敏度高,因此,本系统采用它们来完成车辆位置的测量[1]。
3 OBD物联网系统的软件介绍
3.1 协议的分类
设备终端与服务器之间的通信,是按照既定的协议,就像是通信的依据,彼此按照依据来发送信息。本系统在JT/T 808-2011的基础上,根据具体业务添加了相关协议标准,并采用TCP或UDP的通信方式;当通信链路出现异常时,设备终端还可以采用SMS方式进行通信[11]。按照功能,本系统的协议可以分成十大类:终端管理类协议、位置报警类协议、信息类协议、电话类协议、车辆控制类协议、车辆管理类协议、信息采集类协议、多媒体类协议、通用数据传输类协议、加密类协议。各个协议根据功能不同,发送的消息也不同。
3.2 消息的发送
硬件与软件之间的通信是通过消息来传递信息的。设备终端发送一系列消息,服务器以及手机识别出消息,根据消息的不同做出不同的反应。消息结构如图4所示。每条消息由标志位、消息头、消息体和校验码组成[11]。根据JT/T 808-20114.4.2,本系统标志位采用Ox7e表示。若校验码、消息头以及消息体中出现了0x7e,那么就进行转义处理。
图4 消息结构
Fig.4 Structure of message
转义处理过程如下。
发送消息时:消息封装——>填充校验码——>转义;
接收消息时:转义还原——>验证校验码——>解析消息。
异常SMS消息的发送,根据JT/T 808-2011,采用PDU八位编码方式。对于长度超过140 B的消息,应按照GSM网络的短信服务规范GSM 03.40进行分包处理,然后再依次发送。
有发送,那么就有应答。平台发的消息和终端发的消息都应该相互应答,应答分为通用应答和专门应答,由不同类型的协议决定。当发送方等待应答超时时,应对消息进行重发。应答超时时间和重传次数由平台参数指定,每次重传后的应答超时时间计算如下式所示:
TN+1=TN(N+1)
(1)
式中:TN+1为重传后的应答超时时间;TN为前一次的应答超时时间;N为重传次数。
终端等待超时重发计算方法同理,不同的是,当消息为报警消息时,若达到重传次数,仍未应答时,则对其进行保存,下一次发送消息的时候优先发送[11]。
3.3 软件的介绍
本系统的软件设计使用目前广泛应用的Java与SpringMVC技术。Java是一种面向对象的程序设计语言,具有高效的可移植性、通用性、安全性等优点,因而受到广大开发人员的喜爱。由SpringMVC负责接收处理请求,通知业务类执行相应的业务逻辑并更新相应视图。而Hibernate则是一种对象关系映射框架,它对Java数据库连接(Javadatabaseconnectivity,JDBC)进行了非常轻量级的对象封装,负责系统与数据之间的交互,使得开发者可以面向对象的操作数据库。三者的结合完成了表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)的交互,如图5所示,使代码结构清晰、分工明确、层次分明[7]。
图5 OBD系统三层架构示意图
在系统的web.xml里,配置Spring MVC的servlet,自定义servlet.xml配置文件的位置和名称(本系统命名为spring-mvc-context.xml)。之后再配置Spring Bean的配置文件所在目录,由三个xml文件组成:applicationContext.xml、applicationSecurity.xml和infrastucture.xml。applicationContext.xml配置文件完成的是扫描Controller、定时执行程序、国际化、数据校验和文件上传的功能。applicationSecurity.xml完成权限配置功能;infrastucture.xml完成数据源配置功能。最后,配置监听器和过滤器。
web.xml部分配置如下。
classpath:/META-INF/spring/applicationContext.xml
classpath:/META-INF/spring/applicationSecurity.xml
classpath:/META-INF/spring/infrastructure.xml
……
之后是项目所需要的实体类、控制层、业务层和开发层。本OBD管理系统共有71个实体类,这些实体类是程序的基础。如果一一编写,费时又费力。Hibernate Tools是Eclipse中很强大的插件。它可以反转数据库生成实体类。本系统采用Hibernate Tools 3.4.0.CR1生成实体类。实体类包括它们的属性、setName()和getName()方法。控制层代码,即Controller层,使用@Controller标记,类似于Struts的Action。Spring MVC这种基于注解的Controller,最大的好处就是不必继承任何接口,只根据映射就可以选择不同的请求方法。控制层开发完之后是业务层的开发。这里使用Dao层和Service层来实现上下业务的控制。Dao层继承Hibernate封装的BasicDao。Dao实现类注解成@Repository,完成与数据库的连接。Service层是与Controller层和Dao层起连接作用的层,Service实现类通过写入具体方法来实现业务。这样就可以实现通过Controller调用Service,再通过Service调用Dao[8-10]。
最后是表现层的开发,表现层即是管理系统与用户交互的界面。这里分为两个部分,分别是Web端和手机客户端。手机客户端主要作用是操作控制该OBD物联网系统,起到实时监测车辆的作用;Web端主要完成的是数据的管理和各种分析以及与用户界面交互。本系统采用Java、JSP、Ajax、jQuery等技术来实现表现层。
4 实现结果及分析
4.1 系统的实现
Web端用户根据权限不同进入不同界面,主要程序如下。
① 管理员端
② 用户端
...... before="FILTER_SECURITY_INTERCEPTOR"ref="securityFilter"/> 基础服务模块目前增加了离用户车辆最近加油站的查询服务,主要程序如下。 @RequestMapping(value="/station/search", produces=MediaType.APPLICATION_JSON_VALUE) @ResponseBody publicInforstackJsonResponse extends Object> searchFuelStation(Integer pageIndex, Integer pageSize, Double longitudeFrom, Double longitudeEnd, Double latitudeFrom, Double latitudeEnd, HttpServletRequest req){ try { if(longitudeFrom == null) { throw new RuntimeMessageException("app.error.longitude.from.empty");} if(longitudeEnd == null) { throw new RuntimeMessageException("app.error.longitude.end.empty");} if(latitudeFrom == null) { ...... if(longitudeEnd-longitudeFrom > maxRange|| latitudeEnd-latitudeFrom > maxRange) { throw new RuntimeMessageException("app.error.over.range");} if(pageIndex == null || pageSize == null) { pageIndex = -1; pageSize = -1;} PaginationModel if(ServerUtil.getUserId() == null) { ret = new PaginationModel ret.setData(new ArrayList ret.setPageIndex(pageIndex); ret.setPageSize(pageSize); ret.setPageTotal(0); ret.setRecordTotal(0); }else{ PaginationModel ret =ServerUtil.copyBeans(pm, GasStationModel.class);} ...... returnServerUtil.buildErrorResponse(); } 此外,通过OBD的GPS模块传回数据,再结合RMI接口通信,解析数据,可以得到车辆的实时位置。 手机客户端主要实现的是对该系统的控制以及对车辆的监测。例如,用户可以通过手机来开启和关闭该系统,也可通过发送命令让其对车进行全面检测。当有故障出现时,设备通过无线通信模块发送到手机,提醒车主故障信息等其他信息。当车辆发生故障时,车主还可通过实时救援功能,来通知最近的救援队伍来救援,OBD设备GPS模块会将车辆的实时位置数据上传到服务器并进行保存。 4.2 系统的分析 目前,系统已经投入到某地的实际运行当中。从运行结果来看,这种系统维护方便、移植性高,用现代化的信息媒介和数字化的管理,已经初步达到了用户的需求,完成了车辆监测的自动控制。与以往OBD系统相比,例如杨彬的OBDⅡ故障诊断系统[1],都是在硬件的基础上仅实现车辆的故障诊断,这里不仅实现了该功能,还添加了实时救援、语音导航、加油站查询等一系列服务,更利用手机通过无线网自动控制该系统,实时保护车辆处于最好的状态。当车辆有故障时,OBD通信模块会立即给手机发送报警信息,大大提高了车辆的智能化处理能力。但从结果来看,该系统也有一些缺点:当数据量过大时,行车数据上传有延迟,数据解析和处理稍显不足,后期会考虑用云存储解决该问题,符合现代数据量大的特点。此外,也可在OBD模块上增加其他的模块,例如远程通过无线网络实现车辆与家的控制,这些都是有可能实现的。 以OBD联网、手机自动控制和Web交互三者结合的方式,初步实现了车辆联网的智能化。手机可通过客户端发送命令让OBD系统开启和关闭、监测车辆和读取数据,用户可通过Web端查看数据和信息化管理设备、车辆,这在信息化的今天已经相当普遍了。通过手机来控制设备,实现车辆监测系统的智能化,是物联网在车辆方面很好的应用。随着车辆数以万计的增加,这样的OBD物联网控制系统对用户来说,提供了便利性,必定会越来越普及,越来越智能,也为今后城市智能化行车系统打下了基础,这也是本文的意义所在。 [1] 杨彬,周建武.基于OBDII和GPRS远程汽车故障诊断系统设计和实现[J].计算机应用与软件,2012,29(9):203-206. [2] 孙其博,刘杰,范春晓,等.物联网:概念、架构与关键技术研究[J].北京邮电大学学报,2010,33(3):1-9. [3] 孙光明.基于3G的多通讯模式的车辆监控调度系统的设计与实现[D].武汉:武汉理工大学,2005. [4] 百合提努尔.基于安卓智能手机的车载诊断系统实现[J].中国新通信,2014(13):31-33. [5] 孙剑宇.车联网风生水起[J].办公自动化,2014(2):15-17. [6] 陈保帆.汽车车载诊断系统分析与研究[J].数字技术与应用,2012,16(7):103-110. [7] 李刚.轻量级Java EE企业应用实战[M].北京:电子工业出版社,2012. [8] 贾蓓,镇明敏,杜磊,等.Java Web整合开发实战[M].北京:清华大学出版社,2013. [9] 舒礼莲.基于Spring MVC的Web应用开发[J].计算机与现代化,2013,219(11):167-173. [10]邵刚.基于Spring框架的MVC控制器的优化与改进[D].济南:山东大学,2011. [11]宋慧明,赵晓峰,万庆,等.多森软件通讯协议[S].深圳,2013:1-78. Research and Development of OBD IOT Control System On-board diagnostics (OBD) is becoming increasingly popular in the automotive field; currently, the applications of OBD are also extensive on the market. Through the study on the new generation of OBD, the Internet of thing control system based on OBD is proposed and designed. On the basis of traditional OBD system, the system integrates the technologies of RMI, GPRS and GPS; and implements the remote communication and navigation functions between device and client, even realizes intellectualization through convenient control system of mobile phone. The system functions are implemented by adopting the widely applied MVC and Hibernate technologies. The experimental results show that comparing with traditional OBD system, this new system is superior in performance, with rich functions and strong practicability; it serves better for combining devices and facilitates the majority of owners; it is a major advance in intelligent development for Internet of things and Internet of vehicles, and possesses certain marketing prospect. At present, the system has been put into practical operation. Internet of things Automatic control system Remote communication Intellectualization Internet of vehicles 国家自然科学基金资助项目(编号:61304129)。 汪玲燕(1990-),女,现为武汉科技大学控制科学与工程专业在读硕士研究生;主要从事网络自动控制化、基于网络的计算机应用等的研究。 TP399 A 10.16086/j.cnki.issn1000-0380.201505013 修改稿收到日期:2014-12-01。5 结束语