基于CAN总线协议车载网关双缓冲区的设计研究

2021-09-26 19:53张晓光,陶英轩,黄金山
汽车科技 2021年4期
关键词:网关

张晓光,陶英轩,黄金山

摘  要:提出了一种基于车载CAN总线协议网关的发送与接收缓冲区设计方法。以接收与发送双软件缓冲区去配合CAN控制器的硬件缓冲区,设计中断式报文存储进程将硬缓冲区数据实时读取到接收软件缓冲区中,设计中断式数据发送进程将发送软件缓冲区数据及时发送到发送硬缓冲区,通过与硬件缓冲区的这种联动方式能够实时地接收报文,保证报文不丢失;也能够在目标总线负载率较大时,避免漏发报文以及保证发送报文周期。

关键词:CAN;网关;双缓冲

中图分类号:TP368.1      文献标识码:A   文章编号:1005-2550(2021)04-0102-03

Design and Research of Vehicle-mounted Gateway Double Buffer Based on CAN Bus Protocol

ZHANG Xiao-guang, TAO Ying-xuan, HUANG Jin-shan

( Product Development Department, Faw Car Ji Lin, Chang Chun 130012, China )

Abstract: Abstract: A design method of sending and receiving buffer of vehicle-mounted CAN bus gateway is presented. To receive and send double software buffer to match the CAN controller's hardware buffer, the interrupted message store process is designed to read the hard buffer data into the receiving software buffer in real-time, by this way of linkage with hardware buffer can receive a message in real-time, ensure the message is not lost; It is also able to avoid missing message and ensure the massage sending cycle when the target bus load rate is high.

1    引言

随着汽车CAN总线技术的快速发展,汽车CAN总线技术已经非常成熟,汽车CAN控制器(ECU)逐渐增多,车载CAN总线路数由前几年的1-2路CAN快速发展为当前的6-7路CAN,各路CAN之间需要网关传递的路由信息也爆发式增长。出于节约成本和集成化的要求,网关均采用MCU集成CAN控制器的技术方案实现CAN总线通信。由于MCU内部CAN控制器的硬件接收缓冲区和硬件发送缓冲区很小,当CAN网络上短时间内出现大量报文时,接收硬buffer就会存满,如不能及时处理,接收报文将丢失;同样当目标总线负载率过高,硬件发送缓冲区就将形成积压报文,使缓存区溢出,这样就会导致漏发报文。为此,本文基于CAN总线协议车载网关,提出双缓存接收与发送策略,保证路由信息被及时接收与发送。

2    CAN总线通信原理

CAN总线,是一种基于ISO国际标准化的串行通信总线。在汽车产业中,出于对安全性、舒适性、方便性、低功耗、低成本的考虑,应用于汽车内各种电子控制系统中,实现准确的数据采集及执行器功能控制。

1986年德国博世公司开发出面向汽車的CAN 通信协议。CAN总线通信协议逐渐标准化,逐渐形成并完善了CAN协议ISO11898及ISO11519,使得不同开发商的ECU可实现无障碍通信。CAN总线的高性能和高可靠性已被汽车行业所认同,并成为汽车电气系统的主要通信手段。对汽车电气功能的快速发展提供了信息通道保障。

3    CAN ECU网络拓扑

现阶段汽车行业内CAN网络拓扑基本采用单网关(GW)多子网网络拓扑结构。如图1所示:

4    网关工作主流程设计

基于CAN总线协议对网关提出的实时性、报文完整性、报文重新封装组合等性能的基本要求,设计出网关主流程,如图2所示。

当某子网节点发送报文后,CAN收发器将进行滤波,如是需网关路由信息,将向上存储到CAN控制器接收硬buffer中,并产生接收中断。接收中断将打破网关主流程,并开启中断流程-报文存储进程,报文存储进程将报文按顺序写入接收软buffer中。网关主流程按照每1ms周期进行软buff数据处理,将处理好的数据存储到发送硬buffer中,等待CAN发送器发送。当发送器完成发送后,触发报文发送中断,发送中断将打破网关主流程,并开启数据发送进程,将发送软buffer数据存储到硬发送buffer中,再次等待CAN发送器发送。

5    网关双缓冲区设计

按照主流程设计思路,每路CAN均将设计3个缓冲区,分别为应用报文缓冲区,网管报文缓冲区,诊断报文缓冲区。为了保证网关的实时性和可靠性,以及节省 RAM 空间,需要对缓冲区大小上进行考量。

5.1   缓冲区最小单元设计

针对CAN总线报文格式,计算出存入一条报文需要的最大内存空间(字节数)为: (11(ID) +4(DLC)+64(DATA) )/   8,因为嵌入式处理器的存储器是以1 Byte即8 bit为单位设计的,所以上面计算公式中的bit数要向上取整成8 的整数倍,11取整成16,4取整成8,得到结果为:2+1+8= 11。由此可知,最小的缓冲区大小为11 Byte,即存下一条最大报文的大小。

5.2   接收缓冲区大小设计

对于应用报文缓冲区的计算,根据奔腾某车型路由表计算,网关最大路由负载出现在EV子网,分别为10ms报文12条,100ms报文17条,200ms报文5条,1000ms报文49条。如未设置报文发送段间隔,那么极限情况下,报文将出现排队无间隙情况。也就是当控制器上电初始化完成后,第一时间将有12+17+5+49=83条报文等待传输,按照总线波特率为500kb/s时,每帧报文传输时间为0.25ms,计算得出这些报文将连续传输21ms,同时10ms 周期报文将发送2轮,即总计将有83+24 =107条报文排队发送,预计发送时间26ms。因此在此26ms内,网关将出现最大负载量即接收107条报文。考虑网关主程序为每1ms对缓存内数据进行处理,假设目标总线负载率为40%,那么网关将每1ms可处理报文数量为2条,26ms内将处理52条报文,也就是有107-52=55条报文将被缓存起来。因此计算出EV-CAN接收缓冲区的大小为:55×11= 605Byte。

对于诊断报文缓冲区的计算,也按照总线波特率为500kb/s时,每帧报文传输时间为0.25ms。当目标控制器反馈流控STmin为0ms时,而又不开启28禁用通信诊断指令的前提下,如需最大传输数据量为2KB。那么网关将在500ms内将收取诊断仪传输的2Kb数据,考虑网关主程序为每1ms 对缓存内数据进行处理,假设目标总线负载率为40%,那么网关将每1ms可处理报文数量为2条,而能够在500ms内转发1KB数据,即还有1Kbyte数据需要缓存。因此,在奔腾某品牌诊断特殊要求下(目标总线负载40%,需要在不打开28服务前提下发送2KB),计算出诊断报文接收缓冲区的大小为1KB。

对于网络管理报文的计算,按照AUTOSAR简单网络管理规范,根据奔腾某车型网络架构,最大节点出现在舒适CAN,子节点数量为8个,即100ms内将有8条报文录入网关。计算出舒适-CAN接收缓冲区的大小为:8×11=88Byte。

按照上述计算,将在网关MCU内设计7路接收缓冲区,又将缓冲区进行分类,分别为7个605B大小的应用报文接收缓冲区,1个1K B大小的诊断报文接收缓冲区,7个88 B大小的网络报文接收缓冲区。

5.3   发送缓冲区大小设计

发送缓冲区根据高优先级先发、同优先级先入先出的原则,重新调整发送顺序,等待CAN 控制器将报文发出去。考虑到最不利的情况,可能网络存在很大的延时,发送不畅,需要将所有接收缓冲区的报文都存入发送报文缓冲区,所以发送缓冲区大小应该和接收缓冲区一样。

6    结束语

通过对网关单位时间内路由数据最大化研究,提出了双缓冲区网关设计方法,利用该方法解决了低成本网关丢帧、及时性差等问题。本设计已经应用于奔腾车型上,车辆情况完全正常,没有出现数据丢失和严重延时等情况,进一步证明了该网关设计方法的可行性和可靠性,同時降低了汽车零部件的成本,提高了社会效益。

参考文献:

[1]ISO 15765-1 道路车辆—对控制器局域网(CAN )的诊断—第一部分:总体信息(Road vehicles — Diagnostics on Controller Area Networks(CAN)— Part1:General information).

[2]ISO 15765-2 道路车辆—对控制器局域网(CAN )的诊断—第二部分:网络层(Road vehicles — Diagnostics on Controller Area Networks(CAN)— Part2:Network layer services).

[3]程安宇,何川,冯辉宗,等.基于SAE J1939协议的双缓冲区网关设计[J].计算机应用,2010.

[4]孔令伟.  车载CAN网络的网关设计方法研究[D]. 2008.

[5]李爽,孙克怡.  汽车网络的分类及发展趋向[J]. 单片机与嵌入式系统应用. 2006 (02).

[6]王杰.  车载网关设计方法及其网络管理技术研究[D]. 2009.

[7]魏伟,姚维,章玮. CAN/LIN网关在车身网络中的设计与应用[J]. 电气自动化. 2008 (02).

[8]付少兴,陈晓波,李靖一. 单片机技术的应用与发展[J]. 通讯世界. 2016 (15).

张晓光

毕业于东北大学自动化专业,本科学历,现就职于一汽奔腾轿车有限公司,主要从事汽车网络诊断开发、网关开发等工作。

猜你喜欢
网关
基于FPGA的工业TSN融合网关设计
基于ARM架构的工业物联网网关研究与实现
潜伏定时炸弹边界网关协议不可忽略
基于ENC28J60的嵌入式以太网/CAN网关设计
基于电子商务的支付网关研究