本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種can總線負(fù)載率檢測(cè)方法及裝置。
背景技術(shù):
can(controllerareanetwork)是iso國際標(biāo)準(zhǔn)化的串行通信協(xié)議。廣泛應(yīng)用于汽車、船舶等。具有已經(jīng)被大家認(rèn)可的高性能和可靠性。
在can通訊過程中,使用某個(gè)固定波特率的情況下,總線的平均負(fù)載率一般在某個(gè)固定的范圍。當(dāng)總線通信出錯(cuò)時(shí),由于重傳機(jī)制會(huì)導(dǎo)致總線的瞬時(shí)負(fù)載率會(huì)突然增大,導(dǎo)致總線的瞬時(shí)負(fù)載率遠(yuǎn)大于平均負(fù)載率,在這種情況下,通常認(rèn)為can總線通信出現(xiàn)故障。
傳統(tǒng)的can總線負(fù)載率檢測(cè)方法需要人工對(duì)檢測(cè)設(shè)備設(shè)定波特率,檢測(cè)設(shè)備才能正常工作,即需要人工手動(dòng)的干預(yù)。因此,業(yè)界亟待提供一種能夠?qū)崿F(xiàn)對(duì)負(fù)載率進(jìn)行自動(dòng)檢測(cè)的方法,從而避免了繁瑣的人工干預(yù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種can總線負(fù)載率檢測(cè)方法及裝置,能夠?qū)崿F(xiàn)對(duì)負(fù)載率進(jìn)行自動(dòng)檢測(cè),從而避免了繁瑣的人工干預(yù)。
本發(fā)明提供了一種can總線負(fù)載率檢測(cè)方法,具體包括:
檢測(cè)輸入波形的波特率;
根據(jù)所述波特率對(duì)數(shù)據(jù)位信息進(jìn)行提取;
將所述數(shù)據(jù)位信息與預(yù)設(shè)的標(biāo)準(zhǔn)幀格式進(jìn)行比對(duì),分離數(shù)據(jù)幀的相關(guān)信息,得到幀起始信號(hào)和幀結(jié)束信號(hào),從而確定所述數(shù)據(jù)幀的時(shí)間間隔;
根據(jù)所述數(shù)據(jù)幀的時(shí)間間隔,根據(jù)公式
可選的,
步驟所述檢測(cè)輸入波形的波特率包括:
通過脈寬檢測(cè)方法,獲取時(shí)間周期t內(nèi),輸入波形的最小比特脈寬;
根據(jù)實(shí)時(shí)累加平均算法迭代公式,對(duì)所述最小比特脈寬進(jìn)行實(shí)時(shí)累加平均計(jì)算,得到波特率,實(shí)時(shí)累加平均算法迭代公式包括:
a0=average*d0/average;
t0=average*a0;
……
an=(tn-1–an-1*weight+dn*weight)/average;
tn=average*an;
其中,average為平均次數(shù)、weight為權(quán)重值、dn表示最小比特脈寬檢測(cè)模塊的第n次輸出、tn表示第n次迭代的臨時(shí)變量、an表示第n次波特率的輸出;
判斷前后2次的波特率的變化范圍是否超過5%,若是則更新波特率,若否,則保持原有波特率不變。
可選的,
步驟所述根據(jù)所述波特率對(duì)數(shù)據(jù)位信息進(jìn)行提取包括:
以輸入波形的邊沿作為計(jì)數(shù)起點(diǎn),計(jì)數(shù)到bd*1/4、bd*2/4、bd*3/4時(shí)分別采樣波形到3個(gè)不同寄存器,其中bd表示波特率的值;
對(duì)采樣到的3個(gè)電平信息進(jìn)行仲裁,提取其中相同的兩個(gè)采樣電平作為此時(shí)can總線的數(shù)據(jù)位信息。
可選的,
所述步驟以輸入波形的邊沿作為計(jì)數(shù)起點(diǎn),計(jì)數(shù)到bd*1/4、bd*2/4、bd*3/4時(shí)分別采樣波形到3個(gè)不同寄存器包括:
當(dāng)邊沿到來時(shí),計(jì)數(shù)清零。
可選的,
步驟所述將所述數(shù)據(jù)位信息與預(yù)設(shè)的標(biāo)準(zhǔn)幀格式進(jìn)行比對(duì),分離數(shù)據(jù)幀的相關(guān)信息,得到幀起始信號(hào)和幀結(jié)束信號(hào),從而確定所述數(shù)據(jù)幀的時(shí)間間隔之前還包括:
當(dāng)發(fā)送節(jié)點(diǎn)傳輸5個(gè)連續(xù)的相同極性位后,在接下來的位流中插入一個(gè)極性相反的位。
本發(fā)明還一種can總線負(fù)載率檢測(cè)裝置,包括:
檢測(cè)單元,用于檢測(cè)輸入波形的波特率;
提取單元,用于根據(jù)所述波特率對(duì)數(shù)據(jù)位信息進(jìn)行提??;
比對(duì)單元,用于將所述數(shù)據(jù)位信息與預(yù)設(shè)的標(biāo)準(zhǔn)幀格式進(jìn)行比對(duì);
分離單元,用于分離數(shù)據(jù)幀的相關(guān)信息,得到幀起始信號(hào)和幀結(jié)束信號(hào);
確定單元,用于根據(jù)所述幀起始信號(hào)和幀結(jié)束信號(hào)確定所述數(shù)據(jù)幀的時(shí)間間隔;
計(jì)算單元,用于根據(jù)所述數(shù)據(jù)幀的時(shí)間間隔,根據(jù)公式
可選的,
檢測(cè)單元包括:
獲取子單元,用于通過脈寬檢測(cè)方法,獲取時(shí)間周期t內(nèi),輸入波形的最小比特脈寬;
計(jì)算子單元,用于根據(jù)實(shí)時(shí)累加平均算法迭代公式,對(duì)所述最小比特脈寬進(jìn)行實(shí)時(shí)累加平均計(jì)算,得到波特率,時(shí)累加平均算法迭代公式包括:
a0=average*d0/average;
t0=average*a0;
……
an=(tn-1–an-1*weight+dn*weight)/average;
tn=average*an;
其中,average為平均次數(shù)、weight為權(quán)重值、dn表示最小比特脈寬檢測(cè)模塊的第n次輸出、tn表示第n次迭代的臨時(shí)變量、an表示第n次波特率的輸出;
判斷子單元,用于判斷前后2次的波特率的變化范圍是否超過5%
更新子單元,用于更新波特率。
可選的,
所述提取單元包括:
采樣子單元,用于以輸入波形的邊沿作為計(jì)數(shù)起點(diǎn),計(jì)數(shù)到bd*1/4、bd*2/4、bd*3/4時(shí)分別采樣波形到3個(gè)不同寄存器,其中bd表示波特率的值;
仲裁子單元,用于對(duì)采樣到的3個(gè)電平信息進(jìn)行仲裁;
提取子單元,用于提取其中相同的兩個(gè)采樣電平作為此時(shí)can總線的數(shù)據(jù)位信息。
可選的,
所述采樣子單元包括清零模塊,用于當(dāng)邊沿到來時(shí),計(jì)數(shù)清零。
可選的,
所述裝置還包括插入單元,用于當(dāng)發(fā)送節(jié)點(diǎn)傳輸5個(gè)連續(xù)的相同極性位后,在接下來的位流中插入一個(gè)極性相反的位。
下面對(duì)本發(fā)明提供的can總線負(fù)載率檢測(cè)方法及裝置所帶來的核心有益效果進(jìn)行描述:
該can總線負(fù)載率檢測(cè)方法包括:檢測(cè)輸入波形的波特率;根據(jù)所述波特率對(duì)數(shù)據(jù)位信息進(jìn)行提?。粚⑺鰯?shù)據(jù)位信息與預(yù)設(shè)的標(biāo)準(zhǔn)幀格式進(jìn)行比對(duì),分離數(shù)據(jù)幀的相關(guān)信息,得到幀起始信號(hào)和幀結(jié)束信號(hào),從而確定所述數(shù)據(jù)幀的時(shí)間間隔;根據(jù)所述數(shù)據(jù)幀的時(shí)間間隔,根據(jù)公式計(jì)算can總線的平均負(fù)載率和瞬時(shí)負(fù)載率,其中t表示測(cè)量周期,td表示在測(cè)量周期t內(nèi),can數(shù)據(jù)幀占用的總時(shí)間。當(dāng)外界輸入信號(hào)波特率發(fā)生改變時(shí),波特率檢測(cè)模塊能實(shí)時(shí)的檢測(cè)出波特率,為總線的數(shù)據(jù)位提取提供了實(shí)時(shí)可靠的保證,避免了繁瑣的人工干預(yù)。
附圖說明
圖1為本發(fā)明中一種can總線負(fù)載率檢測(cè)方法實(shí)施例的流程圖;
圖2為本發(fā)明中一種can總線負(fù)載率檢測(cè)方法實(shí)施例的裝置圖。
具體實(shí)施方式
本發(fā)明提供了一種can總線負(fù)載率檢測(cè)方法及裝置,能夠?qū)崿F(xiàn)對(duì)負(fù)載率進(jìn)行自動(dòng)檢測(cè),從而避免了繁瑣的人工干預(yù)。
下面請(qǐng)參閱圖1,本發(fā)明提供的一種can總線負(fù)載率檢測(cè)方法,包括:
101、檢測(cè)輸入波形的波特率;
傳統(tǒng)的的波特率自動(dòng)檢測(cè)的方法一般采用標(biāo)準(zhǔn)波特率窮舉法,標(biāo)準(zhǔn)波特率窮舉法適用于通訊雙方的波特率必須在有限的幾個(gè)固定數(shù)值之間變化,如300~19200之間的標(biāo)準(zhǔn)值。從機(jī)啟動(dòng)通信程序后,逐個(gè)嘗試以不同的波特率接收主機(jī)發(fā)出的特定字符,直到能正確接收為止,因此,該方法的運(yùn)用有一定的局限性。
在本實(shí)施例中,通過脈寬檢測(cè)方法,獲取時(shí)間周期t內(nèi),輸入波形的最小比特脈寬;在一定的時(shí)間周期t內(nèi),通過脈寬檢測(cè)方法,獲取輸入波形的最小比特脈寬,即每隔t時(shí)間,就會(huì)輸出一個(gè)最小比特脈寬。
根據(jù)實(shí)時(shí)累加平均算法迭代公式,對(duì)所述最小比特脈寬進(jìn)行實(shí)時(shí)累加平均計(jì)算,得到波特率,實(shí)時(shí)累加平均算法迭代公式包括:
a0=average*d0/average;
t0=average*a0;
……
an=(tn-1–an-1*weight+dn*weight)/average;
tn=average*an;
其中,average為平均次數(shù)、weight為權(quán)重值、dn表示最小比特脈寬檢測(cè)模塊的第n次輸出、tn表示第n次迭代的臨時(shí)變量、an表示第n次波特率的輸出;
判斷前后2次的波特率的變化范圍是否超過5%,若是則更新波特率,若否,則保持原有波特率不變。
102、根據(jù)所述波特率對(duì)數(shù)據(jù)位信息進(jìn)行提?。?/p>
以輸入波形的邊沿作為計(jì)數(shù)起點(diǎn),計(jì)數(shù)到bd*1/4、bd*2/4、bd*3/4時(shí)分別采樣波形到3個(gè)不同寄存器,其中bd表示波特率的值;
對(duì)采樣到的3個(gè)電平信息進(jìn)行仲裁,提取其中相同的兩個(gè)采樣電平作為此時(shí)can總線的數(shù)據(jù)位信息;
在本實(shí)施例中,以輸入波形的邊沿作為計(jì)數(shù)起點(diǎn),計(jì)數(shù)到bd*1/4、bd*2/4、bd*3/4時(shí)分別采樣波形到3個(gè)不同寄存器。為減小累計(jì)誤差的影響,設(shè)計(jì)中對(duì)取樣進(jìn)行了同步,同步信號(hào)由邊沿產(chǎn)生,即每次邊沿到來時(shí),清零計(jì)數(shù)。
對(duì)采樣到的3個(gè)電平信息進(jìn)行一次仲裁,取其中相同的兩個(gè)采樣電平作為此時(shí)can總線的數(shù)據(jù)位信息輸出。
103、將所述數(shù)據(jù)位信息與預(yù)設(shè)的標(biāo)準(zhǔn)幀格式進(jìn)行比對(duì),分離數(shù)據(jù)幀的相關(guān)信息,得到幀起始信號(hào)和幀結(jié)束信號(hào),從而確定所述數(shù)據(jù)幀的時(shí)間間隔;
在本實(shí)施例中,can總線標(biāo)準(zhǔn)的數(shù)據(jù)幀格式如包含了起始幀,仲裁場(chǎng),控制場(chǎng),數(shù)據(jù)場(chǎng),crc場(chǎng),ack場(chǎng),結(jié)束幀,間隔幀。起始幀為1bit固定為顯性低電平,結(jié)束幀為7bit固定為隱性高電平,間隔幀為3bit固定為隱形高電平。
can總線的場(chǎng)數(shù)據(jù)位使用非歸零編碼方式傳輸信號(hào),為保證足夠的跳變沿用于同步,can總線引入了位填充機(jī)制,發(fā)送節(jié)點(diǎn)每傳輸5個(gè)連續(xù)的相同極性位后,會(huì)在接下來的位流中插入一個(gè)極性相反的位,所以場(chǎng)數(shù)據(jù)是不存在5個(gè)連續(xù)的相同極性位。
通過上面的介紹,我們可以得知在總線進(jìn)入空閑狀態(tài)前,總線上會(huì)檢測(cè)到1bit的ackdel+7bit的結(jié)束幀+3bit的間隔幀,至少11個(gè)連續(xù)的隱性位(高電平),所以我們檢測(cè)到11個(gè)連續(xù)的高電平后,就可以認(rèn)為是幀結(jié)束信號(hào),總線進(jìn)入空閑狀態(tài)。由于起始幀是低電平,在空閑狀態(tài)下檢測(cè)到下降沿就可以認(rèn)為是幀起始信號(hào)。
數(shù)據(jù)移位操作,主要用12bit移位寄存器shift_data對(duì)can總線的數(shù)據(jù)位進(jìn)行移位保存。由于輸入波形信號(hào)可能來自can_h或can_l,數(shù)據(jù)幀自適應(yīng)識(shí)別充分考慮2種輸入情況,無論輸入來自can_h或can_l都能正確的解出幀起始和幀結(jié)束信號(hào)。
104、根據(jù)所述數(shù)據(jù)幀的時(shí)間間隔,根據(jù)公式
在本實(shí)施例中,can總線負(fù)載率p定義為:
為了測(cè)量can總線的平均負(fù)載率和瞬時(shí)負(fù)載率,需不停的統(tǒng)計(jì)當(dāng)前時(shí)刻之前測(cè)量時(shí)間段ts(以s為測(cè)量單位)和測(cè)量時(shí)間段tms(以ms為測(cè)量單位)內(nèi)的數(shù)據(jù)幀占用的時(shí)間,為了提高測(cè)量的精度和減小誤差,該裝置采用滑動(dòng)平均的方法,將測(cè)量時(shí)間平均分為n個(gè)相對(duì)較小的時(shí)間窗口t,分別測(cè)量每個(gè)小時(shí)間窗口t內(nèi)有效的數(shù)據(jù)幀占用時(shí)間,并不斷的累加最新的n個(gè)小時(shí)間窗口的數(shù)據(jù)幀占用時(shí)間,這樣就可以得出測(cè)量時(shí)間ts和tms內(nèi)有效數(shù)據(jù)幀的占用時(shí)間,根據(jù)公式1,就可以得到can總線的平均負(fù)載率和瞬時(shí)負(fù)載率。
首先將第一次測(cè)量得到的n個(gè)小窗口的測(cè)量值進(jìn)行累加,得到總線負(fù)載率;接著將d1測(cè)量值丟棄后再重新加入dn+1測(cè)量值進(jìn)行累加,得到新的總線負(fù)載率;再接著將d2測(cè)量值丟棄后再重新加入dn+2測(cè)量值進(jìn)行累加,又得到新的總線負(fù)載率。以此類推,即累加值永遠(yuǎn)計(jì)算最新的t周期的總線占有率。
can總線在正常通信時(shí),總線的平均負(fù)載率一般在某個(gè)固定的范圍。當(dāng)總線通信出錯(cuò)時(shí),由于重傳機(jī)制會(huì)導(dǎo)致總線的瞬時(shí)負(fù)載率會(huì)突然增大,導(dǎo)致總線的瞬時(shí)負(fù)載率遠(yuǎn)大于平均負(fù)載率,在這種情況下,我們可以認(rèn)為can總線通信出現(xiàn)故障。
本實(shí)施例中,檢測(cè)輸入波形的波特率;根據(jù)所述波特率對(duì)數(shù)據(jù)位信息進(jìn)行提??;將所述數(shù)據(jù)位信息與預(yù)設(shè)的標(biāo)準(zhǔn)幀格式進(jìn)行比對(duì),分離數(shù)據(jù)幀的相關(guān)信息,得到幀起始信號(hào)和幀結(jié)束信號(hào),從而確定所述數(shù)據(jù)幀的時(shí)間間隔;根據(jù)所述數(shù)據(jù)幀的時(shí)間間隔,計(jì)算can總線的平均負(fù)載率和瞬時(shí)負(fù)載率,其中t表示測(cè)量周期,td表示在測(cè)量周期t內(nèi),can數(shù)據(jù)幀占用的總時(shí)間。能夠?qū)崿F(xiàn)對(duì)負(fù)載率進(jìn)行自動(dòng)檢測(cè),從而避免了繁瑣的人工干預(yù)。
下面請(qǐng)參閱圖2,本發(fā)明提供的一種can總線負(fù)載率檢測(cè)裝置包括:
本發(fā)明還一種can總線負(fù)載率檢測(cè)裝置,包括:
檢測(cè)單元201,用于檢測(cè)輸入波形的波特率;
提取單元202,用于根據(jù)所述波特率對(duì)數(shù)據(jù)位信息進(jìn)行提?。?/p>
比對(duì)單元203,用于將所述數(shù)據(jù)位信息與預(yù)設(shè)的標(biāo)準(zhǔn)幀格式進(jìn)行比對(duì);
分離單元204,用于分離數(shù)據(jù)幀的相關(guān)信息,得到幀起始信號(hào)和幀結(jié)束信號(hào);
確定單元205,用于根據(jù)所述幀起始信號(hào)和幀結(jié)束信號(hào)確定所述數(shù)據(jù)幀的時(shí)間間隔;
計(jì)算單元206,用于根據(jù)所述數(shù)據(jù)幀的時(shí)間間隔,根據(jù)公式
檢測(cè)單元包括:
獲取子單元,用于通過脈寬檢測(cè)方法,獲取時(shí)間周期t內(nèi),輸入波形的最小比特脈寬;
計(jì)算子單元,用于根據(jù)實(shí)時(shí)累加平均算法迭代公式,對(duì)所述最小比特脈寬進(jìn)行實(shí)時(shí)累加平均計(jì)算,得到波特率,時(shí)累加平均算法迭代公式包括:
a0=average*d0/average;
t0=average*a0;
……
an=(tn-1–an-1*weight+dn*weight)/average;
tn=average*an;
其中,average為平均次數(shù)、weight為權(quán)重值、dn表示最小比特脈寬檢測(cè)模塊的第n次輸出、tn表示第n次迭代的臨時(shí)變量、an表示第n次波特率的輸出;
判斷子單元,用于判斷前后2次的波特率的變化范圍是否超過5%
更新子單元,用于更新波特率。
所述提取單元包括:
采樣子單元,用于以輸入波形的邊沿作為計(jì)數(shù)起點(diǎn),計(jì)數(shù)到bd*1/4、bd*2/4、bd*3/4時(shí)分別采樣波形到3個(gè)不同寄存器,其中bd表示波特率的值;
仲裁子單元,用于對(duì)采樣到的3個(gè)電平信息進(jìn)行仲裁;
提取子單元,用于提取其中相同的兩個(gè)采樣電平作為此時(shí)can總線的數(shù)據(jù)位信息。
所述采樣子單元包括清零模塊,用于當(dāng)邊沿到來時(shí),計(jì)數(shù)清零。
所述裝置還包括插入單元,用于當(dāng)發(fā)送節(jié)點(diǎn)傳輸5個(gè)連續(xù)的相同極性位后,在接下來的位流中插入一個(gè)極性相反的位。
檢測(cè)單元201檢測(cè)輸入波形的波特率;
傳統(tǒng)的的波特率自動(dòng)檢測(cè)的方法一般采用標(biāo)準(zhǔn)波特率窮舉法,標(biāo)準(zhǔn)波特率窮舉法適用于通訊雙方的波特率必須在有限的幾個(gè)固定數(shù)值之間變化,如300~19200之間的標(biāo)準(zhǔn)值。從機(jī)啟動(dòng)通信程序后,逐個(gè)嘗試以不同的波特率接收主機(jī)發(fā)出的特定字符,直到能正確接收為止,因此,該方法的運(yùn)用有一定的局限性。
在本實(shí)施例中,通過脈寬檢測(cè)方法,獲取時(shí)間周期t內(nèi),輸入波形的最小比特脈寬;在一定的時(shí)間周期t內(nèi),通過脈寬檢測(cè)方法,獲取輸入波形的最小比特脈寬,即每隔t時(shí)間,就會(huì)輸出一個(gè)最小比特脈寬。
根據(jù)實(shí)時(shí)累加平均算法迭代公式,對(duì)所述最小比特脈寬進(jìn)行實(shí)時(shí)累加平均計(jì)算,得到波特率,實(shí)時(shí)累加平均算法迭代公式包括:
a0=average*d0/average;
t0=average*a0;
……
an=(tn-1–an-1*weight+dn*weight)/average;
tn=average*an;
其中,average為平均次數(shù)、weight為權(quán)重值、dn表示最小比特脈寬檢測(cè)模塊的第n次輸出、tn表示第n次迭代的臨時(shí)變量、an表示第n次波特率的輸出;
判斷前后2次的波特率的變化范圍是否超過5%,若是則更新波特率,若否,則保持原有波特率不變。
提取單元202根據(jù)所述波特率對(duì)數(shù)據(jù)位信息進(jìn)行提??;
以輸入波形的邊沿作為計(jì)數(shù)起點(diǎn),計(jì)數(shù)到bd*1/4、bd*2/4、bd*3/4時(shí)分別采樣波形到3個(gè)不同寄存器,其中bd表示波特率的值;
對(duì)采樣到的3個(gè)電平信息進(jìn)行仲裁,提取其中相同的兩個(gè)采樣電平作為此時(shí)can總線的數(shù)據(jù)位信息;
在本實(shí)施例中,以輸入波形的邊沿作為計(jì)數(shù)起點(diǎn),計(jì)數(shù)到bd*1/4、bd*2/4、bd*3/4時(shí)分別采樣波形到3個(gè)不同寄存器。為減小累計(jì)誤差的影響,設(shè)計(jì)中對(duì)取樣進(jìn)行了同步,同步信號(hào)由邊沿產(chǎn)生,即每次邊沿到來時(shí),清零計(jì)數(shù)。
對(duì)采樣到的3個(gè)電平信息進(jìn)行一次仲裁,取其中相同的兩個(gè)采樣電平作為此時(shí)can總線的數(shù)據(jù)位信息輸出。
比對(duì)單元203將所述數(shù)據(jù)位信息與預(yù)設(shè)的標(biāo)準(zhǔn)幀格式進(jìn)行比對(duì),分離數(shù)據(jù)幀的相關(guān)信息,得到幀起始信號(hào)和幀結(jié)束信號(hào),從而確定所述數(shù)據(jù)幀的時(shí)間間隔;
在本實(shí)施例中,can總線標(biāo)準(zhǔn)的數(shù)據(jù)幀格式如包含了起始幀,仲裁場(chǎng),控制場(chǎng),數(shù)據(jù)場(chǎng),crc場(chǎng),ack場(chǎng),結(jié)束幀,間隔幀。起始幀為1bit固定為顯性低電平,結(jié)束幀為7bit固定為隱性高電平,間隔幀為3bit固定為隱形高電平。
can總線的場(chǎng)數(shù)據(jù)位使用非歸零編碼方式傳輸信號(hào),為保證足夠的跳變沿用于同步,can總線引入了位填充機(jī)制,發(fā)送節(jié)點(diǎn)每傳輸5個(gè)連續(xù)的相同極性位后,會(huì)在接下來的位流中插入一個(gè)極性相反的位,所以場(chǎng)數(shù)據(jù)是不存在5個(gè)連續(xù)的相同極性位。
通過上面的介紹,我們可以得知在總線進(jìn)入空閑狀態(tài)前,總線上會(huì)檢測(cè)到1bit的ackdel+7bit的結(jié)束幀+3bit的間隔幀,至少11個(gè)連續(xù)的隱性位(高電平),所以我們檢測(cè)到11個(gè)連續(xù)的高電平后,就可以認(rèn)為是幀結(jié)束信號(hào),總線進(jìn)入空閑狀態(tài)。由于起始幀是低電平,在空閑狀態(tài)下檢測(cè)到下降沿就可以認(rèn)為是幀起始信號(hào)。
數(shù)據(jù)移位操作,主要用12bit移位寄存器shift_data對(duì)can總線的數(shù)據(jù)位進(jìn)行移位保存。由于輸入波形信號(hào)可能來自can_h或can_l,數(shù)據(jù)幀自適應(yīng)識(shí)別充分考慮2種輸入情況,無論輸入來自can_h或can_l都能正確的解出幀起始和幀結(jié)束信號(hào)。
分離單元204根據(jù)所述數(shù)據(jù)幀的時(shí)間間隔,根據(jù)公式
在本實(shí)施例中,can總線負(fù)載率p定義為:
為了測(cè)量can總線的平均負(fù)載率和瞬時(shí)負(fù)載率,需不停的統(tǒng)計(jì)當(dāng)前時(shí)刻之前測(cè)量時(shí)間段ts(以s為測(cè)量單位)和測(cè)量時(shí)間段tms(以ms為測(cè)量單位)內(nèi)的數(shù)據(jù)幀占用的時(shí)間,為了提高測(cè)量的精度和減小誤差,該裝置采用滑動(dòng)平均的方法,將測(cè)量時(shí)間平均分為n個(gè)相對(duì)較小的時(shí)間窗口t,分別測(cè)量每個(gè)小時(shí)間窗口t內(nèi)有效的數(shù)據(jù)幀占用時(shí)間,并不斷的累加最新的n個(gè)小時(shí)間窗口的數(shù)據(jù)幀占用時(shí)間,這樣就可以得出測(cè)量時(shí)間ts和tms內(nèi)有效數(shù)據(jù)幀的占用時(shí)間,根據(jù)公式1,就可以得到can總線的平均負(fù)載率和瞬時(shí)負(fù)載率。
首先將第一次測(cè)量得到的n個(gè)小窗口的測(cè)量值進(jìn)行累加,得到總線負(fù)載率;接著將d1測(cè)量值丟棄后再重新加入dn+1測(cè)量值進(jìn)行累加,得到新的總線負(fù)載率;再接著將d2測(cè)量值丟棄后再重新加入dn+2測(cè)量值進(jìn)行累加,又得到新的總線負(fù)載率。以此類推,即累加值永遠(yuǎn)計(jì)算最新的t周期的總線占有率。
can總線在正常通信時(shí),總線的平均負(fù)載率一般在某個(gè)固定的范圍。當(dāng)總線通信出錯(cuò)時(shí),由于重傳機(jī)制會(huì)導(dǎo)致總線的瞬時(shí)負(fù)載率會(huì)突然增大,導(dǎo)致總線的瞬時(shí)負(fù)載率遠(yuǎn)大于平均負(fù)載率,在這種情況下,我們可以認(rèn)為can總線通信出現(xiàn)故障。
本實(shí)施例中,首先檢測(cè)單元201檢測(cè)輸入波形的波特率;其次提取單元202根據(jù)所述波特率對(duì)數(shù)據(jù)位信息進(jìn)行提??;然后比對(duì)單元203將所述數(shù)據(jù)位信息與預(yù)設(shè)的標(biāo)準(zhǔn)幀格式進(jìn)行比對(duì),接著分離單元204分離數(shù)據(jù)幀的相關(guān)信息,得到幀起始信號(hào)和幀結(jié)束信號(hào),從而確定單元205確定所述數(shù)據(jù)幀的時(shí)間間隔;最后計(jì)算單元206根據(jù)所述數(shù)據(jù)幀的時(shí)間間隔,根據(jù)公式計(jì)算can總線的平均負(fù)載率和瞬時(shí)負(fù)載率,其中t表示測(cè)量周期,td表示在測(cè)量周期t內(nèi),can數(shù)據(jù)幀占用的總時(shí)間。當(dāng)外界輸入信號(hào)波特率發(fā)生改變時(shí),波特率檢測(cè)模塊能實(shí)時(shí)的檢測(cè)出波特率,為總線的數(shù)據(jù)位提取提供了實(shí)時(shí)可靠的保證,避免了繁瑣的人工干預(yù)。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不處理。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明披露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。