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