J1939协议
简介
J1939遵从CAN 2.0B要求,使用扩展帧格式(29位ID)定义了一个完整的标准化通讯策略
J1939规定每个节点使用一个源地址,并且将节点的源地址映射到CAN标识符中,以避免多个节点使用同一个CAN标识符
J1939通过PDU定义了一个框架,用来组织数据帧中J1939协议相关的信息
PDU由数据帧中的ID和数据场组成
缩写
PDU—Protocol Data Unit,协议数据单元
PF—PDU Format,PDU格式
PS—PDU Specific,PDU细节
GE—Group Extension,组扩展
SA—Source Address,源地址
DA—Destination Address,目标地址
PGN—Parameter Group Number,参数组编号
PDU
P-Priority优先级
总线传输中用来优化报文延迟
长度3位:最高0-最低7
缺省优先级:控制类报文P=3,其他P=6
新参数组分配或网络负载需要时,可以调整优先级
R-Reserve保留位
保留,以备SAE今后扩展
长度1位,始终置0
PGN的一部分
分配给P以增加优先级范围,分配给DP增加数据页范围
扩展数据页EDP
DP-Data Page数据页位
用来将所有参数组分页
长度1位,当前已经分配所有参数组DP=0
PGN的一部分
只有当数据页0中的参数组全部分配完之后,才
能分配页1中的参数组
PF-PDU格式
用来确定PDU的2种格式
长度8位:0-239(00-EF)表示PDU1,240-255(F0-FF)表示PDU2
PGN的一部分
PDU1格式:报文向特定目标地址发送,此时PGN的最低字节为0,PS不表示PGN的有效数值,表示目标地址。
PDU2格式:报文作为全局报文发送,PS域表示PGN的有效数值
PDU细节(PDU Specific)
由PF决定其含义
长度8位
PDU1格式:表示目标地址
PDU2格式:表示组扩展,用于全局广播
DA表示该报文要发送的目标地址
GE表示PS在PDU2中与PF的4个最低有效位能够共同确定4096个PDU2格式参数组
SA-Source Address源地址
用来标识节点设备,保证CAN数据ID的唯一
长度8位
网络中一个特定SA只能匹配一个设备
参数组
定义:应用层中定义的与某个ECU相关的具有相同控制功能的若干个参数的组合
将与ECU相关的多个参数(例如发动机转速、水温等)集合成一个组
参数组中参数的特点
功能相同(例如机油系统、冷却系统、燃油系统等)而不是类型相同(例如温度、压力、速度等)
所有参数具有相同传输更新速率
所有参数来源于相同ECU
列出应用层的全部参数组,按照PGN排序
PGN—Parameter Group Number
参数组编号,24位数字,唯一的标识一个特定的参数组
用于唯一标识参数组的号码
24位数字,应用层定义
与PDU中的某些域场存在对应关系
CAN报文,PDU,PGN关系
报文类型
命令报文
功能:某个源地址设备发送命令到特定或全局目标地址,目标地址设备根据接收到的命令报文执行特定的动作
接收到命令报文后设备应作出“响应”
请求报文
功能:用于向全局或特定目标地址请求某个参数组
广播报文
设备主动发送的报文
响应报文
对命令或请求响应的报文
应答报文
功能:对特定命令或特定请求的一种响应
应答报文必须发送至全局地址255
应答类型:肯定应答(ACK)/否定应答(NACK)/拒绝访问/无法应答
数据链路层
通过数据链路层的组织,使得发送的CAN数据帧具有必需的同步、顺序控制、错误控制和流控制,保证了数据输的可靠性
点对点会话
TP.CM_RTS
TP.CM_CTS
TP.DT
TP.CM_EndofMsgACK
广播公告
TP.CM_BAM
TP.DT
连接超时
超时功能:控制报文的发送速率,留给对方足够的处理时间,防止长时间等待
超时处理:点对点会话中,等待方发送放弃连接报文,退出传输过程。广播公告中,直接退出传输过程。
超时参数