SAE J1939協(xié)議(五)
多包報文
本文引用地址:http://m.butianyuan.cn/article/201612/328876.htm采用多包報文,在連接管理報文的協(xié)調(diào)下進(jìn)行多幀傳輸。
長度大于8字節(jié)的報文無法用單個CAN數(shù)據(jù)幀來裝載。因此,它們必須被拆分為若干個小的數(shù)據(jù)包,然后使用單個的數(shù)據(jù)幀對其逐一傳送。而接收方必須能夠接收這些單個的數(shù)據(jù)幀,然后解析各個數(shù)據(jù)包并重組成原始的信息。
CAN數(shù)據(jù)幀包含一個8字節(jié)的數(shù)據(jù)域。由于組成長信息的單個數(shù)據(jù)包必須能被識別出來以便正確重組,因此把數(shù)據(jù)域的首字節(jié)定義為數(shù)據(jù)包的序列編號。每個數(shù)據(jù)包都會被分配到一個從1到255的序列編號。由此可知,多幀傳輸最大的數(shù)據(jù)長度是(255包×7字節(jié)/包=)1785個字節(jié)。
序列編號
序列編號是在數(shù)據(jù)拆裝時分配給每個數(shù)據(jù)包,然后通過網(wǎng)絡(luò)傳送給接收方。接收方接收后,利用這些編號把數(shù)據(jù)包重組成原始信息。
序列編號從1開始,依次分配給每個數(shù)據(jù)包,直到整個數(shù)據(jù)都被拆裝和傳送完畢。這些數(shù)據(jù)包從編號為1的數(shù)據(jù)包開始按編號的遞增順序發(fā)送。
第一個數(shù)據(jù)傳送包包含序列編號1和字符串的頭7個字節(jié),其后的7個字節(jié)跟隨序列編號2存放在另一個CAN數(shù)據(jù)幀中,再隨后的7個字節(jié)與編號3一起,直到原始信息中所有的字節(jié)都被存放到CAN數(shù)據(jù)幀中并被傳送。
數(shù)據(jù)包
傳送的每個數(shù)據(jù)包(除了傳送隊列中的最后一個數(shù)據(jù)包)都裝載著原始數(shù)據(jù)中的7個字節(jié)。而最后一個數(shù)據(jù)包的數(shù)據(jù)域的8個字節(jié)包含:數(shù)據(jù)包的序列編號和參數(shù)組至少一個字節(jié)的數(shù)據(jù),余下未使用的字節(jié)全部設(shè)置為“FF 16”。
多包廣播報文的數(shù)據(jù)包發(fā)送間隔時間為50到200毫秒。對于發(fā)送到某個指定目標(biāo)地址的多包消息,發(fā)送者將保持?jǐn)?shù)據(jù)包(在CTS允許多于一個數(shù)據(jù)包時)發(fā)送間隔的最長時間不多于200毫秒。響應(yīng)者必須知道這些數(shù)據(jù)包都具有相同的標(biāo)識符。
數(shù)據(jù)包被順序接收。按照序列編號的順序把多包消息的數(shù)據(jù)包重新組合成一多字節(jié)字符串。這個字符串被作為長信息的應(yīng)答傳送給應(yīng)用程序模塊。
實例
下圖是多幀傳輸機(jī)制的實例:
評論