基于CANoe的CAN總線設計基礎與簡例_第1頁
基于CANoe的CAN總線設計基礎與簡例_第2頁
基于CANoe的CAN總線設計基礎與簡例_第3頁
基于CANoe的CAN總線設計基礎與簡例_第4頁
基于CANoe的CAN總線設計基礎與簡例_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于CANoe的CAN總線設計基礎與簡例CANoe概述CANoe是德國Vecto:公司開發(fā)的一套通用的CAN總線系統(tǒng)的開發(fā)、測試和分析工具。CANoe的主要組成部分和各自功能為:CANdb+編輯器:用CANdb+編輯器可以創(chuàng)建或編輯數據庫文件(*.dbc)o數據庫文件中包括了CANoe所用到的信號的信息,這當中包括了報文和信號的網絡節(jié)點和符號名稱,以及環(huán)境變量等信息。CAPL瀏覽器:利用CAPL瀏覽器可以創(chuàng)建用于測量和模擬面板的CAPL程序。因為數據庫的應用,在編程時可以使用直觀的報文和信號的名稱,而不必使用二進制代碼的報文頭和數據。CANoe主程序:用于測量和模擬CAN系統(tǒng)。通過File/D

2、atabase菜單,可以在主程序中關聯(lián)一個或多個數據庫。面板編輯器:通過面板編輯器可以創(chuàng)建面板。面板的作用是作為用戶和在CANoe里的模擬面板里被模擬的網絡節(jié)點的I/O接口。除了標準按鈕和開關,在面板編輯器中也可使用位圖作為顯示和控制器件??梢允褂萌我獾奈粓D編輯軟件創(chuàng)建合適的位圖,然后用十面板編輯器。任何顯示和控制兀件都要和數據庫中的環(huán)境變量關聯(lián)好,這樣CAPL程序可以在CANoe主程序中讀寫顯示和控制兀件。使用CANoe進行開發(fā)的三個階段使用CANoe的開發(fā)過程可以分為3個階段:第一個階段是利用數字仿真進行網絡需求分析和設計階段。該階段首先要定義網絡里的通訊需求,包括:需要幾個節(jié)點;在網絡中

3、要發(fā)送多少個報文;數據從哪個節(jié)點傳輸到哪個節(jié)點;每個報文的具體組成;有哪些外部的輸入輸出。然后,利用網絡數據庫工具CANdb+建立起CAN通訊數據庫。接下來,建立網絡拓撲結構,選擇總線的波特率,定義節(jié)點的網絡行為,使用CANoe建立各個網絡節(jié)點的模型,并通過仿真來預估在設定波特率情況下的總線負載和延遲。通過第一個階段的仿真可以檢驗各個節(jié)點功能的完善性和網絡的合理性,也可以監(jiān)控網絡負載和延遲。第一階段如圖3-3所示。虛擬總統(tǒng)【實時)圖3-3完全數字仿真第二個階段是節(jié)點實現(xiàn)和半物理仿真階段。第一個階段結束后,我們能夠得到一個完整的系統(tǒng)功能模型。接下來,可以開發(fā)真實的控制器節(jié)點,并利用總線接口與CA

4、Noe上剩余的虛擬節(jié)點相連接,來測試真實節(jié)點的功能,如通信、糾錯。對于并行開發(fā)的節(jié)點,就可以不受其它節(jié)點開發(fā)步驟的影響。第二階段如圖3-4所示。圖3-4半物理仿真虛擬總線(實時)第三個階段是全系統(tǒng)集成階段。開發(fā)的最終階段將逐步把所有的虛擬節(jié)點用真實的節(jié)點來替代,此時,CANoe只是觀察分析的工具了。在這個過程中,整個系統(tǒng)包括各個功能節(jié)點都能詳細的檢查到。由于利用功能模塊取代真實的網絡節(jié)點能減少錯誤的發(fā)生,因此通過這兩種狀態(tài)的切換能檢查其功能的完善性。第三階段如圖3-5所示。3.3面板的設計面板編輯器用于創(chuàng)建圖形面板。在圖形面板中可以在模擬測量的過程中方便地改變離散或是連續(xù)的環(huán)境變量的值。面板編

5、輯器既可以單獨啟動也可以從CANoe主程序中啟動,從CANoe主程序中啟動時,和主程序中關聯(lián)的數據庫會自動關聯(lián)到面板編輯器中。表3-1為所有控制面板的元件一覽。所有放在面板上的元件稱為“控件”。“控件”可分為控制元件和顯示元件,控制元件(如開關,按鈕等)用于改變環(huán)境變量的值,顯示元件用于顯示環(huán)境變量的值(如報警燈等)。對于不同類型的環(huán)境變量有特定的元件可用,如對于離散的變量可用開關和顯示燈等,對于連續(xù)的變量可用滑塊,對于字符串型的環(huán)境變量可用文字輸入框。除此之外,還可以放入靜態(tài)的和環(huán)境變量無關的元件,如作為背景的位圖,用于說明的文字等。所有的“控件”(顯示和控制元件)必須和數據庫中的一個環(huán)境變

6、量或信號相關聯(lián)。3.4 CAPL編程3.4.1 CAPL簡介CANoe的通用性、易用性很大程度上是因為用戶可以對CANoe進行編程。CAPL是CANAccessProgrammingLanguage的縮寫。CAPL是一種類C語言的程序語言。利用CAPL可以在單個的應用中對CANoe進行編程。在網絡節(jié)點的開發(fā)過程中,往往會出現(xiàn)其他網絡節(jié)點還不可用的問題,為了模擬系統(tǒng)環(huán)境,這些網絡節(jié)點的數據流要通過CAPL的編程來模擬,CAPL節(jié)點作為功能塊插入到數據流圖中。CAPL的輸入是事件發(fā)生器,CAPL可以對報文,定時器以及鍵盤輸入做出反應,所以CANoe可以用來監(jiān)控和檢測特殊的問題,如CANoe可以對發(fā)

7、布到總線的特定報文做出反應,然后可以調用戶自定義的分析和測試函數。CAPL同樣也可為控制器的開發(fā)模擬總線環(huán)境,通過CAPL,對怎樣的事件做出怎樣的反應可以完全由用戶來定義決定。因為CANoe有兩個硬件接口,通過CAPL的編程也可以實現(xiàn)網關的功能。必須要注意的是,在測試設置面板中插入的CAPL塊能產生報文,但是不能發(fā)布到真實總線中去,如果要向總線發(fā)布報文,必須把CAPL塊插入到模擬設置面板中。在CAPL編程中應盡量引用數據庫中的報文,這樣做對于提高開發(fā)效率非常有用,例如,如果要改變某條報文的優(yōu)先級,只需改變數據庫中這條報文的識別碼,然后重新編譯CAPL程序即可實現(xiàn),否則要在CAPL中去改變每個用

8、到這條報文的地方,非常繁瑣而且容易出錯。3.4.2 CAPL數據類型一、CAPL數據類型如下表所示款據類型名稱注釋無符號整型byte1個字節(jié)2個字節(jié)chvoid4個字節(jié)有符號整型int2個字節(jié)long1個字節(jié)浮點型floate個字節(jié)doubleS個字節(jié)CAN報文message1129ID定時器timer秒毫秒單個字符chai1個字節(jié)二、數據定義變量定義inti;message0x123HiRain;messageMotorDataVector;三、關鍵字thisthis代表觸發(fā)事件的對象onmessage100bytebyte_0;byte_0=this.byte(0);/|等ID為100的報

9、文的信號byte的值送變量byte_0,this指ID為100的報文.onenvVarSwitchintval;val=getvalue(this);得到環(huán)境變量Switch的值送val,this指Switch.3.4.3 CAPLBroswer3.4.3CAPL事件事件類型事件名程序執(zhí)行條件事件過程語法結構.系統(tǒng)事件CANoeMjwASiarrfStart惻量并超時執(zhí)行StapMeasuremet測量站晶郭執(zhí)on,CAN控制器事件BusOff出usOff::;mbuOff/.JEirorActiyeIt悻地襄1rTSEfAifiErrorAche匕匚入(MfErrotPassive硬件性工J

10、lEnwPasswe聞”fVramingljnvt.:WarringJmit_&namiMgLimirfCAN消息事件自定義按蟲t到書i定的消息時執(zhí)行mesagfj時閭事件自定義葉時間朝過時執(zhí)行fimrrTmirrf鯉盤事件自定義犍侑指定的就被下時執(zhí)行o界梗r尤4錯誤嚙事件硬件靠次檢測到鋁i=150)write(Warning:criticaltemperature);)2、對鍵盤響應onkeyamessageMotorDatamMoDa;mMoDa.temperature.phys=60;mMoDa.speed.phys=4300;output(mMoDa);onkeybmessage100

11、m100=dlc=1;m100.byte(0)=0x0B;output(m100);3、定時器處理Variablesmessage0x555msg1=dlc=1;msTimertimer1;onstartsetTimer(timer1,100);ontimertimer1setTimer(timer1,100);msg1.byte(0)=msg1.byte(0)+1;output(msg1);4、環(huán)境變量的處理onenvVarevSwitchmessageMotorDatamsg;msg.bsSwitch=getValue(this);output(msg);3.5 CANoe數據庫在一個聯(lián)網

12、的總線系統(tǒng)上的所有數據和它們之間的相互關系,通常都存儲在一個集中數據庫中,CANoe提供一個數據庫編輯器,在這里可以隨意的創(chuàng)建和更改數據庫中的信息。由數據庫編輯器創(chuàng)建的數據庫可以被各個程序和工具調用,如圖3-6所示。數據庫中的兩個對象之間可以通過關聯(lián)建立聯(lián)系。例如,將一個信號和一個報文關聯(lián),就可以決定在哪條報文中發(fā)送這條信號,可能的關聯(lián)關系見表3-2o被關聯(lián)對象的類型能被關聯(lián)的對ga1篆卜類里思一;護1岷1尸1儀聚-rH-一e網絡X控制單元X環(huán)境變量節(jié)點組X網絡節(jié)點XXX報文X報文信號XX信號組X信號組X表3-2數據庫中可關聯(lián)的對象CommunicationrelevantData圖3-6數據

13、庫和其他應用下面對CANoe中的數據庫中的各種對象做一下簡要說明:整車即整車上的網絡系統(tǒng),可能包括一個以上的總線網絡,相互之間由網關進行連接。網絡:通常包括多個控制單元,控制單元被連接到同一個總線上,通過總線交換信息??刂茊卧嚎刂茊卧窃诰W絡中分布的執(zhí)行單元??刂茊卧ㄟ^屬于它的網絡節(jié)點和網絡交換信息。一個控制單元可以包括多個網絡節(jié)點。環(huán)境變量也被指派到不同的控制單元。因為控制單元在網絡中不是獨立的,在CANoe測試運行的時候不能改變控制單元的名稱和描述。環(huán)境變量:CANoe提供環(huán)境變量來模擬網絡節(jié)點針對功能總線做出的反應。環(huán)境變量由系統(tǒng)環(huán)境中的事件和狀態(tài)來描述,如外界壓力,溫度,開工位置等

14、。通過用戶定義的控制面板可以隨意地更改環(huán)境變量,也即改變系統(tǒng)環(huán)境中的狀0在CAPL中對于環(huán)境變量變化做出反應的事件可用“onenvVar語句來描述。GetValue(那句和putValue(評句用來讀和寫環(huán)境變量。環(huán)境變量由以下系統(tǒng)參數來定義,符號化的名稱數據類型,包括整型,字符串,浮點型,數據型等修改權,包括無限制,只讀(傳感器型),可寫(執(zhí)行元件型),特定控制器可讀寫等單位,機環(huán)境變量的物理單位最大最小值長度注釋網絡節(jié)點:網絡節(jié)點是控制單元和網絡交換數據的接口,控制單元通過網絡節(jié)點從網絡收發(fā)信息。網絡節(jié)點由以下系統(tǒng)參數來定義符號化的網絡節(jié)點名稱地址節(jié)點組:多個網絡節(jié)點可以組成節(jié)點組,例如,

15、網絡上所有同一家制造商提供的節(jié)點可以組成一個節(jié)點組。節(jié)點組也可用來構建網絡的變種,所有車型變種都會用到的節(jié)點可以組成一個節(jié)點組,這個節(jié)點組和網絡的所有變種相關聯(lián),選裝的網絡節(jié)點再單獨和網絡關聯(lián)。報文:即在總線上傳遞的報文信息,由以下系統(tǒng)參數定義,符號化的報文名稱識別位(CANID),在一個網絡中必須統(tǒng)一分配,不能重復使用字節(jié)數傳遞類型循環(huán)時間(如果報文被周期性的發(fā)送)網絡節(jié)點,即發(fā)送這條報文的網絡節(jié)點報文信號注釋信號:信號是信息的最小單元,由以下系統(tǒng)參數定義符號化信號名稱信號長度格式數據類型系數,基準和物理單位?!霸贾怠笔蔷W絡上傳遞的實際數據,“物理值”是真實反應的物理量大?。ㄈ缢俣?,轉速,

16、溫度等)。信號轉換公式用于把原始值轉換成物理值:物理值=(原始值X系數)+基準。初始值。用物理值來定義。最大和最小值。用物理值來定義。單位。物理量的單位。注釋3.6 CANoe主窗口設計CANoe主程序中包括以下窗口:a.模擬設置窗口模擬設置窗口中圖形化顯示被模擬的總線和網絡節(jié)點。在模擬設置窗口中,模擬總線用紅線來表示,真實總線用黑線來表示。它們之間通過PC卡連接在一起。如圖3-7所示。圖3-7仿真設置窗口b.測量設置窗口測量設置窗口中顯示數據流的示意圖,包括數據源,基本功能塊,熱點,數據接受器等。在在線模式下CAN卡作為數據源,記錄總線上的報文并把它們發(fā)到CANoe。測量窗口下的數據流是有方

17、向的,總是從左邊的連接符號(連到模擬設置窗口)流向右邊的評價窗口。測量設置窗口例子如圖2-6所示。rleisurentSetup口回可Statistic;話!的WaF_tni41*叩1OlLtmHd*Rptu日3StatisticsSpeedWateOernlightOil_tsmRpmDataGraphicsLygingm1-|kt|canoe圖3-8測量配置窗口c.跟蹤窗口所有到達跟蹤塊的輸入的數據都以文本形式在跟蹤窗口中顯示。圖3-9顯示了跟蹤窗口的一個例子。Trace口|5因TineChnIBNameDirPLCData國2.S0.L.enteringsleepnodedueto國因2

18、44.1c,rRpnTxS0000000000000000*424.41L-SpeedTx800000000DO000000+E324.3.11.LightTh40000DO00+區(qū)124口11.Vater_temTxS00OU000000000000+二240.11.Oil_tejhTx80000000000000000*1|DetailviewDifferenceviewStatisticview/圖3-9跟蹤窗口D.圖形窗口圖形窗口用來顯示信號隨時間的變化。如果使用了數據庫,信號的值可以直接作為物理變量顯示在圖形窗口上,如發(fā)動機轉速可以直接以“轉/分”的單位顯示。e.寫窗口寫窗口在CAN

19、oe中有兩個作用:第一,測量過程中的重要系統(tǒng)信息在這顯示,如:測量開始和結束的時間,預設的波特率,記錄功能的觸發(fā),測量結束后的統(tǒng)計報告等。第二,在CAPL編程中用了“whte()”語句輸出的信息都在這顯示。r-Write0回SoutceMessage八VkSysteaCAN2simulatedbuswith33333BPS4SystemCAIT2Standardacceptancefilter:0000。一.1.1.1 SystemCAN2Standardcode/mask:000/Iff“SysteaCAJT2tendedacceptancefiltei:11 Systea

20、CAW2Extendedcode/mask:Iffff.3.3.3 Systemandanimationfactor= CAPLpresstodrawsinegignals5.5.5 CAPLpresstostop3inesignals6.6.6 CAPLpresstodrav/dontdc&wpeakmessages7.7.7 CAPLpresstotogglebitsignal8.8.8 SystemEndofmeasureiuent10:44:46ajuAll5ysterri*CAPL入Inspect入CallstackTest/f.數據窗口數據窗口中顯示信號的值,信號即C

21、AN報文中的一個數據段,如發(fā)動機控制器發(fā)出的CAN報文中的某一段表示發(fā)動機轉速。如果用了數據庫功能,那么在數據窗口中的數據可以以物理變量的形式顯示,如發(fā)動機轉速可以以“轉/分”的單位顯示。在數據窗口中被顯示的信號要預先定義好。g.統(tǒng)計窗口統(tǒng)計窗口總可以顯示總線上報文之間的平均間隔時間,也可顯示每秒總線上的報文數量。同時還可以后臺統(tǒng)計所有活動的總線,其結果可以顯示在寫窗口中,也可以儲存下來。f.總線統(tǒng)計窗口顯示如總線負載率,峰值負載,錯誤幀等統(tǒng)計信息,如圖3-10所示CAH1|2Busload%2.360.00Peakload%12490.00Std.Dataf.160Std.Dwt.,2024

22、0Ext.Dataf.00Ext.Datat.00Std.Remote.00Std.00Ext.Remote.00Ext.Remote.00Errorfr.,00IrrarfrarnftsrT00ChipstateSimulatedlSimul一圖3-10總線統(tǒng)計窗口第四章燈光控制系統(tǒng)仿真通信數據庫的建立概述進行CAN網絡系統(tǒng)的開發(fā),開發(fā)人員首先需求做的是系統(tǒng)功能的定義,即定義該網絡系統(tǒng)通信對象,根據通信特點選擇所需要的網絡類型,以及選擇網絡的屬性(例如波特率);同時需要考慮網絡里的通信需求:即所需要的節(jié)點數目,所需要發(fā)送報文(Message)的數量及ID等;定義報文的收發(fā)節(jié)點,即每個報文是從

23、哪個節(jié)點(源節(jié)點)傳送至哪個節(jié)點(目標節(jié)點);每個報文所包含的具體信號(Signal);定義每個信號的數據類型和對應真實物理值之間的轉換方式,以及信號在報文的數據場中的地址分配等等。在上述定義過程中,可使用Vector公司的網絡數據庫工具CANdb+,創(chuàng)建和管理前述分布式網絡定義和通信數據,能檢查出概念定義的一些錯誤并及時改正,同時可以幫助工程設計人員對網絡進行優(yōu)化。另外,在CANdb+中,還可以加上環(huán)境變量來描述外部的輸入輸出。本文只進行燈光控制系統(tǒng)的仿真設計,不考慮其它因素,因此通信數據庫比較簡單。在CANoe中工具選擇CANdb+數據庫編輯器,新建一個數據庫,命名為Vehicle_lig

24、ht。報文的建立報文即網絡節(jié)點發(fā)送的一幀數據信息,在CANoe中主要定義標識符和數據位,其他部分由CANoe根據CAN協(xié)議來完成。對報文進行命名時要注意統(tǒng)一規(guī)范并且要便于理解,如全部以“m”開頭,代表這是“Message,燈光控制器發(fā)送的第一條報文為“mLight_1,第二條為“mLight_2”,儀表控制器發(fā)送的第一條為“mMeter_1”等,有白所空制器在目前雖然只發(fā)一條報文,但是為了以后擴展方便,應同樣加上編號。接下來在同一網絡中對信息進行標識符分配,因為在CAN通訊中標識符直接決定了報文的優(yōu)先級,所以對于標識符的分配非常重要,對于比較緊急的情況報文應具有較高的優(yōu)先級。中因本文只需要定義

25、一條報文,所以標識就沒有什么意義了,定義報文ID為0x01。在數據庫左側樹目錄中選擇message,右擊選擇new彈出報文定義對話框,在對話框中可以定義報文的名稱、ID、幀類型等。如圖4-1所示圖4-1創(chuàng)建報文信號的建立信號即報文中的某一段,代表某一個物理量或信號,是CAN中信息傳遞的最小單位。同樣對于信號的命名要注意同樣規(guī)范和便于理解,例如以“jinguang”代近光燈信號,以“Bwudeng”代表后節(jié)點霧燈信號。對于數值量來說,所表示數值的范圍和需要的精度決定了系數和基準,如轉速信號,如果要精確到0.125轉/分,就以0.125為系數,精度越高,表示同樣范圍的數據就需要占用更多的數據位。如

26、發(fā)動機轉速,以0.125為系數,占用16位(2個字節(jié)),可以表達最大為8191.875轉/分的轉速,如果要表示負的量,如冷卻液溫度等,就把需要表達的最低值定為基準,如-40,CANdb+Editor中可以自動根據基準值和參數以及信號所占的位數來計算信號的最大值和最小值。對于開關量,只占用一位,在值定義里說明含義,如“0”代表關,“1”代表開。在數據庫左側樹目錄中選擇Singel項,右擊選擇new彈出信號定義對話框,在對話框中可以定義信號的名稱、位索引類型、值類型、物理單位,系數、偏移量等。如圖4-2所示圖4-2創(chuàng)建信號本文定義的和燈光通訊相關的信號如表4-1所示表4-1定義的信號-心部打5ch

27、tmen1daouheji-hip&izhaoFwuieng、xingliKiaiLgEhi工huaimiang定義好報文和信號后還要將報文和信號進行關聯(lián),報文與信號關聯(lián)有多種方式,可以在定義報文時直接加入關聯(lián)的信號,或在定義信號時加入關聯(lián)的報文,還可以在數據庫左側樹目錄中直接選擇一個信號按住左鍵拖到要關聯(lián)的報文下,報文和信號進行關聯(lián)時,需要確定信號在報文中的起始位置,可能值為063。在CANoe中將信號和報文關聯(lián)完畢后,在報文屬性的Layout窗口中可以非常直觀地看到信號在報文中的分布情況,如圖4-3所示,一幀報文的8個字節(jié)64位以表格的形式被直觀地表達出來,在這個表格中,可以看到64位的每

28、一位各被什么信號占用,每個信號占用的位的長度和起始終止位置。4.1.4環(huán)境變量的建立環(huán)境變量的命名也需要注意規(guī)范和便于理解,如以“SW1”代表開關1的控制型環(huán)境變量,Ljinguang”代表近光燈顯示型環(huán)境變量。這樣的統(tǒng)一命名對于后期的使用非常有利。在數據庫左側樹目錄中選擇Environment項,右擊選擇new彈出環(huán)境變量定義對話框,在對話框中可以環(huán)境變量的名稱、值類型、最大值,最小值等。如圖4-3所示圖4-3環(huán)境變量的定義本項目中建立的環(huán)境變量清單如表4-2所示:表4-2定義的環(huán)境變量IX-*UHMl.ILEnvironmentvariables;LBwud&ng.、LchemenLdao

29、che6Ljiashi、LjinguaiicLnozhuan;Lpaizho.、LwudengLscinlixiang;Lyouzhuais.、LyuanguangLzhidong;LruozhuaiK、SchedengSchemen;Sdaoche、SjiashiSpizhto;Sudeng:、Sxi111glixiaitfSzhidong;Szhuaiuciang建立虛擬節(jié)點對于一個和CANoe相連的真實網絡來說,所有CANoe發(fā)出的報文信號都是從CANoe的CAN(CANcaseXL)卡發(fā)出的,但是在CANoe軟件內部,不同的報文信號是由不同的虛擬節(jié)點發(fā)出來的,為了仿真燈光控制系統(tǒng),需要

30、在CANoe軟件里創(chuàng)建各個節(jié)點。接下來就要在CANoe的SimulationSetup窗口中構建虛擬網絡,包括各個被模擬的節(jié)點。完成純數字仿真SimulationSetup窗口初始界面如圖4-4所示圖4-4SimulationSetup初始界面圖中的方框代表一個總線系統(tǒng),紅線代表虛擬的總線,黑線代表實際的總線,CANoe提供的CAN卡(CANcaseXL)是虛擬總線和實際總線之間的接口。右鍵點擊這兩條線,出現(xiàn)如圖4-5所示界面:圖4-5加入網絡節(jié)點Insertnetworknode可以在總線上加入一個網絡節(jié)點;Inserttestmodule可以在總線上加入一個測試模塊;Insertgener

31、atorblock可以在總線上加入一個發(fā)生器(可以不用capl語言就可以在總線上發(fā)出想傳送的信息);Insertinteractivegeneratorblock可以在總線上加入一個內部發(fā)生器(可以在用measuremen監(jiān)測的時候就能對設定的動作進行操作,發(fā)出信息);InsertreplayblockCAN可以在總線上加入一個重放模塊,只需在其中設置measurement中的10g保存下來的*asc文件進行播放,就可以立即模擬出剛才總線上報文發(fā)送的情況;Switchallblockstosimulation即把所有總線上的模塊立即與總線相連;Switchallblockstoreal-tim

32、emode即把所有總線上的模塊立即與總線斷開。在SimulationSetup中加入以下的虛擬網絡節(jié)點:Main主控制器Front前車燈控制器Back后車燈控制器虛擬節(jié)點建立設置完畢后,還要將上一章中建立的數據庫和此SimulationSetup總線關聯(lián),在右側樹狀圖右鍵點擊Databases出現(xiàn)如圖4-6所示界面:圖4-6加入數據庫點擊ADD可加入數據庫,如Vehicle_Light.dbCo完成后的SimulationSetup如圖4-7所示。SianlationSetup_|c|XB3ffDuat-sI-W3日里Jtad”DA.ckjronii里eneml0rsjitA3-6

33、CILvAapL-17bLoeksDa.t.b0.5sVthic:_lichi:fflChAimS3-WL1frontECUBuckFt”回3川/圖4-7完成的模擬設置窗口創(chuàng)建面板面板編輯器中創(chuàng)建的面板是人機交互的界面,通過面板可以以直觀的方式讓CANoe按操作者的意圖發(fā)送出相應的CAN報文建立控制面板在CANoe工具中選擇Paneleditor,然后在面板上添加開關和燈,設計控制面板如圖4-8所示:圖4-8控制面板開關用于輸入控制值,燈根據開關狀態(tài)亮滅。面板上的控件都要和相應的環(huán)境變量相關聯(lián),選擇一控件右擊一配置,打開環(huán)境變量配置對話框如圖4-9所示。設置關聯(lián)的環(huán)境變量。對于顯示燈除了和相關

34、的顯示環(huán)境變量關聯(lián)外,還需要指定對應的位圖,位圖上有開關的不同狀態(tài)的顯示,設置和位圖如圖4-10所示。圖4-9開關型環(huán)境變量的配置ConfigureSwitch/Display圖4-10顯示燈設置完成面板設計后需要將設計的面板加到CANoe中,在CANoe中選擇PanelConfigurepanels,打開添加對話框,如圖4-11所示。單擊add可以添加面板,display顯示選擇的面板,displayall顯示所有面板。PanielConfiguration7圖4-11添加面板4.4CAPL編程界面完成后,CANoe還不能根據對界面操作發(fā)出CAN報文或根據CAN報文在模擬面板作出相應反應,為

35、了達到這一目的,還必須進行CAPL編程的工作,主控節(jié)點程序框圖如圖4-11所示:圖4-12主控節(jié)點程序流程框圖前后車燈節(jié)點程序流程圖圖4-13前后節(jié)點程序流程框圖接下來以主控節(jié)點和前車燈節(jié)點為例,說明CAPL編程過程。CAPL是類C的編程語言,在編程界面的左側樹狀圖中分別有變量聲明,系統(tǒng),CAN控制器,報文,定時器,鍵盤,錯誤幀,環(huán)境變量,函數等項,如圖4-12所示,只需在分別在相關欄目中寫入程序即可。變量聲明程序如下:variables(messageLightMsg1;mstimertimeri;以上程序中,將msgl設置為信息變量,并且和Vehicle_Light數據庫里的信息相關聯(lián),將

36、timeri設置為以ms為單位的時間變量。HBlIxCAFLBrovsDtainj圖4-14CAPL編程System的啟動部分主要進行一些初始化的工作,程序如下:onstart(settimer(timer1,200);以上程序首先將相關的報文信號初始化置零,然后發(fā)出首條初始報文,根據設定的發(fā)送時間間隔設置時間變量值,最后在write窗口給出提示信息。Timer部分是定時器相關的設置,程序如下:ontimertimer1(settimer(timer1,200);output(Msg1);以上程序段在time1r定時器到時msg1報文,并且重新設時器100msoEnvironment部分對環(huán)境

37、變量的改變做出反應,程序如下:onenvVarSzhidong(if(getvalue(this)=1)Msg1.zhidong=3;elseMsg1.zhidong=0;output(Msg1);以上程序段在開關狀態(tài)發(fā)生改變時(通過對控制面板的操作實現(xiàn)),將根據開光狀態(tài)對相應的報文里的相關信號賦值,環(huán)境變量的值是通過getvalue函數得到的。復制后CANoe下次發(fā)出此條報文時,里面的信號的值都已根據控制面板的變化發(fā)生了相應變化。4.5仿真結果分析按以上步驟建好節(jié)點功能模型和面板后,即可進行系統(tǒng)的軟件仿真。首先設置軟件為仿真模式,在工具欄上選擇開始按鈕即開始仿真。報文發(fā)送情況如圖4-16所示

38、:尸TraceTimeIBDirBLCDataE32.60.L.enteringTE33.BO.1OlxLightTx3033f33、paizhao00xInglisrang33wudeng33、jiashi000zhidong33、daoche33、chemen33、zhuanKiang00、chedeng33*11i圖4-16數據跟蹤窗口仿真過程中總線的負載和各種統(tǒng)計數據如圖4-17所示FBusStatistics13回畫CAN1CAN2LIN1Busload%0.420.00Busload%o.aoPaldLoad%056000Peakload知0.00Sid.Datar/s00口自上總

39、fr/s0Std.Datatotal00Datatotal0Ext.Datafr/a50TrxtsmErrersa.0Ext.total4800TrwsmErr0Sid.Remotefr/s00CSErrrr/x0Std.Remotetotil00CSErrtotal0Ext.Remoter/s|00RcvErrerr/互0Est.Remotetold.00RcvErrtotal0Errorframe:fr/s00SyncErrerr/e0Errorframestotal00SyncErrtotalDChipstateSimulatedSimulateiiWakwupmfr/e0Makeups

40、tctal0ChipstateAsleep圖4-17總線統(tǒng)計窗口從仿真結果可以看出報文發(fā)送情況良好,總線負載為0.42%,峰值負載為0.58%第五章軟件設計由于時間關系,本文不進行燈光系統(tǒng)的硬件電路設計,采用周立功單片機實驗箱模擬真實節(jié)點的ECU,采用SJA1000CAN控制器,進行系統(tǒng)的軟件設計,SJA100cB始化CAN控制器在上電或硬件復位后必須進行初始化操,然后才能進行發(fā)送和接收數據。SJA1000CAN控制器的初始化主要設置以下幾項內容:通信方式、濾波方式、驗收濾波器設置、總線定時等。SJA1000初始化流程圖如下:SjA1000初始化程序如下:voidSJA1000_Config_

41、Self(void)(SJAEntryResetMode();/進入復位模式WriteSJAReg(REG_CAN_CDR,0xc8);/選擇PeliCAN模式SetBitMask(REG_CAN_MOD,AFM_BIT);/選擇單濾波模式WriteSJARegBlock(16,&CAN_Baudrate_Filter_Buffer1,8);設置驗收代/碼/屏蔽寄存器WriteSJAReg(REG_CAN_OCR,0x1a);/設置輸出管腳SJASetBaudrateStandard(CAN_Baudrate_Filter_Buffer0);/校置總線定時/器,確定波特率SJAQuitResetMode();退出復位模

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論