CAN网络系统中单帧和长帧测试研究

2022-09-11

当代汽车电子控制技术快速发展, 网络技术已经是电子技术发展的一个关键点, 因此国内外很多大企业公司和研究部门在基于计算机网络技术的基础上致力于开发车载网络研究技术。当前CAN总线 (控制器局域网) 在汽车应用中的广泛使用, 简化了汽车电子线路, 使得其电子控制系统获得了非常高的可靠性和灵活性[1]。

CAN是德国公司为了解决汽车交换系统中各种数据交换而开发一种串行数据通讯协议。随之美国在经历了十几年的协议标准规范后, ISO正式颁发了CAN国际标准ISO-11898、IOS-11519, 从而使得CAN变得规范化、标准化。我国的CAN总线的研究起步较晚, 通常是在科研所或者高等院校, 也开始慢慢的应用到汽车控制交换系统中:利时公司的DSC2000控制系统中, CAN的功能是用于I/O模块间的信息交换[2]。

一、CAN技术

(一) CAN技术特点

CAN技术是应用短帧数据结构、多主方式工作、报文标识符划分等多种技术的通讯标准, 其具有以下特点:

CAN技术传输时间短、检错性高、稳定[3]。

CAN技术在通讯介质选择不受限, 市面上大多数的介质, 如双绞线、光纤、同轴电缆等, 都可以通用。

当某一个处于CAN总线技术的节点, 发生了较大的节点故障时, 则它会自动主动关闭节点的输出功能, 且总线中的其它部位都不会受到任何影响。

CAN技术仅需报文过滤就可实现多种方式接收数据, 例:点对点、一对多、多对多等。

(二) CAN分层模型

CAN技术规范可消除不同CAN之间的差异性, 从而实现高透明性、灵活性。在ISO/IO模型中CAN具有不同的层次结构:数据链路层、物理层, 如图1所示:

数据链路层被细分为:逻辑链路控制子层 (LLC) , 该层功能作用是为数据远程请求、传输等提供服务, 确定LLC层收到的报文, 恢复报文的管理和超额通知等进行处理;媒体访问控制子层 (MAC) , 该层主要功能为传输报文中帧之间的规则。

物理层的主要功能为总线上位传输的位节点之间的电气属性, 并达到优化线路中的各种信号的传输作用。

(三) CAN帧结构

CAN数据传输的基本单位是报文, 每个在总线上的数据都会携带有一个标识符ID, 它的值确定了数据的优先权。CAN总线的节点之间都可以发送数据, 但CAN是单处理机制, 若有两个节点同时发送报文则优先级别高的报文才能在发送数据, 优先级低的报文则需等待空闲。因此节点帧的格式决定了不同的数据在传输控制中的重要性, 在CAN技术中帧划分为四种格式:数据帧、远程帧、错误帧、过载帧。

1. 数据帧

数据帧的主要功能是将数据从发送端发送到目的地址, 它在数据结构上, 主要是分为7个段构成, 如图2所示:

帧起始:表示帧信息的起始位置, 只有在总线空闲时才能够发送该帧是否能够发送的信号。

仲裁段:CAN总线没有明确的位表明节点的优先级别, 因此当总线中多个节点同时发送数据帧请求服务时, CAN规定仲裁场来确定数据帧的优先级。根据CAN2.0版本的标准不同, 帧ID分为11位和29位两种方式, 两者方式的区别在于位数的不同, 在帧的优先级别表示方式不同。在总线仲裁过程中, 帧ID的值越小, 则表示优先级别越高, 传输的数据能够有效被传输或处理。

控制段:该字段由6个位构成, 保留2位来作为扩展功能。

数据段:一个字段的传输数据量通常为0~8位, 如图3所示, 该字段最多仅能够传输8位, 这种短帧优势为:发送、接收速度快、时间短、实时性高, 干扰概率低、抗干扰能力强。正式这种短帧的数据字段使得CAN总线技术能够广泛应用在汽车等企业中。

CRC段:CAN技术采用的CRC校验进行数据的容错检测, 而该CRC校验值则放置在CRC字段中。CRC字段分为:15为CRC值、1位CRC校验值。

ACK段:当一个目的节点接收到的从起始帧到CRC段这些帧的内容都没有差错, 那么它将会在ACK段发送一个确认信号, 表示信息已经接收到了, 可以发送下一个信息了。

帧结束:数据帧都通过7个隐性的位以此来判定当前一帧是否已经接收完成。

2. 远程帧

CAN总线中节点请求另一个节点的全部数据信息时, 向目的节点发送远程帧来请求;目的节点在接收到带有标识信息的远程帧后, 会给源节点发送一个一致的标识信息表示其可以发送数据;源节点在接收到回复的远程帧后, 就会根据标识符给目的节点发送目的节点所需的数据。

远程帧同理也是由6个字段构成, 它和数据帧的一些区别如表1所示:

3. 错误帧

CAN总线虽然有较高的正确率, 但仍会出现一些故障和错误, CAN的错误类型分为5种:CRC错误 (源节点、目的节点的CRC值不同步) 、格式错误 (数据帧格式不合法) 、ACK错误 (源节点本应收到, 却没有收到ACK信号) 、位发送错误 (源节点和总线的电平不一致) 、位填充错误 (传输信号违反“位填充”规则) 。

一旦出现上述错误, 源节点或目的节点就会发送错误帧, 提示信息出现错误。错误帧的结构是由:错误标志、错误界定符。同时为了防止自身的错误引起的正常节点无法发送或接收错误帧, CAN总线设置了两个硬件设备:REC (接收错误计数器) 、TEC (发送错误计数器) 。

4. 过载帧

当目的节点当前无法接收下一帧时, 就会向源节点发送过载帧, 以便告知源节点不用发送的数据给目的节点。过载帧的主要结构:过载标志、过载帧界定符。

二、CAN网络系统中数据帧测试应用

CAN网络系统普遍应用在汽车行业中, 因此本文主要是CAN网络系统在车载系统中短帧的发送和长帧的拆分、组装。

CAN总线传输最大的数据帧为8个字节, 因此设计的车载系统中TMP模块主要功能是将长帧消息分割成CAN总线可以携带的数据个数进行发送, 再通过协议规定组装, 实现大于8字节数据的传输即所谓的长帧。

(一) 帧的结构

由于不同节点网络层上层协议单元之间的通信是通过交换N_PDU实现的, ISO15765-2:2011 (E) 规定了四种不同网络层数据单元:单帧 (SFN_PDU) 、首帧 (FFN_PDU) 、连续帧 (CFN_PDU) 、流控帧 (FCN_PDU) , 而网络层数据单元由CANID、N_PCI、N_Data组成。四种不同网络层数据单元主要是N_PCI格式不同, 如下图4所示:

单帧 (SF) 是由源节点发送给一个或多个目的节点, 其请求服务是单独的, 且未被拆分过。

首帧 (FF) 是标识拆分后的数据的第一帧, 在目的节点接收到信息后, 根据帧的标识符来组装拆分的信息。

连续帧 (CF) 是标识拆分后除首帧外的其它帧, 当最后一个帧发送完成后, 目的节点则会重组这些拆分帧。

流控帧 (FC) 是流控状态, 主要是用来限制发送方的接下来的行为, 包含了三个状态:别是FC.CTS (继续发送) , FC.WAIT (继续等待) , FC_OVFLW (缓存溢出, 此时应该终止发送) 。

(二) 帧的测试

针对单帧测试主要是测试总线上电控单元发送出来网络数据是不是符合要求、测试端发送单帧以及长帧, 电控单元接收到该帧后, 能正确回复单帧、以及发送错误的单帧, 电控单元接收到后, 不做处理即不回复;针对长帧的测试也是根据其拆分后进行测试每个帧:首帧、流控帧、连续帧, 首帧的测试总线上电控单元发送首帧数据是不是符合N_PCI要求, 测试端发送正确首帧, 电控单元能给出相应的响应, 测试端发送错误的首帧, 电控单元不回复;流控帧的测试主要测试总线上电控单元发送流控帧的数据是不是符合N_PCI要求, 测试端发送正确的首帧, 电控单元能发送正确流控帧, 测试端发送错误的首帧, 电控单元不回复, 连续帧的测试主要是测试总线上电控单元发送的连续帧的数据是不是符合N_PCI的要求。

1. 单帧测试点

单帧 (SF) 的测试主要测试点:测试总线上电控单元发送网络数据的第一个字节的位7-4为0;测试总线上电控单元发送网络数据的第一个字节的位3-0为数据长度值;使电控单元发送单帧, 查看单帧的数据长度是否在有效范围, 如表2所示:

2. 首帧测试点

测试总线上电控单元发送的首帧第一个字节的位7-4为1;测试总线上电控单元发送的首帧第一个字节的位3-0和第二个字节的位7-0为数据长度;使电控单元发送首帧, 查看首帧的数据长度字段是否在有效范围内, 如表3所示:

3. 流控帧测试点

测试总线上ECU发送的网络数据中流控帧的第一个字节的位7-4为3;测试总线上ECU发送的网络数据中流控帧的第一个字节的位3-0为FS;测试总线上ECU发送的网络数据中流控帧的第二个字节的位7-0为BS;测试总线上ECU发送的网络数据中流控帧的第三个字节的位7-0为STMin;测试端连续发送两次FC帧给电控单元, 电控单元应忽略第二次FC帧发送CF帧给测试端;测试端发送的FC帧的长度不为8个字节的情况下, 电控单元忽略该帧;测试端得到FF帧后不发送FC帧, 电控单元应不再发送CF帧;测试端得到FF帧后延时Timeout Bs (1000ms) 时间再发送FC帧, 电控单元应不再发送CF帧;测试端得到FF帧后延时 (Timeout Bs-5) ms时间再发送FC帧, 电控单元应发送CF帧;测试端得到FF帧后发送功能寻址的FC帧, 电控单元应不发送CF帧;

4. 连续帧测试

连续帧CF的主要测试点:测试总线上ECU发送的网络数据中连续帧的第一个字节的位7-4为2;测试总线上ECU发送的网络数据中第一个连续帧的SN=1;测试总线上ECU发送的网络数据中连续帧的SN号依次加1;测试总线上ECU发送的网络数据中连续帧的SN号达到0x0F后, 下一个连续帧的SN号为0x00, 再次进入下一个循环;连续帧的SN号与中间的流控帧的个数以及数据无关, 不会影响连续帧的SN编号。

三、结论

本文通过在CAN技术中数据帧的各帧结构测试来反应不同的情况, 以此来加强车载系统中电子控制的强度。

摘要:随着汽车电子控件技术的快速发展, 网络CAN技术已成为一种主流的车载系统。但CAN数据帧仅能传输8位的数据, 因此对于大于8位的长帧的拆分、组装以及单帧的测试在实际的应用中则极其重要。

关键词:CAN网络,单帧,长帧

参考文献

[1] 王新忠, 王熙, 王少农, 庄卫东.拖拉机CAN总线车载智能终端技术研究[J].农机化研究, 2017, 39 (02) :210-214.

[2] 谢勇, 梁伟, 李仁发, 吴克寿, 洪朝群.一种适用于车联网环境的车载CAN信号打包算法[J].软件学报, 2016, 27 (09) :2365-2376.

[3] 李智杰, 李超智.基于汽车CAN总线概述及其故障检测方法探讨[J].电气传动自动化, 2015, 37 (02) :38-43.

上一篇:李士忠在“学吉化”的日子里下一篇:巧用数学思维方法解答选择题