基于SAE J1939协议的发动机模拟系统开发
扫描二维码
随时随地手机看文章
CAN总线以其优异性能在汽车局域网中占有重要地位。IS011992,IS011783以及SAE J1939都是基于CAN总线的汽车系统通讯协议,其中SAE J1939性能最好,是目前大型车辆采用最多的一种通信协议。分析研究SAE J1939协议,有助于推进CAN通信总线在国内汽车通信中的应用,并对制定上层协议具有重要意义。该系统设计正是基于对SAE J1939的应用层的理解,利用软件编程,模拟发送发动机信息,从而为总线仪表硬件设计提供良好的测试环境。
2 SAE J1939协议概述
SAE J1939标准是美国汽车工程师协会(Societv of Auto—motive Engineers,简称SAE)发布的以CAN总线为核心的车辆网络串行通讯和控制协议,SAE J1939协议以CAN2.0B协议为基础,通讯速率最高可达250 Kb/s。它对汽车内部ECU的地址配置、命名、通讯方式以及报文发送优先级等都给出明确规定,并且详细说明汽车内部各个共体的ECU通讯。SAE J1939应用层协议详细描述了SAE J1939网络的参数,包括数据长度、数据类型、分辨率、范围及参考标签,并为每个参数分配一个编号(SPN)。采用协议数据单元(ProtocolData Unit,简称PDU)传送信息,每个PDU相当于CAN协议的一帧。SAE J1939是传输数据协议,其功能分为数据的拆分打包和重组连接管理两部分。PDU是由29位标识符和0~8个字节的数据组成,如图1所示。SAE J1939利用29位标识符(CAN扩展帧)提供一种完整的网络定义。图1中,P位确定报文优先级的前3位;R为保留位;DP是数据页位:PF场识别2个PDI格式(PDUl,PDU2);替代远程请求位SRR和标识符扩展位IDE,未包含在PDU内;PS场由PF值决定其包含一个目标地址(DA)还是包含一个对PDU格式PF的组扩展(GE);SA为源地址。
SAE J1939采用多路复用技术为汽车的各种传感器、执行器和控制器提供在CAN总线基础上建立的标准化高速网络连接,从而在车载电子装置之间实现高速数据共享,有效减少电子线束数量,提高车辆电子控制系统的灵活性、可靠性、可维修性和标准化程度,最大限度发挥CAN优异性能。
3 系统设计方案
发动机模拟系统通过USB CAN一Ⅱ智能接口向总线仪表CAN接口卡传输数据,同时总线仪表通过USBCAN-Ⅱ接口卡应答模拟系统,如图2所示。该系统设计C#环境下开发,Windows平台上运行。该系统设计具有发动机参数报文、发动机故障报文、发动机仪表测试等主要功能模块,以及单帧或多帧可选的发送方式。通过调用USBCAN一Ⅱ接口卡库端口函数,利用CAN总线传输实现上位机与下位机之间的通讯,模拟发送发动机各种参数,如冷却液温度、进气温度、机油压力等,还可利用虚拟仪表评估总线仪表步进电机的误差。
USB CAN-Ⅱ双路智能CAN接口卡具有2个CAN通道(汽车型)。它采用16位微控制器,具有强大功能,支持即插即用。板上16位微控制器能够控制CAN控制器的发送和接收任务,即使在总线负载较重的情况下,仍可有效支持带有时间标志的CAN报文的过滤、预处理和存储以及CAN报文的实时传输等功能。通过编程调用USB CAN一Ⅱ辅助的通用CAN—bus接口函数库,能有效支持CAN系统基于PC的应用。程序设计流程图如图3所示。
C#调用接口库函数的方法:(1)将库函数文件置于工作目录下;(2)声明using System.Runtime.InteropServices;(3)声明ZLGCAN系列接口卡信息的数据类型;(4)导入,以打开设备函数为例,其他功能函数引用与之类似。打开设备函数为:
4 发动机模拟系统设计
该系统按功能分为发动机参数报文、发动机故障报文、发动机仪表测试。为了便于单独使用各个功能界面,采用复合界面形式。其运行界面如图4所示。
4.1 发动机参数报文发送模块
该模块是类比现场测试的一组数据,按照适用于BOSCH高压共轨系统的欧III发动机基于SAE J1939的CAN通讯规范,将帧ID与代表发动机参数的数据字节位置相对应,同时可通过修改相关字节,改变所要发送的参数值。
若想发送转速2 000 r/m,数据在报文的第4、5字节。发送数据的第4、5字节为2 000/0.125=16 000转化为两字节,注意高字节置于第5字节,低字节置于第4字节。同理可查表计算其他发动机参数,如润滑油压力、冷却液温度、蓄电池电压、燃油油位,ECU温度,进气温度,机油压力,节气门位置等参数值所对应的帧ID及在数据帧的位置。
4.2 发动机故障报文发送模块
当发动机发生故障时,传感器所采集的数据通过EMR的单片机分析处理,决定该采集数据是否在正常范围内或有效。如果该数据未在正常范围内或无效,EMR将向上位机发送故障帧,表明该传感器对应的元件存在故障。该系统设计的总线仪表增加了故障诊断功能,可借助于液晶显示屏实时显示发动机的故障类型。
在故障诊断方面,SAE J1939定义了19个诊断信息(Diagnostic Message,简称DM)。该故障报文发送模块主要采用DMl(显示当前故障)功能。DM由诊断故障灯代码(2字节)和诊断故障码DTC (4字节)组成。诊断故障码DTC的长度为4字节,包括可疑参数码SPN(19位)、故障类型代码FMI(5位)、故障发生次数OC(7位)、SPN转换方式CM(1位)。
该系统设计共定义400多个故障,将故障类型代码FMI与SPN相结合进行定义,定义时遵循SPN和FMI的组合与故障类型一一对应的原则。
4.3 发动机仪表测试模块
发动机仪表测试模块是将虚拟仪表的指针运行速度与开发仪表相比较,测试开发仪表的步进电动机驱动情况。由于只有车速表、油压表、水温表、电压表等仪表数据是由发动机CAN总线提供的,所以测试仪表只能模拟这4个表盘的步进电机驱动情况。该测试仪表采用Dundas仪表向导,该产品能够完全支持Visual Studio 2005特征,包括智能标记,高级数据绑定等。Dundas仪表向导提供丰富的素材库,利用该向导,用户可以设计出应用于各领域的仪表控件外形和数据指示方式。用户只需编写相关的仪表动态变化和响应部分代码即可实现虚拟仪表功能。
5 结论
介绍基于SAE J1939协议的发动机模拟系统设计。该系统具有发动机工况选择功能,与待开发总线仪表连接,可以模拟输出发动机的各项工况数据。一旦选定某个报文,该报文代表的发动机参数即在报文规定的更新率下持续发送到待开发总线仪表的总线接口。以此系统设计软件替代真实的发动机,可以随机检测各项发动机工况,且具有人为可选择的灵活性,选择范围较真实发动机更大。在线模拟系统不受工作环境限制,可随时随地进行检测。该系统为实验室的一套发动机试验系统的一部分,也可以配合教学实验课程。通过实验,软件各部分功能运行良好,对总线仪表开发具有一定价值。随着CAN总线应用领域的不断发展,SAE J1939协议必将得广泛应用。