本發(fā)明涉及故障模擬裝置產(chǎn)生故障信號的方法。
背景技術:
can總線系統(tǒng)在汽車領域應用廣泛,因為在這種環(huán)境下,對系統(tǒng)穩(wěn)定性有著更高的要求,所以在can總線系統(tǒng)組建之前,需要對總線上的各節(jié)點進行全面的測試,觀察其在不同的總線數(shù)據(jù)傳輸狀態(tài)下,能否保證正確的通信。并且,如果出現(xiàn)了總線故障,總線各節(jié)點是否能夠執(zhí)行正確的錯誤處理機制。
在對其進行測試過程中,如果使用專用的can節(jié)點裝置,在出廠時,相應廠家一定已經(jīng)對這些節(jié)點裝置進行了全面的測試。所以在使用這些節(jié)點裝置組建總線系統(tǒng)時,往往只能測試節(jié)點在正常工作時的情況,不能測試節(jié)點在異常工作時的情況,即便在千百次工作中節(jié)點出現(xiàn)了故障,這個故障也很大可能是隨機的,不能進行故障定制,所以總線系統(tǒng)測試人員想要復現(xiàn)這個故障也十分困難。而如果使用專用的can測試裝置,雖然可以定制輸出數(shù)據(jù)產(chǎn)生需要的故障信號從而較全面的測試整個總線系統(tǒng),但這樣的測試裝置造價高,通用性不強。對于一般的系統(tǒng)測試人員來說,并非一個很好的選擇。
can總線簡介
can即控制器局域網(wǎng)絡,屬于工業(yè)現(xiàn)場總行的范疇,與一般的通信總線相比,can總線的數(shù)據(jù)通信具有突出的可靠性,實時性和靈活性。由于其良好的性能及獨特的設計,can總線越來越受到人們的重視。他在汽車領域上的應用是最廣泛的,世界上一些著名的汽車制造廠商都采用了can總線來實現(xiàn)汽車內部控制系統(tǒng)和執(zhí)行機構間的數(shù)據(jù)通信。同時由于can總線本身的特點,其應用范圍已不再局限于汽車行業(yè),而向自動控制,航空航天,航海,過程工業(yè)。機械工業(yè),紡織工業(yè),等領域發(fā)展。
can總線拓撲圖
如圖1所示can總線可以掛載多個節(jié)點,can節(jié)點不分主從,只要總線空閑均可往總線上發(fā)送數(shù)據(jù)。
can總線的基本概念
can節(jié)點的層結構,如圖2所示;
物理層定義的實際信號的傳輸方法。
傳輸層是can協(xié)議的核心。它把接受到的報文提供給對象層,以及接受來自對象層的報文。傳輸層負責位定時及同步,報文分幀,仲裁,應答,錯誤檢測和標定,故障界定。
對象層的功能是報文濾波以及狀態(tài)和報文的處理。
報文(messages):
總線上的信息以不同的固定報文格式發(fā)送,但長度受限。當總線空閑時任何連接的單元都可以開始發(fā)送新的報文。
位速率(bitrate):
不同的系統(tǒng),can的速度不同,可是,在一給定的系統(tǒng)里,位速率是一定的,并且是固定的。
遠程數(shù)據(jù)請求(remotedatarequest):
通過發(fā)送遠程幀,需要數(shù)據(jù)的節(jié)點可以請求另一節(jié)點發(fā)送相應的數(shù)據(jù)幀。數(shù)據(jù)幀和相應的遠程幀由相同的識別符命名的。
多主機(multimaster):
總線空閑時,任何單元都可以開始傳輸報文。具有較高優(yōu)先權報文的單元可以優(yōu)先獲得總線訪問權。
總裁(arbitrition):
只要總線空閑,任何單元都可以開始發(fā)送報文。如果2個或2個以上的單元同時開始傳送報文,那么就會有總線訪問沖突。通過使用識別符的位形式仲裁可以解決這個沖突。仲裁的機制確保信息和時間均不會損失。當具有相同識別符的數(shù)據(jù)幀和遠程幀同時初始化時,數(shù)據(jù)幀優(yōu)先于遠程幀。仲裁期間,每一個發(fā)送器都對發(fā)送位的電平與被監(jiān)控的總線電平進行比較。如果電平相同,則這個單元可以繼續(xù)發(fā)送。如果發(fā)送的是一“隱性”電平而監(jiān)控視到一“顯性”電平(見總線值),那么該單元就失去了仲裁,必須退出發(fā)送。
錯誤檢測(errordetection):
為了檢測錯誤,必須采取以下措施:
監(jiān)視(發(fā)送器對發(fā)送位的電平與被監(jiān)控的總線電平進行比較)
循環(huán)冗余檢查
位填充
報文格式檢查
應答(acknowledgement):
所有的接收器檢查報文的連貫性。對于連貫的報文,接收器應答;對于不連貫的報文,接收器作出標志。
報文傳輸
幀類型
報文傳輸由以下4個不同的幀類型所表示和控制:
數(shù)據(jù)幀:數(shù)據(jù)幀攜帶數(shù)據(jù)從發(fā)送器至接收器。
遠程幀:總線單元發(fā)出遠程幀,請求發(fā)送具有同一識別符的數(shù)據(jù)幀。
錯誤幀:任何單元檢測到一總線錯誤及發(fā)出錯誤幀。
過載幀:過載幀用在先行的和后續(xù)的數(shù)據(jù)幀(或者遠程幀)之間提供一附加的延時。(數(shù)據(jù)幀或者遠程幀)通過幀間空間與前面的個幀分開。
數(shù)據(jù)幀
數(shù)據(jù)幀由7個不同的位場組成:如圖3所示;
幀起始、仲裁場、控制場、數(shù)據(jù)場、crc場、應答場、幀結尾。數(shù)據(jù)場的長度可以為0。
幀起始
它標志數(shù)據(jù)幀和遠程幀的起始,由一個單獨的“顯性”位組成。只有在總線空閑時才允許發(fā)送開始信號。
仲裁場
標準格式幀與擴展格式幀的仲裁場格式不同。
標準格式里,仲裁場由11位識別符和rtr為組成,識別符由id-28…id-18。如圖4所示。
擴展格式里,仲裁場包括29位識別符,srr位、ide位、rtr位。其識別符由id-28...id-0。如圖5所示。
識別符:識別符的長度為11位。這些位的發(fā)送順序是從id-10到id-0。最低位是id-0。最高的7位(id-10到id-4)必須不能全是“隱性”。
srr位:隱性位,它在擴展格式的標準幀rtr位位置,因此代替標準的rtr位。
ide位:標準格式的ide位為“顯性”,而擴展格式里的ide位為“隱性”
rtr位:該位在數(shù)據(jù)幀里必須為“顯性”,而在遠程幀里必須為“隱性”。
控制場(標準幀以及擴展幀),如圖6所示;
控制場由6個位組成。標準格式的控制場格式和擴展格式的不同。標準格式里的幀包括數(shù)據(jù)長度代碼、ide位(為顯性位)、及保留位r0。擴展格式里的幀包括數(shù)據(jù)長度代碼和兩個保留位:r1和r0。其保留位必須發(fā)送為顯性,但是接收器認可“顯性”和“隱性”位的組合。數(shù)據(jù)長度代碼:數(shù)據(jù)長度代碼指示了數(shù)據(jù)場中字節(jié)數(shù)量。數(shù)據(jù)長度代碼為4個位,在控制場里被發(fā)送。
數(shù)據(jù)場
數(shù)據(jù)場由數(shù)據(jù)幀中的發(fā)送數(shù)據(jù)組成。它可以為0~8個字節(jié),每字節(jié)包含了8個位,首先發(fā)送msb。
crc場
crc場包括crc序列(crcsequence),其后是crc界定符(crcdelimiter)。crc序列:由循環(huán)冗余碼求得的幀檢查序列最適用于位數(shù)低于127位〈bch碼〉的幀。為進行crc計算,被除的多項式系數(shù)由無填充位流給定,組成這些位流的成分是:幀起始、仲裁場、控制場、數(shù)據(jù)場(假如有),而15個最低位的系數(shù)是0。
應答場
應答場長度為2個位,包含應答間隙(ackslot)和應答界定符(ackdelimiter)。在應答場里,發(fā)送站發(fā)送兩個“隱性”位。當接收器正確地接收到有效的報文,接收器就會在應答間隙(ackslot)期間(發(fā)送ack信號)向發(fā)送器發(fā)送一“顯性”的位以示應答。應答間隙:所有接收到匹配crc序列(crcsequence)的站會在應答間隙(ackslot)期間用一“顯性”的位寫入發(fā)送器的“隱性”位來作出回答。
幀結尾
每一個數(shù)據(jù)幀和遠程幀均由一標志序列界定。這個標志序列由7個“隱性”位組成。遠程幀通過發(fā)送遠程幀,作為某數(shù)據(jù)接收器的站可以初始化通過其資源節(jié)點傳送不同的數(shù)據(jù)。遠程幀也有標準格式和擴展格式,而且都由6個不同的位場組成:幀起始、仲裁場、控制場、crc場、應答場、幀結尾。與數(shù)據(jù)幀相反,遠程幀的rtr位是“隱性”的。它沒有數(shù)據(jù)場,數(shù)據(jù)長度代碼的數(shù)值是不受制約的(可以標注為容許范圍里0...8的任何數(shù)值)。此數(shù)值是相應于數(shù)據(jù)幀的數(shù)據(jù)長度代碼。rtr位的極性表示了所發(fā)送的幀是一數(shù)據(jù)幀(rtr位“顯性”)還是一遠程幀(rtr“隱性”)。
技術實現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有總線出現(xiàn)故障時無法判斷總線各節(jié)點是否能夠執(zhí)行正確的錯誤處理機制以及現(xiàn)有can測試裝置造價高、通用性不強的問題,而提出一種基于can的總線信號故障模擬裝置產(chǎn)生故障信號的方法。
一種基于can的總線信號故障模擬裝置產(chǎn)生故障信號的方法具體過程為:
步驟一、通過usb將任意函數(shù)發(fā)生器連接到pc機,打開pc機中上位機;
步驟二、上位機程序打開任意函數(shù)發(fā)生器,獲取界面控件參數(shù),界面控件參數(shù)包括電平、速度、幀類型、幀格式、基本id、擴展id、數(shù)據(jù)長度、數(shù)據(jù)設置、故障參數(shù);判斷下載信號控件是否按下,如果是,執(zhí)行步驟三;如果否,重新執(zhí)行步驟二;
所述故障參數(shù)為包括ack丟失錯誤、dlc長度錯誤、crc校驗錯誤、填充錯誤中的0個、1個、2個、3個或4個;
所述id為身份標識碼,ack為應答,crc為循環(huán)冗余校驗,dlc為數(shù)據(jù)長度;
步驟三、將獲取到的界面控件參數(shù)組裝成幀,下載幀信息到任意函數(shù)發(fā)生器的rom里,根據(jù)can總線協(xié)議,設置任意函數(shù)發(fā)生器的輸出電平值、速度,打開控制任意函數(shù)發(fā)生器輸出的通道控件,輸出幀信號,即任意函數(shù)發(fā)生器輸出信號;判斷退出控件是否按下,如果是,結束上位機程序,如果否,重新執(zhí)行步驟三;
rom為只讀存儲器,can為控制器局域網(wǎng)絡;
步驟四、將步驟三得到的任意函數(shù)發(fā)生器輸出信號傳輸給can總線收發(fā)器,經(jīng)can總線收發(fā)器轉換后傳輸給can總線,得到故障信號。
本發(fā)明的有益效果為:
本發(fā)明基于一種常用的電子領域測試儀器——任意函數(shù)發(fā)生器,配合can專用的收發(fā)器,和一款pc軟件。首先,軟件通過控制任意函數(shù)發(fā)生器實現(xiàn)對can總線數(shù)據(jù)較為靈活的定制,定制精度可以達到每一個總線字的每一位。測試人員不僅可以在軟件界面中直觀定制can總線幀內容,以進行正確的數(shù)據(jù)傳輸,還可以輸出若干種錯誤的總線字,以模擬總線故障。本發(fā)明可以方便快捷的產(chǎn)生特定類型,特定位置的符合can幀格式和電氣特性的故障總線信號,解決了一般can控制器只能產(chǎn)生正確can幀總線信號的問題。本發(fā)明也可以產(chǎn)生符合can規(guī)范的任意id,任意數(shù)據(jù)長度的數(shù)據(jù)的can總線信號,使得產(chǎn)生符合can規(guī)范的總線信號變得更加快捷和方便。并且因為任意函數(shù)發(fā)生器通用性較強,是一般實驗室都具有的測試儀器,所以本發(fā)明具有良好的經(jīng)濟效益。解決了現(xiàn)有總線出現(xiàn)故障時無法判斷總線各節(jié)點是否能夠執(zhí)行正確的錯誤處理機制以及現(xiàn)有can測試裝置造價高、通用性不強的問題。本發(fā)明故障模擬裝置產(chǎn)生故障信號的準確率達到100%。
附圖說明
圖1為can總線拓撲圖;
圖2為can節(jié)點的層結構圖,can為控制器局域網(wǎng)絡;
圖3為數(shù)據(jù)幀的幀結構圖,crc為循環(huán)冗余校驗,ack為應答;
圖4為標準幀仲裁域示意圖,rtr遠程發(fā)送請求位;
圖5為擴展幀仲裁域示意圖,srr為遠程替代位,ide為集成開發(fā)環(huán)境;
圖6為控制場示意圖,r1,r0為保留位,dlc為數(shù)據(jù)長度;
圖7為本發(fā)明基于can的總線信號故障模擬裝置結構圖;
圖8為上位機軟件界面示意圖,uart為通用異步收發(fā)傳輸器,off為關閉;
圖9為上位機程序流程圖;
圖10為總線收發(fā)器框圖;
圖11為實施例一的can的總線信號故障模擬裝置結構圖,gui為圖形用戶界面,tekvisa為泰克公司的可編程儀器的函數(shù)庫;
圖12為步驟三中將獲取到的界面的控件參數(shù)組裝成幀流程圖。
具體實施方式
具體實施方式一:結合圖8、圖9、圖10說明本實施方式,本實施方式的一種基于can的總線信號故障模擬裝置產(chǎn)生故障信號的方法具體過程為:
基于can的總線信號故障模擬裝置包括上位機軟件部分,任意函數(shù)發(fā)生器、can協(xié)議收發(fā)器、can總線。
步驟一、通過usb將任意函數(shù)發(fā)生器連接到pc機,打開pc機中上位機;
步驟二、上位機程序打開任意函數(shù)發(fā)生器,獲取界面控件參數(shù),界面控件參數(shù)包括電平、速度、幀類型、幀格式、基本id、擴展id、數(shù)據(jù)長度、數(shù)據(jù)設置、故障參數(shù);判斷下載信號控件是否按下,如果是,執(zhí)行步驟三;如果否,重新執(zhí)行步驟二;
所述故障參數(shù)為ack丟失錯誤、dlc長度錯誤、crc校驗錯誤、填充錯誤中的0個、1個、2個、3個或4個;
所述id為身份標識碼,ack為應答,crc為循環(huán)冗余校驗,dlc為數(shù)據(jù)長度;
步驟三、將獲取到的界面控件參數(shù)組裝成幀,下載幀信息到任意函數(shù)發(fā)生器的rom里,根據(jù)can總線協(xié)議,設置任意函數(shù)發(fā)生器的輸出電平值、速度,打開控制任意函數(shù)發(fā)生器輸出的通道控件,輸出幀信號,即任意函數(shù)發(fā)生器輸出信號;判斷退出控件是否按下,如果是,結束上位機程序,如果否,重新執(zhí)行步驟三;
rom為只讀存儲器,can為控制器局域網(wǎng)絡;
步驟四、將步驟三得到的任意函數(shù)發(fā)生器輸出信號傳輸給can總線收發(fā)器,經(jīng)can總線收發(fā)器轉換后傳輸給can總線,得到故障信號。
因為任意函數(shù)發(fā)生器的驅動能力不足以直接與can總線相連,本發(fā)明使用了can總線收發(fā)器完成這個目標。該總線收發(fā)器的整體設計方案如圖7所示。
任意函數(shù)發(fā)生器的輸出信號,經(jīng)過收發(fā)器后,轉變?yōu)榉蟘an協(xié)議規(guī)定的電平標準,從而將故障模擬裝置掛載到總線系統(tǒng)中。任意函數(shù)發(fā)生器輸出就可以向真實的被測can總線設備發(fā)送消息,完成對被測設備節(jié)點的故障測試。
id為身份標識碼,ack為應答,crc為循環(huán)冗余校驗,dlc為數(shù)據(jù)長度;
基本參數(shù)、傳輸內容(十六進制)、故障參數(shù)的控件的編寫都是根據(jù)can總線協(xié)議確定的。
電平:任意波形發(fā)生器產(chǎn)生信號的電平大小。
速度:總線的速度。
幀類型:數(shù)據(jù)幀還是遠程幀。
幀格式:標準幀擴展幀。
基本id:幀的標識符。(標準幀和擴展幀都有)
擴展id:幀的標識符。(擴展幀才有)
數(shù)據(jù)長度:幀數(shù)據(jù)的長度。(1~8字節(jié)可設置)
數(shù)據(jù)設置:數(shù)據(jù)內容。
故障參數(shù):可設置的故障類型。包括ack丟失錯誤,dlc長度錯誤,crc校驗錯誤,填充錯誤四種錯誤類型。
設置完成后,點擊下載信號即可下載到任意函數(shù)發(fā)生器中。
具體實施方式二:本實施方式與具體實施方式一不同的是:所述步驟一中上位機包括上位機程序和上位機界面;
上位機程序編寫過程為:
判斷pc機是否找到任意函數(shù)發(fā)生器,如果找到任意函數(shù)發(fā)生器,執(zhí)行步驟二;如果沒找到任意函數(shù)發(fā)生器,結束上位機程序;
上位機界面編寫包括對基本參數(shù)、傳輸內容、故障參數(shù)和儀器控制的控件的編寫;
基本參數(shù)的控件包括隱性電平、顯性電平、速度、幀類型、幀格式;
傳輸內容的控件包括基本id、擴展id、數(shù)據(jù)長度、數(shù)據(jù)設置;
故障參數(shù)的控件包括ack丟失錯誤,dlc長度錯誤,crc校驗錯誤,填充錯誤;
儀器控制的控件包括通道、保存信號、調出信號、下載信號、退出。
其它步驟及參數(shù)與具體實施方式一相同。
具體實施方式三:本實施方式與具體實施方式一或二不同的是:所述步驟三中將獲取到的界面控件參數(shù)組裝成幀,具體過程為:
步驟三一、在幀序列中添加幀頭,基本id,執(zhí)行步驟三二;
步驟三二、如果是標準數(shù)據(jù)幀或者是標準遠程幀(上位機界面的基本參數(shù)中獲得),則在幀序列中添加rtr,ide,r0,dlc,執(zhí)行步驟三三;
rtr為遠程發(fā)送請求位;ide為集成開發(fā)環(huán)境;r0為保留位;dlc為數(shù)據(jù)長度;
如果是擴展數(shù)據(jù)幀或者是擴展遠程幀(上位機界面的基本參數(shù)中獲得),則在幀序列中添加srr,ide,擴展id,r1,r0,dlc,執(zhí)行步驟三三;
srr為遠程替代位,r1為保留位;
步驟三三、如果是數(shù)據(jù)幀(上位機界面的基本參數(shù)中獲得)并且有dlc長度錯誤(上位機界面的故障參數(shù)中獲得),則在幀序列中添加錯誤數(shù)據(jù);執(zhí)行步驟三四;
如果是數(shù)據(jù)幀(上位機界面的基本參數(shù)中獲得)并且沒有dlc長度錯誤(上位機界面的故障參數(shù)中獲得),則在幀序列中添加正確數(shù)據(jù),執(zhí)行步驟三四;
步驟三四、如果有crc校驗錯誤(上位機界面的故障參數(shù)中獲得),則在幀序列中添加錯誤crc;執(zhí)行步驟三五;
如果沒有crc校驗錯誤(上位機界面的故障參數(shù)中獲得):則在幀序列中添加正確crc,執(zhí)行步驟三五;
步驟三五、在幀序列中添加crc界定符,執(zhí)行步驟三六;
步驟三六、如果有填充錯誤(上位機界面的故障參數(shù)中獲得),則在幀序列中插入錯誤的填充,執(zhí)行步驟三七;如果沒有填充錯誤(上位機界面的故障參數(shù)中獲得),則直接執(zhí)行步驟三七;
步驟三七、如果有應答錯誤(上位機界面的故障參數(shù)中獲得),則在幀序列中添加錯誤的應答,執(zhí)行步驟三八;如果沒有應答錯誤(上位機界面的故障參數(shù)中獲得),則直接執(zhí)行步驟三八;
步驟三八、則在幀序列中添加幀結尾。
其它步驟及參數(shù)與具體實施方式一或二相同。
具體實施方式四:本實施方式與具體實施方式一至三之一不同的是:所述步驟三三中在幀序列中添加錯誤數(shù)據(jù);具體為:
錯誤數(shù)據(jù)為在正確的數(shù)據(jù)上少一字節(jié)的數(shù)據(jù),正確數(shù)據(jù)為從上位機界面中獲取的數(shù)據(jù)。
其它步驟及參數(shù)與具體實施方式一至三之一相同。
具體實施方式五:本實施方式與具體實施方式一至四之一不同的是:所述步驟三四中在幀序列中添加錯誤crc;具體為:
錯誤crc為生成多項式按位取反計算得到的crc。
其它步驟及參數(shù)與具體實施方式一至四之一相同。
具體實施方式六:本實施方式與具體實施方式一至五之一不同的是:所述步驟三六中在幀序列中插入錯誤的填充,具體為:
若有連續(xù)的5位的1則在幀序列連續(xù)的5位1中的最后一位1后插入一位1,若有連續(xù)的5位0則在幀序列連續(xù)的5位0中的最后一位0后插入一位0。
其它步驟及參數(shù)與具體實施方式一至五之一相同。
具體實施方式七:本實施方式與具體實施方式一至六之一不同的是:所述步驟三七中在幀序列中添加錯誤的應答,具體為:
應答間隙設為顯性位。
其它步驟及參數(shù)與具體實施方式一至六之一相同。
如圖12,所示:
1)、添加錯誤數(shù)據(jù)中,錯誤數(shù)據(jù)為:在正確的數(shù)據(jù)上少一字節(jié)的數(shù)據(jù)。正確數(shù)據(jù)為從上位機界面中獲取的數(shù)據(jù)設置中的數(shù)據(jù)。
2)添加錯誤crc中:錯誤crc為生成多項式按位取反所計算得到的crc。
3)在插入填充錯誤中:具體實現(xiàn)方式為:在前面已經(jīng)生成的幀序列中:如果有連續(xù)的5位的1就在幀序列后面插入一位1,如果有連續(xù)的5位0就在則幀序列后面插入一位0。
4)添加錯誤應答數(shù)據(jù):應答間隙設為顯性位。
采用以下實施例驗證本發(fā)明的有益效果:
實施例一:
本實施例一種基于can的總線信號故障模擬裝置產(chǎn)生故障信號具體是按照以下步驟制備的:
任意函數(shù)發(fā)生器選擇泰克afg3252c型號,該型號儀器的任意波發(fā)生功能支持輸出頻率范圍1mhz~120mhz,有效模擬帶寬(-3db)225mhz。應用軟件使用python語言開發(fā)。如此開發(fā)的裝置框圖如圖11所示。儀器操作通過tekvisa軟件實現(xiàn)。并使用pyhon的qt庫設計gui面板。收發(fā)器部分使用ctm1050t作為can總線協(xié)議收發(fā)器。
本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質的情況下,本領域技術人員當可根據(jù)本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權利要求的保護范圍。