车联网通信揭秘:CAN Bus 协议解读

什么是 CAN Bus?

CAN(Control Area Network)总线是一种串行通信协议,能够让设备之间可靠而高效地传输数据。它广泛应用于车辆领域,像神经系统一样连接车辆内部的各个电子控制单元。

CAN Bus 最初由博世公司在 20 世纪 80 年代为汽车应用而设计。它是一种多主、多从、半双工、具有容错能力的协议,非常适合汽车领域的需求。它简单、低成本、可靠,能够在恶劣的环境中工作。CAN Bus 为车辆中所有电子控制单元提供了一个统一的接入点,方便进行连接和诊断。

CAN Bus 数据能够反映连接设备的性能和状态。然而,由于数据量大、带宽有限以及网络不稳定等因素,收集和处理 CAN Bus 数据可能面临一些挑战。

为了应对这些挑战,可以利用 MQTT 协议,确保在网络状况不佳的情况下及时将车辆数据传输到云端。EMQX 是一款开源的 MQTT Broker,能够搭建可靠且可扩展的 MQTT 基础设施,用来收集 CAN Bus 数据。

车联网通信揭秘:CAN Bus 协议解读

CAN Bus 发展简史

CAN Bus 由德国跨国工程技术巨头博世在 20 世纪 80 年代初开发,旨在为汽车应用提供一种高效的通信系统,主要目的是简化车辆内部线束的复杂程度。

1986 年,博世发布了首个 CAN 协议,由于其可靠性和健壮性,很快受到了汽车制造商的青睐。1993 年,它成为 ISO-11898 国际标准。该协议演进过程大致如下:

  • 1991 年:梅赛德斯-奔驰在其 W140 S 级车型中采用了 CAN Bus ,成为最早采用 CAN Bus 的汽车制造商之一。
  • 2004 年:推出了 CAN FD,相比传统 CAN 网络,提供了更高的数据速率和更大的有效载荷。
  • 2015 年:使用 ISO-16845:2015 作为一致性测试的测试方案,用于对实现了经典 CAN 以及 CAN FD 协议的设备进行一致性测试。

除了汽车领域外,CAN Bus 协议还逐渐应用于其它行业,例如工业自动化系统(CANopen)和船用电子设备(NMEA 2000)。它的广泛应用主要得益于它能够在恶劣的条件下稳定运行,并且实施成本较低。

CAN Bus 工作原理

CAN Bus 是一种分布式的通信协议。它的分布式特点使它非常适合对可靠性和实时性有较高要求的应用,如汽车和工业系统。

在 CAN 网络中,所有的节点都通过双绞线或光纤相连。每个节点都有自己的微控制器,负责处理收到的消息和发送的消息。数据由节点在共享总线上广播,所有其它节点都能收到。通信过程的几个关键阶段包括:

  1. 仲裁:为了避免多个节点同时发送数据产生冲突,CAN 采用了一种基于消息优先级的仲裁过程。消息的标识符值越小,优先级越高。
  2. 错误检测:内置的错误检测机制保证了 CAN 网络中数据的完整性。这些机制包括循环冗余校验(CRC)、帧校验序列(FCS)以及接收节点确认位。
  3. 故障界定:如果节点在传输过程中检测到错误或故障,它会进入“被动错误”状态,直到问题解决。这种机制可以防止故障对整个系统功能造成干扰。

这些特性相互配合,使得 CAN Bus 能够高效运行,确保车辆或工厂自动化设备等复杂系统中各个组件之间的可靠通信。

CAN 协议的消息结构

在 CAN Bus 系统中,消息结构对于设备间的高效通信非常重要。该协议的数据帧格式由以下几个字段组成:标识符、控制字段、数据字段和错误检测机制。

  • 标识符 (CAN ID):这是一个唯一的值,用于确定网络上每条消息的优先级。标准的 11 位标识符(CAN 2.0A)提供了多达 2048 种不同的优先级。扩展的 29 位标识符(CAN 2.0B)提供了更多的选择,有超过五亿个优先级。
  • 数据长度码(DLC):位于控制字段中,用于指定数据字段所包含的字节数,取值范围 0 – 8 个字节。
  • 数据字段:包含了实际要在节点间传输的信息,以字节为单位。
  • 循环冗余校验(CRC):一种内置的错误检测机制,通过检测传输错误并在必要时请求重传来保证通信的可靠性。
  • 确认槽:一个单独的位,用于接收节点向发送节点发送确认信息,表示成功接收消息或需要进行错误重传。
  • 错误帧:CAN 消息的一个可选部分,用于节点在检测到自己发送或者接收到的消息有问题时发出信号。

CAN 的种类

CAN 主要包括三种类型:

低速 CAN

低速 CAN,也叫做容错 CAN 或 ISO 11898-3,最高传输速度为 125 kbps。它适用于像车身控制模块、门锁、窗户控制等不太重要的系统,这些系统对数据传输速度的要求不高。它的主要特点是即使总线中的一根线断了,也能继续正常工作。

高速 CAN

高速 CAN,或 ISO 11898-2,传输速度最高可达 1 Mbps。因为它比低速网络有更快的数据传输速度,因此适合需要及时响应的应用,如发动机管理系统和电子制动系统。但是,它没有低速网络的容错能力。

CAN FD

CAN FD 由博世在 2012 年推出,是高速网络的扩展版,具有更高的数据传输速度,最高可达 5 Mbps,同时向后兼容现有高速设备。这项技术的主要优势在于它比传统的 CAN 能更有效地传输更大的载荷,使其非常适合现代车辆日益复杂的电子系统。

CAN Bus 的优势和挑战

CAN Bus 有哪些主要优势?

CAN Bus 数据可以反映车辆的性能、健康状况和行为特征。把 CAN Bus 数据收集到云端是一种利用车辆数据潜力的有效方法,可以通过大数据分析来发现数据价值。通过将机器学习、人工智能或其它分析工具应用于从车辆收集的大量数据,车辆制造商可以获得有价值的信息,并利用它们优化车辆性能。

  • 检测、消除、预测故障:通过分析 CAN Bus 数据,可以识别设备和传感器发出的异常或错误信号。这有助于诊断问题的根本原因,并在它导致更大损失或带来安全问题之前修复它。制造商还可以利用收集的数据来训练机器学习模型,从而实现故障的预测。
  • 可视化车辆数据:用户可以利用收集的数据构建一个系统,将综合数据展示在仪表板上,实现对不同车辆和指标的过滤、排序和比较。该仪表板还能基于数据分析提供警报和建议,帮助用户全面了解性能情况。
  • 车路协同:将收集的数据与道路基础设施数据结合,可以建立车路协同系统。

在人工智能时代,数据是最有价值的资产。通过将车辆的数据收集到云端,然后将其分发到各种数据基础设施,如数据库和数据湖,用户可以利用数据实现各种类型的应用。

实时数据收集面临哪些挑战?

尽管在车辆本地收集 CAN Bus 数据已经相当成熟,但由于高数据速率、低带宽和不稳定的网络环境,导致收集、处理和实时传输 CAN Bus 数据到云端面临着巨大的挑战。将所有 CAN Bus 数据都传输到云端进行处理是不切实际的。所以,可以在边缘端本地收集和处理 CAN Bus 数据,以减少数据量,然后将处理结果实时传输到云端。

我们至少需要两个组件来构建这样的解决方案:

  1. 边缘计算引擎:边缘计算引擎可以只收集所需的 CAN Bus 信号,灵活地处理它们,并实时触发 MQTT 传输动作。
  2. 云端的 MQTT Broker:利用 MQTT Broker,可以实现将处理过的 CAN Bus 数据实时传输到云端。

结语

利用开源边缘计算引擎 LF Edge eKuiper 进行 CAN Bus 数据的实时处理和分析,再结合开源 MQTT 服务器 EMQX 搭建可靠且可扩展的 MQTT 基础设施,收集 CAN Bus 数据,我们可以实现 CAN bus 数据本地实时处理后上云,在有效节省资源的同时充分发挥数据价值。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论