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所示。