日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機站
  • 小程序

    汽車測試網

  • 公眾號
    • 汽車測試網

    • 在線課堂

    • 電車測試

首頁 > 汽車技術 > 正文

新能源汽車CAN和CANFD通信中的校驗算法

2022-05-11 09:41:52·  來源:新能源汽車家園  
 
CAN和CANFD通信自1986年BOSCH開發(fā)出來之后,其在各個領域尤其是汽車領域的應用越來越廣泛。那么如何保證CAN和CANFD通信傳輸?shù)恼_率呢?一、Rolling CounterRoll

CAN和CANFD通信自1986年BOSCH開發(fā)出來之后,其在各個領域尤其是汽車領域的應用越來越廣泛。那么如何保證CAN和CANFD通信傳輸?shù)恼_率呢?


一、Rolling Counter

Rolling counter:報文計數(shù)器,位于CAN數(shù)據(jù)幀中的數(shù)據(jù)段,4bit。

發(fā)送一條報文則計數(shù)器加1,用于判斷報文傳輸過程是否出現(xiàn)丟幀,從0累加到15,然后不斷循環(huán),其中若出現(xiàn)計數(shù)器不連續(xù)或首尾值不對,接收方會認為丟幀,同時會上報報文丟失或超時故障碼。

圖片


二、Checksum

Checksum:和校驗,位于CAN數(shù)據(jù)幀中的數(shù)據(jù)段,一般為8bit。

Checksum算法示例:

現(xiàn)有一數(shù)據(jù)幀中數(shù)據(jù)段長度為8個byte,其具體數(shù)據(jù)為0xc0 00 00 0c 00 00 08 00,

首先計算所有數(shù)據(jù)的累加和:0xc0+00+00+0c+00+00+08+00=0xd4,

則Checksum=0xff-0xd4=0x2b;

若計算出所有數(shù)據(jù)的累加和為0x01 d4,則取其低兩位d4,

Checksum=0xff-0xd4=0x2b。


三、CRC校驗


3.1 CRC在CAN幀中的位置

圖片

傳統(tǒng)CAN

圖片


一個傳統(tǒng)CAN幀結構中,CRC域放置在數(shù)據(jù)結束后應答檢測之前,對于CANFD也是相同的位置,可以通過CANscope總線分析儀解碼窗口或者帶有CAN協(xié)議解碼能力的示波器從總線模擬波形上得到對應的CRC數(shù)據(jù)展示,見下圖。

圖片


3.2 CRC的計算


3.2.1確定分母

傳統(tǒng)CAN的CRC校驗碼有15位,而CANFD規(guī)范中對幀數(shù)據(jù)長度進行了擴展,對于數(shù)據(jù)長度小于等于16字節(jié)的CANFD幀,采用17位CRC,對于數(shù)據(jù)長度大于16字節(jié)的CANFD幀采用21位CRC。

CAN總線中使用的若干版本CRC生成多項式g整理如下表所示。

圖片


3.2.2確定分子

數(shù)據(jù)補0即在原始數(shù)據(jù)后加上除數(shù)位數(shù)減一的0。

CRC-15:原始數(shù)據(jù)后補15個0;

CRC-17:原始數(shù)據(jù)后補17個0;

CRC-21:原始數(shù)據(jù)后補21個0。


3.2.3結果及實例

分子除以分母的余數(shù)即為CRC校驗碼。

CRC校驗碼比分母少一位,余數(shù)不足的位用0補足。

實例:

原始數(shù)據(jù):10110011

多項式:

多項式生成除數(shù)序列:11001

原始數(shù)據(jù)補零:10110011 0000   (除數(shù)為五位,故補4個0)

10110011 0000  除以 11001  =  0100,余數(shù)為0,即校驗碼:0000

原始數(shù)據(jù)+CRC校驗碼發(fā)送給接收端,即該序列除以多項式生成的除數(shù)得到余數(shù)為0;

接收端用收到的數(shù)據(jù)除以多項式生成的除數(shù),若余數(shù)為0則數(shù)據(jù)正確,否則數(shù)據(jù)出錯。


四、Heartbeat

Heartbeat類似于rolling count,報文計數(shù)器周期性加1,若計數(shù)器不連續(xù)則認為故障發(fā)生。


但heartbeat和rolling count的區(qū)別在于:

1、Heart beat應用于CANopen,rolling count應用于CAN。CANopen處于應用層,而CAN處于物理層和數(shù)據(jù)鏈路層。

圖片

CAN和CANopen


2、Heartbeat和rolling count幀格式不同。

圖片


圖片

Rollingcount


3、Heartbeat為周期性加一,rolling counter每發(fā)送一幀報文加一。


4、heartbeat目的是檢查被測ECU狀態(tài)是否正常,rolling counter目的是保證數(shù)據(jù)傳輸正確。


五、總結

1、Checksum和rolling count都位于數(shù)據(jù)段,校驗對象為數(shù)據(jù)段中的內容,是對重點數(shù)據(jù)的二次校驗,一般為廠商自定義。

2、CRC校驗對象為CRC段前的所有數(shù)據(jù),是標準中要求必備的校驗。

3、Checksum、rolling count、CRC都應用于CAN,目的是保證數(shù)據(jù)傳輸?shù)恼_性;而heartbeat應用于CANopen,目的是確保被測ECU的狀態(tài)正常。

分享到:
 
反對 0 舉報 0 收藏 0 評論 0
滬ICP備11026917號-25