基于LabVIEW和J1939协议的CAN总线通讯平台开发

虚拟仪器

26人已加入

描述

  应用领域:商用车CAN 总线通讯

  挑战:CAN2.0B 规范的工业总线通讯、报文标识符和数据帧定义没有形成统一的标准,参数定义

  随意性很大。商用车CAN 总线通讯标准,遵循建立在CAN2.0B 基础上的SAE J1939 协议。报文标识

  符ID,按照SAE 标准制定的车速、发动机转速、扭矩、温度、压力、燃油消耗量等参数的物理定

  义,报文数据帧格式对应协议数据单元相应数据内容的封装。面临的挑战是将J1939 协议融会贯通

  于CAN 总线通讯平台的设计之中。

  应用方案:使用NI LabVIEW 软件开发平台和PXI 模块化仪器系统中的CAN 通讯模块,创建过滤

  识别J1939 协议报文标识符ID 及多帧报文按协议格式解析接收和封装发送的设计方法,并据此方

  法构建CAN 通讯平台;完成整车电环境半实物仿真、发动机台架试验CAN 总线信息的收发、存贮及

  实时计算显示。

  使用的产品:

  LabVIEW2009 软件平台

  PXI-1045 机箱

  PXI-8108 嵌入式控制器

  PXI-8464/2 CAN 通讯模块

  概述:

  进入21 世纪以来,商用车CAN 总线网络的应用得到了异常迅猛的发展。现今市面上满足国3~国5 排放标准的商用车,无一例外均应用CAN 总线网络,进行整车VECU、发动机EECU、自动变速箱ECU、汽车组合仪表ECU、车轮防抱死制动ECU 之间的数据通讯。基于J1939 协议的商用车CAN总线,针对单片机微控制器MCU 节点的MCU + CAN 控制器 + CAN 收发器的CAN 通讯接口,在车载网络控制系统中得到了大量应用;而对整车道路试验、发动机台架试验、整车电环境半实物仿真测试的上位机节点的PC 机或笔记本电脑 + CAN 通讯模块,大都使用价格昂贵的Vector CANoe 模块。

  存在的问题:

  1)PXI 测控装置无基于J1939 协议的CAN 通讯功能,不能满足试验工况对CAN 总线报文信息分析的功能需求。

  2)CANoe 模块时序不受PXI 仪器时钟速率控制,无法与PXI 时序的其它测量参数同步触发测量。

  基于LabVIEW 和J1939 协议的CAN 总线通讯技术方法,在国内汽车行业PXI 测控装置的应用属于空白,难点是如何将LabVIEW 软件开发平台与复杂的J1939 协议有效结合,实现报文信息的过滤接收、合成重组及封装发送。针对商用车CAN 总线通讯网络的特点,构建基于LabVIEW 和J1939 协议的CAN 总线通讯平台,嵌入在NI PXI 模块化接口的测控装置中,用于发动机台架试验、整车电环境半实物仿真测试。

  J1939 协议

  J1939 协议以CAN2.0B 规范为基础制定,对CAN2.0B 扩展帧29 位标识符ID 定义形成J1939 的编码系统,包括优先级P、预留位R、数据页DP、协议数据单元PF、扩展单元PS、源地址SA 和数据字节Data,如图1 所示。这七部分在开放式系统互联参考模型(OSI)应用层,通过协议数据单元PDU(Protocal Data Unit)被封装成一个或多个CAN 数据帧,通过物理层发送给总线网络其它设备节点。

  CAN

  图1 J1939 数据帧格式

  PDU 定义了数据帧中与J1939 协议相关的信息,由标识符ID 和数据场组成。

  PDU1 格式报文PF 在0~239 之间,报文为点对点向目标地址发送,PS:报文接收的目标地址,

  SA:报文发送的源地址,在目标地址中填入255,为全局地址发送。

  PDU2 格式报文PF 在240~255 之间,报文向全局地址发送,PS:参数组扩展值,J1939 协议大部分报文为PDU2 格式。PDU 数据场包含参数组中数据内容,参数组编号PGN(Parameter Group Number)用于唯一标识参数组的号码,由一个或几个参数构成一帧或多帧报文,而参数组是应用层中定义的与某个ECU相关的若干参数(例如发动机水温、燃油温度等)的组合。

  J1939 协议与CAN2.0B 标准区别

  标识符ID:CAN2.0B 不同功能的报文信息可以使用相同的ID,根据制造商特定的协议使用CAN设备,在集成时会产生ID 不能识别或识别不一致问题。J1939 每帧报文的标识符唯一,且每帧报文都有自己的PGN,为每个节点规定唯一的源地址,并将源地址映射到CAN 标识符中,避免多个节点使用相同的标识符,例如ID:0CF00400 代表发动机转速、扭矩报文。

  OSI 模型:CAN2.0 规范定义了七层OSI 参考模型的物理层和数据链路层,是底层标准,如图2所示, CAN 总线产品的兼容性、互换性和可集成性差。J1939 是面向OSI 参考模型应用层的高层协议,在应用层定义了针对车辆应用的信号(参数)和报文(参数组)。通过参数描述信号,并给每个参数分配了一个编号SPN(Suspect Parameter Number),参数定义了PDU 数据场中字节的物理意义,例如SPN190 代表发动机转速。一个PGN 中可能有几个SPN,PGN61444 包含了SPN190 发动机转速和SPN513 发动机扭矩等参数。多帧报文:CAN2.0B 规范定义只能使用单帧报文传输,J1939 协议除单帧报文传输外,还使用对话式、广播式多帧报文传输,并按多帧数据传输协议进行打包封装发送和接收合成重组处理,其中对话式多帧报文发送接收节点需要握手协议,广播式多帧报文面向全局地址发送。

  CAN

  图2 开放式系统互联参考模型(OSI)

  模块接口

  PXI-8464/2 双通道CAN2.0B 通讯接口模块,内含SJA1000T CAN 控制器和TJA1041T 高速CAN收发器及TJA1054AT 低速CAN 收发器。J1939 数据链路层通过PDU 格式实现报文的打包封装,通过CAN 控制器发送CAN 数据帧必须具有的同步、顺序控制、错误控制和流控制,自动产生CRC 校验位和ACK 应答位插入数据帧中。J1939 物理层协议规定了每个网段最多30 个ECU,CAN 总线通讯速率250 kBits/s,总线电平显性、隐性,差分电压3.5V/1.5V,差分传输双绞线线缆颜色CAN-H 黄色、CAN-L 绿色,CAN 收发器完成MCU 至CAN 总线之间收发电平的匹配转换。

  软件设计

  基于J1939 协议的CAN 总线报文收发多任务处理流程,如图3 所示,采用生产者/消费者循环数据结构。生产者循环使用“元素入队列”函数向报文簇队列中添加数据,消费者循环使用“元素出队列”函数从报文簇队列中移出数据。循环间采用队列的方式进行通信,避免多任务处理竞争状态,当生产数据比消费处理数据的速度快时,队列的缓冲作用保证报文数据不丢失。

  CAN

  图3 基于LabVIEW 和J1939 协议的CAN 总线通讯报文收发多任务处理

  建立接收报文ID 解析过滤的识别方法。确定报文标识符ID 的枚举型状态变量识别报文,根据状态变量条件结构过滤报文。PDU1、PDU2 格式单帧报文全部入队列,数据场大于8 字节的对话式、广播式多帧报文按J1939协议多帧数据合成重组后入队列,其它无数据场的报文帧舍去,处理完的接收报文簇分解后出队列计算、存贮和显示。广播帧报文接收合成,首先进行TP.CM-BAM 命令帧解析,提取EECU 发送报文的PGN 和帧数,其次对接收的TP.DT-BAM 数据帧组报文删除帧序号,通过替换数组子集对接收报文合成重组,还原PGN 标识的数据长度大于8 字节的广播帧报文。建立发送报文ID 解析封装的识别方法。报文解析首先确定帧类型状态变量,其次根据状态变量的条件判断,进行报文格式的封装定义。数据场小于或等于8 字节的PDU1、PDU2 单帧发送报文直接入队列,数据场大于8 字节的对话式、广播式多帧报文按J1939 协议多帧数据处理打包封装簇合成后入队列,处理完的J1939 发送报文簇分解后出队列并写入CAN 口。广播帧报文发送封装,ID 解析将发送报文的PGN 封装在广播报文命令帧标识符ID-TP.CM 中,报文数组解析进行字节数和帧数计算,创建帧序号加报文子集的8 字节多帧数组,与数据帧标识符ID-TP.DT 打包封装簇合成TP.DT-BAM,TP.CM-BAM 与TP.DT-BAM 组成广播帧格式报文。

  应用效果

  在整车电环境的半实物仿真报文接收测试试验中,应用图4 所示的基于LabVIEW 和J1939 协议的CAN 总线通讯平台,与Vector CANoe 模块在同一时间段比对测试,接收的某型号发动机稳态工况EECU 报文如图5 所示,一秒内接收EECU 发出的526 帧报文,比对测试接收的报文无丢失现象。发动机燃油消耗量报文,实时反映了发动机燃油经济性,在商用车J1939 协议CAN 总线网络中,分别被车辆VECU 接收,作为换挡控制策略控制自动变速箱汽车;组合仪表ECU 接收并实时显示,提示驾驶员形成良好的驾驶习惯,操纵汽车达到最佳燃油经济性的路况行驶。为使发动机获得最佳的动力性、经济性和兼顾排放达标,需要对发动机电控单元EECU 进行标定匹配,获得最佳喷油脉宽的标定参数。标定之后做比对试验,验证EECU 的标定效果。发动机稳态工况试验,能够反映车辆的等速工况;而发动机变工况瞬态试验,能够模拟实际道路循环中发动机状态。通过将实时报文油耗和实际测量瞬态油耗的对比,研究两者之间的对应吻合关系,判断发动机EECU 的控制效果。

  

  (a)整车电环境的半实物仿真 (b)发动机台架试验

  图4 基于LabVIEW 和J1939 协议的CAN 总线通讯平台应用

  CAN

  注:一秒内接收报文 39736 – 39210 = 526

  图5 发动机稳态工况EECU 报文

  CAN

  图6 发动机变工况台架试验油耗比对测量

  某型号发动机十工况台架试验瞬态油耗比对测量曲线见图6 所示,从J1939 协议CAN 总线接收并解析的EECU 油耗报文数据,与台架油耗仪实测数据在发动机低负荷时存在差异,即发动机低负荷时实际喷油量较小,设定喷油量与实际喷油量的差异值较大。这个差异是因为发动机低负荷共轨轨压波动较大,导致喷油量波动变化而客规存在。两条曲线总体吻合一致,通过CAN 总线接收的发动机喷油目标值,与实际测量值接近,且变化趋势和时序同步,反映了发动机EECU 标定匹配获得了最佳喷油脉宽的目标值。

  总结

  基于LabVIEW 和J1939 协议的NI PXI 模块化系统架构的CAN 总线通讯平台的开发,建立了NICAN 模块在商用车CAN 总线通讯的应用基础,项目具有推广和商品应用前景。在发动机台架试验、整车电环境半实物仿真分析中,实现对CAN 总线报文信息的过滤识别、合成接收、封装发送、存贮、解析计算及实时显示。应用LabVIEW 软件平台强大的数学分析运算及队列处理能力,以及适应整车苛刻测试环境的NI PXI 仪器及CAN 接口模块,满足试验工况对CAN 总线报文信息解析的功能需求,同时实现对报文数据与NI PXI 仪器其它测量参数同步采样,试验数据比对分析处理具有实时性和真实性。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分