診斷規范中定義用來限制診斷服務執行的先決條件稱作Environmental Condition,它依賴于車載數據,如車輛內部傳感器、控制器實時生成或存儲的運行參數(如速度、位置等),以及ECU特定的運行模式、工況,如ECU根據不同駕駛場景(如運動模式)或外部條件(如高溫/高海拔)切換的工作狀態。

AUTOSAR定義了三類診斷訪問權限,限制診斷服務的執行,分別是:Session、Security Level和Environmental Condition。對于Environmental Condition,AUTOSAR DCM(Diagnostic Communication Manager)管理需要的信息,并在某些環境條件成立時阻止服務的執行。
ISO 14229-1(Unified Diagnostic Service,UDS)協議中,有多個NRC(Negative Response Code)定義ECU對不同的先決條件做出的否定響應。
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為例,介紹關于Vector工具對于Environmental Condition的編輯、代碼開發和測試的支持。NRC 0x22定義如下圖:

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

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

Data Condition
添加Data Condition后,首先編輯Name,默認Negative Response Code(NRC)為0x22。當不滿足條件時,ECU將發送帶有此NRC的否定響應;

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

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

注:上圖中的“Referenced”下置為“yes”或“no”是不需要編輯的。當在“Dependencies”下,選擇服務對應的“Condition”,“Referenced”下會置為“yes”,反之為“no”。
Mode Condition
添加Mode Condition后,首先編輯Name,再添加Mode;

注:上圖中的“Referenced”下置為“yes”或“no”是不需要編輯的,當在“Dependencies”下,選擇服務對應的“Condition”,“Referenced”下會置為“yes”,反之為“no”。
Dependencies
當Data Condition、Mode Condition編輯完成后,依據需求編輯服務與Data/Mode Condition的依賴關系。

Environmental Condition在AUTOSAR中的應用
MICROSAR Classic支持Mode Condition,可以將CDD文件中定義的Mode Condition導入DaVinci Configurator Classic,也可以將Mode Condition的定義導出到DEXT文件中。如需將CDD中定義的Mode Condition導入DaVinci Configurator Classic或導出到DEXT文件中,需要在CDD文件中對Mode Condition添加相應的Attributes Value。添加方法:
首先,通過Expert View打開CDD文件,打開方式如下圖所示:

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

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

Attributes Value示例如下(本例中為了可讀性而使用換行符,實際使用時要用空格替代換行符):
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,對于Referenced的Internal Data Object(即在“Dependencies”下,選擇對應的“Condition”),也可以導出到DEXT文件中;
對于Referenced的External Data Object(即在“Dependencies”下,選擇對應的“Condition”),需要編輯Attributes Value,也可以導出到DEXT文件中,如下圖所示:

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

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

生成的代碼如下圖所示:

CANoe.DiVa如何生成合法或非法條件下執行診斷服務的測試用例
CANoe.DiVa 15 SP3以上版本支持測試CDD里定義的Environmental Condition。
第一步,將定義了Environmental Condition的CDD文件導入CANoe.DiVa,CANoe.DiVa會自動將Environmental Condition生成System Conditions,如下圖所示:

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

第三步,對于在CDD文件中編輯的服務與Data/Mode Condition的依賴關系,在CANoe.DiVa中會自動生成Invalid Condition下服務的測試用例,如下圖:

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


最后,工程設置編輯完成后,點擊“Generate”按鈕,生成CANoe.DiVa測試工程,再將工程文件導入CANoe執行測試用例。如下圖所示:

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


總結
Environmental Condition定義了診斷服務執行的限制條件,在代碼實現和測試中都很重要。Vector工具鏈提供從診斷需求定義到代碼實現到診斷測試的完整解決方案。
-
傳感器
+關注
關注
2574文章
54498瀏覽量
786858 -
ecu
+關注
關注
14文章
968瀏覽量
56920 -
代碼
+關注
關注
30文章
4947瀏覽量
73291 -
Vector
+關注
關注
3文章
88瀏覽量
9922
原文標題:Vector工具支持Environmental Condition的編輯、代碼開發和測試
文章出處:【微信號:VectorChina,微信公眾號:Vector維克多】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
HarmonyOS應用開發-代碼編輯
AVR開發工具及基本知識
應對CAN總線系統設計開發,Vector總線技術研討會即將開
Stellaris開發和評估工具包代碼編輯器的詳細資料概述
Vector看板管理工具Squore助力敏捷開發
如何快速修改keil軟件的代碼編輯界面
如何實現Linux環境和CANoe工具之間的數據交互
2024年十款熱門云端開發工具推薦
Vector推出一套基于Visual Studio Code的免費插件

Vector工具支持Environmental Condition的編輯、代碼開發和測試
評論