黎扬,何适
(上海北汇信息科技有限公司,上海 201800)
随着网联化逐渐成为汽车的标配,而T-Box作为车联网的一个关键环节,从起初单纯的实现车辆信息采集,已发展到具有车辆信息监测及信息交互(V2X)、车辆远程控制、安全监测和报警、远程诊断、边缘计算等多种离线和在线应用功能的载体。为保障T-Box功能的正常运转,对其进行功能测试尤为重要。由于T-Box与车内控制器通过传统总线或车载以太网进行信息交互,与车外TSP(Telematics Service Platform)通过蜂窝基站无线技术进行信息交互,针对“Input仿真”与“Output监测”闭环的自动化测试存在一定难度,故基本通过手动或半自动化的传统方式进行测试,依靠“人在环”方式记录测试数据以及判断测试结果。但该方式测试效率低且覆盖度受限,难以满足研发的快速迭代和深度验证的要求。
同时在项目开发前期,由于T-Box、TSP后台、App可能由不同的厂家负责开发,每个产品开发的进度和完整度是不一致的,所以为了更早地对T-Box的功能进行自动化测试和验证,如果T-Box与TSP后台的通信使用了MQTT协议,则可以利用MQTT协议的特点,通过CANoe仿真另外一个Client,实现CANoe、Broker和T-Box之间的信息交互。
MQTT(Message Queuing Telemetry Transport,消 息 队列遥测传输协议)是IBM在1999年发布的一种基于发布/订阅(Publish/Subscribe)模式的“轻量级”通信协议。该协议可用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通信协议,MQTT在物联网等领域有很广泛的应用。
MQTT也是一种基于客户端-服务器的发布/订阅消息协议,包含发 布 者(Publisher)、代理(Broker)、订 阅 者(Subscriber)3个角色。发布者和订阅者之间没有直接连接,需要通过Broker进行消息的存储和转发,而Broker又通过主题(Topic)进行消息的发送和接收。一个典型的MQTT消息通信流程如图1所示。
图1 MQTT通信模型
1)发布者(Publisher)连接到Broker。
2)订阅者(Subscribers)连接到Broker,并订阅主题“vehiclespeed”。
3)发布者(Publisher)发送给Broker一条消息,主题为“vehiclespeed”。
4)Broker收到Publisher的消息后,发现Subscriber订阅了“vehiclespeed”主题,然后将消息转发给Subscriber。
5)订阅者(Subscribers)从Broker接收发布者(Publisher)发送的消息。
CANoe的连接特性服务(Connectivity Features Service)主要用于物联网或工业领域支持MQTT协议的设备,CANoe将这些设备抽象成分布式对象(Distributed Objects),通过本地网络(Local Network)或云端代理服务器实现各客户端之间的通信。同时CANoe15.0版本新增了一种新的通信方式,让代理(Broker)在CANoe中运行来实现通信,从而实现一些故障注入的测试。
本文主要以本地网络的形式对MQTT的仿真和测试进行介绍,其中发布者和订阅者通过CANoe仿真实现,Broker可使用真实的服务器,或者在本地电脑搭建测试用Broker,将Broker地址(需使用外网的IP或域名)和端口配置到TBox中。
Broker搭建完成后,在CANoe的Options设置窗口中配置Broker的IP地址和端口(MQTT功能仅在连接CANoelicense时可用),示例如图2所示。
图2 CANoe MQTT配置界面
在 仿 真MQTTClient之 前,需 要 在CANoe的CommunicationSetup环境中手动创建Distributed Objects的接口(Interfaces)和对象(Objects),或者通过vCDL文件,创建MQTT的数据库。
手动创建MQTT数据库流程如下。
1)创建需要的通信接口。
2)选择Objects,创建需要通信的对象。
3)为每个对象创建对应的数据。
4)选择创建的Data数据,在右侧MQTT配置窗口中配置其属性值。
创建vCDL数据库的流程如下。
1)打开“Open vCDL Editor”。
2)创建MQTT的接口、对象和数据。
3)定义MQTT的属性值。
4)选择import Data Source导入创建好的vCDL文件。
vCDL导入成功以后,可查看定义属性及参数,如图3所示。
图3 MQTT模型编辑界面
使用vCDL创建MQTT数据库的示例如图4所示。
图4 MQTT vCDL数据库开发界面
通过上面的配置,下面以远程解闭锁控制测试为例,为大家介绍测试执行过程。
测试环境如图5所示,由于此测试方案CANoe是调用测试电脑的网卡与Broker进行通信,所以需要测试电脑可连接外网。
图5 T-Box测试环境
当CANoe运行时,会自动连接到Broker。测试数据流如下。
1)CANoe(Publisher)首先仿真TSP发送远程解锁请求给Broker。
2)Broker根据Topic,自动转发该请求给T-Box(Subscriber)。T-Box收到该远程请求后,通过CAN或Ethernet将远程解锁请求发送至车内节点。
3)CANoe仿真车内节点反馈远程解锁成功的应答。
4)收到远程解锁成功应答后,T-Box(Publisher)把远程解锁执行结果上传至Broker,Broker根据Topic,自动转发该请求给CANoe(Subscriber)。
测试交互的数据如图6所示。
图6 CANoe MQTT数据监控窗口
本方案利用MQTT协议的技术特点,无需TSP提供额外的API接口,即可实现T-Box远程功能的自动化测试,可以在项目早期完成对T-Box的功能验证。根据不同的技术特点,北汇信息已实现在线测试、离线分析等不同的T-Box自动化测试的方案,欢迎大家进一步沟通交流。
注:文中部分图片来源于Vector。