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

  • 手機(jī)站
  • 小程序

    汽車(chē)測(cè)試網(wǎng)

  • 公眾號(hào)
    • 汽車(chē)測(cè)試網(wǎng)

    • 在線課堂

    • 電車(chē)測(cè)試

新能源汽車(chē)CAN和CANFD通信中的校驗(yàn)算法

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

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


一、Rolling Counter

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

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

圖片


二、Checksum

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

Checksum算法示例:

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

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

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

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

Checksum=0xff-0xd4=0x2b。


三、CRC校驗(yàn)


3.1 CRC在CAN幀中的位置

圖片

傳統(tǒng)CAN

圖片


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

圖片


3.2 CRC的計(jì)算


3.2.1確定分母

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

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

圖片


3.2.2確定分子

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

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

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

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


3.2.3結(jié)果及實(shí)例

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

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

實(shí)例:

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

多項(xiàng)式:

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

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

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

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

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


四、Heartbeat

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


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

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

圖片

CAN和CANopen


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

圖片


圖片

Rollingcount


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


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


五、總結(jié)

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

2、CRC校驗(yàn)對(duì)象為CRC段前的所有數(shù)據(jù),是標(biāo)準(zhǔn)中要求必備的校驗(yàn)。

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

分享到:
 
反對(duì) 0 舉報(bào) 0 收藏 0 評(píng)論 0
滬ICP備11026917號(hào)-25