诊断规范中定义用来限制诊断服务执行的先决条件称作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工具链提供从诊断需求定义到代码实现到诊断测试的完整解决方案。
全部0条评论
快来发表一下你的评论吧 !