Vo_cano,UDS诊断解决方案在BCM控制器上的应用 太阳能路灯 控制器解决方案
摘要:本文简单介绍了Volcano UDS诊断服务模块结构和功能,并且结合实际项目开发,介绍了如何运用Volcano UDS来快速开发维护BCM的诊断功能。 关键字:诊断;DSLM(诊断服务层模块);UDS;快速开发
1、前言
随着CAN网络在整车应用的逐渐普及以及车身电子功能的日趋复杂,越来越多的车身电子控制模块都开始放弃传统的K线下的诊断方式,转而应用基于更高速可靠的CAN的诊断方式。BCM作为车身电子的重要模块,采用基于CAN的诊断方式也显得非常必要。但一般网络诊断软件相对比较复杂,测试项目繁多,开发周期较长。所以我们在APllBCM的开发中选择了VBolcano的产品。
2、Volcano诊断解决方案
Volcano提供一整套的ISO诊断相关的嵌入式软件协议栈,以方便ECU与外部诊断工具进行信息交互。它由传输层模块TLM及诊断服务模块DSLM组成。TLM及DSLM的功能均通过DCT(DiagnosticConfiguration Tool)工具生成的配置文件进行控制,方便软件集成开发,以及后续的维护工作。
2.1、传输层模块
Volcarlo Transport Layer(TLM)是Voleailo提供的基于VTP的附加模块。它提供超过8字节的数据传输支持,主要用于诊断通信中。TLM具有如下特点:
●支持多通道配置
●符合ISO 15765-2标准
●采用图形化的诊断配置工具DCT生成配置文件
●方便简捷的API接口函数,易于集成
●占用系统资源少
2.2、诊断服务层模块
Volcano Diagnostic
Service Layer
Module(DSLM)提供了基于ISO标准的诊断服务的支持。主要帮助应用程序确认诊断命令,管理安全级别及诊断模式,发送诊断响应。DSLM具有如下特点:
●支持ISO 14230或ISO 14229服务组
●采用TLM进行数据传输
●采用图形化的诊断配置工具DCT生成配置文件
●方便简捷的API接口函数,易于集成
●丰富的回调函数用于与应用程序交互
●占用系统资源少
3、Volcano DSLM(诊断服务层模块)的使用
Volcano DSLM(诊断服务层模块)基于其网络传输层,应用层软件可以直接调用其API函数,其接口关系如图2所示。
从图2中也可以看出Volcano、TLM网络传输层和DSLM诊断服务层三者间的关系。Volcano目前提供了三个独立的库文件:volcano5.lib、tlm.lib和dslm_14229.lib。另外,它对用户提供配置工具,用户只要依据项目实际需要对TLM和DSLM进行配置,自定义所需要的网络报文和诊断ID。软件通过在工程集成配置工具生成的v_gen.e文件来实现网络诊断功能的更新,程序整体流程如图3所示。
对于诊断服务层模块来说,我们只需要维护一个类似表格的*dlm文件就可以根据项目需要,增加修改诊断ID以及他们的属性,维护非常方便。
在诊断服务层模块中,提供了两类函数接口:Function API和User provided call-out API。其中Function API包括:
v_dsl_verify()
v_dsl_init()
v_dsLprocessing()
v_dsl_confirm()
v_dsl_indication()
v_dsl_current_diagnostic_mode()
v_dsl_current_access_mode()
v_dsl_get_buffer,v_dsLget_buffer_size()
v_dsLis_pending()
这类函数主要用来对DSL层进行初始化和配置等。我们在使用DSLM提供的UDS服务前,需要先调用函数v_dsl_verifv和v_dsl_init,检查DSLM有效性并对其初始化。
模块中的User_provided_call-out API就是我们常用的UDS服务,下面就是常用UDS诊断服务和DSLM中接口函数的对照表,如表1所示。
User provided call-out API接口函数在满足相关标准的同时,也提供了灵活的传递参数,使用起来非常方便。图4就是一个Read Data By Identifier诊断服务的示例函数。
4、总结
在项目时间节点紧迫,相关资源缺乏的情况下,我们在APll BCM的软件开发中使用了Volcano模块、TLM网络传输模块和DSLM诊断服务模块三个模块,快速完成了BCM网络诊断的开发。经过实际使用验证,相关功能均符合客户要求且维护简单方便。