大家好,又见面了,我是你们的朋友全栈君。
SAE J1939在卡车领域得到了广泛的认可,由多个文档组成,描述了从物理层到诊断层以及应用层的通信协议层。 SAE J1939-21描述了数据链路和传输层,包括两种传输协议变体:
用于广播消息的BAM(广播宣布消息),以及
CMDT(连接模式数据传输)用于点对点连接。
该规范定义了SAE J1939-21的传输协议如何在AUTOSAR体系结构中实现。 它只描述了与AUTOSAR体系结构相关的实现部分。 协议特定的细节,如精确的计时,不属于本规范的一部分。 因此,为了能够实现J1939传输层模块,本规范的读者必须能够访问原始的SAE J1939-21规范文档。
看图可知该路径为:CANIf-J1939TP-PDUR-Com、CANIf-CANTP-PDUR-DCM
J1939Tp的目的是分割和重组大于8字节的j1939pgn (n – sdu)。 分段报文通过CAN接口发送和接收。
PDU-Router (PduR)将AUTOSAR COM和DCM i – pdu部署到不同的通信协议上(例如CAN或J1939,通过传输层分段或=直接)。 运行时,pdu根据I-PDU (L-SDU或N-SDU)标识来决定I-PDU路由到哪里。 同样,CanIf使用L-SDU (I-PDU或n – pdu)标识来决定接收到的消息是否必须由一个可用的传输层模块处理,或者可以直接转发给pdu。
J1939Tp支持8字节以上的固定大小和可变大小的i – pdu (n – sdu)。不超过8字节的i – pdu在PduR和CanIf之间直接交换。
固定大小的n – sdu总是被J1939Tp分段,而可变大小的n – sdu只在超过8字节时进行分段。 J1939Tp直接将实际大小小于等于8bytes,且配置的最大大小大于8bytes的可变大小n – spdu转发给CanIf。 传输协议的变体(BAM或CMDT),在接收较大的N-SDU时,根据接收到的n – pdu进行选择;在发送较大的N-SDU时,根据配置和实际DA进行选择。
J1939Tp支持处理可变SA、DA和优先级的n – pdu和n – sdu。 在这种情况下,n – pdu和n – sdu中会包含部分CAN ID的元数据(附着在负载上)。
总之,J1939Tp提供了以下功能 :
数据在传输方向上的分割和直接传输
按接收方向重新组合和直接接收数据
数据流控制
超时监督
在分割或重组期间检测错误
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135632.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...