Can總線負(fù)載率監(jiān)控方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及CAN總線領(lǐng)域,特別涉及一種CAN總線負(fù)載率監(jiān)控方法及系統(tǒng)。
【背景技術(shù)】
[0002]CAN總線在通信時(shí),必須首先設(shè)置波特率,各個(gè)節(jié)點(diǎn)只有處于同一波特率下才能正常通信。同時(shí),由于CAN總線有帶寬限制,正常的總線負(fù)載率必須在設(shè)置波特率允許的30%以下才能正常通信,超過這一限定值,將會(huì)造成CAN總線擁塞以及信元的丟包。若波特率范圍為5Kbps?IMbps之間。以設(shè)置波特率為250Kbps為例,以30%的負(fù)載率為上限計(jì)算。Ims可傳輸?shù)淖畲髷?shù)據(jù)位數(shù)量為:250*30%= 75bit。因此,如果在此條件下,CAN總線中平均Ims發(fā)送超過75bit的CAN數(shù)據(jù)幀將造成總線的擁塞,同時(shí)也一定有數(shù)據(jù)幀丟失。
[0003]然而在通常的CAN通信設(shè)備中,沒有針對(duì)總線負(fù)載率高的監(jiān)控功能,因而造成一旦出現(xiàn)總線負(fù)載率過高,有總線擁塞和數(shù)據(jù)幀丟包的情況,分析和處理的難度大,必須由專業(yè)的技術(shù)人員到場(chǎng)解決。
[0004]因此,如何在CAN總線網(wǎng)絡(luò)中實(shí)時(shí)監(jiān)控總線負(fù)載率,是亟待解決的技術(shù)難題。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明旨在提供一種CAN總線負(fù)載率監(jiān)控方法及系統(tǒng),以實(shí)時(shí)監(jiān)控總線負(fù)載率,保障正常通信。
[0006]具體地,該CAN總線負(fù)載率監(jiān)控方法包括:步驟A:將CAN總線通信的接收設(shè)置為中斷方式,并設(shè)置為接收所有數(shù)據(jù);步驟B:根據(jù)當(dāng)前設(shè)置的波特率以及數(shù)據(jù)幀類型,計(jì)算第一預(yù)設(shè)時(shí)間內(nèi)允許發(fā)送的數(shù)據(jù)幀的最大數(shù)量N。;步驟C:響應(yīng)接收中斷時(shí),確認(rèn)接收到的CAN數(shù)據(jù)幀的數(shù)據(jù)長(zhǎng)度length,并保存當(dāng)前的計(jì)數(shù)值CNT,根據(jù)所述當(dāng)前的計(jì)數(shù)值CNT與上次響應(yīng)接收中斷的計(jì)數(shù)值CNTcild,計(jì)算得到所述第一預(yù)設(shè)時(shí)間內(nèi)實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N ;所述計(jì)數(shù)值CNT的預(yù)設(shè)初始值小于所述第一預(yù)設(shè)時(shí)間,所述計(jì)數(shù)值CNT在CAN總線的主節(jié)點(diǎn)運(yùn)行時(shí)實(shí)時(shí)累加;步驟D:比較所述數(shù)據(jù)幀的最大數(shù)量N。與所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N ;步驟E:在所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N大于所述數(shù)據(jù)幀的最大數(shù)量N。時(shí),確定當(dāng)前的總線負(fù)載率異常。
[0007]進(jìn)一步地,在所述步驟E之后還包括:步驟F:在第二預(yù)設(shè)時(shí)間內(nèi)連續(xù)確定當(dāng)前的總線負(fù)載率異常時(shí),進(jìn)行故障提示和/或報(bào)警操作。
[0008]進(jìn)一步地,在所述步驟D之后還包括:在所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N小于或等于所述數(shù)據(jù)幀的最大數(shù)量N。時(shí),確定當(dāng)前的總線負(fù)載率正常。
[0009]進(jìn)一步地,所述步驟C中所述第一預(yù)設(shè)時(shí)間內(nèi)實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N的計(jì)算公式如下:N = length*8/( (CNT-CNTcild) *(100*10 3))。
[0010]進(jìn)一步地,所述第一預(yù)設(shè)時(shí)間為Ims ;所述計(jì)數(shù)值CNT的單位為lOOus。
[0011]具體地,該CAN總線負(fù)載率監(jiān)控系統(tǒng)包括:CAN主節(jié)點(diǎn)及CAN從節(jié)點(diǎn);所述CAN主節(jié)點(diǎn)及CAN從節(jié)點(diǎn)通過CAN總線連接;所述CAN主節(jié)點(diǎn)包括:
[0012]設(shè)置單元,用于將CAN總線通信的接收設(shè)置為中斷方式;
[0013]計(jì)算單元,用于根據(jù)當(dāng)前設(shè)置的波特率以及數(shù)據(jù)幀類型,計(jì)算第一預(yù)設(shè)時(shí)間內(nèi)允許發(fā)送的數(shù)據(jù)幀的最大數(shù)量N。;
[0014]第一處理單元,用于響應(yīng)接收中斷時(shí),確認(rèn)接收到的CAN數(shù)據(jù)幀的數(shù)據(jù)長(zhǎng)度length,并保存當(dāng)前的計(jì)數(shù)值CNT,根據(jù)所述當(dāng)前的計(jì)數(shù)值CNT與上次響應(yīng)接收中斷的計(jì)數(shù)值CNTcild,計(jì)算得到所述第一預(yù)設(shè)時(shí)間內(nèi)實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N ;所述計(jì)數(shù)值CNT的預(yù)設(shè)初始值小于所述第一預(yù)設(shè)時(shí)間,所述計(jì)數(shù)值CNT在CAN總線的主節(jié)點(diǎn)運(yùn)行時(shí)實(shí)時(shí)累加;第二處理單元,用于比較所述數(shù)據(jù)幀的最大數(shù)量N。與所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N,在所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N大于所述數(shù)據(jù)幀的最大數(shù)量N。時(shí),確定當(dāng)前的總線負(fù)載率異常。
[0015]進(jìn)一步地,所述的CAN總線負(fù)載率監(jiān)控系統(tǒng)還包括:報(bào)警單元,用于在第二預(yù)設(shè)時(shí)間內(nèi)連續(xù)確定當(dāng)前的總線負(fù)載率異常時(shí),進(jìn)行故障提示和/或報(bào)警操作,所述報(bào)警單元與所述第二處理單元信號(hào)連接。
[0016]進(jìn)一步地,所述第一處理單元包括:處理子單元,用于如下公式計(jì)算所述第一預(yù)設(shè)時(shí)間內(nèi)實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N,N = lengths/ ((CNT-CNTold) * (100*10 3))。
[0017]進(jìn)一步地,所述的CAN總線負(fù)載率監(jiān)控系統(tǒng)還包括第三處理單元,用于在所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N小于或等于所述數(shù)據(jù)幀的最大數(shù)量N。時(shí),確定當(dāng)前的總線負(fù)載率正常;所述第三處理單元與所述第二處理單元信號(hào)連接。
[0018]進(jìn)一步地,所述第一預(yù)設(shè)時(shí)間為Ims ;所述計(jì)數(shù)值CNT的單位為lOOus。
[0019]本發(fā)明通過在將CAN總線通信的接收設(shè)置為中斷方式,且根據(jù)所述當(dāng)前的計(jì)數(shù)值CNT與上次響應(yīng)接收中斷的計(jì)數(shù)值CNTcild,計(jì)算得到所述第一預(yù)設(shè)時(shí)間內(nèi)實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N,在所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N大于所述數(shù)據(jù)幀的最大數(shù)量N。時(shí),確定當(dāng)前的總線負(fù)載率異常,可以對(duì)CAN總線上的所有數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控,從而保證正常通信。
【附圖說明】
[0020]構(gòu)成本發(fā)明的一部分的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0021]圖1為本發(fā)明實(shí)施例提供的一種CAN總線負(fù)載率監(jiān)控方法的流程圖;
[0022]圖2為本發(fā)明實(shí)施例提供的CAN總線負(fù)載率監(jiān)控系統(tǒng)中主從節(jié)點(diǎn)的連接示意圖;
[0023]圖3為圖2所示CAN主節(jié)點(diǎn)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0024]應(yīng)當(dāng)指出,本部分中對(duì)具體結(jié)構(gòu)的描述及描述順序僅是對(duì)具體實(shí)施例的說明,不應(yīng)視為對(duì)本發(fā)明的保護(hù)范圍有任何限制作用。此外,在不沖突的情形下,本部分中的實(shí)施例以及實(shí)施例中的特征可以相互組合。
[0025]請(qǐng)參考圖1,下面將附圖對(duì)本發(fā)明實(shí)施例的CAN總線負(fù)載率監(jiān)控方法作詳細(xì)說明。
[0026]如圖1所示,該實(shí)施例的CAN總線負(fù)載率監(jiān)控方法可以包括如下步驟:
[0027]Sll:將CAN總線通信的接收設(shè)置為中斷方式,并設(shè)置為接收所有數(shù)據(jù);
[0028]S12:根據(jù)當(dāng)前設(shè)置的波特率以及數(shù)據(jù)幀類型,計(jì)算第一預(yù)設(shè)時(shí)間內(nèi)允許發(fā)送的數(shù)據(jù)幀的最大數(shù)量N。;
[0029]S13:響應(yīng)接收中斷時(shí),確認(rèn)接收到的CAN數(shù)據(jù)幀的數(shù)據(jù)長(zhǎng)度length,并保存當(dāng)前的計(jì)數(shù)值CNT ;
[0030]S14:根據(jù)所述當(dāng)前的計(jì)數(shù)值CNT與上次響應(yīng)接收中斷的計(jì)數(shù)值CNTcild,計(jì)算得到所述第一預(yù)設(shè)時(shí)間內(nèi)實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N ;所述計(jì)數(shù)值CNT的預(yù)設(shè)初始值小于所述第一預(yù)設(shè)時(shí)間,所述計(jì)數(shù)值CNT在CAN總線的主節(jié)點(diǎn)運(yùn)行時(shí)實(shí)時(shí)累加;
[0031]S15:比較所述數(shù)據(jù)幀的最大數(shù)量N。與所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N ;
[0032]S16:在所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N大于所述數(shù)據(jù)幀的最大數(shù)量N。時(shí),確定當(dāng)前的總線負(fù)載率異常。
[0033]優(yōu)選地,在所述S16之后還可以包括:在第二預(yù)設(shè)時(shí)間內(nèi)連續(xù)確定當(dāng)前的總線負(fù)載率異常時(shí),進(jìn)行故障提示和/或報(bào)警操作。這樣,通過在確定當(dāng)前的總線負(fù)載率過高(即異常)一段時(shí)間后,即總線平均負(fù)載率都高于安全的負(fù)載率范圍時(shí),將進(jìn)行故障提示和報(bào)警,便于在總線負(fù)載率異常時(shí),能及時(shí)有效地處理。
[0034]具體的,還可以在所述S15之后還包括:在所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N小于或等于所述數(shù)據(jù)幀的最大數(shù)量N。時(shí),確定當(dāng)前的總線負(fù)載率正常。此外,所述第一預(yù)設(shè)時(shí)間內(nèi)實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N的計(jì)算公式如下:N = lengths/ ((CNT-CNTold) * (100*10 3))。所述第一預(yù)設(shè)時(shí)間可為Ims ;所述計(jì)數(shù)值CNT的單位可為lOOus。
[0035]本實(shí)施例通過將CAN總線通信的接收設(shè)置為中斷方式,且根據(jù)所述當(dāng)前的計(jì)數(shù)值CNT與上次響應(yīng)接收中斷的計(jì)數(shù)值CNTcild,計(jì)算得到所述第一預(yù)設(shè)時(shí)間內(nèi)實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N,在所述實(shí)際發(fā)送的數(shù)據(jù)幀數(shù)量N大于所述數(shù)據(jù)幀的最大數(shù)量N。時(shí),確定當(dāng)前的總線負(fù)載率異常,可以對(duì)CAN總線上的所有數(shù)據(jù)進(jìn)行實(shí)時(shí)有效監(jiān)控,從而保證正常通信