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