图4-2 CAN2.0的标准和扩展格式及J1939协议所定义的格式
图4-3 J1939协议报文单元的具体格式
4.2.2数据传转协议
J1939通信中的核心是负责数据传输的传输协议。它的功能分为两部分:
(1)数据的拆分打包和重组。一个J1939的报文单元只有8个字节的数据场。因此如果所要发送的数据超过了8字节,就应该分成几个小的数据包分批发送。数据场的第一个字节从1开始作为报文的序号,后7个字节用来存放数据。所以可以发送255×7=1785个字节的数据。报文被接收以后按序号重新组合成原来的数据。
(2)连接管理。主要对节点之间连接的建立和关闭,数据的传送进行管理。其中定义了5种帧结构:发送请求帧、发送清除帧、结束应答帧、连接失败帧以及用来全局接收的广播帧。节点之间的连接通过一个节点向目的地址发送一个发送请求帧而建立。在接收发送请求帧以后,节点如果有足够的空间来接收数据并且数据有效,则发送一个发送清除帧,开始数据的传送。如果存储空间不够或者数据无效等原因,节点需要拒绝连接,则发送连接失败帧,连接关闭。如果数据接收全部完成。则节点发送一个结束应答帧,连接关闭。
4.2.3 J1939的参数格式
J1939中还定义了参数的具体格式,如标识符、优先级、数据长度、参数的范围等。参数又划分为状态参数和测量参数。状态参数表示具有多态信号的某一种状态,如发动机刹车使能/禁能、巡航控制激活/关闭,扭矩/速度控制超载模式、错误代码等。而测量参数则表示所接收到的信号的值的具体大小,如缸内爆发压力、最大巡航速度、发动机转速等。
4.2.4 SAE J1939报文帧格式
J1939的信息是以PDU(Protocol Data Unit协议数据单元)的形式进行传输的,PDU的封装在应用层中完成。PDU提供了组织信息的框架,这一点对于每一个要发送的CAN数据帧来说是至关重要的。如图4-4,j1939 PDU共由七个域组成,包括:优先权 (P)、保留位(R)、数据页(DP)、PDU格式(PF)、PDU细节(PS,可为目的地址、参数组扩展或私有)、源地址(SA)及数据域(Data Field)。由这些域被封装为一个CAN数据帧发送到网络上其他节点。每个CAN数据帧只能包含一个PDU。值得注意的是,对于某些参数组,必须使用两个以上的CAN数据帧发送。
图4-4 J1939 PDU结构
CAN数据帧中的某些域并未在PDU中定义,这是因为这些域已经在CAN2.0规范中明确定义,并且对于数据链路层以上的OSI层,这些域是不可见的。这些域包括:SOF(帧起始)、SRR(替代远程请求)、IDE(识别符扩展)、RTR(远程请求),部分控制域、CRC(校验域)、ACK(应答域)及EOF(帧结束)等。对于这些域,]1939协议完全遵从CAN规范中的定义。
4.2.5 SAE J1939应用层协议
J1939应用层协议详细描述了用于J1939网络的每个参数,包括其数据长度、数据类型、分辨率、范围及参考标签,并为每个参数分配了一个编号 (SPN)。由于J1939协议是以协议数据单元(PDU) 的形式进行传输,而一个PDU包含8个字节数据,因此,需要对这些参数进行组合。在J1939应用层协议中还详细定义了参数组,包括每组参数的更新率、有效数据长度、数据页、PDU格式、PDU细节、默认优先权及参数组的内容,并为每个参数组分配一个参数组编号(PGN)。为最大程度地减小数据的重叠,协议按照以下原则对参数进行分组:
①按照ECU所属子系统分组(ECU用于测量和发送数据);②按照参数组中的参数更新率分组(减小不必要的数据重叠);③按照功能分组(机油、冷却液、燃油等等)。
五、 总线技术在仪表中的应用
5.1系统整体方案概述 随着汽车电子技术的发展,以及汽车CAN总线网络应用的逐渐成熟,作为车辆信息显示中心的汽车仪表,必将会随着新技术的发展而更新换代。本文基于CAN总线汽车仪表,即是对传统机械、模拟式汽车仪表的数字化改造,并且顺应当今汽车CAN总线网络快速发展这种趋势的设计研究。
5.1.1汽车仪表的设计目标 本文根据目前国内、外汽车仪表的发展现状和要求,并通过对汽车仪表系统基本功能的分析研究,完成了基于CAN总线和步进电机的一款汽车组合仪表的设计。该仪表能实时采集模拟信号、数字脉冲信号、数字开关信号,从CAN总线获取发动机电控单元的信号数据,通过步进电机带动指针显示气压、发动机转速、发动机冷却水温、车速和燃油量,为防止里程值的丢失,微控制器会及时将里程数据保存在片外数据存储器里。另外仪表还可以显示车辆的一些关键状态信号,包括远光灯指示灯、左转向、右转向指示灯、后雾灯指示灯、电源指示灯、驻车指示灯、空调指示灯,以及发动机自检灯、机油压力报警灯和制动盘报警灯。
该组合仪表外观结构简单、直观,并且仪表精度高、线性度好、重复性好、响应速度快、性能稳定抗干扰性强等优点。
该汽车组合仪表是采用传感器、CAN总线、单片机、步进电机、液晶屏,以及驱动电路等主要部件来实现汽车仪表的功能设计。由于我们采用了两套信号数据采集渠道,仪表盘由CAN总线接收到的数据报文,将直接由微控制器对数据进行解包处理,得到相应的数据,并进行处理,然后控制步进电机进行指示;仪表盘由传感器获得的模拟量信号和数字脉冲信号,
将先经过前期的滤波、整形、光隔处理,送由相应的单片机A/D转换模块、脉冲周期测量定时器模块进行数据采集处理,然后单片机发出指令控制步进电机进行指示;微控制器通过车速信号对时间的积分获得车辆的行驶里程值,由液晶显示屏进行动态显示,并且会及时更新数据存储器EEPROM里的里程值,防止数据的丢失。
仪表系统的结构原理图如下图5-1所示。
图5-1系统结构原理图
5. 2汽车仪表的显示原理
组合仪表主要包括:车速表、转速表、气压表、油量表、水温表、里程液晶显示屏和各种报警状态指示灯;组合仪表的输入信号包括,0-5V的电压模拟信号、幅值5V的频率脉冲信号、高低电平开关信号、CAN总线信号。
5.2.1步进电机表头控制策略 1)车速表
功能定义:采用步进电机驱动;车速最大量程140km/h,最小分度 5km/h。车速表指针响应及时,运转平稳。
信号来源:车速传感器的频率信号,PPK=8000(车型不同,PPK值不同,PPK是每公里对应的脉冲数);
显示原理:J1939协议是以协议数据单元(PDU) 的形式进行传输,而一个PDU包含8个字节数据,因此,车速信息以8字节数据进行显示。根据SAE J1939-71(车辆应用层)协议规定,基于车轮的车辆速度是指按车辆的车轮或尾轴的转速计算出来的车辆速度。其定义信息如下:
数据长度: 分辨率: 2字节 1/256 km/h/位递增,从0 km/h开始计算(1/412 mph/位递增,从0 mph开始计算) 高位字节分辨率=1.0 km/h/位(0.62 mph/位) 0到250.996 km/h(0到155.87 mph) 测量值 数据范围: 类型: 根据定义,当车速数据为 FF 00 3C FF FF FF FF FF 时,车速为60km/h;
当车速数据为
FF 00 64 FF FF FF FF FF 时,车速为100km/h;
当车速数据为
FF 00 8C FF FF FF FF FF 时,车速为140km/h;
车速表效果如图5-2所示:
图5-2 车速表
2)发动机转速表
功能定义:采用步进电机驱动;转速最大量程为3000r/min,最小分度为100r/min。 信号来源:发动机电控单元ESM发来的CAN信号。
显示原理:J1939协议是以协议数据单元(PDU) 的形式进行传输,而一个PDU包含8个字节数据,因此,转速信息以8字节数据进行显示。根据SAE J1939-71(车辆应用层)协议规定,电子发动机控制器#1:EEC1 传输循环率: 数据长度: 数据页面: PDU格式: PDU特定: 默认优先值: 字节 由发动机速度决定 8 字节 0 240 4 3 8-5 4-1 未定义 发动机/减速器扭矩模式 1 状态—EEC1 2 3 4-5 6 主动轮命令发动机—扭矩百分比 实际发动机—扭矩百分比 发动机速度 针对发动机控制的控制设备源地址 2字节 0.125 rpm/位递增,从0 rpm开始计算(高位字节分辨率=32 rpm/位) 0到8031.875 rpm 测量值 且发动机转速是指转过720度最小曲轴角的速度除以气缸的数目所得到的实际发动机转速。 数据长度: 分辨率: 数据范围: 类型:
故转速值=第4、5位数值*分辨率+偏移量 当转速数据为
FF FF FF 20 4E FF FF FF 时,转速=(4E20)H*0.125+0=20000*0.125=2500rpm;
当转速数据为
转速= (5DC0) H*0.125+0=24000*0.125=3000rpm;FF FF FF C0 5D FF FF FF 时,
当转速数据为
FF FF FF 40 1F FF FF FF 时,转速= (1F40)H*0.125+0=8000*0.125=1000rpm;
转速表效果图如图5-3所示:
图5-3 转速表
3)水温表
功能定义:采用步进电机驱动;指示发动机冷却水的温度,当温度过高时应及时停车检查问题的原因。
信号来源:发动机电控单元ESM发来的CAN信号。
显示原理:J1939协议是以协议数据单元(PDU) 的形式进行传输,而一个PDU包含8个字节数据,因此,水温信息以8字节数据进行显示。根据SAE J1939-71(车辆应用层)协议规定,发动机冷却系统的液体温度: 数据长度: 分辨率: 数据范围: 类型: 且字节规定如下所示: 字节: 1 2 3-4 5-6 7 8 1字节 1℃/位递增,从-40℃开始计算 -40到+210℃(-40到410℉) 测量值 发动机冷却剂温度 燃料温度 发动机油温 1 涡轮油温 冷热气自动调节机温度 发动机的冷热气自动调节机调节开放 故 水温=第8字节数据-40
例:当水温数据为 50 64 20 22 FF FF FF FF 时,水温=(50)H-40=80-40=40;
当水温数据为 8C 64 20 22 FF FF FF FF 时,水温=(8C)H-40=140-40=100;
当水温数据为