診斷規(guī)范中定義用來(lái)限制診斷服務(wù)執(zhí)行的先決條件稱(chēng)作Environmental Condition,它依賴(lài)于車(chē)載數(shù)據(jù),如車(chē)輛內(nèi)部傳感器、控制器實(shí)時(shí)生成或存儲(chǔ)的運(yùn)行參數(shù)(如速度、位置等),以及ECU特定的運(yùn)行模式、工況,如ECU根據(jù)不同駕駛場(chǎng)景(如運(yùn)動(dòng)模式)或外部條件(如高溫/高海拔)切換的工作狀態(tài)。

AUTOSAR定義了三類(lèi)診斷訪問(wèn)權(quán)限,限制診斷服務(wù)的執(zhí)行,分別是:Session、Security Level和Environmental Condition。對(duì)于Environmental Condition,AUTOSAR DCM(Diagnostic Communication Manager)管理需要的信息,并在某些環(huán)境條件成立時(shí)阻止服務(wù)的執(zhí)行。
ISO 14229-1(Unified Diagnostic Service,UDS)協(xié)議中,有多個(gè)NRC(Negative Response Code)定義ECU對(duì)不同的先決條件做出的否定響應(yīng)。
NRC 0x22(conditionsNotCorrect);
NRC 0x81-0x8D(例如:0x81/0x82:rpmTooHigh/Low;0x88/0x89:vehicleSpeedTooHigh/Low);
NRC 0x8F-0xFE(例如:0x92/0x93:voltageTooHigh/Low);
其中0x95-0xEF:reservedForSpecificConditionsNotCorrect;0xF0-0xFE:vehicleManufacturerSpecificConditionsNotCorrect。
本文以NRC 0x22為例,介紹關(guān)于Vector工具對(duì)于Environmental Condition的編輯、代碼開(kāi)發(fā)和測(cè)試的支持。NRC 0x22定義如下圖:

CANdelaStudio 16以上版本支持編輯ECU執(zhí)行請(qǐng)求的Environmental Condition,在CANdelaStudio中叫做Environmental Condition Groups。如下圖所示:

在CDD中編輯好Environmental Condition Groups后,可以將CDD中編輯的Environmental Condition數(shù)據(jù)導(dǎo)入DaVinci Configurator Classic,也可以導(dǎo)出到DEXT(Diagnostic Extract Template)文件,還可以將CDD導(dǎo)入CANoe.DiVa,通過(guò)配置實(shí)現(xiàn)對(duì)診斷服務(wù)NRC的測(cè)試。
注:CANoe.DiVa版本要大于15 SP3。
CANdelaStudio如何編輯Environmental Condition Groups
CANdelaStudio中Environmental Condition Groups中有三個(gè)部分:Condition Groups、Dependencies和Defaults。
Condition Groups有車(chē)輛數(shù)據(jù)(Data)和ECU模式(Mode)。例如,當(dāng)客戶(hù)端執(zhí)行Write(0x2E)服務(wù)和IO Control(0x2F)服務(wù)修改ECU數(shù)據(jù)時(shí),出于保護(hù)硬件、避免功能浪費(fèi)的目的,會(huì)定義以下限制條件:發(fā)動(dòng)機(jī)轉(zhuǎn)速為0(Data),在正常電壓下(Mode)。用戶(hù)可以在如下圖紅框處,添加Data Condition和Mode Condition。

Data Condition
添加Data Condition后,首先編輯Name,默認(rèn)Negative Response Code(NRC)為0x22。當(dāng)不滿(mǎn)足條件時(shí),ECU將發(fā)送帶有此NRC的否定響應(yīng);

然后,編輯Data Object:
undefined:沒(méi)有引用的數(shù)據(jù);
in document:選擇引用的Data Object來(lái)自于CDD文件中某個(gè)DID的Data Object,也被稱(chēng)為Internal Data Object,此處定義的數(shù)據(jù)和選擇的Data Object的Data Types需要兼容,即有相同的Encoding/Length(目前支持的有Unsigned(1/2 Byte)和Signed(1/2/4 Byte))和Unit;
external:引用的Data Object沒(méi)有定義在CDD文件中,也被稱(chēng)為External Data Object,目前支持的Data Type有五種,如下圖所示:

最后,編輯Data Conditions的具體數(shù)值和操作符(有< ≤ ≠ = ≥ >六種);

注:上圖中的“Referenced”下置為“yes”或“no”是不需要編輯的。當(dāng)在“Dependencies”下,選擇服務(wù)對(duì)應(yīng)的“Condition”,“Referenced”下會(huì)置為“yes”,反之為“no”。
Mode Condition
添加Mode Condition后,首先編輯Name,再添加Mode;

注:上圖中的“Referenced”下置為“yes”或“no”是不需要編輯的,當(dāng)在“Dependencies”下,選擇服務(wù)對(duì)應(yīng)的“Condition”,“Referenced”下會(huì)置為“yes”,反之為“no”。
Dependencies
當(dāng)Data Condition、Mode Condition編輯完成后,依據(jù)需求編輯服務(wù)與Data/Mode Condition的依賴(lài)關(guān)系。

Environmental Condition在AUTOSAR中的應(yīng)用
MICROSAR Classic支持Mode Condition,可以將CDD文件中定義的Mode Condition導(dǎo)入DaVinci Configurator Classic,也可以將Mode Condition的定義導(dǎo)出到DEXT文件中。如需將CDD中定義的Mode Condition導(dǎo)入DaVinci Configurator Classic或?qū)С龅紻EXT文件中,需要在CDD文件中對(duì)Mode Condition添加相應(yīng)的Attributes Value。添加方法:
首先,通過(guò)Expert View打開(kāi)CDD文件,打開(kāi)方式如下圖所示:

在Default Attributes下Mode Conditions中添加Attribute “ASR SWC ModeDeclaration Ref”,如下圖所示:
注:先查看文件中是否已添加此Attribute,如果已添加就不用再添加了。

然后,在已有的Mode Conditions中,如下圖處,添加、編輯Attributes Value(注:需要CANdelaStudio 17以上版本):

Attributes Value示例如下(本例中為了可讀性而使用換行符,實(shí)際使用時(shí)要用空格替代換行符):
CRCR:/COM/VECTOR/CFG/WORKFLOW/SYSDESC/SYNC/SYSTEM/COMPOSITIONTYPE
CCR:/COM/VECTOR/CFG/WORKFLOW/SYSDESC/SYNC/COMPOSITIONTYPE/SwcDiagApp
CPRP:/ComponentTypes/SwcDiagApp/SwcDiagApp_ProcessingCondition_CodingVoltageMode
MDG:/PortInterfaces/SwcDiagApp_CodingVoltageMode/CodingVoltageMode
TM:/ModeDclrGroups/SwcDiagApp_CodingVoltageMode/DEFAULT
注:如果CDD文件中有Data Conditions,對(duì)于Referenced的Internal Data Object(即在“Dependencies”下,選擇對(duì)應(yīng)的“Condition”),也可以導(dǎo)出到DEXT文件中;
對(duì)于Referenced的External Data Object(即在“Dependencies”下,選擇對(duì)應(yīng)的“Condition”),需要編輯Attributes Value,也可以導(dǎo)出到DEXT文件中,如下圖所示:

Attributes Value示例如下:CRCR:/RootSwc CCR:/Swc1 CPRP:/Port1 TDPR:/Data2
將帶有以上Attributes Value的CDD文件導(dǎo)入DaVinci Configurator Classic,在工具中自動(dòng)創(chuàng)建了DcmProcessingConditions,如下圖所示:

將帶有以上Attributes Value的CDD文件導(dǎo)出為DEXT文件,導(dǎo)出的DEXT文件中帶有Mode的部分如下圖:

生成的代碼如下圖所示:

CANoe.DiVa如何生成合法或非法條件下執(zhí)行診斷服務(wù)的測(cè)試用例
CANoe.DiVa 15 SP3以上版本支持測(cè)試CDD里定義的Environmental Condition。
第一步,將定義了Environmental Condition的CDD文件導(dǎo)入CANoe.DiVa,CANoe.DiVa會(huì)自動(dòng)將Environmental Condition生成System Conditions,如下圖所示:

第二步,對(duì)CDD中定義的診斷服務(wù)執(zhí)行需要的Valid Condition或Invalid Condition進(jìn)行配置,如下圖所示:添加一個(gè)或多個(gè)Step,例如對(duì)于External Data Object,可以由工程中添加的DBC文件設(shè)置Bus Signal的值;

第三步,對(duì)于在CDD文件中編輯的服務(wù)與Data/Mode Condition的依賴(lài)關(guān)系,在CANoe.DiVa中會(huì)自動(dòng)生成Invalid Condition下服務(wù)的測(cè)試用例,如下圖:

如果要生成Valid Condition下服務(wù)的測(cè)試用例,需要對(duì)診斷Service或Job添加Valid Condition,選擇一個(gè)Condition作為“System Precondition”;


最后,工程設(shè)置編輯完成后,點(diǎn)擊“Generate”按鈕,生成CANoe.DiVa測(cè)試工程,再將工程文件導(dǎo)入CANoe執(zhí)行測(cè)試用例。如下圖所示:

生成的測(cè)試用例部分CAPL代碼如下圖所示:


總結(jié)
Environmental Condition定義了診斷服務(wù)執(zhí)行的限制條件,在代碼實(shí)現(xiàn)和測(cè)試中都很重要。Vector工具鏈提供從診斷需求定義到代碼實(shí)現(xiàn)到診斷測(cè)試的完整解決方案。
-
傳感器
+關(guān)注
關(guān)注
2576文章
54894瀏覽量
789840 -
ecu
+關(guān)注
關(guān)注
14文章
980瀏覽量
57097 -
代碼
+關(guān)注
關(guān)注
30文章
4963瀏覽量
73650 -
Vector
+關(guān)注
關(guān)注
3文章
98瀏覽量
9969
原文標(biāo)題:Vector工具支持Environmental Condition的編輯、代碼開(kāi)發(fā)和測(cè)試
文章出處:【微信號(hào):VectorChina,微信公眾號(hào):Vector維克多】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
HarmonyOS應(yīng)用開(kāi)發(fā)-代碼編輯
RISC-V MCU開(kāi)發(fā) (三):代碼編輯
AVR開(kāi)發(fā)工具及基本知識(shí)
應(yīng)對(duì)CAN總線系統(tǒng)設(shè)計(jì)開(kāi)發(fā),Vector總線技術(shù)研討會(huì)即將開(kāi)
Stellaris開(kāi)發(fā)和評(píng)估工具包代碼編輯器的詳細(xì)資料概述
Vector看板管理工具Squore助力敏捷開(kāi)發(fā)
c語(yǔ)言代碼自動(dòng)生成工具,MCU代碼自動(dòng)生成工具介紹
RISC-V MCU開(kāi)發(fā) (三):代碼編輯
如何快速修改keil軟件的代碼編輯界面
如何實(shí)現(xiàn)Linux環(huán)境和CANoe工具之間的數(shù)據(jù)交互
語(yǔ)言智能在代碼編輯器中是如何工作的
2024年十款熱門(mén)云端開(kāi)發(fā)工具推薦
Vector推出一套基于Visual Studio Code的免費(fèi)插件
Vector工具支持Environmental Condition的編輯、代碼開(kāi)發(fā)和測(cè)試
評(píng)論