0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

​CAPL在诊断中的应用,你值得了解!

北汇信息POLELINK 2023-09-07 08:27 次阅读

CANoe主要用于汽车总线的开发并广泛被汽车电子工程师们使用。它具有强大的开发、分析、仿真、诊断、测试等功能。一提到CANoe大家往往都会想到CAPL,在使用CANoe的过程中相信每位工程师都或多或少的要和“CAPL”打交道。学好CAPL的用法可以让我们更加高效、便捷地使用CANoe。本文就CANoe中关于诊断的CAPL函数进行介绍。

277d8c68-4d15-11ee-a20b-92fbcf53809c.png

诊 断

诊断,其实就是服务端和客户端进行一问一答的方式。这里的一问一答指的是发送和接收的方式,Tester端发送一条特定ID的报文(请求),ECU接收到以后会相应的回复一条特定ID的报文(响应)。诊断是一个非常重要的功能,可以读取ECU的很多信息,比如:版本号,故障信息,状态信息等。CANoe是具有诊断功能的,如果需要大批量的进行诊断测试就需要使用CAPL来辅助。

如下图所示,CANoe可以直接加载CDD文件,加载完CDD文件后可以通过CANoe工程的诊断界面打开诊断台,进行手动的发送诊断报文。

278231fa-4d15-11ee-a20b-92fbcf53809c.png

在CANoe中加载CDD文件

如下图所示,在Diagnostic Console中我们可以直接发送扩展会话服务(0x1003),ECU端收到扩展会话服务请求后会给出肯定响应或否定响应。

27d348b0-4d15-11ee-a20b-92fbcf53809c.png

用 Diagnostic Console发送诊断请求

但是随着测试任务的增加,我们要进行多种方式的诊断测试。如下图所示,加载完CDD文件后,随之打开CAPL Browser,就可以在CAPL编辑器的Symbols栏中找到我们CDD文件对应的诊断服务。

27fff0d6-4d15-11ee-a20b-92fbcf53809c.png

CAPL Browser 中CDD文件的调用

对于使用CAPL实现诊断功能我们通常有两种方式:

通过发送CAN报文的形式去实现

针对第一种方式,我们只需要在CAPL中定义一条特定ID的报文,再定义它的DLC以及每个字节的内容再发出去就可以了,如下图所示:

28089538-4d15-11ee-a20b-92fbcf53809c.png

CAPL 代码实现


28204052-4d15-11ee-a20b-92fbcf53809c.png

Trace 中报文的显示

通过调用加载到CANoe工程中CDD文件定义好的诊断功能去实现

针对第二种方式,因为CDD文件中已经定义了ECU支持的诊断服务、通信参数等参数,所以我们只需要把我们在CDD中定义好的诊断服务发送出去即可,如下图所示:

28389594-4d15-11ee-a20b-92fbcf53809c.png

CAPL 代码实现

283e51aa-4d15-11ee-a20b-92fbcf53809c.png

诊断常用CAPL函数

下面就让我们来学习一下诊断中常用的一些CAPL函数。

诊断处理事件

on diagRequest NewRequest:进行ECU仿真时,收到诊断请求时调用。

on diagResponse NewResponse:Tester端收到诊断响应时调用。

on diagRequestSent NewRequestsent:收到Tester端发送的诊断请求时调用。

常用的诊断函数列表及功能描述


通信/设定功能函数

diagGetCurrentEcu 用于获取当前ECU名称;

285414ae-4d15-11ee-a20b-92fbcf53809c.png

diagGetLastCommunicationError 用于返回上一次诊断请求的错误码

2869f1de-4d15-11ee-a20b-92fbcf53809c.png

diagSendRequest 用于发送诊断请求给目标 ECU

2873c52e-4d15-11ee-a20b-92fbcf53809c.png

diagSetTimeout 用于设定诊断请求的超时时长& diagSetTimeoutHandler 用于创建一个回调函数,在诊断请求超时时被调用:

28926696-4d15-11ee-a20b-92fbcf53809c.png

安全访问函数

diagSetCurrentSession 设置当前ECU的会话状态:

28abba56-4d15-11ee-a20b-92fbcf53809c.png

diagStartGenerateKeyFromSeed 用于根据种子和密钥算法DLL生成一个密钥&_Diag_GenerateKeyResult 用于返回使用计算密钥的结果:

28b02e60-4d15-11ee-a20b-92fbcf53809c.png


对象访问函数

diagGetLastResponse 用于保存上一次收到的诊断请求响应:

28e65422-4d15-11ee-a20b-92fbcf53809c.png

诊断测试函数

函数

功能描述

diagCheckObjectMatch

用于检测诊断响应的 ID 是否与诊断请求相符

diagCheckValidNegResCode

用于检测返回的否定响应是否在诊断描述文件 (CDD文件)中已经定义

diagCheckValidPrimitive

用于检测指定的诊断对象是否符合规范 (CDD 文件) 中的定义

diagCheckValidRespPrimitive

用于检测收到的诊断请求响应是否符合规范(CDD 文件)中的定义

testCollectDiagEculnformation

用于向指定的诊断目标发送诊断请求并将响应写入报告文件

testReportWriteDi-agResponse

用于将接收到的诊断响应写入报告

testWaitForDiagRe-questSent

用于等待上一次的诊断请求成功发送到 ECU

testWaitForDiagRe-sponse

用于等待接收到请求的诊断响应

testWaitForDiagRe-sponseStart

用于等待接收到请求的诊断响应开始,即收到响应的首帧报文

testWaitForUnlock-Ecu

用于尝试解锁 ECU

29066aa0-4d15-11ee-a20b-92fbcf53809c.png

拓展小学堂

Vector对于诊断方面是有许多专业性的工具,下图为诊断工具链的V模型,从开发到测试、从供应商到主机厂都会涉及到的诊断工具。下面就由我来为大家进行简单的介绍:

290ff34a-4d15-11ee-a20b-92fbcf53809c.png

CANdelastudio

CANdelaStudio用于定义ECU的诊断功能,并且生成诊断数据库(CDD文件)来优化整个诊断开发过程。CANdelaStudio支持文档模板(CDDT文件),可以满足不同厂商对同一个标准工具的各种特殊要求。在内容上一个文档模板对应于一种诊断规范,它包含了对ECU所有允许的基本服务和在每个ECU中都必需实现的强制功能的一个正式描述。

ODXStudio

基于ODX的诊断流程并以ODX格式查看、编辑、处理或管理诊断数据的所有用户而设计。它支持单个ECU的诊断开发,直至整个车辆平台的水平。它同样适合在汽车OEM和供应商工作的用户。ODXStudio处理的是ODX 2.0.1和2.2.0版本的数据。

CANoe.Diva

作为一个生成诊断测试用例的工具,可以支持把CDD文件和ODX文件导入到Diva工程当中,然后去通过一些相应的配置,点一个按钮自动生成诊断相关的一些测试用例,再把生成的测试用例导入到CANoe中进行诊断的自动化测试,测试完成后会自动生成相应的测试报告。

vFlash

刷写工具,vFlash可以作为一个独立的工具来实现程序刷写。精简的用户操作界面,利用模板来实现对于不同Flash刷写规范的支持,可通过CAN/LIN/以太网进行刷写。在提高刷写速度的同时,可以刷写更大的数据,还能结合VN8810实现远程一键刷写。

Indigo

作为参数化工程诊断仪,支持工程诊断的应用场景。同时,Indigo支持客户定制化,例如集成vFlash工程支持刷写应用场景、通过选择车辆配置参数组支持车型配置、例程控制界面、可执行工程但不可编辑工程配置的Indigo Run、中文界面并且还可以拓展支持远程诊断等功能。

2957f974-4d15-11ee-a20b-92fbcf53809c.png

总 结

CANoe作为一个强大的总线开发工具有很多的功能,本文就CANoe中的诊断功能相关的CAPL函数做了讲解并简单的讲解了VECTOR旗下的诊断工具,希望本文章可以为大家带来全新的使用体验,如有问题欢迎私信我们北汇信息。

北汇信息作为Vector的合作伙伴,已为多家OEM/Tier1定制部件级功能测试系统(包括车身域控制器,及传统分布式控制器功能测试开发),提供系统级及实车级测试验证服务,期待交流分享和合作的机会。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 汽车电子
    +关注

    关注

    3026

    文章

    7943

    浏览量

    166942
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2744

    浏览量

    463636
  • 诊断
    +关注

    关注

    1

    文章

    57

    浏览量

    12278
  • 汽车
    +关注

    关注

    13

    文章

    3498

    浏览量

    37270
收藏 人收藏

    评论

    相关推荐

    小巧型压力变送器的作用你值得了解

    变送器
    华泰天科
    发布于 :2024年11月16日 10:16:45

    电力检测仪器故障诊断的应用

    随着电力系统的规模不断扩大和复杂度增加,电力系统的故障诊断变得越来越重要。电力检测仪器作为故障诊断的重要手段,其准确性和实时性对于电力系统的稳定运行至关重要。 二、电力检测仪器的工作原理 电力检测仪
    的头像 发表于 10-30 10:10 217次阅读

    智能AI终端故障诊断具体是如何工作的?

    梯云物联的智能AI终端故障诊断扮演着至关重要的角色。这一系统通过集成先进的物联网技术、大数据分析和人工智能算法,实现了电梯维保与急修的精准分离,大幅提升了维保效率和服务质量。
    的头像 发表于 10-17 11:46 220次阅读

    汽车音频系统诊断和保护

    电子发烧友网站提供《汽车音频系统诊断和保护.pdf》资料免费下载
    发表于 09-26 10:38 0次下载
    汽车音频系统<b class='flag-5'>中</b>的<b class='flag-5'>诊断</b>和保护

    认识贴片电阻吗,对他了解多少?

    认识贴片电阻吗,对他了解多少?
    的头像 发表于 08-27 15:49 455次阅读
    <b class='flag-5'>你</b>认识贴片电阻吗,<b class='flag-5'>你</b>对他<b class='flag-5'>了解</b>多少?

    网络诊断工具traceroute的使用

    Linux 系统,traceroute 是一个网络诊断工具,用于确定数据包从的计算机到目标主机(如一个网站或远程服务器)所经过的路由路径。
    的头像 发表于 08-05 15:41 345次阅读
    网络<b class='flag-5'>诊断</b>工具traceroute的使用

    嵌入式工控主板智慧医疗诊断设备的应用

    嵌入式工控主板智慧医疗诊断设备的应用广泛且深入,其高集成度、低功耗、高性能等特点使得它成为现代医疗设备不可或缺的一部分。以下是对嵌入式工控主板
    的头像 发表于 07-11 10:51 410次阅读
    嵌入式工控主板<b class='flag-5'>在</b>智慧医疗<b class='flag-5'>诊断</b>设备<b class='flag-5'>中</b>的应用

    卷积神经网络图像和医学诊断的优势

    通过模拟人脑视觉皮层的工作机制,实现对图像数据的高效处理,特别是图像分类、目标检测、图像分割以及医学图像分析等方面取得了显著成果。本文将从多个方面详细阐述CNN图像和医学诊断
    的头像 发表于 07-01 15:59 1059次阅读

    直播预约-现场辐射问题诊断与解决!

    知道有遇到辐射发射问题吗?了解电子产品辐射发射原理吗?了解如何定位辐射源头吗?
    的头像 发表于 06-20 08:17 269次阅读
    直播预约-现场辐射问题<b class='flag-5'>诊断</b>与解决!

    MINIWARE的品牌故事,了解多少?

    作为易迪赛e-Design旗下的迷你智能工具创新品牌,MINIWARE以其独特的设计理念和卓越的产品质量,逐渐市场上赢得了一席之地。但MINIWARE背后的品牌故事,了解多少呢?今
    的头像 发表于 06-20 08:02 523次阅读
    MINIWARE的品牌故事,<b class='flag-5'>你</b><b class='flag-5'>了解</b>多少?

    CAPL脚本使用介绍

    CAPL也有类似于C语言中的回调函数的机制,如检测报文周期和错误帧的函数中就可以使用,当周期超界或者总线出现错误帧就会自动调用回调函数执行一些操作
    的头像 发表于 04-01 11:23 1937次阅读

    电机启动与运行过程,如何对电机堵转进行诊断

    电机启动与运行过程,如何对电机堵转进行诊断
    发表于 02-19 07:17

    关于JTAG口,了解多少?

    大侠参考,一起交流学习。 根据查阅资料及本人的一些实践经验所得,使用JTAG下载接口的过程,请不要随意带电插拔,否则会损坏FPGA芯片的JTAG口信号管脚。那么如何去确认JTAG口已经
    发表于 01-19 21:19

    逆变电路的故障诊断与保护

    逆变电路的故障诊断与保护是电力电子技术的一个重要环节,其主要目的是逆变电路出现故障时,能够及时检测、定位和处理故障,保证系统的稳定运行。故障
    的头像 发表于 12-27 17:49 671次阅读
    逆变电路<b class='flag-5'>中</b>的故障<b class='flag-5'>诊断</b>与保护

    LabVIEW齿轮箱故障诊断的应用

    LabVIEW齿轮箱故障诊断的应用 现代机械工业,齿轮箱作为重要的传动设备,其性能稳定性对整体机械系统的运行至关重要。故障的及时
    发表于 12-25 18:55