1、第 61 卷 第 8 期Vol.61 No.82023 年 8 月August 2023农业装备与车辆工程AGRICULTURAL EQUIPMENT&VEHICLE ENGINEERING0 引言随着对重型车污染物排放监管力度的加大,国家生态环境部发布的 GB17691-2018重型柴油车污染物排放限值及测量方法(中国第六阶段)明确规定所有国车型必须安装 OBD 车载终端,使用 SAEJ1939、ISO15765、ISO27145 通信协议实现 OBD 车载终端与车辆 CAN 总线的通讯,对发动机尾气排放状况进行实时监控和故障诊断1。由于各个主机厂采用的通信协议类型不尽相同,致使不同车型的通
2、信参数配置也存在较大差异2。整车各控制域 CAN 通道通信参数一致时,车载终端系统可以快速配置相同的通信参数并实现通信,但是由于车型更新、配置升级、网络结构优化等需求变化,整车各控制域通信机制也不断调整,导致单个车辆的多通道CAN总线可能存在不同的波特率、通信协议,车载终端若无法实现通信协议自适应,将导致其与车辆 ECU 通讯失败,无法起到 OBD 车载终端的实时监控诊断功能3。目前存在的 CANdoi:10.3969/j.issn.1673-3142.2022.08.024CAN 总线协议自适应算法研究李青涛1,钱枫1,3,王明达2,王洁1,祝能1,王超1(1.430081湖北省武汉市武汉科
3、技大学;2.100012北京市中国环境科学研究院;3.264207山东省威海市山东鸣川汽车集团有限公司)摘要 为提高环境空气质量,减轻重型柴油车排放尾气对大气的污染,重型柴油车后处理系统功能和配置不断改进,整车通信网络也不断升级优化,导致车辆多通道 CAN 通信参数包括波特率和通信协议类型存在差异,加装的OBD 车载终端与车辆 CAN 总线适配困难。针对此类问题,提出一种 CAN 总线协议自适应算法,该算法通过波特率自动识别和特征字识别对 CAN 总线协议进行精确辨别,应用于 OBD 车载终端,实现对重型车不同通道 CAN 总线上通信协议类型的自动识别。通过模拟实验和实车测试从不同角度进行验证
4、分析,实验结果表明,应用 CAN 总线协议自适应算法的 OBD 车载终端对车辆常用 CAN 总线协议有较高的识别率和准确率,能高效自动识别车辆各通信参数,实现与车辆高效匹配连接并进行稳定的数据传输。关键词 CAN 总线;通信协议;自适应;OBD 车载终端 中图分类号 TP273 文献标志码 A 文章编号 1673-3142(2023)07-0120-05引用格式:李青涛,钱枫,王明达,等.CAN 总线协议自适应算法研究 J.农业装备与车辆工程,2023,61(8):120-124.Research on adaptive algorithm of CAN bus protocolLIQingt
5、ao1,QIANFeng1,3,WANGMingda2,WANGJie1,ZHUNeng1,WANGChao1(1.WuhanUniversityofScienceandTechnology,Wuhan430081,Hubei,China;2.ChineseResearchAcademyofEnvironmentalSciences,Beijing100012,China;3.ShandongMingchuanAutomobileGroupCo.,Ltd.,Weihai264207,Shandong,China)AbstractInordertoimprovetheambientairqual
6、ityandreducetheairpollutioncausedbytheexhaustgasofheavy-dutydieselvehicles,thefunctionsandconfigurationsoftheafter-treatmentsystemofheavy-dutydieselvehicleswerecontinuouslyimproved,andthecommunicationnetworkofthewholevehiclewasalsocontinuouslyupgradedandoptimized,resultinginthemulti-channelCANcommun
7、icationparametersofvehiclesincludingBaudrateandcommunicationprotocoltype,anditwasdifficultfortheinstalledOBDvehicleterminaltoadapttothevehicleCANbus.Therefore,aself-adaptivealgorithmofCANbusprotocolwasproposed.ThealgorithmaccuratelydistinguishedtheCANbusprotocolthroughBaudrateautomaticrecognitionand
8、characteristicwordrecognition.ItwasappliedtoOBDvehicleterminaltorealizetheautomaticidentificationofcommunicationprotocoltypesonCANbusofdifferentchannelsofheavyvehicles.Throughthesimulationexperimentandrealvehicletest,theverificationandanalysiswerecarriedoutfromdifferentangles.Theexperimentalresultss
9、howedthattheOBDon-boardterminalusingtheadaptivealgorithmofCANbusprotocolhadahighrecognitionrateandaccuracyforthecommonlyusedCANbusprotocolofthevehicle,couldeffectivelyandautomaticallyidentifythecommunicationparametersofthevehicle,realizetheefficientmatchingconnectionwiththevehicleandcarryoutstableda
10、tatransmission.Key wordsCANbus;communicationprotocol;adaptive;OBDon-boardterminal收稿日期:2022-06-24121第 61 卷第 8 期总线转换器多数是协议转换或者是波特率转换,功能单一,不能对 CAN 总线各通信参数进行较完整的识别,且应用于车载终端系统,不仅增加成本,而且也会降低数据传输效率和增加误码率4-5;汽车 OBD 诊断仪可以识别车辆各种通信参数,但是需要手动选择匹配,使得量产的车载监控终端安装使用更为繁琐。针对当前国重型车适配的 OBD 车载终端对CAN 总线波特率和协议类型不能进行自动识别,为了
11、提高终端的通用性、兼容性和自适应性,设计了一种 CAN 总线协议自适应算法。该算法首先通过轮询法对 CAN 总线的波特率进行准确识别;其次利用协议通信模式特征和数据包特征字符对车辆各 CAN 通道总线通信协议类型进行自动识别,相对于单一的识别算法,该算法识别率和准确率更高,可以快速匹配车辆总线并进行可靠的数据通信。1 硬件环境介绍OBD 车载终端遵循模块化设计原则,旨在降低整体设计复杂程度6。车载终端通过 CAN 数据采集模块采集车辆实时运行数据、诊断数据、状态参数以及其他需求信息,经加密签名后,利用 2G或 4G 无线通信模块按照国标准规定的通信协议上传于网络平台。图 1 是终端系统硬件架构
12、,MCU选用国产芯片 GD32F403RC,负责整个系统的运行调度,具有低功耗、高集成度和高性能的特点。CAN 控制器与车辆 CAN 总线的硬件连接如图2 所示。CAN 收发器采用恩智浦公司的 TJA1042 芯片,控制车辆 CAN 总线信号采集工作。CAN 收发器与车辆上的 CAN 总线之间采用双绞线形成的差分信号进行异步串行通信,依靠收发器中的位定时寄存器对总线电平分位,进而实现波特率设置;利用 CAN 总线协议实现数据的稳定传输7-8。2 CAN 总线协议自适应算法设计2.1 波特率识别波特率参数配置在 CAN 数据采集模块的底层驱动中进行设置,根据波特率的计算公式(1)-(6),只需要
13、合理设置 BAUDPSC、BS1 和 BS2 三个参数的值即可改变 CAN 波特率。BaudRate=1/Bit_Time (1)Bit_Time=tSYNC_SEG+tBS1+tBS2 (2)tSYNC_SEG=1tq(3)tBS1=(1+BS1)tq(4)tBS2=(1+BS2)tq (5)tq=(1+BAUDPSC)tpclk1 (6)式中:BaudRate 波特率;Bit_Time 位时间;tSYNC_SEG同步段占用时间单元;tBS1 位段 1总时间单元;tBS2位段 2 总时间单元;tq 最小时间单元;tpclk1总线系统时钟周期;BS1、BS2位段 1、位段 2;BAUDPSCC
14、AN 总线系统时钟预分频系数。MCU 内部集成的 CAN 控制器功能模块有 3 种工作状态:初始化状态、正常通讯状态和睡眠状态,通信过程中处于正常通讯状态。寄存器 CAN_INTEN 是 CAN 中断使能寄存器,控制各个中断使能位,如图 3 所示。其中位 2 和位 5 分别是接收 FIFO0 和 FIFO1 满中断使能位,1 使能,0 禁用;位 15 为错误中断使能位,1 使能,0 禁用。在CAN 处于正常通讯状态时,分别使能寄存器 CAN_INTEN 位 2、位 5 和位 15,读取 CAN_RFIFO0 接收 FIFO0 寄存器、CAN_RFIFO1 接收 FIFO1 寄存器和 CAN_E
15、RR 错误寄存器的状态值,判断当前波特率是否正确。基本模块CAN 模块USB 模块 GPS 定位模块 4G 联网模块调试模块电源模块晶振模块复位模块下载模块AI 接口 DI 接口DO 接口 ACC检测防拆除检测本地存储外置存储SD卡安全芯片LED 状态指示 基本接口通信模块MCUSPI 总线ADGPIOCANUSBUSART基本模块图 1 终端系统结构示意图Fig.1 Schematic diagram of terminal system structure图 2 终端 CAN 模块与车辆通信示意图Fig.2 Schematic diagram of terminal CAN module
16、and vehicle communicationstructure李青涛等:CAN 总线协议自适应算法研究122农业装备与车辆工程 2023 年汽车 CAN 总线上广泛使用高速 CAN:250kB/s和 500kB/s9,考虑到车载终端与车辆匹配使用的特性,车载终端仅需要检测车辆总线上这 2 种波特率即可。波特率自适应流程如图 4 所示,在自动识别波特率过程中,控制器不断读取错误寄存器的状态值并进行判断,若有错误中断发生,说明当前波特率不正确,错误寄存器累加计数,当计数值大于设定的错误报文阈值时,设置波特率参数,切换波特率;若无错误中断发生,说明当前波特率正确,波特率匹配成功。2.2 协议类型识别协议类型主要通过不同协议通信模式特征进行区分。SAEJ1939 协议、ISO15765 协议和 ISO27145协议均以开放式系统互联参考模型为基础进行制定,相比OSI的7层协议,3种诊断协议在物理层、数据链路层、网络层和应用层进行详细规定,并且各有不同,总线通信机制也具有很大差别10-13。如图 5所示,对于 SAEJ1939 协议,通讯报文多以广播形式发送于 CAN 总线,对于特定需求的