最近在整理CAN总线相关资料时,居然发现CAN总线还有更高层级的协议!
CAN作为底层协议,CAN提供了通信的基础,但除此之外并不多。例如,CAN标准没有指定如何处理大于8字节的消息或者如何解码原始数据。
因此,存在一套更高级别的协议,以进一步详细说明如何在给定网络的CAN节点之间通信数据。
高层级的CAN
下面我们提供了最常见的汽车/工业CAN协议的概述:
CAN总线高级协议层OSI模型
OBD2
车载诊断用于汽车/卡车的诊断、维护和排放测试。它规定了例如诊断故障代码(DTC)和实时数据(速度,RPM)。
UDS
统一诊断服务(UDS)是用于汽车ECU的通信协议,用于启用诊断、固件更新、例行测试等。
CCP/XCP
CAN校准协议和通用测量与校准协议允许对ECU进行读写访问,用于校准、测量和闪存。
CANopen
CANopen在嵌入式控制应用中广泛使用,包括工业自动化,以实现CAN节点(即设备)之间的现成互操作性。
SAE J1939
J1939用于重型车辆。参数如“速度”由可疑参数号(SPN)标识,并按参数组号(PGN)分组。
NMEA 2000
NMEA 2000用于海上行业,用于连接船只上的引擎、仪表和传感器等。它基于CAN,并与J1939紧密相关。
ISOBUS
ISO 11783用于农业和林业机械。它实现了车辆和工具之间的即插即用集成,跨品牌。它与J1939紧密相关。
关于每项协议的具体内容这里不做描述,我们可以利用AI工具进行搜索的哈🤭
CAN总线与高层协议区别
CAN总线和高层协议之间的区别可能会令人困惑,让我们尝试揭开它的神秘面纱。
一个有用的类比是思考人与人之间的交流:
在这个背景下,CAN总线定义了物理要求(如声带和发声能力)和基本构建块,如字母表中的字母和语法。相比之下,高层协议反映了不同的语言,如德语或英语,使用这些基础知识构建有意义的单词和句子。
在这个类比中,让我们强调一些重要的观察:
总是有高层协议:在实际应用中,总是使用高层协议——否则就像没有语言的对话,即无意义的声音。
存在数千种协议:像语言一样,存在数千种高层协议。我们已经列出了一些最常见的,但还有更多——包括制造商/应用特定的协议,即“定制协议”。例如,我们的CANmod.temp传感器到CAN模块使用了一个最小化的、定制的协议,该协议仅指定如何编码几个与温度相关的CAN消息。
记录与理解数据:声音记录器能够记录任何人类对话,就像CAN总线数据记录器可以记录任何基于CAN的通信一样。但要有意义地解释信息,你需要理解语言,即高层协议。
多种协议:您的汽车使用基于CAN的高层协议来传输其大部分数据在ECU之间——通常是特定于汽车的。但除了这个特定于汽车的CAN协议之外,汽车还可以通过例如OBD2或UDS在同一CAN总线上进行通信,以实现标准化的诊断或排放测试——有点像你如何“插话”用英语向一群说德语的人提问。
互操作性:使用标准化的高层协议提供了跨应用和相关设备的基本互操作性——如果你理解语言(例如J1939),你可以在许多用例中利用这一点 其他高层CAN协议。
其他高层CAN协议
今天还经常遇到其他高层CAN协议,包括:
ARINC:'Aeronautical Radio, Incorporated协议'通常用于航空航天工业
UAVCAN:开源且轻量级的协议,通常用于无人机、航空航天和机器人技术。
DeviceNet:用于工业自动化/制造(传感器、执行器),特别是在北美。
SafetyBUS p:用于安全关键的工业自动化用例,例如汽车生产和缆车。
MilCAN:为军用车辆和恶劣环境设计,提供例如确定性数据传输。
HVAC CAN:为建筑/车辆中的供暖、通风和空调(HVAC)系统设计。