2021-10-11CAN协议

CAN多消息传输连接管理

  • CAN分包发数据
    • SAE:J1939-21 协议 5.10.3

CAN分包发数据

SAE:J1939-21 协议 5.10.3

2021-10-11CAN协议_第1张图片
这种消息类型是用于建立和关闭连接,以及控制数据流。传输协议提供了以下六种传输协议连接管理消息:连接模式下的请求发送,连接模式下的准备发送,消息结束应答,放弃连接,以及广播公告消息。图10表示了在“传输协议——连接管理”的参数群定义中这些消息的使用格式。

参数群标称符: 传输协议——连接管理(TP.CM)
定义: 用于9字节或以上的数据的参数群的传输。传输协议中所定义的每种特定消息都包含以下定义部分。
重复传输速度: 每次传送一个参数群编号
数据长度: 8个字节
数据页位(DP): 0
PDU格式(PF): 236
特定PDU(PS): 目标地址
默认优先级: 7
参数群编号(PGN): 60416(00EC0016)

本参数群功能所使用的参数范围:

控制字节: 0-15,18,20-31,33-254保留给SAE分配
整个消息大小,字节数目: 9到1785(2字节),0到8和1786到65535禁用
全部数据包的数目: 1到255(1字节),0禁用
可发送的数据包数目: 0到255(1字节)
下一个将要发送的数据包编号: 1到255(1字节),0禁用
序列编号: 1到255(1字节),0禁用

连接模式下的请求发送(TP.CM_RTS):指定目标地址
字节: 1 控制字节=16,指定目标地址请求发送(RTS)
2,3 整个消息大小,字节数目
4 全部数据包的数目
5 保留给SAE设定使用,该字节应设为FF16
6-8 所装载数据的参数群编号

连接模式下的准备发送(TP.CM_CTS):指定目标地址
字节: 1 控制字节=17,指定目标地址准备发送(CTS)
2 可发送的数据包数目
3 下一个将要发送的数据包编号
4,5 保留给SAE设定使用,该字节应设为FF16
6-8 所装载数据的参数群编号

消息结束应答(TP.CM_EndofMsgAck):指定目标地址
字节: 1 控制字节=19,消息结束应答
2,3 整个消息大小,字节数目
4 全部数据包的数目
5 保留给SAE设定使用,该字节应设为FF16
6-8 所装载数据的参数群编号

放弃连接(TP.CM_Abort):指定目标地址
字节: 1 控制字节=255,放弃连接
2-5 保留给SAE设定使用,该字节应设为FF16
6-8 所装载数据的参数群编号

广播公告消息(TP.CM_BAM):全局目标地址
字节: 1 控制字节=32,广播公告消息(BAM)
2,3 整个消息大小,字节数目
4 全部数据包的数目
5 保留给SAE设定使用,该字节应设为FF16
6-8 所装载数据的参数群编号
图10——传输协议的消息格式
5.10.3.1 连接模式下的请求发送(TP.CM_RTS)
TP.CM_RTS消息用于通知一个节点,在网络上有另一节点希望和它建立一个虚拟连接。在TP.CM_RTS消息中,源地址域设置发送节点的地址,目标地址段设置所期望的接收节点的地址,余下的字段根据将要发送的参数群编号进行适当设置。
如果接收到来自同一源地址的关于相同PGN的多组RTS消息,那么最新的RTS将其作用而以前的RTS将被丢弃。在这种特殊情况下,无需为那些被丢弃的RTS消息发送放弃连接的消息。
TP.CM_RTS消息只能由发送者发送。
5.10.3.2 连接模式下的准备发送(TP.CM_CTS)
TP.CM_CTS消息用于回答请求发送消息。它通知对方节点,它已经准备好接收一定量的长消息数据。
如果在一个连接已经建立后还接收到多组CTS消息,那么连接将被关闭。如果发送者放弃连接,它会发送放弃连接消息。
响应者只有等到它已经接收到来自于前一个CTS消息的数据包,或者工作超时,它才会发送下一条CTS消息。
如果在连接尚未建立时接收到CTS消息,那么该消息将被忽略。
CTS消息不但控制数据流,还可以确认在该CTS消息数据包编号之前的所有数据包被正确接收。因此,如果前一个CTS的信息被破坏,那么应该在继续发送队列中的下一个数据包前,为被破坏的信息发送一条CTS消息。
TP.CM_CTS消息只能由响应者发送。
5.10.3.3 消息结束应答(TP.CM_EndofMsgACK)
TP.CM_EndofMsgACK消息是由长消息的响应者传送给消息的发送者,表示整个消息已经被接收并正确重组。在最后一个数据传输完成后,响应者可以通过不马上发送TP.CM_EndofMsgACK消息来维持连接。这样可以在需要时让响应者得到重发的数据包。
如果发送者在最后的数据传输之前接收到消息结束应答,那么发送者将忽略这条应答消息。
消息结束应答的发送,向发送者表示长消息已被接收并正确重组。
TP.CM_EndofMsgACK消息只能由响应者发送。
5.10.3.4 放弃连接(TP.Conn_Abort)
TP.Conn_Abort消息用于让虚拟连接中的任一节点在没有完成整个消息的传输时关闭连接。
当一个节点接收到连接模式下的请求发送消息时,它必须确定是否具有充足的可用资源来处理这个连接将要传输的消息。例如,如果设备必须从系统的堆中获得存储空间,那么它就不能宣称有足够的资源接收整个消息;或者,一个设备可能由于过于耗费处理器的工作循环作其他别的事,以致无法处理长消息的传输。在这些情况下,即使连接尚未建立,也可以发送放弃连接消息。这样做可以使发送者无需先等到超时产生才去尝试别的虚拟连接。
无论是发送者还是响应者,在数据传输完成之前,由于任何原因,包括超时,决定关闭连接,它都应该发送一条放弃连接消息。
通常情况下,在接收到发自CAN通讯协议设备的放弃连接消息后,发送者(例如,RTS节点)应该马上停止传输数据。如果这样不可行,那么在停止传送数据包的过程中不能发送超过32个数据包或超过50 毫秒。在发送或接收了放弃连接消息后,所有相关的已接收数据包都会被忽略。
TP.Conn_Abort消息可以由发送者或者响应者发送。
5.10.3.5 广播公告消息(BAM)
TP.CM_BAM消息用于通知网络上所有节点将要广播一条长消息。它定义了要发送消息的参数群和字节数。在TP.CM_BAM消息被发送后,数据传送消息将会被发送,它包含了拆装好的广播数据。
TP.CM_BAM消息只能由发送者发送。

你可能感兴趣的:(CAN协议,can)