CANoe的诊断功能设置(DFS)提供一种非常简便的方法,可在诊断层面上对ECU进行仿真。这在以下情况下非常有用:
- 在无法获得真实硬件ECU的情况下,为ECU创建自动化诊断测试
- 测试真实硬件网关ECU的诊断路由功能
它能做什么?| 它能解决哪些问题?
要仿真ECU的诊断行为,除了物理层之外,至少还需要两个额外的通信层:传输协议(TP)层和应用层(此处指诊断)。传输协议层取决于所使用的网络(CAN、LIN、FlexRay、汽车以太网),而诊断层则取决于相应诊断数据库中定义的服务。此类诊断数据库还包含用于配置传输协议层和诊断层的通信参数。
CANoe的内置诊断通道不仅为CANoe中的诊断测试仪实现这些层,您可能已经通过Diagnostic Window及其功能(包括诊断控制台、故障存储、变体编码、ECU Control和OBD)使用过这些功能。您还可以激活仿真功能:只需添加一个诊断数据库,勾选一个复选框,并选择用于仿真的仿真节点即可。
一旦激活,该仿真节点将对所有诊断请求返回符合UDS标准的响应,并将响应中的诊断参数填充为默认值。实现此行为无需编写任何一行CAPL。但如果您需要,还可以取决于仿真真实度要求,自定义诊断相应的内容。
在CANoe中哪里可以找到此功能?| 如何启动该过程?
打开CANoe的“Diagnostic/ISO TP配置对话窗口,并在任意网络中添加诊断描述。如果没有诊断描述,您也可以添加Basic Diagnostic Description,并直接在CANoe的Basic Diagnostic Editor中指定包含诊断参数及其数据类型的服务定义。
在Usage of the Diagnostic Description下,只需激活Simulation by勾选框,并选择您要使用的仿真节点(如图所示):

要自定义诊断相应,您还可以向仿真节点添加一些CAPL代码。一个用于返回ECU序列号的简单CAPL处理程序可能如下所示:
on diagRequest DoorFL.SerialNumber_Read
{
diagResponse this resp;
diagSetParameter(resp, "SerialNumber", 1234567);
diagSendPositiveResponse(resp);
}
相关的CANoe主题



