CAN总线网络下标准帧与扩展帧共存是否会引发冲突?

共 2531字,需浏览 6分钟

 ·

2024-11-30 08:00

点击上方蓝色字体,关注我们

在同一CAN总线网络上混合使用标准帧和扩展帧是技术上可行的,但实际中可能引发优先级不平衡、标识符冲突和网络负载增加等问题。


1


CAN协议规范的支持

CAN协议(如CAN 2.0B)明确支持标准帧和扩展帧的混合使用。


在帧的仲裁阶段,标准帧和扩展帧是兼容的,因为扩展帧的标识符会通过“IDE位”(标识符扩展位)进行区分:



标准帧的IDE位为0。



扩展帧的IDE位为1。



在仲裁阶段:如果两种帧同时竞争,标准帧因其标识符字段较短,在仲裁中优先级更高(假设标识符的前11位相同)。


扩展帧可能需要退避,等待总线空闲后重新发送。


2


硬件层面的兼容性

早期的CAN控制器可能只支持标准帧(如仅支持CAN 2.0A)。


大多数现代CAN控制器支持CAN 2.0B协议,能够接收和处理两种帧格式。


混合使用时,需要合理配置CAN控制器的滤波器和掩码。


如果滤波器设计不当,可能会导致标准帧或扩展帧被错误丢弃或误识别。


某些硬件滤波器资源有限,扩展帧的标识符长度较长,可能增加滤波配置复杂性。


3


应用层面的问题

(1) 优先级干扰

标准帧的优先级天然高于扩展帧,可能导致扩展帧在负载较高的网络中被频繁延迟。


如果应用中扩展帧承载的是时间敏感的数据,需特别注意。


(2) 标识符冲突

扩展帧的前11位可能与标准帧的标识符相同,容易产生混淆。例如:标准帧标识符:0x7FF。


扩展帧标识符:0x7FF1234 如果应用层处理逻辑未正确区分IDE位,可能出现数据解析错误。


(3) 带宽和负载

扩展帧的帧长度比标准帧长,传输扩展帧需要占用更多的总线时间。


在高负载网络中,扩展帧的使用可能加剧总线拥堵,影响通信实时性。


(4) 应用协议要求

高层协议(如CANopen、J1939)可能对帧格式有特定要求。例如:

CANopen通常使用标准帧。J1939则基于扩展帧。


4


设计与优化建议

(1) 通信规划

在设计阶段,尽量为标准帧和扩展帧分配不同的功能域,避免标识符冲突。


关键实时数据尽量使用标准帧,以减少仲裁延迟。


(2) 网络负载评估

定期评估网络负载,确保扩展帧的引入不会导致总线拥堵。


(3) 协议设计

如果混用不可避免,可以在应用层协议中增加帧类型区分逻辑,确保IDE位的正确解析。


(4) 硬件选择

确保使用支持混合模式的CAN控制器,选择拥有足够滤波器资源的硬件。


通过合理的通信规划、高效的滤波器配置以及负载管理,可以有效避免问题。


根据应用需求,还可以考虑采用其他高层协议(如CAN FD)进一步优化通信性能。

点击阅读原文,更精彩~

浏览 64
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报