999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于CAPL編程的CAN網絡仿真模型搭建方法研究

2022-07-28 02:02:02李桂偉丁健蔡永祥
汽車電器 2022年7期

李桂偉,丁健,蔡永祥

(中汽研(天津)汽車工程研究院有限公司,天津 300300)

CAN總線是一種串行總線通信協議,目前在汽車的電子控制單元中應用十分廣泛,能夠有效實現汽車上不同控制器之間的數據交互。CANoe軟件是德國Vector公司推出的一款專業CAN/LIN等總線網絡開發和測試軟件,利用該軟件可以實現整車的網絡建模、仿真和測試等工作。目前CANoe軟件已在汽車行業內廣泛使用。CAPL(CAN Access Programming Language)語言是CANoe軟件自帶的一種類C編程語言,使用CAPL語言能夠擴展CANoe軟件功能,實現對軟件功能的二次開發。

本文針對于控制器功能邏輯驗證中CAN總線網絡仿真需求,利用CANoe軟件的CAPL編程語言結合Interaction Layer(以下簡稱IL)交互層的方式,搭建整車總線網絡仿真模型,幫助測試人員更快速更高效地完成整車不同控制器的功能邏輯驗證工作。

1 總線仿真需求分析

控制器功能邏輯驗證處于整車開發V模型的右邊,主要包括了硬件在環測試、黃板車臺架測試、實車測試等(圖1)。在功能邏輯驗證中對于不同的被測件,測試人員需要模擬不同的總線環境、發送事件報文、注入總線故障等,因此待開發的網絡仿真模型應同時具有以下功能。

圖1 整車開發V模型

1)能夠快速配置總線環境,靈活切換控制器報文的發送/停止,最大程度上滿足不同被測件的總線環境要求。

2)能夠在模型運行過程中動態改變仿真報文的周期,滿足故障注入的測試要求。

3)網絡仿真模型應具有事件報文發送能力。

4)網絡仿真模型應能夠方便測試人員改變信號的信號值。

5)網絡仿真模型應包含CheckSum和Rolling Counter等校驗算法,避免因不正確的算法引入非預期的總線故障。

2 創建網絡數據庫

整車網絡數據庫利用CANoe軟件提供的CANdb++數據庫編輯工具結合汽車研發過程中的整車通信矩陣進行創建(圖2)。在整車通信矩陣中,定義了網絡上所有的報文信息(報文ID、報文發送類型等)、信號信息(信號長度、信號起始位、真值表等)以及報文的發送和接收節點。使用CANdb++編輯工具可以將整車通信矩陣在CANdb++編輯器中創建相應的網絡節點對象、報文對象、信號對象,對象創建完成之后,再依次建立節點與報文、報文與信號之間的所屬關系。

圖2 編輯網絡數據庫

由于搭建網絡仿真模型需要使用CANoe軟件IL交互層,因此在創建網絡數據庫時對數據庫的信息完整度要求較高,因此除了建立網絡節點、報文和信號等對象外,還需要為節點、報文和信號定義屬性,如圖3所示。為了滿足IL交互層使用要求,設置的節點屬性應包括:ILUsed、NodeLayer-Modules,報文 屬性應包括:GenMsgILSupport、GenMsgCycleTime、GenMsgSendType等。

圖3 節點、報文屬性設置

其中NodeLayerModules屬性定義了IL交互層使用的動態鏈接庫,即“CANoeILNLVector.dll”,該動態鏈接庫是實現IL交互層報文仿真的主要部分,在CAPL程序實現的邏輯控制中也會用到動態鏈接庫中定義的函數。

3 定義CAPL程序

CAPL程序是網絡仿真模型中邏輯控制的核心部分,利用系統變量和不同類型的CAPL事件,同時結合CANoeILNLVector.dll動態鏈接庫提供的IL交互層控制函數,共同完成CAPL程序編寫,實現網絡仿真模型邏輯控制功能。

在編寫CAPL程序之前,首先需要創建模型需要的系統變量。系統變量搭建起控制面板和CAPL程序之間的橋梁,測試人員可以通過控制面板上關聯了系統變量的控件控制CAPL程序中事件程序的執行。為了滿足邏輯驗證對網絡仿真模型的功能需求,模型需要使用的系統變量如圖4所示,其中NODES組中定義的變量是為了實現節點報文的發送/停止功能,EventSend組中的變量實現事件報文控制功能,CyclicSet組、EnableCyclic組和SelectedPeriod組中的變量共同組合實現報文周期的動態更改及控制功能。

圖4 創建系統變量

系統變量創建完成之后,可以利用系統變量、CAPL事件和IL交互層控制函數構建仿真模型的CAPL程序。在CAPL程序中用到的主要事件是on start事件和on sysvar事件,用到 的IL交 互 層 控 制函 數 分 別為:ILDisableMsg()、ILEnableMsg()、ILSetMsgEvent()、ILFaultInjectionSetMsgCycleTime()、ILFaultInjectionResetMsgCycleTime()、ILControlStart()。以BCM節點為例,CAPL程序如下。

on start

{

//IL交互層控制初始化

ILControlStart();

ILDisableMsg("BCM1");

ILDisableMsg("BCM2");

}

on sysvar(IL::NODES::Enable_AllNodes|IL::NODES::Enable_BCM)

{

//控制報文發送/停止

if(@sysvar::IL::NODES::Enable_AllNodes&&@sysvar::

IL::NODES::Enable_BCM)

{

ILEnableMsg("BCM1");

ILEnableMsg("BCM2");

}

else

{

ILDisableMsg("BCM1");

}

}

on sysvar(IL::EnableCyclic::IL_BCM::BCM1|IL::SelectedPeriod::IL_BCM::BCM1|IL::CyclicSet::IL_BCM::BCM1)

{

//設置報文的發送周期

if(@sysvar::IL::EnableCyclic::IL_BCM::BCM1&&@sysvar::IL::SelectedPeriod::IL_BCM::BCM1)

{

ILFaultInjectionSetMsgCycleTime(BCM1,@sysvar::IL::CyclicSet::IL_BCM::BCM1);

}

從國內需求端來看,根據記者調查,東北地區生產企業的采購在持續進行,大型復合肥企業的生產也未間斷,大型流通企業也在有節奏地進行儲備。短時間來看,尿素市場供需平穩。

else

{

ILFaultInjectionResetMsgCycleTime(BCM1);

}

}

on sysvar(IL::EventSend::IL_BCM::BCM1|IL::EventSend::IL_BCM::BCM2)

{

//事件報文控制

if(@sysvar::IL::EventSend::IL_BCM::BCM1==1)

ILSetMsgEvent(BCM1);

if(@sysvar::IL::EventSend::IL_BCM::BCM2==1)

ILSetMsgEvent(BCM2);

}

上述程序實現了網絡仿真模型中BCM節點報文發送/停止功能、報文周期改變功能、事件報文發送功能等。對于報文中包含的Rolling Counter信號和Checksum校驗信號,為了避免引入不必要的總線故障,可以通過調用如下的兩個自定義函數實現Rolling Counter信號和Checksum校驗信號的正確發送。

CLOCK_Signal(signal*sig,int Maxvalue)

{

//CLOCK函數

(getSignal(sig)==Maxvalue)?$sig=0:$sig++;

}

CRC8_Signal(signal*sig,message*msg)

{

//CRC算法函數

byte value[7];

byte crc=0xFF;

byte poly=0x1D;

int byte_flag=0,bit_flag=0,num=0;

for(num=0;num<7;num++)

{

value[num]=msg.byte(num);

}

for(byte_flag=0;byte_flag<7;byte_flag++)

{

crc^=value[byte_flag];

for(bit_flag=0;bit_flag<8;bit_flag++)

{

if(crc&0x80)

{

crc=(crc<<1)^poly;

}

else

{

crc=(crc<<1);

}

}

}

$sig=crc;

}

4 編輯控制面板

為方便測試人員操作,控制面板上的控件需直觀體現仿真模型的主要功能,例如面板上應包括節點報文發送/停止控件、信號控件、報文周期更改控件等,如圖5所示。在編輯控制面板時,信號對應的控件需要與數據庫中的信號進行關聯,而控制報文發送/停止、周期更改等的控件需要與已創建的系統變量進行關聯。通過控制面板,測試人員可以在面板上進行勾選、設置等操作,實現快速便捷的仿真控制。

圖5 編輯控制面板

5 仿真模型驗證

在網絡仿真模型搭建完成后,利用CANoe軟件運行仿真模型,以驗證仿真模型的功能是否符合功能邏輯驗證的需要。

1)節點報文發送/停止控制:操作模型控制面板選擇Enable IL前面的復選框和Enable IL of Node區域內任意網絡節點前面的復選框,可以在CANoe軟件的Trace界面上看到選擇節點的報文已經正常發送,報文發送的周期與DBC數據庫中定義的周期一致,并且若該報文包含Checksum信號和Rolling counter信號,可以看到信號值隨著報文的發送正確改變(圖6)。

圖6 報文發送/停止驗證

2)報文周期動態調整:選擇模型控制面板IL Control區域內任意正在發送的網絡節點,打開報文周期控制面板。在控制面板上同時選擇Enable和User前面的選擇框,在報文周期輸入框中設置不同的報文周期,可以看到Trace界面上正在發送的報文的發送周期變成設置的周期值(圖7)。

圖7 測試系統運行效果截圖

圖7 報文周期改變驗證

3)信號值操作/事件報文控制:選擇TX Signals區域內仿真發送的節點,打開報文控制面板,操作更改面板上任意信號的信號值,可以看到Trace界面上該報文發送的信號值按照面板上的改變值更改(圖8)。同時在控制面板上的Event Timing區域,可以找到Send Once按鈕,每點擊一次,可以在Trace界面上看到報文發送一次。

圖8 信號值改變/事件報文驗證

6 結束語

網絡仿真模型在汽車功能邏輯驗證中具有十分重要的作用,一個功能完善的仿真模型不僅能夠幫助測試工程師提高工作效率,而且可以實現很多手動操作難以實現的功能。雖然Vector公司的CANoe軟件為用戶提供了多種仿真報文方式,例如利用CANoe軟件中的IG節點實現、CANoe軟件的IL交互層實現或者CAPL編程實現,但是使用這些方式中的任何一種搭建的仿真模型要么開發難度大,要么擴展能力差,都有一些不足的地方存在。為了避免上述問題,本文選擇以CAPL編程和IL交互層相結合的方式搭建網絡仿真模型,模型編程難度較低,開發時間短,擴展能力強,并且模型操作簡便,更能夠滿足現在測試快速迭代的要求。

主站蜘蛛池模板: 国产熟睡乱子伦视频网站| 狠狠色狠狠色综合久久第一次| 农村乱人伦一区二区| 综合亚洲网| 国产成熟女人性满足视频| 青青青国产在线播放| 欧美人在线一区二区三区| 在线日本国产成人免费的| 亚洲视频在线青青| 国产免费人成视频网| 国产日本视频91| 在线播放精品一区二区啪视频| 亚洲精品777| 丁香六月激情综合| 久草性视频| 日韩免费成人| 无码免费的亚洲视频| 99爱视频精品免视看| 成人免费视频一区二区三区| 麻豆精品视频在线原创| 亚洲最新地址| 国产成人精品男人的天堂下载| 亚洲第一中文字幕| 一区二区三区四区日韩| 国产视频 第一页| 亚洲女同一区二区| 无码精品国产VA在线观看DVD| 2020国产精品视频| 亚洲国产午夜精华无码福利| 中文字幕无码中文字幕有码在线| 日韩av手机在线| 久久免费看片| 欧美一级一级做性视频| 久久久久无码国产精品不卡| 日本日韩欧美| 亚洲精品色AV无码看| 久久久久亚洲精品无码网站| 日韩免费成人| 欧美不卡在线视频| 国产精品999在线| 99久久精品美女高潮喷水| 日韩成人免费网站| 亚洲黄色激情网站| 白浆免费视频国产精品视频 | 精品一区二区三区中文字幕| 中国成人在线视频| 伦精品一区二区三区视频| 欧美一区中文字幕| 在线免费不卡视频| 看国产毛片| 日韩毛片在线播放| 91无码网站| 欧美一区福利| 午夜视频免费试看| 亚洲天堂成人| 日本高清视频在线www色| 国产一级在线观看www色| 制服丝袜亚洲| 中文字幕精品一区二区三区视频| 亚洲欧美日韩中文字幕在线| 亚洲精品爱草草视频在线| 国产精品视频公开费视频| 91精品专区国产盗摄| 97超碰精品成人国产| 99精品这里只有精品高清视频| 日本黄网在线观看| 色135综合网| 天堂av综合网| 亚洲精品日产精品乱码不卡| 欧美69视频在线| 国产视频大全| 国产产在线精品亚洲aavv| 都市激情亚洲综合久久| 国产一级小视频| 97国产在线播放| 国产免费a级片| 九色综合视频网| 亚洲天堂视频在线观看| 亚洲国产清纯| 日韩av电影一区二区三区四区| 中文字幕欧美日韩| 久久精品人人做人人爽97|