随着智能汽车的发展,车云通信的功能场景及数据量也逐渐增多,具有轻量化、可靠性等特点的MQTT协议成为很多OEM车云通信协议的选择。本文主要介绍。
什么是MQTT?
MQTT(Message Queuing Telemetry Transport)是由OASIS发布的应用层协议,采用订阅/发布的通信模式,下层基于TCP/IP进行传输。该标准在工业物联网、车联网等领域有广泛应用。
MQTT主要有以下特点:
发布/订阅模式:实现Client之间的解耦
轻量:非常小的通信开销,最小的消息大小为2字节
可靠:基于TCP可靠通信,并可以提供三种消息发布服务质量等级QoS,以适应不稳定网络的传输需求
开源:存在较多开源代码工程,支持各种流行编程语言,成熟度高
MQTT在通信过程中包括两种角色Client和Broker:
Client:MQTT客户端,交互应用数据的节点,发布数据的角色为Publisher,接收数据的角色为Subscriber
Broker:MQTT服务器,中转通信数据,将从Publisher收到的应用数据转发给Subscriber
MQTT的通信过程:Subscriber向Broker以Topic的形式订阅数据,Publisher以Topic的形式向Broker发布应用数据,Broker接收Publisher发送的Topic后,再发送给已订阅相关Topic的Subscriber,如此实现Publisher和Subscriber的通信过程。
图1 MQTT通信示意图
MQTT系统设计
MQTT协议在车载通信领域的典型应用场景是车云通信,因此本文以车内节点与云端的通信场景为示例,介绍MQTT系统设计的主要流程和方法。
图2 MQTT系统设计流程
MQTT系统设计需要依赖前期完成的车云UC(Use Case)描述、通信矩阵、车内拓扑以及云端架构部署等作为输入,针对MQTT的特点,完成通信设计,主要输出产物为基于特定车型或平台的MQTT通信矩阵。车端和云端的开发工程师需要根据设计输出产物,完成相关功能的软件开发,测试工程师也需要以设计输出为基础,开展MQTT测试验证工作。
MQTT通信系统设计涉及以下方面:
MQTT角色设计:基于功能需求为通信节点部署角色
Topic设计:明确Topic定义和数量
数据类型设计:为每个Topic指定传输信息
QoS设计:为Topic匹配QoS策略
MQTT角色定义
基于MQTT协议的特点,需要首先明确车云通信拓扑中各节点的MQTT角色。
由于各节点间需要交互的数据均需要经过Broker,因此一般将性能较好的云端的服务器部署为Broker,车内需要与云端通信的节点为Client,云端后台/APP等节点为Client。
图3 MQTT角色部署
Topic设计
MQTT系统内各节点用Topic来交互应用数据,Topic的划分可以从数据内容或者功能角度划分,例如车况上传的数据在一个Topic,远程车辆控制的数据在一个Topic。
除此之外,MQTT的Topic名称设计也应遵循一定的原则,例如:命名长度不应超过65535 Bytes,建议采用统一的命名规则,并且按照分级符“/”进行层级划分。例如针对某平台的车况上传数据,其Topic可设计为:{vehicle_platform}/{vehicle_model}/{ECU}/vehicle_info/{vin}/up 。
数据类型设计
MQTT协议单帧报文支持的最大传输数据为256M Bytes,因此一次性传输需求超过该大小的数据不适合采用MQTT进行传输。
MQTT数据格式没有严格定义,只要收发双方采用统一的编码/解码规则即可,常采用JSON数据格式,需要传输的应用数据信息,用“key-value”进行描述,key的定义以及value的数据类型需要参考车内的通信矩阵,可以保持一致。
使用JSON格式的好处是只要求数据收发双方对同一个key的理解是一致的,对“key-value”组合的排布顺序无严格要求,如果有扩展需求,可以直接添加“key-value”组合定义,并且“key-value”组合是可选的,按照时间/事件情况选择发送/不发生即可,无需额外制定协议层策略,兼容性和灵活性较高。
图4 Topic数据定义
QoS设计
MQTT具备QoS策略以保证不同情况下的通信服务质量,因此需要根据功能场景需求为不同的数据Topic设计匹配的QoS策略,整体原则如下:
对于实时性要求较高,且允许一定程度丢帧的场景,QoS推荐设计为0,例如用于实时显示用的周期上传的数据
对于不允许丢帧、可重复传输的场景,QoS推荐为1,例如反馈云端下发指令是否正常接收的信号
对于具有严格传输需求(不允许丢帧、不允许重复传输)的场景,QoS推荐为2,例如安全相关的数据
总结
本文首先介绍了MQTT协议,再从MQTT角色设计、Topic设计、数据类型设计、QoS设计几个方面出发,介绍MQTT系统设计流程和方法,车端ECU及云端的开发工程师需要根据MQTT系统设计的输出完成后续软件开发,实现车云功能的通信。
经纬恒润作为OPEN联盟会员和AUTOSAR联盟的高级合作伙伴,长期为国内外各大OEM和供应商提供涵盖TCP/IP、SOME/IP、DoIP、AVB、TSN、DDS等技术领域的设计和测试咨询服务,积极研发和探索车载网络前沿技术的工程应用。通过多个项目的实践经验,已建立了高质量、本土化的设计与测试一体化解决方案,为整车网络架构提供可靠支持。
-
云通信
+关注
关注
0文章
49浏览量
10886 -
MQTT协议
+关注
关注
0文章
98浏览量
5440
原文标题:让MQTT运转起来—车路云一体化之MQTT系统设计
文章出处:【微信号:经纬恒润研发服务,微信公众号:经纬恒润研发服务】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论