我现在看到现在的汽车及其很多 的方面都用到了J1939总线,自己觉得比自己以前用的很多的通讯协议要方便些,所以自己找了点资料来和大家分享,呵呵
大家多多指点和交流,谢谢!!
CAN总线的特点及J1939协议通信原理和应用
众多国际知名汽车公司早在20世纪80年代就积极致力于汽车网络技术的研究及应用。迄今已有多种网络标准,如专门用于货车和客车上的SAE的J1939、德国大众的ABUS、博世的CAN、美国商用机器的AutoCAN、ISO的VAN、马自达的PALMNET等。
在我国的轿车中已基本具有电子控制和网络功能,排放和其他指标达到了一定的要求。但货车和客车在这方面却远未能满足排放法规的要求。计划到2006年,北京地区的货车和客车的排放要满足欧Ⅲ标准。因此,为了满足日益严格的排放法规,载货车和客车中也必须引入计算机及控制技术。采用控制器局域网和国际公认标准协议J1939来搭建网络,并完成数据传输,以实现汽车内部电子单元的网络化是一种迫切的需要也是必然的发展趋势。
1 CAN总线特点及其发展
控制器局域网络(CAN)是德国Robert bosch公司在20世纪80年代初为汽车业开发的一种串行数据通信总线。CAN是一种很高保密性,有效支持分布式控制或实时控制的串行通信网络。CAN的应用范围遍及从高速网络到低成本底多线路网络。在自动化电子领域、发动机控制部件、传感器、抗滑系统等应用中,CAN的位速率可高达1Mbps。同时,它可以廉价地用于交通运载工具电气系统中,如灯光聚束、电气窗口等,可以替代所需要的硬件连接。它采用线性总线结构,每个子系统对总线有相同的权利,即为多主工作方式。CAN网络上任意一个节点可在任何时候向网络上的其他节点发送信息而不分主从。网络上的节点可分为不通优先级,满足不同的实时要求。采用非破坏性总线裁决技术,当两个节点(即子系统)同时向网络上传递信息时,优先级低的停止数据发送,而优先级高的节点可不受影响地继续传送数据。具有点对点、一点对多点及全局广播接收传送数据的功能。
随着CAN在各种领域的应用和推广,对其通信格式的标准化提出了要求。1991年9月Philips Semiconductors制定并发布了CAN技术规范(Versio 2.0)。该技术包括A和B两部分。2.OA给出了CAN报文标准格式,而2.OB给出了标准的和扩展的两种格式。1993年11月ISO颁布了道路交通运输工具-数据信息交换-高速通信局域网(CAN)国际标准ISO11898,为控制局域网的标准化和规范化铺平了道路。美国的汽车工程学会SAE于2000年提出的J1939,成为货车和客车中控制器局域网的通用标准。
2.J1939协议通信原理及内容
(1)J1939与CAN
J1939是一种支持闭环控制的在多个ECU之间高速通信的网络协议冈。主要运用于载货车和客车上。它是以CAN2.0为网络核心。表1介绍了CAN2.0的标准和扩展格式,及J1939协议所定义的格式。表2则给出了J1939年的一个协议报文单元的具体格式。可以看出,J1939标识符包括:PRIORTY(优先权位);R(保留位);DP(数据页位);PDU FORMAAT(协议数据单元);PDU SPECIFIC(扩展单元)和SOURCE ADDRESS(源地址)。而报文单元还包括64位的数据场。
表1 CAN2.0的标准和扩展格式及J1939协议所定义的格式 CAN扩展帧格式 SOF 11位标识符 SRR IDE 18位扩展标识符
J1939帧格式 帧起始位 优先权3位 R位(保) 数据页DP PF格式6位 SRR位 扩展标识 PF PS格式(8位) 源地址(8位)
CAN 1 2~4 5 6 7~12 13 14 15 16 17~24 25~32
帧位置 28~26 25 24 23~18 17 16 15~8 7~0
表2 J1939协议报文单元的具体格式 一个J1939协议报文单元
PRIORITY R DP PDU FORMAT PDU SPECIFIC SOURCE ADDRESS DATA FIELD
3 1 1 8 8 8 0~64
(2)数据传转协议
J1939通信中的核心是负责数据传输的传输协议。它的功能分为两部分:
(1)数据的拆分打包和重组。一个J1939的报文单元只有8个字节的数据场。因此如果所要发送的数据超过了8字节,就应该分成几个小的数据包分批发送。数据场的第一个字节从1开始作为报文的序号,后7个字节用来存放数据。所以可以发送255×7=1785个字节的数据。报文被接收以后按序号重新组合成原来的数据。
(2)连接管理。主要对节点之间连接的建立和关闭,数据的传送进行管理。其中定义了5种帧结构:发送请求帧、发送清除帧、结束应答帧、连接失败帧以及用来全局接收的广播帧。节点之间的连接通过一个节点向目的地址发送一个发送请求帧而建立。在接收发送请求帧以后,节点如果有足够的空间来接收数据并且数据有效,则发送一个发送清除帧,开始数据的传送。如果存储空间不够或者数据无效等原因,节点需要拒绝连接,则发送连接失败帧,连接关闭。如果数据接收全部完成。则节点发送一个结束应答帧,连接关闭。
(3)J1939的参数格式
J1939中还定义了参数的具体格式,如标识符、优先级、数据长度、参数的范围等。参数又划分为状态参数和测量参数。状态参数表示具有多态信号的某一种状态,如发动机刹车使能/禁能、巡航控制激活/关闭,扭矩/速度控制超载模式、错误代码等。而测量参数则表示所接收到的信号的值的具体大小,如缸内爆发压力、最大巡航速度、发动机转速等。
3.J1939协议的应用
(1)J1939应用于网络构建
J1939网络层中定义了如何构建网络及连接的功能。网络层的功能包括数据的过滤、重新打包和转发。分别由以下各部分实现。
a.中继器。可以增强数据信号,使数据传输更远的距离。
b.网桥。数据的转发和过滤。它可以把网络拆解成网络分支、分割网络数据流,隔离分支中发生的故障,这样就可以减少每个网络分支的数据信息流量而使每个网络更有效,提高整个网络效率。
c.路由。可以使网络段具有独立的地址空间不同的数据传输率和媒介。
d.网关。可以在不同的协议和数据设置的网段之间传送数据。图1为典型的汽车网络连接。
(2)J1939应用于故障诊断
J1939包括在线故障诊断功能,由诊断应用层定义。诊断应用层面向以下几方面。
a.安全。在数据链路层上定义一个安全的框架,使得符合工业标准的开发工具执行必要的诊断任务。包括获取诊断信息,获取节点配置信息,标定控制模式。但对非开放型的数据加密。
b.连接。建立J1939网络节点与开发工具之间的连接。连接器的设计也必须符合J1939协议。
c.诊断状态数据支持。提供一系列的数据格式。包括读取出错数据、清除错误数据、监测通信参数、获取节点的配置以及其他的一些信息。
d.诊断测试支持。可以使开发工具把各种控制节点放到具体的测试模式中以正确设计子网体系。诊断工具通过连接器与其他节点进行通信以获取诊断数据。因此所有的控制节点都应该具备以下功能:读取诊断故障代码、清除诊断故障代码、获取实时信息。而诊断故障代码记载了出错的参数及所在的节点等主要信息。
4.节点设计及数据通信
最小化节点的主控制芯片采用51系列的单片机,控制器采用PHILIPS公司的SJA1000,控制器接口采用82c250。
为了构建CAN总线局域网络,采用了研华公司生产的双端口CAAN控制卡PCL-841,每块PCL-841卡集成了两块PHILIPS的SJA1000控制器和82c250控制器接口。这样两块控制卡就有四个端□,相当于四个独立的节点,用数据线连接起来,就组成了基本的CAN局域网
软件的编写主要包括对寄存器的配置、硬件初始化、中断调用、数据通信几大模块。中断调用中包括数据中的中断接收、中断发送,以及错误处理、报警等模块。通信模块又分为数据的发送、接收、请求等。
综上所述,J1939通信协议解决了如下问题。
(I)优先权问题。如自动换挡要求减油门,巡航控制同时要求增油,而ASR则要求减油门以维持驱动轴的低扭矩。根据重要程度,则应确定换挡优先,协议能定义各个子系统的优先权顺序。
(2)灵活性问题。因为各个子系统都是不同类型的控制系统,网络应具备将各个子系统有机地融合在一起的能力。
(3)可扩展性。即需要增加新的子系统时,不需要对基本系统作修改。
(4)独立性。每个子系统都可以独立工作,某个子系统出现故障时并不影响其他系统的正工作。
(5)为满足不同控制系统的要求,应具有高的数据传输速率带宽,具有通用的故障诊断接口诊断协议。
(6)车辆状态共享。如发动机转速、车速、轮速等数据必须各子系统共享,数据的传输及刷新时间取决于各个子系统的特性,并由此决定优先权
|