基于CANoe的Basic Diagnostics ECU (UDS)


前几天有个小兄弟咨询如何添加UDS数据库的问题,今天就整理下如何添加和维护UDS数据库,以及如何在CAPL中使用。

1. CANoe 支持的Diagnostic数据库

Diagnostic Description
其中:

  1. ECU Diagnostic Description (CDD, ODX/PDX, MDX) 是需要Vector公司的 CANdelaStudio 开发的,而且是需要 License 的。
  2. Basic Diagnostics ECU (UDS & KWP) 可以通过 Basic Diagnostic Editor 编辑和维护,这个是CANoe的一个免费组件,但是不支持按 Bit 解析,最小可以定义的参数为 8bit .

所以一般我会选择Basic Diagnostics ECU (UDS) 实现基本的UDS 服务,毕竟免费的。

2. 添加Basic Diagnostics ECU (UDS)

2.1 在CANoe界面里,依次选择 Configuration --> Diagnostic/ISO TP…
add Diagnostic Description
2.2 在CAN channel上右键选择 Add Basic Diagnostics ECU (UDS)
Add Basic Diagnostics ECU (UDS)
之后会出现如下界面:
在这里插入图片描述
2.3 配置UDS参数
根据自己的需求配置Physical & Functional request ID, Response ID 以及TP 参数。
在这里插入图片描述

3. 编辑Basic Diagnostics ECU (UDS)

在CANoe界面里,依次选择 View --> Basic Diagnostics
在这里插入图片描述
在这里插入图片描述
以**$10 DiagnosticSessionControl_Process**为例,

  1. $10 DiagnosticSessionControl_Process右键选择 Add New Service
  2. 更改 Service NameDiagnosticSessionControl_01(在CAPL里会用到)
  3. 更改 diagnosticSessionType 为 0x1($10 01
  4. 更改 Response 的数据长度为4 bytes(32bit).
  5. 选择 Commit
    在这里插入图片描述
    在这里插入图片描述

4. 在CAPL里调用Basic Diagnostics ECU (UDS)

/*@!Encoding:936*/
includes
{
  
}

variables
{
  diagRequest DiagnosticSessionControl_01 dr_Session_01;
}

on start
{
  diagSetTarget("BasicDiagnosticsEcu");
}

on key 'a'
{
  /*Physical request 0x700*/
  diagSendRequest(dr_Session_01);
}

on key 'b'
{
  /*Functional request 0x7DF*/
  diagSendFunctional(dr_Session_01);
}

其中 DiagnosticSessionControl_01 是之前定义的Service Name
BasicDiagnosticsEcu 是之前定义的 Ecu Name

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值