APP下载

远程排放管理车载终端测试软件的开发及应用

2020-09-04张国振吴诗宇

客车技术与研究 2020年4期
关键词:构架报文后台

张国振,吴诗宇

(1.工业和信息化部装备工业发展中心,北京 100846;2.重庆车辆检测研究院 国家客车质量监督检验中心,重庆 401122)

GB 17691—2018《重型柴油车污染物排放限值及测量方法(中国第六阶段)》[1]于2019年开始逐步执行,其中附录Q要求车载终端上传OBD、发动机、整车、驱动电机、车辆位置、极值、报警、电池电压/温度等数据。为了保证所传OBD数据、发动机数据格式满足GB 17691—2018[1],通信协议和其他数据格式满足GB/T 32960.3—2016《电动汽车远程服务与管理系统技术规范 第 3 部分:通信协议及数据格式》[2],需要对远程排放管理车载终端所传输的数据格式和协议一致性进行检测。

目前,行业中针对GB 17691—2018[1]的商业检测系统主要对象是排放,而对附录Q的车载终端,需要自主开发一套软件来完成数据格式和协议一致性的检测,为此笔者开发了此检测软件。本测试软件采用流行的软件框架,实现了软件的模块化,具有轻便性、可维护性和可扩展性。

1 软件主体结构和构架

1.1 主体结构

移动互联网发展到今天,手机APP已成为炙手可热的信息接收媒介。软件主体结构采用手机APP负责信息展示;后台服务器负责数据库操作、数据包接收和解析;Web端作为服务器管理人员操作的工具和界面。

由于报文数据本身对时间的同步性要求高,而手机APP、电脑Web端与后台服务器属于3种不同的设备,为了让不同设备在同步的时钟下显示和操作,需要用到长连接来保持同步。此处长连接采用了异步非堵塞Netty框架[3]。后台服务器与车载终端之间根据GB 17691—2018的数据格式和通信协议,采用Socket框架的长连接。软件框架相当于通用化的软件模板,可在此基础上进行个性化修改,使得软件满足使用要求,提高软件开发效率。主体结构系统图如图1所示。

图1 测试软件主体结构及应用

异步非堵塞Netty框架配置了严格的加密和解密算法,保证了数据的安全性,并且实现了高性能,吞吐量更高,延迟更低;减少资源消耗;最小化不必要的内存复制。

GB 17691—2018中规定了通信的数据格式和协议,本软件采用未进行封装的Socket进行数据操作[4]。Socket框架相比异步非堵塞Netty框架较为底层,可以按照国标实现通信协议,实现车载终端与后台服务器的长连接。

长连接是为了保持不同设备时钟和数据的同步。连接后,不用每次数据传输交换都进行握手,提高了通信效率。而手机APP、电脑Web端作为数据展示端和交互界面,调用服务器对其数据库进行操作,不需要较好的实时性,而需要较好的数据完整性和安全性,故采用更为成熟的Http协议进行数据交互[5]。

Http协议包括请求和响应,大多数情况都是APP或Web端把请求信息按JSON格式打包成请求体,发给后台服务器。服务器根据请求内容,进行数据库操作,完成之后把数据按JSON格式打包成响应体,发给APP或Web端。

1.2 软件构架

现代软件技术为了实现软件的可读性、轻便性和可维护性,需要把业务逻辑、数据和界面相分离。这样做的好处是,比如按车辆VIN号和型号查找报文列表,都是查询数据库的操作,只是查询条件的数据不一样,业务逻辑和界面都相差不大。只要实现了业务逻辑、数据和界面相分离,就可以实现最大限度的软件复用和轻便性[6-7]。维护起来也相对简单,功能一致的用一个模块实现,每次修改只需要修改数据或界面即可,实现了较好的可维护性。这样的软件构架也是目前最为流行的MVC(Model、View、Controller)构架[8-10]。在APP、Web和后台服务器程序的每一个地方都体现了MVC的理念,APP中的Activity页面的构架如图2所示。

图2 APP软件中的Activity页面构架示意图

后台服务器的软件构架相对来说复杂一点,主要是因为涉及数据库的操作、报文数据的接收和解析,为APP和Web端提供服务。作为较为底层的程序,ODB持久层程序只负责与关系数据库的操作。在其上,有Server层,实现具体的功能,如注册用户、用户登录、报文显示、终端信息管理、长连接等功能块。Server层之上为Controller层,相当于总调度中心。如果手机APP发送了一个请求,Controller去调用一些Server功能块,完成某个操作,Server返回了一些响应数据,再通过Controller返回给手机APP用于显示。一种手机APP的一种请求对应一个Controller调度令,Controller调度令的数量多于Server功能块。Controller调度令和Server功能块一起组成了MVC中的C,Model相当于ODB持久层和关系数据库,View相当于数据提供的手机APP和电脑Web端。这样也可以将后台服务器的软件构架看成MVC结构,只是稍微变形而已,如图3所示。

图3 后台服务器软件构架图

其他软件功能块,如用户登录、用户注册、车载终端信息管理、检测流程等,与以上结构和构架类似,本文不详细论述。

2 测试软件的应用

2.1 接收并保存国六终端报文

后台服务器调用CountrySixStandard功能块开启长连接线程,开启一个端口用于接收终端发来的数据,然后把全部数据放入entity中,再放入数据包对象ReceiveMessages里面。根据通信协议中的数据格式,取出数据包体。

对不同的报文类型,从数据包体(含包头、数据体、校验位)中取出数据体,将其组合成不同类型的JSON数据格式(以登录数据包为例),保存到数据库中。

2.2 解析国六终端报文

以OBD和发动机数据格式的定义进行每一位的解析。格式定义见表1和表2。测试软件按OBD和发动机数据进行解析,需要解析的OBD数据和发动机数据见表1和表2。

表1 OBD数据(详见GB 17691—2018附录Q)

表2 发动机部分数据(详见GB 17691—2018附录Q)

2.3 传输报文给APP或Web端

本文以APP为例说明,Web端不详述。APP调用Controller调度令,取出请求体中的内容,放入wrapper中,执行数据库的条件查询,查到的结果放入ResultHelper中,返回给APP。

2.4 测试软件测试结果

本文以测试软件中的APP为例说明,Web端不用详述。测试软件的APP实现了车载终端报文数据解析和显示,测试软件测得的结果如图4所示。

图4 APP数据解析页

3 结束语

本文开发的测试软件可用于GB 17691—2018附录Q中远程排放管理系统车载终端的软件符合性检测,也可用于发动机及OBD数据的监控。后续动作准备把数据进行采集后,根据数据辨识得出此车辆的数学模型,并根据数学模型监测以后运行中的发动机和OBD数据,监测发动机排放的劣化程度和数据真实性等指标。

猜你喜欢

构架报文后台
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
构架云中《金桥》 打造强势期刊
构架云中《金桥》 打造强势期刊
构架云中《金桥》 打造强势期刊
基于Python的汽车CAN总线报文格式转换系统的设计与实现
基于报文类型的限速值动态调整
Wu Fenghua:Yueju Opera Artist
略论意象间的主体构架
后台暗恋