什么是 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 由德国跨国工程技术巨头博世在 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 网络中,所有的节点都通过双绞线或光纤相连。每个节点都有自己的微控制器,负责处理收到的消息和发送的消息。数据由节点在共享总线上广播,所有其它节点都能收到。通信过程的几个关键阶段包括:
- 仲裁:为了避免多个节点同时发送数据产生冲突,CAN 采用了一种基于消息优先级的仲裁过程。消息的标识符值越小,优先级越高。
- 错误检测:内置的错误检测机制保证了 CAN 网络中数据的完整性。这些机制包括循环冗余校验(CRC)、帧校验序列(FCS)以及接收节点确认位。
- 故障界定:如果节点在传输过程中检测到错误或故障,它会进入“被动错误”状态,直到问题解决。这种机制可以防止故障对整个系统功能造成干扰。
这些特性相互配合,使得 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 数据,以减少数据量,然后将处理结果实时传输到云端。
我们至少需要两个组件来构建这样的解决方案:
- 边缘计算引擎:边缘计算引擎可以只收集所需的 CAN Bus 信号,灵活地处理它们,并实时触发 MQTT 传输动作。
- 云端的 MQTT Broker:利用 MQTT Broker,可以实现将处理过的 CAN Bus 数据实时传输到云端。
结语
利用开源边缘计算引擎 LF Edge eKuiper 进行 CAN Bus 数据的实时处理和分析,再结合开源 MQTT 服务器 EMQX 搭建可靠且可扩展的 MQTT 基础设施,收集 CAN Bus 数据,我们可以实现 CAN bus 数据本地实时处理后上云,在有效节省资源的同时充分发挥数据价值。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。