大家好,又见面了,我是你们的朋友全栈君。
J1939TP给上层、下层提供的服务,和它本身内部的行为。
1939协议定义了一些参数组,每个参数组包含确定的内容和信号。并提供以下PG:
负载的长度类型:最大字节数、可变或固定大小
参数组号:18位 包含以下信息:2bit 数据页信息 8bit PDU格式 8bit PDU细节
PF小于240的为PDU1格式,用于点对点通信;大于等于240的为PDU2格式,用于广播通信。PDU细节仅与PDU2格式有关。在PDU1格式下的点对点通信,PS总为0。
J1939使用29位CANid作为消息的标识。CANid包含:优先级-3位、PGN、源地址SA、目标地址DA(仅在点对点通信中使用)
通常,一个ECU只有一个节点地址在接受消息时被用作目标地址,在发送消息时作为源地址。然而单个ECU也可以同时实现几个J939的不同节点,每个节点拥有自己的地址。此时,该ECU支持任何一个节点作为DA,并将任何定义的节点地址作为发送的DA。(PS: 不是很理解代表不同节点 )
J939传输层使用两种PDU1格式定义的点对点通信来传输分段消息,它们都有固定的8字节长度。这些消息在本文档中被称为传输帧。
TP.CM用于连接管理。负载的第一个字节定义了它的角色,可能是以下几种:
TP.CM_BAM用于发起BAM传输
TP.CM_RTS用于发起CMDT传输
TP.CM_CTS用于CMDT传输期间的流量控制
TP.CM_EndOfMsgAck表示CMDT的传输结束
TP.Conn_Abort代表CMDT传输错误并中断
CMDT:Connection Mode Data Transfer, peer-to-peer variant of SAE J1939 transport protocol
连接模式数据传输,SAE J1939传输协议的点对点变体
TP.DT包含数据的1-7字节的队列顺序
一个TP.CM信号或者是TP.DT帧,由一个一定的CAN ID识别,用于不同的PG(参数组)。运输PG的PGN包含在TP的有效载荷中。
CMDT相关传输帧的目的地址DA (destination address)包含一个合法的节点地址,允许点对点连接,而BAM相关传输帧的目的地址DA总是设置为FF16,以创建广播连接。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137893.html原文链接:https://javaforall.cn