基于J1939整车控制器CAN协议说明文档
J1939中文资料2
(SAE1939-13:2004 MOD )国家标准化管理委员会ICSGB/T XXXX.2-XXXX商用车控制系统局域网络(CAN )通讯协议第2部分:物理层—非车载诊断连接器(英文名称)(征求意见稿)20xx-xx-xx 发布20xx-xx-xx 实施GB/T XXXX.2-XXXX前言GB/T××××《商用车控制系统局域网络(CAN 总线)通讯协议》包括10个部分:—第1部分:物理层—屏蔽双绞线(250K比特/秒)—第2部分:物理层—非车载诊断连接器—第3部分:物理层—非屏蔽双绞线(250K比特/秒)—第4部分:数据链路层—第5部分:应用层—车辆—第6部分:应用层—诊断—第7部分:网络管理—第8部分:参数组分配—第9部分:地址和标识分配—第10部分:可疑参数编号(SPN)—第11部分:网络层本标准为GB/T××××的第2部分,对应于SAE1939-13:1999 《物理层,非车载诊断连接器》,本标准与SAE1939-13的一致性程度为修改采用(技术内容完全等同),主要差异如下:—编辑性修改——本标准由全国汽车标准化技术委员会提出。
本标准由全国汽车标准化技术委员会归口。
本标准由负责起草。
本标准主要起草人:GB/T XXXX.2-XXXX 商用车控制系统局域网络(CAN 总线)通讯协议第2部分:物理层—非车载诊断连接器1 范围本部分规定了CAN 总线的物理层—非车载诊断连接器与汽车通信网络连接的建立。
本部分适用于M2、M3及N类车辆。
2 规范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。
凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。
凡是不注日期的引用文件,其最新版本适用于本标准。
GB/T××××.1 《商用车控制系统局域网络(CAN 总线)通讯协议》第1部分:物理层—屏蔽双绞线(250K比特/秒)GB/T××××.3 《商用车控制系统局域网络(CAN 总线)通讯协议》第3部分:物理层—非屏蔽双绞线(250K比特/秒)SAE J2030 Heavy-Duty Electrical Connector Performance Standard(重型的电气连接器操作规范)SAE J1708 Serial Data Communications Between Microcomputer Systems in heavy-Duty Vehicle Applications(以串行数据来通讯的微型计算机系统之间在重型车辆上的运用) SAE J2202 Heavy-Duty Wiring Systems for On-Highway Trucks(重型公路卡车的配线系统)ISO 11783-2农业和林业用的拖拉机和机械-串行控制和通讯数据网络-物理层ISO 11898 道路车辆-数字信息的交换-高速通讯的控制器局域网络(CAN)3非车载诊断连接器本部分规定了用非车载诊断连接器与汽车通信网络建立连接。
J1939协议
J1939协议一、协议目的本协议旨在规范和定义J1939协议的通信规则和数据格式,以便确保各种车辆和设备之间的互操作性和数据交换的一致性。
二、协议范围本协议适用于使用J1939协议进行通信的各种车辆和设备,包括但不限于商用车辆、农业机械、建筑设备、发电机组、船舶和工业自动化设备等。
三、术语和定义1. J1939协议:一种用于车辆和设备之间的通信的协议,基于CAN总线技术。
2. 数据帧:J1939协议中的数据传输单元,包含源地址、目标地址、数据内容等信息。
3. 参数组:J1939协议中的一种数据结构,用于封装和传输特定的数据项。
4. PGN:参数组号码(Parameter Group Number),用于唯一标识一个参数组。
5. SPN:信号参数号码(Suspect Parameter Number),用于唯一标识一个参数组中的一个信号。
四、协议规则1. 数据帧格式1.1 数据帧由CAN总线上的标准帧组成,帧格式为11位标识符。
1.2 数据帧包含11位标识符、数据长度代码(DLC)、数据字节和CRC校验码。
1.3 数据帧的标识符中包含源地址、优先级、数据页、PGN等信息。
1.4 数据帧的DLC定义了数据帧中数据字节的数量。
1.5 数据帧的CRC校验码用于验证数据的完整性。
2. 参数组格式2.1 参数组由一个PGN和一个或多个SPN组成。
2.2 PGN由18位标识符的前3个字节组成。
2.3 SPN由16位标识符的后两个字节组成。
2.4 参数组中的数据按照大端字节序排列。
3. 数据传输3.1 数据传输通过CAN总线进行。
3.2 数据帧的发送和接收由源地址和目标地址进行控制。
3.3 数据传输的优先级由数据帧的标识符中的优先级字段确定。
3.4 数据传输的频率和时序由应用层协议定义。
4. 错误处理4.1 错误帧:当接收到错误的数据帧时,应立即发送错误帧作为响应。
4.2 错误处理机制:错误处理机制应能够检测和处理数据传输过程中的错误,包括但不限于传输错误、接收错误和校验错误等。
J1939协议应用设计编程说明
J1939协议应用设计编程说明一、J1939协议简介J1939协议是目前在大型汽车中应用最广泛的应用层协议,可达到250Kbit/s的通讯速率。
J1939协议由美国SAE( Society of Automotive Engineer)组织维护和推广。
J1939协议具有如下特点:(1)以CAN2.0B协议为基础,物理层标准与ISO11898规范兼容并采用符合该规范的CAN 控制器及收发器。
通讯速率最高可达到250Kbit/s。
(2)采用PDU( Protocol Data Unit协议数据单元)传送信息,每个PDU相当于CAN协议中的一帧。
由于每个CAN帧最多可传输8个字节数据,因此PDU的传输具有很高的实时性。
(3)利用CAN2.0B扩展帧格式的29位标志符定义每一个PDU的含义及该PDU的优先级。
(4)J1939协议主要作为汽车中应用的通讯协议,对汽车中应用到的各类参数都进行了规定。
参数的规定符合ISO11992标准。
二、J1939协议通讯报文内容解析J1939协议实质是将CAN扩展帧格式中未明确定义的11位ID,18位扩展ID进行了明确定义,紧随ID的是8个字节的数据。
为了实现J1939协议报文的正确接收,必须首先明确其仲裁场(如上所示)是如何确定的。
下面将逐一介绍:优先级:29位标志符的前3位用于在仲裁过程中决定报文的优先级P。
值000是最高的优先级。
高的优先级用于高速要求的报文。
低的优先级用于时间要求不紧迫的数据。
标志符位(R):保留位。
在传输报文时此位置为0。
此位留作将来SAF委员会定义其它目的使用。
数据页( DP)位:DP位用于选择两页参数组中的其中一页。
0页包含现在被定义的所有报文。
1页预备将来额外的扩展能力。
在0页用完后才被分配。
PDU格式(PF):PDU代表协议数据单元。
PF场识别能被传送的两个PDU格式。
SRR和IDE位:在CAN 2. 0B己被详细定义。
它们被置为隐性位。
最新J1939协议理解资料
J1939协议理解今天读了只939协议的介绍文档,下面主要说说我的理解:1、网络应用分为几个层物理层 SAE J1939-11数据链路层SAE J1939-21网络层 SAE J1939-31应用层 SAE J1939-71故障诊断SAE J1939-73网络管理层SAE J1939-812、下面主要说说数据链路层和应用层数据链路层:为物理连接之间提供可靠的数据传输。
包括发送CAN数据帧所必需的同步、顺序控制、出错控制和流控制。
首先要明白几个概念PGN:参数组编号帧(Frame):组成一个完整信息的一系列有序的数据位。
帧又被划分成几个域,每个域包括了预定义类型的数据。
CAN数据帧(CAN Data Frame):组成CAN协议帧所必需的有序位域,以帧起始(SOF) 开始以帧结束(EOF)结尾。
标准帧(Standard Frame):CAN2.0A规范中定义的使用11位标识符的CAN数据帧。
扩展帧(Extended Frame):CAN2.0 B规范中定义的使用29位标志符的CAN数据帧。
包(Packet):一个单一的CAN数据帧就是一个包。
当一条报文包含参数组的数据长度小于等于8个字节时,这样的报文也称为包。
报文(Message):指一个或多个具有相同参数组编号的(PGN)数据帧。
也就是说只要一个或多个CAN数据帧具有相同的PGN号,那他们就是属于一个报文。
多包报文(Multipacket Messages):当具有相同参数组编号的所有数据需要使用多个CAN 数据帧来传输时使用的一种J1939报文。
每个CAN数据帧拥有相同的标识符,但在每个包中数据不同。
协议数据单元PDU的格式PDUH.------------------------------------------29精品文档PDU是J1939传输数据的格式,它基于CAN协议的扩展帧传输方式。
即它的标识符是29位的。
优先级:最高0 (000)设置到最低7(111)。
CAN总线讲义
J1939 PDU 协议数据单元
P
R
D P
PF
PS
SA
DATA
3 11 8
8
8
64
1.优先级(P) 这三位仅在总线传输中用来优化消息延迟(即总线仲裁),消息优 先级可从最高0(000)设置到最低7(111).所有控制消息的缺省优先 级是3(011).其他所有信息、专用、请求和ACK消息的缺省优先 级是6(110). 2.保留位(R) 保留此位以备今后开发使用,所有消息应在传输中将SAE保留位 置0. 3 数据页(DP) 数据页位选择参数组描述的辅助页.置位0或1.
CAN总线协议已经成为汽车计算机控制系统和嵌入式工业 控制局域网的标准总线,并且拥有以CAN为底层协议专为 大型货车和重工机械车辆设计的J1939协议。
其典型的应用协议有:SAE J1939/ISO11783、 CANOpen、CANaerospace、DeviceNet、NMEA 2000等。
1、SAE J1939 协议
0 1 2
15 16 报文发送 17 18
19
MSCAN控制寄存器0(CANCTL0) MSCAN控制寄存器1(CANCTL1)
MSCAN总线计时寄存器0(CANBTR0) MSCAN总线计时寄存器1(CANBTR1)
MSCAN接受标志寄存器(CANRFLG) MSCAN接受中断使能寄存器(CANRIER)
20 世纪 80 年代初德国 BOSH 公司为解决现代汽车众多 控制单元、测试仪器之间实时交换数据而开发的一种串行通 讯协议,经多次修订,于1991年9月形成技术规范 2.0版本,该版 本包括 2.0A(11位标准帧格式)和 2.0B(29位扩展帧格式)两部 分.
美国的汽车工程学会SAE于2000年以CAN2.0B为基础 ,提 出 J1939 通讯协议 .
SAE J1939-11
《商用车控制系统局域网络(CAN总线)通信协议》编制说明一、 任务来源本标准是根据国家质量监督检验检疫总局国家标准制修订计划20030943-T-5号进行编制。
二、 制定的目的、意义随着汽车行业越来越重视汽车安全、环保等问题,大大促进了新技术的开发运用,越来越多的电子技术应用到汽车上,如电喷、ABS、电子点火系统、安全气囊等,大量的传感器、控制器在汽车上应用。
,大大改善了汽车的安全、环保、舒适等性能,提高了汽车的整体性能和水平,汽车电子战已经在行业打响,并体现在新开发设计的车型中。
为了减少线束的使用,实现系统之间的快速通讯和数据共享,现代汽车广泛采用网络技术。
汽车技术发展到今天,可以说网络技术的应用是一次革命,是高新技术在汽车上应用的最好体现。
有了网络通讯必须有通讯协议,以保证系统节点之间的对话和信息流的正常传送。
通讯协议要解决网络的优先权问题、灵活性问题,实现可扩展性、鲁棒性及数据共享等。
三、 国内外情况的简要说明CAN总线是一种串行数据通信协议,最早由德国BOSCH公司推出,用于汽车内部测量与执行部件之间的数据通信。
CAN推出之后,世界上各大半导体生产厂商迅速推出各种集成有CAN协议的产品,由于得到众多产品的支持,使得CAN在短期内得到广泛应用。
CAN总线规范于1993年被ISO国际标准组织制订为国际标准, 包括用于高速场合的ISO11898和用于低速场合的ISO11519,CAN是目前总线规范中唯一取得国际标准的。
基于CAN的网络已经安装于很多公司生产的乘用车及商用车上,目前在美国CAN已基本取代基于J1850的网络。
预计到2005年,CAN将会占据整个汽车网络协议市场的63%。
在欧洲,基于CAN的网络也占有了大约88%的市场。
我国多家合资公司在外资技术的支持下早已安装使用CAN网络,且随着CAN网络技术被越来越多的厂家认可和掌握,这一技术在我国已被广泛推广和使用。
CAN在全世界范围的应用和用户在不断扩大。
汽车CAN总线核心技术J1939
当前位置:首页> 信息分类> 技术文章> 汽车电器技术> 正文现代汽车的核心技术-SAE J1939hc360慧聪网汽车配件行业频道2004-06-15 15:39:18一、技术背景在当今的中高档汽车中都采用了汽车总线技术。
汽车总线为汽车内部各种复杂的电子设备、控制器、测量仪器等提供了统一数据交换渠道。
一些汽车专家认为,就像在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卡与使用J1939应用层协议设备间的通信
CAN卡与使用J1939应用层协议设备间的通信CAN总线协议:对CAN协议的媒体访问控制子层的一些概念和特征做如下说明: (1)报文(Message) 总线上的报文以不同报文格式发送,但长度受到限制。
当总线空闲时,任何一个网络上的节点都可以发送报文。
(2)信息路由(Information Routing) 在CAN中,节点不使用任何关于系统配置的报文,比如站地址,由接收节点根据报文本身特征判断是否接收这帧信息。
因此系统扩展时,不用对应用层以及任何节点的软件和硬件作改变,可以直接在CAN中增加节点。
(3)标识符(Identifier) 要传送的报文有特征标识符(是数据帧和远程帧的一个域),它给出的不是目标节点地址,而是这个报文本身的特征。
信息以广播方式在网络上发送,所有节点都可以接收到。
节点通过标识符判定是否接收这帧信息。
(4)数据一致性应确保报文在CAN里同时被所有节点接收或同时不接收,这是配合错误处理和再同步功能实现的。
(5)位传输速率不同的CAN系统速度不同,但在一个给定的系统里,位传输速率是唯一的,并且是固定的。
(6)优先权 由发送数据的报文中的标识符决定报文占用总线的优先权。
标识符越小,优先权越高。
(7)远程数据请求(Remote Data Request) 通过发送远程帧,需要数据的节点请求另一节点发送相应的数据。
回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名。
(8)仲裁(Arbitration) 只要总线空闲,任何节点都可以向总线发送报文。
如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。
通过使用标识符的逐位仲裁可以解决这个碰撞。
仲裁的机制确保了报文和时间均不损失。
当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。
在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。
如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。
can总线与J1939协议
c a n总线与J1939协议本页仅作为文档页封面,使用时可以删除This document is for reference only-rar21year.MarchCAN 总线的特点及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通信电气和通讯规范 (基于SAE J1939)V1090513
整车控制CAN通信电气和通讯规范(基于SAE J1939)制订日期:2008年月日编制:审核:批准:日期:日期:日期:目录一、目的定义整车控制器与动力电源系统、车身网络、电机系统和仪表之间的电气连接和通讯规范。
二、电气规范整车控制器与组合仪表、车身网络、发动机ECU、动力电池系统、电机控制器和功率控制器之间的电气连接应该如下图所示,整车控制器与动力电池系统的电源由各自单独连接。
各子网需用两个120欧姆电阻端接。
三、网络拓扑图1 CAN网络连接图参考图1所示,整车控制器1、车身网络模块、仪表和发动机ECU为1个子网(Net1),通讯波特率为250KbPS;整车控制器2、功率控制器和电池管理系统为1个子网(Net2),通信波特率为250KbPS;整车控制器3、电机控制器和AMT为1个子网(Net3),通信波特率为250 KbPS。
四、通讯规范使用CAN2.0B的扩展帧格式,总线通讯波特率为:250KbPS。
握手协议采用广播式和应答式两种。
广播帧包含的数据主要是电池组的总信息,包括总电压、总电流、最高温度、电池单体最高电压、电池单体最低电压、管理系统错误代码;应答帧主要是根据所要电池组的序号回复详细的单节电池电压信息。
由两个或两个以上数据字节组成的参数,应首先传递低位有效字节。
诊断信息实现了DM1,格式如下:FMI:实效模式标识(5bits),详细可参考J1939-71CM:转化模式,通常为0;OC:该故障发生的次数,1-1274.1C AN总线网络报文结构图报文ID结构如下表:以上为29标识符的分配表:其中,优先级为3位,可以有8个优先级;R一般固定为0;DP现固定为0;一个CAN2.0的扩展帧格式如下(参见J1939-21):4.2C AN网络地址分配表CAN总线节点地址从J1939标准中的定义获得;其中129-132使用SAE的保留地址五、报文内容5.5、整车控制器3(其P GN的PF为FF,PS为:64-79)5.6.1、电池组状态电池管理系统错误代码表电池开关量信息表注:电机在收到此报文后,应根据故障代码和故障程度,决定停车或限功率输出。
J1939中文资料1
(SAE1939-11:1999 MOD )国家标准化管理委员会ICSGB/T XXXX.1-XXXX商用车控制系统局域网络(CAN )通信协议第1部分:物理层,250千比特/秒,屏蔽双绞线 Physical Layer, 250K bits/sec, Twisted Shielded Pair(征求意见稿)20xx-xx-xx 发布20xx-xx-xx 实施GB/T XXXX.1-XXXX前言GB/T××××《商用车控制系统局域网络(CAN 总线)通信协议》包括10个部分:—第1部分:物理层—屏蔽双绞线(250K比特/秒)—第2部分:物理层—非车载诊断连接器—第3部分:物理层—非屏蔽双绞线(250K比特/秒)—第4部分:数据链路层—第5部分:应用层—车辆—第6部分:应用层—诊断—第7部分:网络管理—第8部分:参数组分配—第9部分:地址和标识分配—第10部分:可疑参数编号(SPN)—第11部分:网络层本部分为GB/T××××的第1部分,对应于SAE1939-11:1999 《物理层,250k比特/秒,屏蔽双绞线》,本部分与SAE1939-11的一致性程度为修改采用(技术内容完全等同),主要差异如下:—按1.1规定增加了”前言”、“范围”。
—将原文引用的SAE有关标准改为引用我国的相关国标。
—进行了编辑性修改。
本部分的附录A、B、C、D均为资料性附录。
本部分由全国汽车标准化技术委员会提出。
本部分由全国汽车标准化技术委员会归口。
本部分由负责起草。
本部分主要起草人:GB/T××××.1商用车控制系统局域网络(CAN 总线)通信协议第1部分:物理层—屏蔽双绞线(250千比特/秒)1 范围本部分规定了CAN 总线的物理层—屏蔽双绞线(250千比特/秒)的电气性能参数等。
本部分适用于M2、M3及N类车辆,其他车辆可参考。
STM32的CAN总线+J1939数据格式说明
在STM32中都是有标准的数据结构和函数供大家使用,那么对于具体的每一部分对应那些数据、每一位代表什么意思都没有具体说明。
特别在使用某些协议,需要辨别该部分的具体信息时,就必须对数据结构中的每位的意义清楚才能提取出具体的含义。
先来看一下下面的东西吧。
CAN帧结构。
这个就不具体介绍了,不过先提一点疑问:在STM32中直接给结构体中各成员直接赋值或读取,那么其实际的发送或接收的最底层的结构又是怎么样的呢?typedef struct{uint32_t StdId;uint32_t ExtId;uint8_t IDE;uint8_t RTR;uint8_t DLC;uint8_t Data[8];uint8_t FMI;} CanRxMsg; 接受结构体和发送结构体一样,就只是结构体名不一样而已(CanTxMsg)。
对于上面的问题,在一些协议中进行解析时,如何将这些标识符与协议的具体项对应呢?由于在做J1939协议的编程,所以就以这个为例说明一下。
如上所示,在J1939中CAN帧结构为32位,包含优先级、PDU格式(PF)、PS、SA。
而在STM32的结构体中却是32位的ID,8位的IDE、RTR、DLC。
如果要单独提取标识符中的某一个有如何提取呢?这就涉及到STM32的收发邮箱的寄存器存储结构了。
来看一下其标识符寄存器结构吧(接收和发送寄存器结构除0位外都一样)对于J1939协议来说,必须对帧数据和优先级、PF、PS、SA进行双向解析。
所以我们在发送数据或收到数据时必须做一定的处理。
在STM32的固件库函数中该寄存器中的各个部分的值提取出来赋给其结构体中个部分的值。
发送数据时:u32 Id_Ext = 0x00000000;Id_Ext = Id_Ext|Priority<<26;Id_Ext = ((Id_Ext>>16)|Pdu_PF)<<16;Id_Ext = ((Id_Ext>>8)|Pdu_Ps)<<8;Id_Ext = Id_Ext|Pdu_Sa;接收数据时:PDU_PF = (RxMessage.ExtId&0x00ff0000)>>16;PDU_PS = (RxMessage.ExtId&0x0000ff00)>>8;PDU_SA = RxMessage.ExtId&0x000000FF;注意:在帧结构图中我们看到PF被分成了两部分,而在上面的处理中PF却是连在一起的8位。
CAN总线J1939协议
可靠的错误处理和检错机制;
发送的信息遭到破坏后,可自动重发;
节点在错误严重的情况下具有自动退出总线的功能;
报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
CAN总线特点J1939通信协议原理
J1939是一个高速通讯网络,它支持ECUs间的实时闭路控制功能,这些ECUs在汽车上可能是物理分布的。J1939能执行所有的J1708/J1587功能,除此之外还有控制系统支持。
J1939使用CAN协议,当总线空转的时候,该协议允许任何ECU传送网络上的信息。每个信息包括一个标识符,该标识符确定信息优先权,谁先发送它,以及它包含什么数据。对于每个ECU单元,访问网络的机会是相同的,但在多个ECU同事要求传输信息时,有最高优先权的信息优先。
J1939提供了完全的网络定义,该定义使用在CAN协议中定义的29位标识符(CAN扩展帧)。CAN协议格式由28位到0位传输,而J1939协议格式的标识符由1位到32位传输,共32位。
ቤተ መጻሕፍቲ ባይዱ
CAN特性
低成本;
极高的总线利用率;
很远的数据传输距离(长达10km)
高速的数据传输速率(高达1Mbit/s)
整车控制CAN通信电气和通讯规范基于SAEJ1939V1090513
整车控制CAN通信电气和通讯规范(基于SAE J1939)制订日期: 2008年月日编制:审核:批准:日期:日期:日期:目录一、目的定义整车控制器与动力电源系统、车身网络、电机系统和仪表之间的电气连接和通讯规范。
二、电气规范整车控制器与组合仪表、车身网络、发动机ECU、动力电池系统、电机控制器和功率控制器之间的电气连接应该如下图所示,整车控制器与动力电池系统的电源由各自单独连接。
各子网需用两个120欧姆电阻端接。
三、网络拓扑图1 CAN网络连接图参考图1所示,整车控制器1、车身网络模块、仪表和发动机ECU为1个子网(Net1),通讯波特率为250KbPS;整车控制器2、功率控制器和电池管理系统为1个子网(Net2),通信波特率为250KbPS;整车控制器3、电机控制器和AMT为1个子网(Net3),通信波特率为250 KbPS。
四、通讯规范使用CAN2.0B的扩展帧格式,总线通讯波特率为:250KbPS。
握手协议采用广播式和应答式两种。
广播帧包含的数据主要是电池组的总信息,包括总电压、总电流、最高温度、电池单体最高电压、电池单体最低电压、管理系统错误代码;应答帧主要是根据所要电池组的序号回复详细的单节电池电压信息。
由两个或两个以上数据字节组成的参数,应首先传递低位有效字节。
诊断信息实现了DM1,格式如下:FMI:实效模式标识(5bits),详细可参考J1939-71CM:转化模式,通常为0;OC:该故障发生的次数,1-1274.1CAN总线网络报文结构图以上为29标识符的分配表:其中,优先级为3位,可以有8个优先级;R一般固定为0;DP现固定为0;一个CAN2.0的扩展帧格式如下(参见J1939-21):4.2CAN网络地址分配表CAN总线节点地址从J1939标准中的定义获得;其中129-132使用SAE的保留地址五、报文内容5.5、整车控制器3(其PGN的PF为FF,PS为:64-79)5.6.1、电池组状态电池开关量信息表注:电机在收到此报文后,应根据故障代码和故障程度,决定停车或限功率输出。
STM32的CAN总线+J1939数据格式说明
在STM32中都是有标准的数据结构和函数供大家使用,那么对于具体的每一部分对应那些数据、每一位代表什么意思都没有具体说明。
特别在使用某些协议,需要辨别该部分的具体信息时,就必须对数据结构中的每位的意义清楚才能提取出具体的含义。
先来看一下下面的东西吧。
CAN帧结构。
这个就不具体介绍了,不过先提一点疑问:在STM32中直接给结构体中各成员直接赋值或读取,那么其实际的发送或接收的最底层的结构又是怎么样的呢?typedef struct{uint32_t StdId;uint32_t ExtId;uint8_t IDE;uint8_t RTR;uint8_t DLC;uint8_t Data[8];uint8_t FMI;} CanRxMsg; 接受结构体和发送结构体一样,就只是结构体名不一样而已(CanTxMsg)。
对于上面的问题,在一些协议中进行解析时,如何将这些标识符与协议的具体项对应呢?由于在做J1939协议的编程,所以就以这个为例说明一下。
如上所示,在J1939中CAN帧结构为32位,包含优先级、PDU格式(PF)、PS、SA。
而在STM32的结构体中却是32位的ID,8位的IDE、RTR、DLC。
如果要单独提取标识符中的某一个有如何提取呢?这就涉及到STM32的收发邮箱的寄存器存储结构了。
来看一下其标识符寄存器结构吧(接收和发送寄存器结构除0位外都一样)对于J1939协议来说,必须对帧数据和优先级、PF、PS、SA进行双向解析。
所以我们在发送数据或收到数据时必须做一定的处理。
在STM32的固件库函数中该寄存器中的各个部分的值提取出来赋给其结构体中个部分的值。
发送数据时:u32 Id_Ext = 0x00000000;Id_Ext = Id_Ext|Priority<<26;Id_Ext = ((Id_Ext>>16)|Pdu_PF)<<16;Id_Ext = ((Id_Ext>>8)|Pdu_Ps)<<8;Id_Ext = Id_Ext|Pdu_Sa;接收数据时:PDU_PF = (RxMessage.ExtId&0x00ff0000)>>16;PDU_PS = (RxMessage.ExtId&0x0000ff00)>>8;PDU_SA = RxMessage.ExtId&0x000000FF;注意:在帧结构图中我们看到PF被分成了两部分,而在上面的处理中PF却是连在一起的8位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0~255 循环
电机最大转速 电机目标转速,,0~15000,(0~15000)
波特率 500kb/s 发送周期
10ms 分辨率 0.1RPM/位 0.1Nm/位
0.1RPM/位
报文名称
报文1 formVCUtoMCU
发送节点 接收节点
VCU
MCU
字节
位
0
1
2
3
0
1
2
4
3
4
5
6
7
5
6
7
P
R
6
0
信号名称
6)CAN总线上各部件均有终端电阻(120Ω ),同时,终端电阻同网络线之间通过跳线连接,以便灵活搭配,方便调试使用,装车时去掉;
DC/DC
SA=214 新定义
7)终端电阻头(120Ω )安装在网络线两端,做在线束中;
充电机
SA=229 新定义
8)所有通信电缆应尽量离开动力线(0.5m以上)、离开12V控制线(0.1m以上);
报文名称
报文2 formVCU to Display
发送节点 接收节点
VCU DISPLAY
字节
位
0
1
0
1
2
2
3
4
5
6
7
3
4
0
1
2
5
3
4
5
6
7
6
7
P
R
3
0
信号名称
MotorSpeed
MCUOverVol MCULowVol MCUOverCurr MCUOverTem MCUDriveFault MotorOverTemp MotorState
MCUTemp MotorTemp MCUWorkeState MotorWorkeMode MotorDirection MotorLoad
VehicleSpeed
ID(hex)
0X0C012827
DP
PF
0
1
物理含义
PS
SA
40
39
范围与含义
电机转速
0~16063.75rpm(0~64255)
MCU过压报警 MCU欠压报警 MCU过流报警 MCU温度保护报警 MCU驱动保护
字节
位
0
报文4
1
formVCU to Display
2
3
4
5
6
7
P
R
6
0
信号名称
BatteryMinVol
ID(hex)
ID=0X18042827
DP
PF
0
4
物理含义
电池模块最低电压
BatteryMaxVol
电池模块最高电压
BatteryMaxTemp BatteryTempDiff
RestSoc BatteryLife
59
物理含义
电池SOC
制冷空调最低温度设定
制冷空调最高温度设定
时序标号
PS
SA
231
39
范围与含义
0~100%
-40~210℃ 偏移量40 -40~210℃ 偏移量40
0~255 循环
波特率 250kb/s 发送周期 200ms 分辨率 0.4%V/bit 1℃/bit 1℃/bit
报文名称
报文1 formACtoVCU
新定义地址,应使用208~231这段属于公路用车的预留地址,
3)控制器电源应符合GB/T11858.3标准的规定
报文编号为分配给每个结点的能进行目的寻址的报文编号空间。 4)CAN总线的通信电缆采用屏蔽双绞线(阻燃0.5mm),屏蔽层应连接到CAN_GND,屏蔽线的接地方式由整车布线时选择合适位置单点接地;
电池模块最高温度 电池模块最低温度
剩余容量 电池管理系统时序标号
PS
SA
40
39
范围与含义
0~15 偏移量:0
0~15 偏移量:0 -40~210℃ 偏移量40 -40~210℃ 偏移量40 0~510Ah偏移量:0 0~255 循环
波特率 250kb/s 发送周期 100ms 分辨率
0.01V/bit
AccPedal
0.1(km/h)/bit
0-50,偏移量:0 0~255 循环
0.2V/bit,
报文名称
报文1 formVCUtoAC
发送节点 接收节点
VCU
AC
字节
位
0
1
2
3
4
5
6
7
P
R
6
0
信号名称
BatterySOC
SetLowTemp
SetHighTemp
LIFE
ID(hex)
0X183BE727
DP
PF
0
报文名称
发送节点 接收节点
VCU DISPLAY P
R
字节
位
0
1
2
0
3
4
5 6
7
报文1
1
formVCU to Display
2
3
0
信号名称
GearPosition
KEYSwitch
ChargeConnect ChargeState
VechileMode
AccPedalPos
ID(hex) 0x0C002827
波特率 250kb/s 发送周期 100ms 分辨率
0.1%/bit
3
BrakePedalPos
制动踏板位置
0~100%(0-1000)
4
0
VCUState
整车控制器Ready
0:ready 1:no ready
1 2
BMSState
电池管理单元在线
00:自检成功 01,10进行中
5
3
DriveSysState
范围与含义
-40~210℃ 偏移量40
0~100%
00:正常01:过高
10:过低11:备份
0:正常1:过欠压
0:正常1:过流
波特率 250kb/s 发送周期 200ms 分辨率 1℃/bit 0.4%V/bit
时序标号
0~255 循环
报文名称
发送节点 接收节点
VCU DCDC
字节
位
0
0
1
2
报文1
1
DP
PF
PS
SA
0
0
物理含义
档位位置
点火钥匙位置信息
充电线连接 电池组充电
整车模式
40
39
范围与含义
00:空挡 01:倒档 10:前进 11:备份
00:OFF 01:ACC 10:ON 11:STAR 0:未连接1:已连接 0:未充电1:正在充电 0:动力模式1:经济模式
加速踏板位置
0~100%(0-1000) 偏移量:0
驱动系统在线
4
AccPedalState
加速踏板故障
0:正常1:故障 0:正常1:故障
5
BrakePedalState
制动踏板故障
0:正常1:故障
6
DCDCState
DCDC故障
0:正常1:故障
7
ACState
空调故障
0:正常1:故障
6
LowBatVoltage
低压电池电压
0-50V 偏移量:0
7
0.1%/bit 0.2V/bit
数字仪表 SA=40 SAEJ1939已定义
9)电缆屏蔽层在车内连续导通,建议每个部件的网络插座有屏蔽层的接头;
空调
SA=231 新定义
10)CAN总线所有结点均有光耦隔离。
CAN 总 线 网 络报文结构图
以 上 为 29 标 识符的分配 表:
其中,优先级为3位,可以有8个优先级;R一般固定为0;DP现固定为0; 8位的PF为报文的代码; 8位的PS为目标地址或组扩展;8位的SA为发送此报文的源地址。
BatterySOC
电池SOC
0~100%
ModuVolHigh 模块电压过高(停止充电) 0:正常1:报警
ModuVolLow
模块电压过低
0:正常1:报警
SOCHigh
SOC过高(停止充电)
0:正常1:报警
SOCLow
SOC过低(需补电)
0:正常1:报警
CurrentHigh
过电流
0:正常1:报警
5
6
7
位
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3—7
P
R
6
0
信号名称
BatteryVoltage
ID(hex)
0X18032827
DP
PF
0
3
物理含义
电池总电压
PS
SA
40
39
范围与含义
0~1000 偏移量:0
BatteryCurrent
电池总电流
-3200~3200偏移量3200
整车控制器 SA=39 SAEJ1939已定义
5)网络的接线拓扑为一个尽量紧凑的线形结构以避免电缆反射。
电机控制器 SA=239 SAEJ1939已定义
VCU接入总线主干网的电缆要尽可能短。为使驻波最小化,节点不能在网络上等间距接入,接入线也不能等长,且接入线的最大长度应小于1m;
电池管理系统 SA=243 SAEJ1939已定义
位
0
1
2
3
0
1