码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 详解UDS CAN诊断:DiagnosticSessionControl Service(SID:0X10)


    目录 

    1、诊断请求

    2、诊断响应

    2.1、肯定响应

    2.2、否定响应


    诊断和通信管理功能单元(Diagnostic and communication management functional unit)包含10种服务,本篇博文将详细讲解DiagnosticSessionControl Service(SID:0X10)的特性和协议。

    本篇博文素材来源于:ISO 14229-1-2020:规范和要求。

    在学习本篇博文之前推荐学习:

    详解UDS CAN诊断:什么是UDS(ISO 14229)诊断?

    对汽车电子、CAN通信、UDS诊断技术感兴趣的小伙伴请关注公众号:美男子玩编程,公众号优先推送最新技术博文,创作不易,请各位朋友多多点赞、收藏、关注支持~

    DiagnosticSessionControl Service用于在服务器中启用不同的诊断会话。

    诊断会话有两种:Default Session和Any Other Session,它们之间可以互相转换,如下所示:

    不同服务在Default Session和Any Other Session中的权限不同,某些服务并不支持在Default Session中运行,所有服务都可以在Any Other Session中运行,如下图(not applicable代表不支持服务,x代代表支持服务)所示:

    1、诊断请求

    诊断请求分为具有子功能的请求和没有子功能的请求两种。

    首先来看看具有子功能的请求协议,如下所示:

    我们只需要关注A_Data.A_PCI.SI和A_Data.Parameter 1~k数据,其他参数数值取决于客户的实际应用。

    具有子功能的请求A_Data.Parameter 1字节存储的就是子功能数据。

    没有子功能的请求协议,如下所示:

    A_Data.Parameter 1字节不再规定。

    接着来看一看协议中对A_Data.A_PCI.SI和A_Data.Parameter 1~k数据的规定和使用。

    启用不同的诊断会话需要客户端发送请求协议:0X10 0X**(A_Data.A_PCI.SI和A_Data.Parameter 1~k数据)。

    其中:

    • 0X10是服务ID(SID),1字节;
    • 0X**是服务的子功能,范围为:0X00~0XFF,1字节。

    在ISO 14229-1-2020协议中规定了各类数值子功能的意义和使用场景,如下所示:

    2、诊断响应

    诊断响应有肯定响应和否定响应两种类型。

    2.1、肯定响应

    肯定响应协议中也只需要关注A_Data.A_PCI.SI和A_Data.Parameter 1~k数据,如下所示:

    肯定响应表示服务端回复客户端请求成功,响应协议:0X50 0X** 0X&&(A_Data.A_PCI.SI和A_Data.Parameter 1~k数据)。

    其中:

    • 0X50是响应服务的SID,相当于0X10+0X40,1字节;
    • 0X**是响应服务的子功能,范围为:0X00~0XFF,1字节。例如,客户端使用0X01子服务,此时肯定响应的子服务就是0X01;
    • 0X&&记录了包含服务器报告的特定会话参数值,范围为:0X00~0XFF,4字节,协议规定如下所示:

    2.2、否定响应

    否定响应表示客户端或者服务端存在问题,否定响应会提示失败原因。

    否定响应协议中只需要关注A_Data.A_PCI.NR_SI、A_Data.A_PCI. SI和A_Data.Parameter 1数据,如下所示:

    响应协议:0X7F 0X** 0X&&(A_Data.A_PCI.NR_SI、A_Data.A_PCI. SI和A_Data.Parameter 1数据)。

    其中:

    • 0X7F是否定响应固定数值,1字节;
    • 0X**是诊断服务ID(SID),本篇博文使用的是0X10服务,则否定响应会返回0X10,1字节;
    • 0X&&是NRC错误码,描述了返回错误的原因,1字节。

    DiagnosticSessionControl Service(SID:0X10)有3种类型错误,如下所示:


    UDS诊断 ISO 14229 1~8整套协议-中英文最新版 


    详解CAN总线:什么是CAN总线?

    详解CAN总线:高速CAN总线和低速CAN总线的特性

    详解CAN总线:CAN协议分层结构及功能

    详解CAN总线:CAN节点硬件构成方案

    详解CAN总线:常用CAN连接器的使用方法

    详解CAN总线:CAN总线报文格式—数据帧

    详解CAN总线:标准数据帧和扩展数据帧​​​​​​

    详解CAN总线:CAN总线报文格式—遥控帧

    详解CAN总线:CAN总线报文格式—错误帧

    详解CAN总线:CAN总线报文格式—过载帧

    详解CAN总线:CAN总线报文格式—帧间隔

    一文搞懂CAN和CAN FD总线协议

    CAN与CAN FD通信之间存在的问题

    详解CAN总线:CAN总线故障界定与管理

    详解CAN总线:CAN总线通信优先级机制 

  • 相关阅读:
    excel查找与引用函数
    【Linux】shell脚本和bat脚本:
    【Java】恺撒密码,stream流,方法引用
    LintCode 3. 统计数字 Python
    Redis笔记--手写版
    Java编程练习题Demo51-Demo60
    Elasticsearch搜索引擎:ES的segment段合并原理
    开源WIFI继电器之硬件电路
    信息系统项目管理师必背核心考点(五十三)质量等级
    基于容器和集群技术的数据自动化采集设计和实现
  • 原文地址:https://blog.csdn.net/m0_38106923/article/details/127909664
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号