S A E J1939
简介
S A E J1939协议是由汽车工程协会(S A E)定义的,主要用于商用车辆,但也用于舰船、轨道机车、农业机械和大型发动机。另外,S A E J1939用作国际标准N M E A2000(海事)和 I S O11783(农业机械)的基础,因而此协议栈也能用于这些应用。
在商用车辆方面,由S A E制定的标准化串行协议长期以来一直用于单个电子控制单元和传动装置上元件之间的通信。基于通常可从单片机串行端获得的J1708/J1587协议可以被视作前驱。
由于需要与J1708/1587协议兼容,对于J1939来说,必须要求C A N报文标识符从11-b i t s扩展到29-b i t s (扩展格式),并且C A N模块的开发或协议实现应支持这种报文格式。
因为有扩展的C A N标识符,这就能够象用于J1708那样,将通信关系的定义规则映射到C A N。部分标识符被用于指定一个8-b i t源和一个8-b i t目标地址(节点数)。
所以通过S A E J1939能够传输测量值和控制数据并配置元件。另外,还能够读或删除单个元件诊断数据,并对单个控制进行校准。
为了使这些成为可能,对于商用车方面的所有相关变量都要在S A E J1939中定义值域、分辨率、识别数等等。这些对基于J1587技术规格的大都实现。
因此,在J1939协议中,不仅仅指定了传输类型、报文结构及其分段、流量检查等,而且报文内容本身也做了精确的定义。S A E J1939在I S O/O S I层模型中的分布根据O S I层模型,
S A E J1939被分成几个层,每一层都分别有相应的文档说明。类似于所有实际上的现场总线协议,在S A E J 1939上第5和6层是不需要的,因此没有定义。
S A E J1939的功能被分为如下几层:
第一层(物理层)描述在其它事物中与物理媒介的电子接口;
第二层(数据链路层)描述通过基于C A N2.0B技术规格的C A N的数据通信;
第三层(网络层)主要描述两个网络部分间针对报文传输的网桥的功能,并且只与 J1939网桥实现相关; 第四层(传输层)基本上描述的是针对报文申请模式、确认传输和大数据块的分段传输的各种网络服务; 第七层(应用层)描述实际的数据(参数或带有值域的网络变量、分辨率、物理单元和传输类型)。每个报文无歧义地对应一个数(参数组数);
由于网络管理可以被当作一个分离的单元,能直达硬件(第一层),因此在这个层模型中,该模块是作为右手边的一个独立的功能块。网络管理基本上包括自动分配或决定节点地址(即插即用原则)。在S A E J1939中没有定义节点监视,因而必须在应用时通过循环报文实现。
现代汽车的核心技术-SAE J1939
一、技术背景
在当今的中高档汽车中都采用了汽车总线技术。汽车总线为汽车内部各种复杂的电子设备、控制器、测量仪器等提供了统一数据交换渠道。一些汽车专家认为,就像在20世纪70年代引入集成电路、80年代引入微处理器一样,近10年来数据总线技术的引入也将是汽车电子技术发展的一个里程碑。
20世纪90年代以来,汽车上由电子控制单元(ECU)控制的部件数量越来越多,例如电子燃油喷射装置、防抱死制动装置、安全气囊装置、电控门窗装置、主动悬架等等。随着集成电路和单片机在汽车上的广泛应用,车上的ECU数量越来越多。因此,一种新的概念--车上控制器局域网络CAN(Controller Area Network)的概念也就应运而生了。CAN最早是由德国BOSCH公司为解决现代汽车中的控制与测试仪器之间的数据交换而开发的一种数据通信协议,按照ISO有关标准,CAN的拓扑结构为总线式,因此也称为CAN总线。
CAN协议中每一帧的数据量都不超过8个字节,以短帧多发的方式实现数据的高实时性;CAN总线的纠错能力非常强,从而提高数据的准确性;同时CAN总线的速率可达到1M bit/s,是一个真正的高速网络。总之,将CAN总线应用在汽车中使用有很多优点: (1)用低成本的双绞线电缆代替了车身内昂贵的导线,并大幅度减少了用线数量;提高可*性,安全性、降低成本。 (2)具有快速响应时间和高可*性,并适合对实时性要求较高的应用如刹车装置和气囊;控制平台、信息平台、驾驶平台的互连基础。 (3)CAN芯片可以抗高温和高噪声,并且具有较低的价格,开放的工业标准。
在现代轿车的设计中,CAN已经成为必须采用的装置,奔驰、宝马、大众、沃尔沃、雷诺等汽车都采用了CAN作为控制器联网的手段。据报道,中国首辆CAN网络系统混合动力轿车已在奇瑞公司试装成功,并进行了初步试运行。在上海大众的帕萨特和POLO汽车上也开始引入了CAN总线技术。但总的来说,目前CAN 总线技术在我国汽车工业中的应用尚处于试验和起步阶段,绝大部分的汽车还没有采用汽车总线的设计,因而存在着不少弊端。
比如,众所周知汽车的核心设备就是发动机,发动机的运行参数,例如发动机转速、机油压力、冷却剂温度等等是和汽车驾驶是紧密相关的。传统汽车仪表的设计方法是:通过放置在汽车部件(如发动机)内部的传感器,将机械信号转换成电信号,如电压、电流、脉冲信号,再经过D/A转换或计数器等,将电信号转换成可视的指针信号显示在模拟仪表盘上。随着汽车总线技术的发展,不少进口的发动机已经不再直接向外提供传感器信号,而改用CAN总线通信接口。一旦发动机出现故障时,由于缺
乏基于CAN总线的测试维修设备,目前我们的维修人员使用的方法只能是在发动机上钻孔,将传感器直接放进发动机内部进行测量,操作繁琐、设备复杂,且不利于保护发动机的整体结构。
又比如,现有的部分汽车仪表使用了专用的总线设计,由于硬件标准不统一,通信协议也不兼容,为甲公司汽车生产的仪表完全不能在乙公司的汽车上使用,生产成本难以降低、故障维修很不方便。如果能将各种专用总线统一到CAN总线标准上来,就可以解决问题。
再比如,在手动挡汽车中,驾驶员的换挡是依照经验进行的,有可能发生应该加高挡位而没能及时加挡的情况,即低档高速行驶,既不利于降低油耗,又容易造成汽车传动部件磨损。如果能实现自动换挡提示,车辆就能始终保持在经济时速行驶。
根据ISO(国际标准化组织)定义的OSI模型,CAN协议定义了物理层及数据链路层规范,这为不同的汽车厂商制定符合自身需要的应用层协议提供了很大的便利。如果需要建立更加完善的系统,还需要在CAN的基础上选择合适的应用层协议。如CANopen、SAE J1939等。
J1939协议是目前在大型汽车中应用最广泛的应用层协议,可达到250Kbps的通讯速率。J1939协议由美国SAE( Society of Automotive Engineer)组织维护和推广。J1939协议具有如下特点:
(1)以CAN2.0B协议为基础,物理层标准与ISO11898规范兼容并采用符合该规范的CAN控制器及收发
器。通讯速率最高可达到250Kbps。 (2)采用PDU( Protocol Data Unit 协议数据单元)传送信息,每个PDU相当于CAN协议中的一帧。由于每个CAN帧最多可传输8个字节数据,因此PDU的传输具有很高的实时性。 (3)利用CAN2.0B扩展帧格式的29位标志符定义每一个PDU的含义以及该PDU的优先级。 (4)J1939协议主要作为汽车中应用的通讯协议,对汽车中应用到的各类参数都进行了规定。参数的规定符合ISO11992标准。
二、J1939在国内的发展情况
中国单片机公共实验室联合北京英贝多嵌入式网络技术有限公司,辽宁能发伟业汽车仪表有限公司、美国卡特皮勒公司,以及国内著名的汽车设计厂商,经过两年多的设计开发,实现了基于单芯片的J1939 网关芯片em2003系列产品。
em2003可用于汽车数字化仪表,汽车J1939网关,汽车多功能电控的核心单元,并通过了严格的可*性测试和实际产品化验证,已投入批量生产。
em2003的各项指标已达到了国际先进水平,除支持SAE J1939固件外,还可支持SAE 1587,ISO9141标准,实现对汽车仪表的控制驱动。在国内是唯一实现了对汽车全液晶数字仪表的控制,步进马达指针仪表的控制及多功能车载传感器信息运行参数的网络计算信息平台。通过了与美国、德国、意大利 J1939 发动机的互连测试,取得了国际化的通行证。
目前,SAE J1939的技术规范及软硬件开发测试平台已由中国单片机公共实验室完成引进消化和部分技术的国产化工作,并对国内数十家汽车厂商的控制计算平台提供技术支持和解决方案及顾问服务。
汽车内部网络 SAE J1939
CAN规范只包括了物理层和数据链路层,是一个可以封装在通信控制器集成电路芯片内部的规范。
SAE J1939以CAN为基础,其物理层和数据链路层基本上沿用了CAN规范,并增加了网络层、应用层和网络管理规范。
SAE J1939目前已经发布的规范如下:
J1939/01 卡车、公共汽车控制与通信网络
J1939/12 物理层,250Kbps, 四线双绞线
双龙汽车爱腾
J1939/13 物理层,诊断连接器
J1939/31 网络层
J1939/71 车辆应用层
J1939/72 虚拟终端应用层
ex90
J1939/73 应用层-诊断
J1939/81 J1939网络管理协议
通信参考模型比较
J1939的物理连接与网络拓扑
总线由CAN-H、CAN-L、 CAN-SHLD导线组成;CAN-H为黄、CAN-L为绿。
网段由屏蔽双绞线对组成,允许用分枝短线将每个ECU连接到总线上,不要求每个ECU直接接近总线。网段上的ECU数量
SAE J1939汽车内部网络是将许多电控单元ECU连接成的网络的物理实现。ECU的数量受到总线上负荷的限制。根据现有规范对电气参数的规定,在一个给定的网段上,ECU的最大数量被限制为30。网段以250 Kbps 的数据传输速率运行,为防止信号反射,使网段运行对电子信号的影响最小,在总线的每个终端都应连接终端电阻。
每个部件均有终端电阻(120 ),终端电阻采用支架安装,以便调整。同时,终端电阻同网络线之间通过跳线相连,以便灵活搭配。
J1939网络可以由一个或多个网段组成,网段间由网络互连ECU(如网桥)连接。
J1939报文帧的格式与定义
J1939为采用CAN 2.0B扩展帧格式。
J1939 29位ID的位定义图
SAE J1993进一步定义了CAN数据帧仲裁域的标识位
SAE J1993报文帧包含一个单一的协议数据单元PDU
PDU包括7个预定的域
优先级、保留位、数据页、PDU格式、PDU细节(可以是目标地址、组扩展或专有)、源地址和数据域。        CAN数据帧中的SOF、SRR、IDE、RTR、部分控制域、CRC、ACK和EOF没有包括在PDU内。因为这些部分完全由CAN规范控制,未被SAE J1939修改。
优先级(P):这三位用于总线仲裁时优选发送到总线上的报文。它们被接收器完全屏蔽。报文的优先级设置从最高的0(0002)到最低的7(1112)。
所有面向控制的报文其缺省优先级为3(011)。其它报文、专有报文、请求以及AKC报文的缺省优先级为6(110)。随着参数组号PGN的分配情况和总线通信的变化,允许提高或降低优先级。
保留位(R):该保留位供SAE将来使用。不能与CAN的保留位混淆。传输时所有的报文应该将SAE保留位设为0。
数据页(DP):数据页位选择了参数组描述的一个辅助页。在第0页上可获得的所有参数组号的分配完成后,再作对第1页的分配。
PDU格式(PF):PDU格式域是一个8位域。J1939规定了PDU1和PDU2两种格式。
其值低于240为PDU1格式,其值为240~255为PDU2格式。
PDU1格式允许将参数组发送给一个指定目标或全局目标。15到20万的车
不能选用PDU2格式将PGN传送给特定目标。
PDU细节(PS)--这也是一个8位的域,它的定义取决于PDU格式(PF)域的内容。当PDU格式(PF)域的值低于240,则PDU细节域表示的是一个目的地址;当PF域的值是240~255时,则PDU细节域表示的是一个组扩展(GE)值
源地址SA域,共8位。网络中仅容许一个设备对应给定的源地址,应防止地址重复
数据域为 0~8字节的数据。当某参数组的数据字节等于或小于8时,数据域的所有8个字节都可用。推荐使所有参数组号都保留8个数据字节
当需要9~1785个字节来表达某个参数组时,数据通信将由多个CAN数据帧完成。
在某一时刻需要传输的数据字节数小于9时,将在一个单一的将DLC设定为8的CAN数据帧中被发送。
当某一参数组有9个或多于9个数据字节要传输时,则使用"传输协议功能",以启动和关闭多包参数
组的通信
J1939 允许在同一网络中使用11位ID的设备福建泉州交通事故
ECU的设计说明
J1939规范将工作在网络上的ECU分为标准ECU、网络互连ECU、诊断/开发工具几种类型。
标准ECU指用于发动机﹑变速器﹑ABS系统﹑虚拟终端﹑仪表盘等的电控单元。标准ECU不具备修改其他ECU源地址的能力
网络互联ECU---网络互联ECU用于网段互连.它们主要由中继器﹑网桥﹑路由器﹑网关组成
诊断/开发工具用于分析﹑调试﹑开发、监视在网段上的ECU。
ECU的名称
SAE J1939规定,每个 ECU将至少有一个名称和一个与之关联的地址。
一个电控单元ECU中可能有多个名称与多个地址共存。容许多个作相同工作的ECU在同一网络上共存,但要为每个ECU命名独特的名称。
汽车 网站名称可以用ECU的功能来表示,例如,1#发动机号﹑2#发动机号﹑1#变速器﹑ABS系统等。通过名称指明在网络上可以到的任何功能 ]
ECU的首选地址
为了方便于网络初始化过程,通常使用的设备都有一个由委员会指派的首选地址。采用首选地址可以避免多个设备企图在网络上宣称相同的地址
运用一个在上电之后分配地址的专门程序来解决可能发生的冲突。
每个ECU都必须有能力宣布它想要采用的地址,这是地址宣称特征。
在J1939网络上运行的ECU都应该有一个可用的首选地址。
首选地址的分配从0开始, 0 to 127 分配给在工业组0中最常用的ECU;128 to 247 留给行业特定分配;248 to 253 留给特殊的ECUs;
ECU的地址号不能超过254。 254 为空地址;255 为全局地址。ECU不能宣称空地址和全局地址。
一个ECU可以要求有多个地址,以区别要发生的作用
ECU的能力类型
1)自组态ECU (Self-Configurable ECUs)。自组态ECU有能力动态地计算并宣称一个网络上未用过的地址。大多数的服务工具和网桥都应该有这个能力。
2)命令组态ECU(Command Configurable ECUs)。命令组态ECU可以命令另一个ECU采用一个给定的地址。网络互连ECU,如桥,或服务工具可以是命令组态ECU。接收该地址的ECU则应发布一个地址宣称报文来确认收到了这个新命令的地址。即使在一个节点已经宣称了一个合法的地址的情况下,也可以命令ECU接受一个新地址操控性
ECU的能力类型(续)
3)维护性可组态ECU( Service Configurable ECUs)。可由维护者修改其地址的ECU,通常指采用DIP 开关方式或服务工具可改变其地址的ECU。当采用 "commanded address" 报文时,它的选项不同于命令组态。        4)不可组态ECU( Non-Configurable ECUs)。这些ECUs既不能自组态,也不能接受其它节点对它的命令组态。如果它们在宣称地址中失败,将不得不终止通信。