CAN FD/XL的协议异常(Protocol Exception)功能

1. 序言

自博世公司于1986年提出CAN总线的概念以来,到2024年ISO 11898-1:2024的发布,从“经典CAN(CAN CC,Classic CAN)”,到“具有灵活数据速率的CAN(CAN FD,CAN with Flexible Data rate)”,再到“具有扩展长度的CAN(CAN XL,CAN with Extended Length)”,CAN总线的发展历经三代演变。

为实现“分布式实时控制”这一核心,CAN总线基于“原子广播”架构,采用“非破坏性仲裁”技术,令更高优先级的消息在赢得总线使用权的同时,无缝完成实时传输;采用增强的错误检测及指示(响应)机制,CAN总线的目标是:一条在总线上传输的消息要么被所有的节点接收,要么被所有的节点拒收。因此,CAN总线的节点间具有极好的数据一致性

2. CAN规范的兼容性问题

为保护对现有设备的投资,一个成熟的总线规范在升级时,总会尽量优化对现有规范的向下兼容,而CAN总线的错误检测及指示(响应)机制,却给它的规范升级带来了相当大的挑战

例如,一个遵照ISO 11898-1:2003设计的CAN CC接收节点,当其在网络中收到CAN FD格式的消息时,它并不能识别出CAN FD的协议格式,而是按照CAN CC协议格式解码消息,由于两个帧格式在控制场、数据场、CRC场的较大差异,CAN CC接收节点正确解码CAN FD格式消息的概率几乎为零,如下图所示即为CAN CC和CAN FD的基本帧格式:

可以看到,即便CAN FD帧不使用比特率切换功能,CAN CC接收节点在它的DLC[3]这一位开始,与CAN FD帧之间出现位定义错位,几乎可以确定CAN CC接收节点最晚会在它的EOF第一位开始CRC报错,令CAN FD帧传输失败。

3. 协议异常事件的引入

博世公司的CAN 2.0A/B、CAN FD 1.0、ISO 11898-1:2003等规范均未考虑这一问题,直到ISO 11898-1:2015规范的发布,首次引入了“协议异常事件(Protocol Exception Event)”这一概念,用于提高协议的向上(前向)兼容能力,是一种前瞻性容错机制,允许现有节点在无需修改硬件的条件下,容忍未来协议扩展带来的未知帧格式,从而降低网络升级复杂度。如下图所示(摘自ISO 11898-1:2015 Page 5):

“协议异常”处理的基本原理为:当接收节点检测到自身不支持的,但满足规范定义的“协议异常事件”时,退出“接收”状态,转为“总线集成(Bus Integration)”状态。

在“总线集成”状态下的接收节点,向总线持续发送隐性位(不影响当前消息的正确传输),不改变自己的错误计数器计数值,当检测到总线上的11个连续“隐性”位后恢复“空闲”状态,继续接收总线上的下一条消息。如下图所示(摘自ISO 11898-1:2015 Page 40):

ISO 11898-1:2015规范共定义了两个协议异常事件

  • 一个CAN CC接收节点,按照CC格式解码,基本帧的r0位(或扩展帧的r1位),对应FD帧格式的FDF位,若采样值为“隐性”而不是期望的“显性”时,这是一个协议异常事件,能按照规范进行协议异常事件响应的节点,将不会影响本FD格式消息的传输。规范将按此要求设计的CAN CC节点重命名为CAN FD Tolerant节点;
  • 一个CAN FD接收节点,按照FD格式解码,若采样到FDF位的后一位(即FD帧格式中的res保留位)为“隐性”而不是期望的“显性”时,这是一个协议异常事件,规范要求按照响应可配置的方式实现,即用户可通过软件配置设备响应为协议异常事件,或响应为格式错误。这就为基于ISO 11898-1:2015设计的CAN FD设备,兼容后续(2024年)发布的CAN XL协议打下了良好的基础。

ISO 11898-1:2015定义了一个全局的协议异常事件:规范为CAN节点的设计,引入了一个新的可选功能,称为“操作受限(Restricted Operation)”模式,处于该工作模式下的CAN节点,只接收数据帧(DFs)和远程帧(RFs),接收无差错条件下发送响应位,不发送错误帧(EFs)和过载帧(OFs)。“操作受限”的CAN节点在接收错误,或收到其它节点发送的过载帧时,处理为协议异常事件,转入总线集成状态。

4. ISO 11898-1:2024的协议异常机制

可以看到,ISO 11898-1:2015规范的向上(前向)兼容手段还是比较保守的,仅在有限范围内,限制了低版本协议的接收节点对高版本协议消息的打断。而到了ISO 11898-1:2024,手段就比较激进了:

  • 规定节点的错误指示(响应)机制须设计为可配置的,由用户选择使能或禁止;
  • 被禁止错误指示的节点,检测到错误时,响应为协议异常事件;
  • 存在禁止错误指示的节点时,网络的数据一致性是不能保证的,由用户决定是否保持网络的数据一致性
  • “操作受限(Restricted Operation)”模式是设计必须提供的功能,用户配置节点处于本模式时,节点检测到接收错误或收到其它节点的过载帧时,处理为协议异常事件,转入总线集成状态。

如下图所示(摘自ISO 11898-1:2024对应章节):

在使能节点的错误指示(响应)的情况下,ISO 11898-1:2024规定的协议异常事件与ISO 11898-1:2015差别不大:

  • CAN FD Tolerant接收节点,按CC帧格式解码,但兼容FD帧格式。在IDE位采样到“隐性”位,按照CC扩展帧格式继续,解码至“控制场”的第1位(即扩展帧格式的r1位,与FD扩展帧格式的FDF位对应),若采样值为“隐性”而不是期望的“显性”时,按协议异常事件响应;

  • CAN FD Tolerant接收节点,按CC帧格式解码,但兼容FD帧格式。解码至“控制场”的第2位(即基本帧或扩展帧格式的r0位)。基本帧格式(即此前IDE位采样为“显性”),r0位采样值为“隐性”而不是期望的“显性”时,按协议异常事件响应;扩展帧格式(即此前IDE位采样为“隐性”),r0位采样值可为“隐性”或“显性”,不判断为协议异常;

  • CAN FD接收节点,按FD帧格式解码。紧跟FDF格式位的后一位,定义为“显性”的res保留位,用于区分FD帧格式和XL帧格式。res位采样值为“隐性”而不是期望的“显性”时,用户配置使能了协议异常功能的节点,按协议异常事件响应;否则按格式错误响应;

  • CAN XL接收节点,按XL帧格式解码。“控制场”的第1位,即resXL位,该位采样值为“隐性”而不是期望的“显性”时,由用户针对该位的配置响应为协议异常事件或格式错误。

5. 协议异常事件响应机制的应用示例

假设一个由CAN FD节点和CAN FD兼容节点构成的CAN总线网络,其中一个CAN FD节点连续发送两帧消息,第一帧为FD格式,紧跟其后的第二帧为CC格式。总线上的位流传输,CAN FD发送节点、CAN FD接收节点和CAN FD兼容接收节点的关键响应如下图所示:

可以看到,在无传输差错的情况下,协议异常事件响应机制的引入,使得FD、CC格式的消息成功地传输至目的节点:

  • 发送节点连续的,格式不同的两帧消息成功发送;
  • CAN FD接收节点成功接收两帧格式不相同的连续消息;
  • CAN FD兼容接收节点虽然不能正确接收FD格式的消息,但响应为协议异常事件,未干扰FD格式消息的传输,且成功接收紧跟FD格式消息之后传输的CC格式消息

6. 协议异常事件响应机制的一些局限

6.1 当前的适用范围窄

协议异常事件响应机制的设计目的是:向基于旧版本CAN规范设计的节点网络中添加新版本节点时,由旧版本节点的协议异常事件响应机制来避免对新版本节点的新格式消息传输的影响。其短板在旧版本节点,因此:

  • 基于ISO 11898-1:2015之前的CAN规范设计的CAN CC节点,无协议异常事件响应功能,向这样的网络中添加CAN FD或CAN XL节点,新版本节点不能发送新版本的消息格式;
  • 虽然ISO 11898-1:2015规范允许CAN协议控制器的设计者,选择设计为CAN CC、CAN FD Tolerant、CAN FD Enable,从实际情况来看,各大ASIC芯片厂商(如TI、NXP、Microchip …),或IP厂商(博世半导体、CAST、DCD …)提供的CAN FD产品,都是全功能的。目前的CAN总线产品应用市场上,ISO 11898-1:2015版和更早版本的CAN CC、CAN FD还占据着绝对主流,并不能使用协议异常事件响应机制来提高二者的兼容性,而当网络中的节点版本相同时,本身就不需要协议异常事件响应功能
  • 向ISO 11898-1:2015版(及其后)的CAN FD节点网络中,添加CAN XL节点,利用协议异常事件响应机制,可有效地实现CAN FD节点对新加入的CAN XL节点传输新版本消息格式的兼容。目前的市场情况是:支持20Mbps的CAN XL收发器芯片还未推出,CAN XL的专用协议控制器芯片还未推出,搭载CAN XL外设的MCU还未推出,CAN XL的IP供应方面,仅DCD公司宣称支持ISO 11898-1:2024,包括博世半导体在内的其它IP供应商宣称支持的规范是CiA 610-1,有待更新。

综上,CAN规范的协议异常事件响应机制,是为未来准备的,主要用于向大规模应用的CAN FD网络中添加CAN XL节点,实现CAN FD网络的渐进式升级,当前暂时还处于几乎无用武之地的境况

6.2 对节点间数据一致性的影响

协议异常事件响应机制,对CAN网络中各节点间的数据一致性有较为明显的负面作用,CAN总线的用户在网络管理时,应对此给予足够的重视

例如,一个使能了协议异常事件的CAN FD节点,接入网络后,当它按照FD帧格式解码至控制场的第3位,若采样到“隐性”位,需按规范执行协议异常事件的响应,转入总线集成状态,放弃当前消息的接收。在实际的网络管理中,设计者必须考虑该节点转入总线集成状态到底是因为当前传输的消息是一个CAN XL格式的消息(即正确的协议异常事件触发),还是节点本地采样错误引起的协议异常事件误触发。

当网络中本来传输的是CAN FD格式的消息时,部分节点因res位的本地采样错误而误触发协议异常事件,拒收本条消息,则导致节点间的数据不一致

CAN规范制定时,并不假定CAN设备工作于极低误码率的良好环境。设计者也不应被特定某位采样错误的表象所迷惑,这恰好是需要考虑通信误码时最重视的情况,这仅仅是一个单比特错误是所有错误中概率最大的情况

7. 总结(一家之言)

总线规范的升级与发展,是市场竞争下不可逆转的趋势。CAN总线是众多总线的佼佼者,堪称经典。1986 ~ 2025,四十年的风雨,历经CAN CC、CAN FD、CAN XL的三代叠代。

从最开始的CAN CC对CAN FD升级的兼容性困扰,到ISO 11898-1:2015的有限补丁,再到ISO 11898-1:2024将兼容性和数据一致性作为选择题交给用户,增强的错误检测及指示(响应)机制而确保的网络数据一致性曾经的核心竞争力,似乎正成为CAN总线发展之路上不堪重负的包袱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值