




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——基于CANoe的CAN總線設(shè)計(jì)基礎(chǔ)與簡例
基于CANoe的CAN總線設(shè)計(jì)基礎(chǔ)與簡例
CANoe概述
CANoe是德國Vecto:公司開發(fā)的一套通用的CAN總線系統(tǒng)的開發(fā)、測試和
分析工具。CANoe的主要組成部分和各自功能為:
?CANdb++編輯器:用CANdb++編輯器可以創(chuàng)立或編輯數(shù)據(jù)庫文件
(*.dbc)。數(shù)據(jù)庫文件中包括了CANoe所用到的信號(hào)的信息,這當(dāng)中包括了報(bào)文和信號(hào)的網(wǎng)絡(luò)節(jié)點(diǎn)和符號(hào)名稱,以及環(huán)境變量等信息。?CAPL瀏覽器:利用CAPL瀏覽器可以創(chuàng)立用于測量和模擬面板的
CAPL程序。由于數(shù)據(jù)庫的應(yīng)用,在編程時(shí)可以使用直觀的報(bào)文和信號(hào)的名稱,而不必使用二進(jìn)制代碼的報(bào)文頭和數(shù)據(jù)。
?CANoe主程序:用于測量和模擬CAN系統(tǒng)。通過File/Database菜
單,可以在主程序中關(guān)聯(lián)一個(gè)或多個(gè)數(shù)據(jù)庫。
?面板編輯器:通過面板編輯器可以創(chuàng)立面板。面板的作用是作為用
戶和在CANoe里的模擬面板里被模擬的網(wǎng)絡(luò)節(jié)點(diǎn)的I/O接口。除了標(biāo)準(zhǔn)按鈕和開關(guān),在面板編輯器中也可使用位圖作為顯示和控制器件??梢允褂萌我獾奈粓D編輯軟件創(chuàng)立適合的位圖,然后用十面板編輯器。任何顯示和控制兀件都要和數(shù)據(jù)庫中的環(huán)境變量關(guān)聯(lián)好,這樣CAPL程序可以在CANoe主程序中讀寫顯示和控制兀件。
使用CANoe進(jìn)行開發(fā)的三個(gè)階段
使用CANoe的開發(fā)過程可以分為3個(gè)階段:
第一個(gè)階段是利用數(shù)字仿真進(jìn)行網(wǎng)絡(luò)需求分析和設(shè)計(jì)階段。該階段首先要定義網(wǎng)絡(luò)里的通訊需求,包括:需要幾個(gè)節(jié)點(diǎn);在網(wǎng)絡(luò)中要發(fā)送多少個(gè)報(bào)文;數(shù)據(jù)從哪個(gè)節(jié)點(diǎn)傳輸?shù)侥膫€(gè)節(jié)點(diǎn);每個(gè)報(bào)文的具體組成;有哪些外部的輸入輸出。然后,利用網(wǎng)絡(luò)數(shù)據(jù)庫工具CANdb++建立起CAN通訊數(shù)據(jù)庫。接下來,建立網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),選擇總線的波特率,定義節(jié)點(diǎn)的網(wǎng)絡(luò)行為,使用CANoe建立各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的模型,并通過仿真來預(yù)估在設(shè)定波特率狀況下的總線負(fù)載和延遲。通過第一個(gè)階段的仿真可以檢驗(yàn)各個(gè)節(jié)點(diǎn)功能的完善性和網(wǎng)絡(luò)的合理性,也可以監(jiān)控網(wǎng)絡(luò)負(fù)載和延遲。第一階段如圖3-3所示。
圖3-3完全數(shù)字仿真
其次個(gè)階段是節(jié)點(diǎn)實(shí)現(xiàn)和半物理仿真階段。第一個(gè)階段終止后,我們能夠得到一個(gè)完整的系統(tǒng)功能模型。接下來,可以開發(fā)真實(shí)的控制器節(jié)點(diǎn),并利用總線接口與CANoe上剩余的虛擬節(jié)點(diǎn)相連接,來測試真實(shí)節(jié)點(diǎn)的功能,如通信、糾錯(cuò)。對(duì)于并行開發(fā)的節(jié)點(diǎn),就可以不受其它節(jié)點(diǎn)開發(fā)步驟的影響。其次階段如圖3-4所示。
圖3-4半物理仿真
第三個(gè)階段是全系統(tǒng)集成階段。開發(fā)的最終階段將逐步把所有的虛擬節(jié)點(diǎn)用真實(shí)的節(jié)點(diǎn)來替代,此時(shí),CANoe只是觀測分析的工具了。在這個(gè)過程中,整個(gè)系統(tǒng)包括各個(gè)功能節(jié)點(diǎn)都能詳細(xì)的檢查到。由于利用功能模塊取代真實(shí)的網(wǎng)絡(luò)節(jié)點(diǎn)能減少錯(cuò)誤的發(fā)生,因此通過這兩種狀態(tài)的切換能檢查其功能的完善性。第三階段如圖3-5所示。
圖3-5完全物理網(wǎng)絡(luò)
3.3面板的設(shè)計(jì)
面板編輯器用于創(chuàng)立圖形面板。在圖形面板中可以在模擬測量的過程中便利地改變離散或是連續(xù)的環(huán)境變量的值。
面板編輯器既可以單獨(dú)啟動(dòng)也可以從CANoe主程序中啟動(dòng),從CANoe主程
序中啟動(dòng)時(shí),和主程序中關(guān)聯(lián)的數(shù)據(jù)庫會(huì)自動(dòng)關(guān)聯(lián)到面板編輯器中。表3-1為所有控制面板的元件一覽。
所有放在面板上的元件稱為“控件〞?!翱丶暱煞譃榭刂圃惋@示元件,控制元件(如開關(guān),按鈕等)用于改變環(huán)境變量的值,顯示元件用于顯示環(huán)境變量的值(如報(bào)警燈等)。
對(duì)于不同類型的環(huán)境變量有特定的元件可用,如對(duì)于離散的變量可用開關(guān)和顯示燈等,對(duì)于連續(xù)的變量可用滑塊,對(duì)于字符串型的環(huán)境變量可用文字輸入框。除此之外,還可以放入靜態(tài)的和環(huán)境變量無關(guān)的元件,如作為背景的位圖,用于說明的文字等。
所有的“控件〞(顯示和控制元件)必需和數(shù)據(jù)庫中的一個(gè)環(huán)境變量或信號(hào)相關(guān)聯(lián)。
3.4CAPL編程
3.4.1CAPL簡介
CANoe的通用性、易用性很大程度上是由于用戶可以對(duì)CANoe進(jìn)行編程。CAPL是CANAccessProgrammingLanguage的縮寫。CAPL是一種類C語言的程序語言。利用CAPL可以在單個(gè)的應(yīng)用中對(duì)CANoe進(jìn)行編程。在網(wǎng)絡(luò)節(jié)點(diǎn)的開發(fā)過程中,往往會(huì)出現(xiàn)其他網(wǎng)絡(luò)節(jié)點(diǎn)還不可用的問題,為了模擬系統(tǒng)環(huán)境,這些網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)據(jù)流要通過CAPL的編程來模擬,CAPL節(jié)點(diǎn)作為功能塊插入到數(shù)據(jù)流圖中。CAPL的輸入是事件發(fā)生器,CAPL可以對(duì)報(bào)文,定時(shí)器以及鍵盤輸入做出反應(yīng),所以CANoe可以用來監(jiān)控和檢測特別的問題,如CANoe可以對(duì)發(fā)布到總線的特定報(bào)文做出反應(yīng),然后可以調(diào)用戶自定義的分析和測試函數(shù)。CAPL同樣也可為控制器的開發(fā)模擬總線環(huán)境,通過CAPL,對(duì)怎樣的事件做出怎樣的反應(yīng)可以完全由用戶來定義決定。由于CANoe有兩個(gè)硬件接口,通過CAPL的編程也可以實(shí)現(xiàn)網(wǎng)關(guān)的功能。
必需要注意的是,在測試設(shè)置面板中插入的CAPL塊能產(chǎn)生報(bào)文,但是不能發(fā)布到真實(shí)總線中去,假使要向總線發(fā)布報(bào)文,必需把CAPL塊插入到模擬設(shè)置面板中。
在CAPL編程中應(yīng)盡量引用數(shù)據(jù)庫中的報(bào)文,這樣做對(duì)于提高開發(fā)效率十分有用,例如,假使要改變某條報(bào)文的優(yōu)先級(jí),只需改變數(shù)據(jù)庫中這條報(bào)文的識(shí)別碼,然后重新編譯CAPL程序即可實(shí)現(xiàn),否則要在CAPL中去改變每個(gè)用到這條報(bào)文的地方,十分繁瑣而且簡單出錯(cuò)。3.4.2CAPL數(shù)據(jù)類型
一、CAPL數(shù)據(jù)類型如下表所示
二、數(shù)據(jù)定義變量定義inti;
message0x123HiRain;messageMotorDataVector;三、關(guān)鍵字this
this代表觸發(fā)事件的對(duì)象onmessage100{bytebyte_0;
byte_0=this.byte(0);//將ID為100的報(bào)文的信號(hào)byte的值送變量byte_0,this指ID為100的報(bào)文...}
onenvVarSwitch{intval;
val=getvalue(this);得到環(huán)境變量Switch的值送val,this指Switch...}
3.4.3CAPLBroswer
3.4.3CAPL事件
1、消息事件
?onmessage123//對(duì)消息123(dec)反應(yīng)?onmessage0x123//對(duì)消息123(hex)反應(yīng)
?onmessageMotorData//對(duì)消息MotorData(符號(hào)名字)反應(yīng)?onmessageCAN1.123//對(duì)CAN通道1收到消息123反應(yīng)?onmessage*//對(duì)所有消息反應(yīng)
?onmessage100-200//對(duì)100-200間消息反應(yīng)2、鍵盤事件
?onkey0x20//按空格鍵反應(yīng)?onkeyF1//按F1鍵反應(yīng)
?onkeyCtrl-F12//按Ctrl+F12鍵反應(yīng)?onkeyPageUP//按PageUp鍵反應(yīng)onkeyHome//按Home鍵反應(yīng)?onkey*//按所有鍵反應(yīng)
onkey‘a(chǎn)’//對(duì)按鍵a反應(yīng)onkey‘‘//對(duì)空格反應(yīng)3、時(shí)間事件定時(shí)器聲明
?msTimermyTimer;//將myTimer申明ms為單位的變量?timermyTimer;//將myTimer申明s為單位的變量定時(shí)器函數(shù)
?setTimer(myTimer,20);//將定時(shí)值設(shè)定為20ms,并啟動(dòng)?cancelTimer(myTimer);//中止定時(shí)器myTimer定時(shí)器事件
?ontimermyTimer//對(duì)myTimer設(shè)定的時(shí)間到反應(yīng)4、環(huán)境變量事件環(huán)境變量函數(shù)
?getValue()//獲取環(huán)境變量的值?putValue()//設(shè)置環(huán)境變量的值環(huán)境變量事件?onenvVarXXX5、輸出文本W(wǎng)riteWindow?write函數(shù)inth=100;
charch=‘a(chǎn)’;
chars100[8]=“hundred〞;
write(“Hundredasanumber:%d,%x〞,h,h);write(“Hundredasastring:%s〞,s100);
write(“Thesquarerootoftwois%6.4g〞,sqrt(2.0));3.4.4CAPL響應(yīng)1、對(duì)的報(bào)文響應(yīng)onmessage0x64{
if(this.byte(2)==0xFF)
write(“Thirdbyteofthemessageisinvalid〞);}
onmessageMotorData{
if(this.temperature.phys>=150)
write(“Warning:criticaltemperature〞);}
2、對(duì)鍵盤響應(yīng)onkey‘a(chǎn)’{
messageMotorDatamMoDa;mMoDa.temperature.phys=60;mMoDa.speed.phys=4300;output(mMoDa);}
onkey‘b’{
message100m100={dlc=1};m100.byte(0)=0x0B;output(m100);}
3、定時(shí)器處理Variables{
message0x555msg1={dlc=1};msTimertimer1;}
onstart{
setTimer(timer1,100);}
ontimertimer1{
setTimer(timer1,100);
msg1.byte(0)=msg1.byte(0)+1;output(msg1);}
4、環(huán)境變量的處理onenvVarevSwitch{
messageMotorDatamsg;
msg.bsSwitch=getValue(this);output(msg);}
3.5CANoe數(shù)據(jù)庫
在一個(gè)聯(lián)網(wǎng)的總線系統(tǒng)上的所有數(shù)據(jù)和它們之間的相互關(guān)系,尋常都存儲(chǔ)在一個(gè)集中數(shù)據(jù)庫中,CANoe提供一個(gè)數(shù)據(jù)庫編輯器,在這里可以隨意的創(chuàng)立和更改數(shù)據(jù)庫中的信息。由數(shù)據(jù)庫編輯器創(chuàng)立的數(shù)據(jù)庫可以被各個(gè)程序和工具調(diào)用,如圖3-6所示。數(shù)據(jù)庫中的兩個(gè)對(duì)象之間可以通過關(guān)聯(lián)建立聯(lián)系。例如,將一個(gè)信號(hào)和一個(gè)報(bào)文關(guān)聯(lián),就可以決定在哪條報(bào)文中發(fā)送這條信號(hào),可能的關(guān)聯(lián)關(guān)系見表3-2。
表3-2數(shù)據(jù)庫中可關(guān)聯(lián)的對(duì)象
圖3-6數(shù)據(jù)庫和其他應(yīng)用
下面對(duì)CANoe中的數(shù)據(jù)庫中的各種對(duì)象做一下簡要說明:整車
即整車上的網(wǎng)絡(luò)系統(tǒng),可能包括一個(gè)以上的總線網(wǎng)絡(luò),相互之間由網(wǎng)關(guān)進(jìn)行連接。網(wǎng)絡(luò):
尋常包括多個(gè)控制單元,控制單元被連接到同一個(gè)總線上,通過總線交換信息??刂茊卧?/p>
控制單元是在網(wǎng)絡(luò)中分布的執(zhí)行單元??刂茊卧ㄟ^屬于它的網(wǎng)絡(luò)節(jié)點(diǎn)和網(wǎng)絡(luò)交換信息。一個(gè)控制單元可以包括多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)。環(huán)境變量也被指派到不同的控制單元。由于控制單元在網(wǎng)絡(luò)中不是獨(dú)立的,在CANoe測試運(yùn)行的時(shí)候不能改變控制單元的名稱和描述。環(huán)境變量:
CANoe提供環(huán)境變量來模擬網(wǎng)絡(luò)節(jié)點(diǎn)針對(duì)功能總線做出的反應(yīng)。環(huán)境變量由系統(tǒng)環(huán)境中的事件和狀態(tài)來描述,如外界壓力,溫度,開工位置等。通過用戶定義的控制面板可以隨意地更改環(huán)境變量,也即改變系統(tǒng)環(huán)境中的狀態(tài)。
在CAPL中對(duì)于環(huán)境變量變化做出反應(yīng)的事件可用“onenvVar〞語句來描述。GetValue()語句和putValue()語句用來讀和寫環(huán)境變量。
環(huán)境變量由以下系統(tǒng)參數(shù)來定義,?符號(hào)化的名稱
?數(shù)據(jù)類型,包括整型,字符串,浮點(diǎn)型,數(shù)據(jù)型等?修改權(quán),包括無限制,只讀(傳感器型),可寫(執(zhí)行元件型),特定控
制器可讀寫等
?單位,機(jī)環(huán)境變量的物理單位?最大最小值?長度?解釋網(wǎng)絡(luò)節(jié)點(diǎn):
網(wǎng)絡(luò)節(jié)點(diǎn)是控制單元和網(wǎng)絡(luò)交換數(shù)據(jù)的接口,控制單元通過網(wǎng)絡(luò)節(jié)點(diǎn)從網(wǎng)絡(luò)收發(fā)信息。網(wǎng)絡(luò)節(jié)點(diǎn)由以下系統(tǒng)參數(shù)來定義
?符號(hào)化的網(wǎng)絡(luò)節(jié)點(diǎn)名稱?地址節(jié)點(diǎn)組:
多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)可以組成節(jié)點(diǎn)組,例如,網(wǎng)絡(luò)上所有同一家制造商提供的節(jié)點(diǎn)可以組成一個(gè)節(jié)點(diǎn)組。節(jié)點(diǎn)組也可用來構(gòu)建網(wǎng)絡(luò)的變種,所有車型變種都會(huì)用到的節(jié)點(diǎn)可以組成一個(gè)節(jié)點(diǎn)組,這個(gè)節(jié)點(diǎn)組和網(wǎng)絡(luò)的所有變種相關(guān)聯(lián),選裝的網(wǎng)絡(luò)節(jié)點(diǎn)再單獨(dú)和網(wǎng)絡(luò)關(guān)聯(lián)。報(bào)文:
即在總線上傳遞的報(bào)文信息,由以下系統(tǒng)參數(shù)定義,?符號(hào)化的報(bào)文名稱?識(shí)別位(CANID),在一個(gè)網(wǎng)絡(luò)中必需統(tǒng)一分派,不能重復(fù)使用?字節(jié)數(shù)?傳遞類型
?循環(huán)時(shí)間(假使報(bào)文被周期性的發(fā)送)?網(wǎng)絡(luò)節(jié)點(diǎn),即發(fā)送這條報(bào)文的網(wǎng)絡(luò)節(jié)點(diǎn)
?報(bào)文信號(hào)?解釋信號(hào):
?信號(hào)是信息的最小單元,由以下系統(tǒng)參數(shù)定義?符號(hào)化信號(hào)名稱?信號(hào)長度?格式?數(shù)據(jù)類型
?系數(shù),基準(zhǔn)和物理單位。“原始值〞是網(wǎng)絡(luò)上傳遞的實(shí)際數(shù)據(jù),“物
理值〞是真實(shí)反應(yīng)的物理量大小(如速度,轉(zhuǎn)速,溫度等)。信號(hào)轉(zhuǎn)換公式用于把原始值轉(zhuǎn)換成物理值:物理值=(原始值×系數(shù))+基準(zhǔn)。
?初始值。用物理值來定義。
?最大和最小值。用物理值來定義。?單位。物理量的單位。?解釋
3.6CANoe主窗口設(shè)計(jì)
CANoe主程序中包括以下窗口:a.模擬設(shè)置窗口
模擬設(shè)置窗口中圖形化顯示被模擬的總線和網(wǎng)絡(luò)節(jié)點(diǎn)。在模擬設(shè)置窗口中,模擬總線用紅線來表示,真實(shí)總線用黑線來表示。它們之間通過PC卡連接在一起。如圖3-7所示。
圖3-7仿真設(shè)置窗口
b.測量設(shè)置窗口
測量設(shè)置窗口中顯示數(shù)據(jù)流的示意圖,包括數(shù)據(jù)源,基本功能塊,熱點(diǎn),數(shù)據(jù)接受器等。在在線模式下CAN卡作為數(shù)據(jù)源,記錄總線上的報(bào)文并把它們發(fā)
到CANoe。測量窗口下的數(shù)據(jù)流是有方向的,總是從左邊的連接符號(hào)(連到模擬設(shè)置窗口)流向右邊的評(píng)價(jià)窗口。測量設(shè)置窗口例子如圖2-6所示。
圖3-8測量配置窗口
c.跟蹤窗口
所有到達(dá)跟蹤塊的輸入的數(shù)據(jù)都以文本形式在跟蹤窗口中顯示。圖3-9顯示了跟蹤窗口的一個(gè)例子。
圖3-9跟蹤窗口
D.圖形窗口
圖形窗口用來顯示信號(hào)隨時(shí)間的變化。假使使用了數(shù)據(jù)庫,信號(hào)的值可以直接作為物理變量顯示在圖形窗口上,如發(fā)動(dòng)機(jī)轉(zhuǎn)速可以直接以“轉(zhuǎn)/分〞的單位顯示。e.寫窗口
寫窗口在CANoe中有兩個(gè)作用:第一,測量過程中的重要系統(tǒng)信息在這顯示,如:測量開始和終止的時(shí)間,預(yù)設(shè)的波特率,記錄功能的觸發(fā),測量終止后的統(tǒng)計(jì)報(bào)告等。其次,在CAPL編程中用了“write()〞語句輸出的信息都在這顯示。
f.數(shù)據(jù)窗口
數(shù)據(jù)窗口中顯示信號(hào)的值,信號(hào)即CAN報(bào)文中的一個(gè)數(shù)據(jù)段,如發(fā)動(dòng)機(jī)控制器發(fā)出的CAN報(bào)文中的某一段表示發(fā)動(dòng)機(jī)轉(zhuǎn)速。假使用了數(shù)據(jù)庫功能,那么在數(shù)據(jù)窗口中的數(shù)據(jù)可以以物理變量的形式顯示,如發(fā)動(dòng)機(jī)轉(zhuǎn)速可以以“轉(zhuǎn)/分〞的單位顯示。在數(shù)據(jù)窗口中被顯示的信號(hào)要預(yù)先定義好。
g.統(tǒng)計(jì)窗口
統(tǒng)計(jì)窗口總可以顯示總線上報(bào)文之間的平均間隔時(shí)間,也可顯示每秒總線上的報(bào)文數(shù)量。同時(shí)還可以后臺(tái)統(tǒng)計(jì)所有活動(dòng)的總線,其結(jié)果可以顯示在寫窗口中,也可以儲(chǔ)存下來。f.總線統(tǒng)計(jì)窗口
顯示如總線負(fù)載率,峰值負(fù)載,錯(cuò)誤幀等統(tǒng)計(jì)信息,如圖3-10所示
圖3-10總線統(tǒng)計(jì)窗口
第四章燈光控制系統(tǒng)仿真
4.1通信數(shù)據(jù)庫的建立4.1.1概述
進(jìn)行CAN網(wǎng)絡(luò)系統(tǒng)的開發(fā),開發(fā)人員首先需求做的是系統(tǒng)功能的定義,即定義該網(wǎng)絡(luò)系統(tǒng)通信對(duì)象,根據(jù)通信特點(diǎn)選擇所需要的網(wǎng)絡(luò)類型,以及選擇網(wǎng)絡(luò)的屬性(例如波特率);同時(shí)需要考慮網(wǎng)絡(luò)里的通信需求:即所需要的節(jié)點(diǎn)數(shù)目,所需要發(fā)送報(bào)文(Message)的數(shù)量及ID等;定義報(bào)文的收發(fā)節(jié)點(diǎn),即每個(gè)報(bào)文是從哪個(gè)節(jié)點(diǎn)(源節(jié)點(diǎn))傳送至哪個(gè)節(jié)點(diǎn)(目標(biāo)節(jié)點(diǎn));每個(gè)報(bào)文所包含的具體信號(hào)(Signal);定義每個(gè)信號(hào)的數(shù)據(jù)類型和對(duì)應(yīng)真實(shí)物理值之間的轉(zhuǎn)換方式,以及信號(hào)在報(bào)文的數(shù)據(jù)場中的地址分派等等。
在上述定義過程中,可使用Vector公司的網(wǎng)絡(luò)數(shù)據(jù)庫工具CANdb++,創(chuàng)立和管理前述分布式網(wǎng)絡(luò)定義和通信數(shù)據(jù),能檢查出概念定義的一些錯(cuò)誤并及時(shí)改正,同時(shí)可以幫助工程設(shè)計(jì)人員對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化。另外,在CANdb++中,還可以加上環(huán)境變量來描述外部的輸入輸出。
本文只進(jìn)行燈光控制系統(tǒng)的仿真設(shè)計(jì),不考慮其它因素,因此通信數(shù)據(jù)庫比較簡單。在CANoe中工具選擇CANdb++數(shù)據(jù)庫編輯器,新建一個(gè)數(shù)據(jù)庫,命名為Vehicle_light。4.1.2報(bào)文的建立
報(bào)文即網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送的一幀數(shù)據(jù)信息,在CANoe中主要定義標(biāo)識(shí)符和數(shù)據(jù)
位,其他部分由CANoe根據(jù)CAN協(xié)議來完成。對(duì)報(bào)文進(jìn)行命名時(shí)要注意統(tǒng)一規(guī)范并且要便于理解,如全部以“m〞開頭,代表這是“Message〞,燈光控制器發(fā)送的第一條報(bào)文為“mLight_1〞,其次條為“mLight_2〞,儀表控制器發(fā)送的第一條為“mMeter_1〞等,有的控制器在目前雖然只發(fā)一條報(bào)文,但是為了以后擴(kuò)展便利,應(yīng)同樣加上編號(hào)。
接下來在同一網(wǎng)絡(luò)中對(duì)信息進(jìn)行標(biāo)識(shí)符分派,由于在CAN通訊中標(biāo)識(shí)符直接決定了報(bào)文的優(yōu)先級(jí),所以對(duì)于標(biāo)識(shí)符的分派十分重要,對(duì)于比較緊急的狀況報(bào)文應(yīng)具有較高的優(yōu)先級(jí)。中因本文只需要定義一條報(bào)文,所以標(biāo)識(shí)就沒有什么意義了,定義報(bào)文ID為0x01。
在數(shù)據(jù)庫左側(cè)樹目錄中選擇message項(xiàng),右擊選擇new?彈出報(bào)文定義對(duì)話框,在對(duì)話框中可以定義報(bào)文的名稱、ID、幀類型等。如圖4-1所示
圖4-1創(chuàng)立報(bào)文
4.1.3信號(hào)的建立
信號(hào)即報(bào)文中的某一段,代表某一個(gè)物理量或信號(hào),是CAN中信息傳遞的最小單位。同樣對(duì)于信號(hào)的命名要注意同樣規(guī)范和便于理解,例如以“jinguang〞代近光燈信號(hào),以“Bwudeng〞代表后節(jié)點(diǎn)霧燈信號(hào)。對(duì)于數(shù)值量來說,所表示數(shù)值的范圍和需要的精度決定了系數(shù)和基準(zhǔn),如轉(zhuǎn)速信號(hào),假使要確切到0.125轉(zhuǎn)/分,就以0.125為系數(shù),精度越高,表示同樣范圍的數(shù)據(jù)就需要占用更多的數(shù)據(jù)位。如發(fā)動(dòng)機(jī)轉(zhuǎn)速,以0.125為系數(shù),占用16位(2個(gè)字節(jié)),可以表達(dá)最大為8191.875轉(zhuǎn)/分的轉(zhuǎn)速,假使要表示負(fù)的量,如冷卻液溫度等,就把需要表達(dá)的最低值定為基準(zhǔn),如-40,CANdb++Editor中可以自動(dòng)根據(jù)基準(zhǔn)值和參數(shù)以及信號(hào)所占的位數(shù)來計(jì)算信號(hào)的最大值和最小值。對(duì)于開關(guān)量,只占用一位,在值定義里說明含義,如“0〞代表關(guān),“1〞代表開。
在數(shù)據(jù)庫左側(cè)樹目錄中選擇Singel項(xiàng),右擊選擇new?彈出信號(hào)定義對(duì)話框,在對(duì)話框中可以定義信號(hào)的名稱、位索引類型、值類型、物理單位,系數(shù)、偏移量等。如圖4-2所示
圖4-2創(chuàng)立信號(hào)
本文定義的和燈光通訊相關(guān)的信號(hào)如表4-1所示。
表4-1定義的信號(hào)
定義好報(bào)文和信號(hào)后還要將報(bào)文和信號(hào)進(jìn)行關(guān)聯(lián),報(bào)文與信號(hào)關(guān)聯(lián)有多種方式,可以在定義報(bào)文時(shí)直接參與關(guān)聯(lián)的信號(hào),或在定義信號(hào)時(shí)參與關(guān)聯(lián)的報(bào)文,還可以在數(shù)據(jù)庫左側(cè)樹目錄中直接選擇一個(gè)信號(hào)按住左鍵拖到要關(guān)聯(lián)的報(bào)文下,報(bào)文和信號(hào)進(jìn)行關(guān)聯(lián)時(shí),需要確定信號(hào)在報(bào)文中的起始位置,可能值為0~63。
在CANoe中將信號(hào)和報(bào)文關(guān)聯(lián)完畢后,在報(bào)文屬性的Layout窗口中可以十分直觀地看到信號(hào)在報(bào)文中的分布狀況,如圖4-3所示,一幀報(bào)文的8個(gè)字節(jié)64位以表格的形式被直觀地表達(dá)出來,在這個(gè)表格中,可以看到64位的每一位各被什么信號(hào)占用,每個(gè)信號(hào)占用的位的長度和起始終止位置。
4.1.4環(huán)境變量的建立
環(huán)境變量的命名也需要注意規(guī)范和便于理解,如以“SW1〞代表開關(guān)1的控制型環(huán)境變量,“Ljinguang〞代表近光燈顯示型環(huán)境變量。這樣的統(tǒng)一命名對(duì)于后期的使用十分有利。
在數(shù)據(jù)庫左側(cè)樹目錄中選擇Environment項(xiàng),右擊選擇new?彈出環(huán)境變量定義對(duì)話框,在對(duì)話框中可以環(huán)境變量的名稱、值類型、最大值,最小值等。如圖4-3所示
圖4-3環(huán)境變量的定義
本項(xiàng)目中建立的環(huán)境變量清單如表4-2所示:
表4-2定義的環(huán)境變量
4.2建立虛擬節(jié)點(diǎn)
對(duì)于一個(gè)和CANoe相連的真實(shí)網(wǎng)絡(luò)來說,所有CANoe發(fā)出的報(bào)文信號(hào)都是從CANoe的CAN(CANcaseXL)卡發(fā)出的,但是在CANoe軟件內(nèi)部,不同的報(bào)文信號(hào)是由不同的虛擬節(jié)點(diǎn)發(fā)出來的,為了仿真燈光控制系統(tǒng),需要在CANoe軟件里創(chuàng)立各個(gè)節(jié)點(diǎn)。接下來就要在CANoe的SimulationSetup窗口中構(gòu)建虛擬網(wǎng)絡(luò),包括各個(gè)被模擬的節(jié)點(diǎn)。完成純數(shù)字仿真
SimulationSetup窗口初始界面如圖4-4所示
圖4-4SimulationSetup初始界面
圖中的方框代表一個(gè)總線系統(tǒng),紅線代表虛擬的總線,黑線代表實(shí)際的總線,CANoe提供的CAN卡(CANcaseXL)是虛擬總線和實(shí)際總線之間的接口。右鍵點(diǎn)擊這兩條線,出現(xiàn)如圖4-5所示界面:
圖4-5參與網(wǎng)絡(luò)節(jié)點(diǎn)
Insertnetworknode可以在總線上參與一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn);Inserttestmodule可以在總線上參與一個(gè)測試模塊;Insertgeneratorblock可以在總線上參與一個(gè)發(fā)生器(可以不用capl語言就可以在總線上發(fā)出想傳送的信息);
Insertinteractivegeneratorblock可以在總線上參與一個(gè)內(nèi)部發(fā)生器(可以在用measurement監(jiān)測的時(shí)候就能對(duì)設(shè)定的動(dòng)作進(jìn)行操作,發(fā)出信息);
InsertreplayblockCAN可以在總線上參與一個(gè)重放模塊,只需在其中設(shè)置measurement中的log保存下來的*.asc文件進(jìn)行播放,就可以馬上模擬出方才總線上報(bào)文發(fā)送的狀況;
Switchallblockstosimulation即把所有總線上的模塊馬上與總線相連;Switchallblockstoreal-timemode即把所有總線上的模塊馬上與總線斷開。
在SimulationSetup中參與以下的虛擬網(wǎng)絡(luò)節(jié)點(diǎn):Main主控制器
Front前車燈控制器Back后車燈控制器
虛擬節(jié)點(diǎn)建立設(shè)置完畢后,還要將上一章中建立的數(shù)據(jù)庫和此SimulationSetup總線關(guān)聯(lián),在右側(cè)樹狀圖右鍵點(diǎn)擊Databases,出現(xiàn)如圖4-6所示界面:
圖4-6參與數(shù)據(jù)庫
點(diǎn)擊ADD可參與數(shù)據(jù)庫,如Vehicle_Light.dbc。完成后的SimulationSetup如圖4-7所示。
圖4-7完成的模擬設(shè)置窗口
4.3創(chuàng)立面板
面板編輯器中創(chuàng)立的面板是人機(jī)交互的界面,通過面板可以以直觀的方式讓CANoe按操的意圖發(fā)送出相應(yīng)的CAN報(bào)文
4.3.1建立控制面板
在CANoe工具中選擇Paneleditor,然后在面板上添加開關(guān)和燈,設(shè)計(jì)控制面板如圖4-8所示:
圖4-8控制面板
開關(guān)用于輸入控制值,燈根據(jù)開關(guān)狀態(tài)亮滅。
面板上的控件都要和相應(yīng)的環(huán)境變量相關(guān)聯(lián),選擇一控件右擊—》配置,開啟環(huán)境變量配置對(duì)話框如圖4-9所示。設(shè)置關(guān)聯(lián)的環(huán)境變量。對(duì)于顯示燈除了和相關(guān)的顯示環(huán)境變量關(guān)聯(lián)外,還需要指定對(duì)應(yīng)的位圖,位圖上有開關(guān)的不同狀態(tài)的顯示,設(shè)置和位圖如圖4-10所示。
圖4-9開關(guān)型環(huán)境變量的配置
CAN控制器在上電或硬件復(fù)位后必需進(jìn)行初始化操,然后才能進(jìn)行發(fā)送和接收數(shù)據(jù)。SJA1000CAN控制器的初始化主要設(shè)置以下幾項(xiàng)內(nèi)容:通信方式、濾波方式、驗(yàn)收濾波器設(shè)置、總線定時(shí)等。
SJA1000初始化流程圖如下:
開始初始化工作方式設(shè)為復(fù)位模式設(shè)通信方式為PeliCAN設(shè)濾波工作方式設(shè)驗(yàn)收代碼和驗(yàn)收屏蔽寄放器設(shè)通信波特率輸出控制字清除錯(cuò)誤代碼寄放器初始化終止
SjA1000初始化程序如下:voidSJA1000_Config_Self(void){
SJAEntryResetMode();//進(jìn)入復(fù)位模式WriteSJAReg(REG_CAN_CDR,0xc8);//選擇PeliCAN模式SetBitMask(REG_CAN_MOD,AFM_BIT);//選擇單濾波模式
WriteSJARegBlock(16,//設(shè)置驗(yàn)收代
//碼/屏蔽寄放器
WriteSJAReg(REG_CAN_OCR,0x1a);//設(shè)置輸出管腳
SJASetBaudrateStandard(CAN_Baudrate_Filter_Buffer[0]);//設(shè)置總線定時(shí)
//器,確定波特率
SJAQuitResetMode();//退出復(fù)位模式}
5.2節(jié)點(diǎn)的發(fā)送程序
發(fā)送節(jié)點(diǎn)報(bào)文發(fā)送采用周期查詢方式,只要總線空閑就可向總線上發(fā)送報(bào)文,發(fā)送節(jié)點(diǎn)程序流程圖如下:
開始讀狀態(tài)寄放器發(fā)送緩沖區(qū)空閑?Y寫發(fā)送標(biāo)識(shí)符N寫發(fā)送數(shù)據(jù)置發(fā)送請求位終止節(jié)點(diǎn)發(fā)送程序如下:Send_Message(){while(1)
{if((ReadSJAReg(REG_CAN_SR)//寫幀信息和標(biāo)識(shí)符WriteSJAReg(21,data1);WriteSJAReg(22,data2);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年小區(qū)違停面試題及答案
- 2025年大學(xué)聲樂測試題及答案
- 2025年英語語用測試試題及答案
- 2025年海南會(huì)考試題及答案地理
- 工業(yè)分析與檢驗(yàn)復(fù)習(xí)測試附答案
- 2025年行業(yè)知識(shí)面試題及答案
- 2025年晶體結(jié)構(gòu)測試題及答案
- 2025年車體安全測試題及答案
- 2025年遼寧工會(huì)面試題及答案
- 2025年語文惠州中考試題及答案
- 國自科項(xiàng)目申報(bào)協(xié)議書模板
- 第14課 明清時(shí)期的經(jīng)濟(jì)、科技與文化(課件)-【中職專用】《中國歷史》魅力課堂教學(xué)三件套(高教版2023?基礎(chǔ)模塊)
- 人教版八年級(jí)音樂下冊(簡譜)第1單元《原始狩獵圖》教學(xué)設(shè)計(jì)
- 行政或后勤崗位招聘筆試題及解答(某大型國企)2025年
- 2024年中考英語閱讀理解C篇真題匯編(附答案)1635
- 2024年度教師培訓(xùn)計(jì)劃7篇
- DL-T+544-2012電力通信運(yùn)行管理規(guī)程
- 零食門市轉(zhuǎn)讓協(xié)議書范本
- 家庭經(jīng)濟(jì)困難學(xué)生認(rèn)定申請表
- 2024版工程合同變更流程
- 運(yùn)用PDCA縮短ST段抬高型急性心肌梗死病人在急診停留時(shí)間
評(píng)論
0/150
提交評(píng)論