CANFD 协议在标定监控中的研究与应用
2022-05-23潘文卿周善政王飞飞宋炳雨
潘文卿, 周善政, 王飞飞, 宋炳雨
(潍柴动力股份有限公司, 山东 潍坊 261061)
在电控系统开发过程中有大量的标定监控数据, 通常采用的是基于CAN的XCP/CCP协议, 因为传统的CAN协议支持的最大波特率是1000kb/s, 每一条报文最多可以传输8个字节的数据。 随着控制逻辑的不断增加, 尤其是智能驾驶的兴起, 需要标定监控的数据量不断加大, 继续采用基于传统CAN的标定监控方法, 会降低数据采集速度, 限制数据单次采集量, 总线负载率还会不断攀升, 影响数据传输的稳定性和可靠性。 为了解决负载率问题同时还要兼容传统的CAN协议, CANFD协议应运而生, 其可以向下兼容传统的CAN, 同时在数据段可以将波特率最大提升到5000kb/s, 数据段长度可以增加到64字节, 可以用更快速度来传输更多的数据。
1 CANFD协议的特性
CANFD的帧结构如图1所示, CANFD的帧结构中分为两段: 仲裁段和数据段。 在仲裁段有一个BRS (Bit Rate Switch) 位, 1表示进行速率切换, 0表示不进行速率切换,仲裁段最大可支持的波特率是1000kb/s, 如果数据段要提升速率从此位开始, 最大可支持5000kb/s。 CANFD的数据段的数据场可以最大支持64字节的数据, 同时CRC校验在传统CAN的基础上进行了软件升级, 如果数据段长度大于16字节时, CRC的长度为21bits, 采用CRC_21多项式校验算法, 小于16字节时, 采用CRC_17多项式校验算法。 根据数据长度采用更加可靠的校验算法, 能保证数据传输的可靠性。
图1 CANFD帧结构图
2 CANFD在标定监控中的研究与应用
当前的标定监控协议一般是采用XCP 或者CCP 协议,XCP协议更具有灵活性, 定义了不同的传输层, XCP逐渐取代了古老的CAN标定协议CCP, 其在功能上有了很多改进,包括: 支持任何物理层, 不仅限于CAN, 还包括以太网、Flexray、 LIN、 USB等, 优化了控制单元资源的利用率, 同步数据激励, 支持启动测量, 通过块传输命令优化通信,即插即用配置, 通过测量控件内的时间戳, 从而精确测量数据采集。 在数据采集方面, 主要采用DAQ模式, 在这种模式的应用下, 加持CANFD的特性, 会大大提升数据的监控量和数据的传输速度, 同时还会降低总线负载率。
2.1 XCP协议的数据传输DAQ介绍
在数据采集过程中首先通过连接指令建立上位机与下位机的连接, 然后通过seedkey校验, 完成功能解锁, 然后获取通信模式, 设置内存空间和接收传来的地址和数据长度。 下位机会通过报文告诉上位机工作模式, 可以用的DAQ通道数和允许发送的最大包数, 上位机收到信息后, 会整理要监控的数据地址和数据长度, 通过报文下发给下位机, 下位机收到相关信息后将按照顺序将数据地址和数据长度存放到一个结构体中, 然后在周期任务中逐条发送相关数据的值。 此过程如图2所示。
图2 XCP_DAQ配置过程
2.2 基于CANFD的数据传输优化
在建立连接、 安全访问以及DAQ准备的过程中都是采用问答形式, 所以传统的8 字节传输形式就可以满足要求,此过程中仅仅提升数据段的波特率即可。 在DAQ配置过程和数据传输过程因为数据量会特别大,采用最大64字节的数据传输形式, 根据实际数据量确定数据段的长度。 如图3所示, 在本文中, 通过0xC7命令写多个DAQ时, 最多每次最大可以传输64个字节, 将更多的数据地址和数据长度相关信息同时传递给下位机, 下位机收到信息后, 根据传入的顺序将数据地址和长度存储到结构体中, 并在周期任务中 (10ms或100ms) 向总线上发送这些地址和长度对应的数据。 在本文的测试中采用仲裁段1000kb/s, 数据段4000kb/s的波特率。 传输数据是以16个字节的长度, 10ms周期发送到总线上。 如果有100ms采集数据的需求, 会在10ms采集数据的后面配置100ms的DAQ, 实现DAQ动态可配置的功能, 方便灵活。
图3 CANFD_XCP的应用
3 结论
本文基于CANFD的优势特性, 在数据标定监控中, 通过提升数据段的波特率, 增加数据段的长度, 可以使XCP监控数据量, 报文容量提升至少3倍, 同时还可以降低总线的负载率, 使得通信更加稳定可靠, 可以满足当前控制逻辑日益复杂化的标定监控需求。