首页 > 其他分享 >DCM功能实现

DCM功能实现

时间:2023-04-11 14:12:57浏览次数:30  
标签:协议 功能 DCM 服务 诊断 实现 会话 DSL

DLC:Data Length Code

 

以下是基于统一诊断服务(UDS)的数据传输模式,实现DCM协议的基本步骤,按照数据服务层(DSL)、数据服务协议层(DSP)和数据传输层(DSD)进行分类:

DSL层:

  1. 建立会话:使用UDS协议中的0x10服务建立诊断会话(Session)。
  2. 诊断会话认证:使用UDS协议中的0x27服务,对诊断会话进行安全认证,确保诊断会话的安全性。

DSP层:

  1. 选择诊断服务:使用UDS协议中的0x22服务,选择需要使用的诊断服务,比如DCM协议。

DSD层:

  1. 执行诊断服务:根据DCM协议中定义的功能需求,使用UDS协议中的0x31服务执行相应的诊断服务。
  2. 结束会话:使用UDS协议中的0x20服务结束诊断会话。

需要注意的是,在DSP层中,可以选择使用多种诊断服务,而在DSD层中,可以执行多种功能。因此,实现DCM协议时应该根据实际需求选择合适的服务和功能,并考虑诊断会话的安全性和数据的完整性。

 

DSL层实现的步骤:

DSL层(数据服务层)是DCM协议中的第一层,它是与物理层交互的最高层。DSL层负责建立和管理诊断会话(Session),并提供安全认证和错误处理等功能。

以下是DSL层实现的基本步骤:

  1. 建立物理连接:DSL层首先要与ECU(电子控制单元)建立物理连接,一般通过OBD(On-Board Diagnostic)插头和诊断仪器进行连接。

  2. 建立诊断会话:使用UDS(Unified Diagnostic Services)协议中的0x10服务,建立诊断会话。在此步骤中,需要选择合适的诊断会话类型,例如默认会话(Default Session)、编程会话(Programming Session)或扩展会话(Extended Session)。

  3. 诊断会话认证:使用UDS协议中的0x27服务,对诊断会话进行安全认证。在此步骤中,需要根据ECU的安全策略进行身份验证和加密等操作,确保诊断会话的安全性。

  4. 处理诊断请求:DSL层接收到诊断请求后,需要对请求进行解析和处理,并调用相应的DSP层服务进行处理。

  5. 错误处理:如果出现错误或异常情况,DSL层需要根据UDS协议的规定进行错误码的返回和错误处理。

  6. 结束诊断会话:使用UDS协议中的0x20服务,结束诊断会话。

需要注意的是,DSL层的具体实现可能会根据应用场景和硬件平台的不同而有所差异。因此,在实现DSL层时,需要根据具体的需求进行相应的开发和调试。

 

DSP层是DCM协议中的数据服务协议层,主要负责定义和管理服务的通信协议。DSP层的实现步骤通常包括以下几个方面:

  1. 定义服务接口:根据协议规范,定义DSP层要提供的服务接口,包括服务编号、服务参数、返回值等内容。

  2. 实现服务接口:根据协议规范,实现DSP层定义的服务接口,包括数据封装、协议解析、数据传输等过程。

  3. 实现协议解析:实现协议解析器,用于解析接收到的请求数据,并调用相应的服务接口进行处理。

  4. 实现数据封装:实现数据封装器,用于将服务返回的数据打包成协议规定的格式,以便发送给请求方。

  5. 实现数据传输:实现数据传输模块,用于将打包好的数据发送给请求方,并接收请求方发送的数据。

以上步骤主要是针对DSP层的实现,具体的实现细节和方式可能因具体的应用场景和需求而有所不同。

 

DCM协议的DSD层实现的步骤如下:

  1. 实现底层通信接口,如CAN总线或者TCP/IP网络通信等;
  2. 实现数据传输的封装和拆包,对数据进行分段传输,并处理数据的丢失和重传;
  3. 实现数据流控制,通过协商传输速率,控制数据的发送和接收;
  4. 实现错误处理机制,如接收到错误帧时的处理策略,以及通信超时的处理;
  5. 实现接口的统一管理,例如定义一个接口类,封装发送和接收数据的方法,供上层协议栈调用。

需要注意的是,DSD层是针对底层通信协议进行实现的,因此实现的细节和具体的应用场景密切相关。例如,在CAN总线中,需要处理的问题和在TCP/IP网络中有很大的差别,因此在实现DSD层时,需要根据具体情况进行调整。

 

标签:协议,功能,DCM,服务,诊断,实现,会话,DSL
From: https://www.cnblogs.com/liuqiongcn/p/17275773.html

相关文章

  • 用quasar+vue3+组合式api 实现小米商城标题栏动画
    先来看一下小米商城标题栏动画:  小米商城标题栏动画主要特点:移入时二级菜单缓慢出现;移出时二级菜单缓慢消失;在一级菜单之间移动时,二级菜单内容直接切换,没有过渡效果。实现思路一、纯css实现(❌)首先肯定是考虑:hover,但是经过试验发现,:hover可以实现鼠标移入移出时的......
  • Delphi 调用 c# 动态库-委托实现回调
    由于Delphi的局限性,有时候有的功能可能无法实现,需要借助与其他语言实现,比如C#,这里演示一下Delphi如何调用C#动态库c#作为面向对象语言,其中所有的定义和Java一样,一切皆对象,因此在编写动态链接库的时候需要符合com标准,而委托作为方法的指针,在Delphi中调用需要把Delphi中声......
  • 模切企业实现业财一体化,从运用ERP开始
    模切企业在实施ERP的时候,总是能听到“业财一体化”的概念,那么什么是“业财一体化”呢?业财一体化是财务业务一体化的简称,基于网络、数据库、管理软件平台等要素的IT环境,将企业经营中的三大主要流程,即业务流程、财务会计流程、管理流程有机融合,使财务数据和业务融为一体。基于点晴模......
  • 深度剖析Redis九种数据结构实现原理,建议收藏
    1.Redis介绍Redis是一个高性能的键值存储系统,支持多种数据结构。包含五种基本类型String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),和三种特殊类型Geo(地理位置)、HyperLogLog(基数统计)、Bitmaps(位图)。每种数据结构都是为了解决特定问题而设计的,适用不同的场景。想要......
  • css 实现单行、多行溢出 省略号显示
    1、单行溢出显示省略号:{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}2、多行溢出省略号:①、(缺点:此方法因为使用了webkit属性,故只能chrome等浏览器有效){-webkit-line-clamp:2;/*autoprefixer:off*/-webkit-box-orient:vertical;//防......
  • VUE:引入腾讯地图并实现轨迹动画
    VUE:引入腾讯地图并实现轨迹动画Postedon 2022-09-2215:07  书中枫叶 阅读(1421) 评论(4)  编辑  收藏  举报腾讯位置服务JavaScriptAPI效果:引入步骤:在html中通过引入script标签加载API服务在一个盒子元素div中预先准备地图容器,并在CSS样式中定义......
  • 利用强化学习Q-Learning实现最短路径算法
    如果你是一名计算机专业的学生,有对图论有基本的了解,那么你一定知道一些著名的最优路径解,如Dijkstra算法、Bellman-Ford算法和a*算法(A-Star)等。这些算法都是大佬们经过无数小时的努力才发现的,但是现在已经是人工智能的时代,强化学习算法能够为我们提出和前辈一样好的解决方案吗?......
  • uniapp小程序使用高德地图api实现路线规划
    uniapp小程序使用高德地图api实现路线规划 Postedon 2023-01-1011:18  书中枫叶 阅读(1387) 评论(3)  编辑  收藏  举报路线规划简介路线规划常用于出行路线的提前预览,我们提供4种类型的路线规划,分别为:驾车、步行、公交和骑行,满足各种的出行场景。高德开放......
  • power apps canvas 最新scan 扫描功能 barcode, QR code
    Barcodereader现在全面代替barcode scanner barcodereader现在只能通过powerappsmobileapp或者powerappsWindowsUWPapp来使用。还不能通过浏览器使用      Barcodereader控件支持下面数据类型   barcodereader控件和scanner最大的区......
  • SpringBoot线程池和Java线程池的实现原理
    使用默认的线程池方式一:通过@Async注解调用publicclassAsyncTest{@Asyncpublicvoidasync(Stringname)throwsInterruptedException{System.out.println("async"+name+""+Thread.currentThread().getName());Thread.sleep(10......