当前位置: 首页 > news >正文

UDS诊断系列之十八故障码的状态掩码

在谈19服务的子功能之前,先说一下故障码(DTC)的状态掩码是什么。

一、状态掩码

状态掩码由八个状态位构成,客户端利用它向服务器请求与其状态相匹配的DTC信息。当服务器接收到来自客户端的请求时,它会通过过滤匹配的状态位掩码来进一步处理该请求。
如果DTC的实际状态位中的任何一个被设置为“1”,并且请求掩码中相应的状态位也是“1”(即,请求掩码与DTC的实际状态进行位逻辑AND运算,并且结果不为零),那么认为DTC的状态与状态掩码是匹配的。
如果客户端提供了一个包含服务器不支持的状态位的掩码,服务器应当仅使用其支持的状态位来处理DTC信息,忽略不支持的状态位,以确保请求的准确处理。

二、状态掩码定义

在阐述状态掩码各位的含义之前,有必要先介绍几个重要概念:

  1. 测试(Test):
    故障检测是一种测试行为,针对特定的故障内容执行一系列检测动作。这种检测可能是在特定条件下执行一次,也可能是定期进行。每次检测都会产生一个结果,即成功或失败。测试有时会因干扰产生错误的反馈结果,实际的情况可能需要通过累积的数据(如计数器记录的错误次数)来判断。
  2. 测试样本(Test Sample):
    每次进行的测试被称为一个测试样本。这些样本可能通过或失败,但这并不代表存在故障。由于测试过程中可能会受到外部干扰,因此需要设立一个计数器来记录错误的次数,以便后续分析和判断。
  3. 操作循环(Operation Cycle):
    操作循环是指控制器的一次完整的上下电过程,比如从电源接通到断开的过程。对于与排放相关的节点,操作循环可能是一次发动机启动到停止的过程。此外,它还可以指代从唤醒到休眠的过程,特别是在涉及到控制器或设备的唤醒和休眠机制的情境下。控制器的整个工作周期被称为一个操作循环。

在此基础上我们可以理解状态掩码的相关概念,状态掩码是一个用于表示不同状态信息的编码方式,其中每一位都有其特定的含义。下面将详细解释状态掩码的名称及其含义:

bitNameDescription
0testFailed最近的一次测试结果是失败,表示当前存在故障
1testFailedThisOperationCycle当前操作循环测试结果至少有一次是失败的
2pendingDTC当前操作循环和上一个操作循环测试结果至少有一次是失败的,也就是说最近有测试失败的情况
3confirmedDTC已经符合故障确认的条件,即测试失败的次数达到确认故障的要求,但并不代表当前故障依然存在
4testNotCompletedSinceLastClear自从上次故障被清除之后,还没有完成测试
5testFailedSinceLastClear自从上次故障被清除之后,故障测试结果至少有一次是失败的
6testNotCompletedThisOperationCycle当前操作循环还没有完成测试
7warningIndicatorRequested有一些故障可能需要展示一些提示,如果测试失败并且提示条件满足,该位置1

上述八个位通常不会全部同时使用,实际上,常用的主要是 bit0 和 bit3。具体而言,bit0 代表当前故障,而 bit3 则表示历史故障。

三、使用示例

状态掩码在UDS(统一诊断服务)中扮演重要的角色,拥有多种应用。虽然定义相同,但由于其在不同场景下的使用,赋予了不同的含义。以下是详细的解释:

  • DTCStatusMask:这一参数主要在UDS的19服务中的某些请求中使用,如01和02子功能。它表示所请求的状态。例如,当此参数在请求中为0x01时,它表示请求与bit0 = 1的DTC相关的信息。
  • DTCStatusAvailabilityMask:这个掩码存在于部分19服务的响应中,用于表明控制器支持哪些状态掩码。例如,当值为0x09时,它表示控制器支持bit0和bit1的故障状态。在实际应用中,只有这两个位会根据情况变化,其他位的状态默认为0。
  • statusOfDTC:这表示故障码当前的实际状态,通常存在于19服务的响应中。它是故障码DTC的第四个字节,反映了具体的故障状态信息。

简而言之,这三个状态掩码虽然在UDS中有不同的应用场景和含义,但它们的核心定义是相同的。它们共同为诊断工具提供了关于故障码状态的详细和准确信息。

假设控制器支持的 DTCStatusAvailabilityMask 为 0x09,当我们使用 19 服务进行请求时,希望的 DTCStatusMask 为 0x01。以下是一些 DTC 示例,我们将尝试反馈出正确的结果。

DTCstatusOfDTC
0xD001870x01
0xD002870x08
0xD003860x09

当使用 DTCStatusMask = 0x01 读取故障信息时,反馈结果的计算方法如下:
result=statusOfDTC&DTCStatusAvailabilityMask&DTCStatusMask
如果上述计算结果不为零,则认为匹配。接下来,我们将按照这一计算方法对给定的三个故障进行计算,得到如下结果:

DTCstatusOfDTCDTCStatusAvailabilityMaskDTCStatusMaskresult
0xD001870x010x090x010x01&0x09&0x01 = 0x01
0xD002870x080x090x010x08&00x09&0x01 = 0x00
0xD003860x090x090x010x09&0x09&0x01 = 0x01

如果请求的是 DTC 的数量,则返回结果为 2。如果请求的是故障信息,则返回第一个和第三个故障的相关结果。

相关文章:

UDS诊断系列之十八故障码的状态掩码

在谈19服务的子功能之前,先说一下故障码(DTC)的状态掩码是什么。 一、状态掩码 状态掩码由八个状态位构成,客户端利用它向服务器请求与其状态相匹配的DTC信息。当服务器接收到来自客户端的请求时,它会通过过滤匹配的…...

【jvm】直接引用

目录 1. 说明2. 形式3. 特点4. 生成过程5. 作用 1. 说明 1.在Java虚拟机(JVM)中,直接引用(Direct Reference)是相对于符号引用(Symbolic Reference)而言的,它是指向内存中实际存在的…...

PythonStudio 控件使用常用方式(二十七)TActionList

PythonStudio是一个极强的开发Python的IDE工具,官网地址是:https://glsite.com/ ,在官网可以下载最新版的PythonStudio,同时,在使用PythonStudio时,它也能及时为用户升到最新版本。它使用的是Delphi的控件&…...

PDF 转Word 开源库

1. Apache PDFBox Apache PDFBox 是一个开源的 Java 库&#xff0c;用于创建和操作 PDF 文档。虽然 PDFBox 本身没有直接支持 PDF 转 Word 的功能&#xff0c;但它可以提取 PDF 内容&#xff0c;你可以结合其他方法将这些内容写入 Word。 添加依赖 <dependency><gr…...

Docker - 深入理解Dockerfile中的 RUN, CMD 和 ENTRYPOINT

RUN docker file 中的 RUN 命令相对来教容易理解 RUN 指令用于在构建镜像时执行命令&#xff0c;这些命令会在 Docker 镜像的构建过程中执行。常用于安装软件包、设置环境变量、创建目录等。RUN 指令会在镜像构建中创建新的镜像层&#xff0c;每个 RUN 指令都会创建一个新的镜…...

Python 函数式编程 内置高阶函数及周边【进阶篇 3】推荐

前面我们已经总结并实践了用python获取到了数据。也介绍了python中http网络请求的几种方式&#xff0c;正在学习python开发语言或者对python3知识点生疏需要回顾的请点这里 &#xff0c;本章主要总结了函数式编程及特点 和 python中内置的高阶函数及周边知识&#xff0c;方便自…...

【Rust光年纪】探秘Rust GUI库:从安装配置到API概览

Rust语言GUI库全方位比较&#xff1a;选择适合你的工具 前言 在现代软件开发中&#xff0c;图形用户界面&#xff08;GUI&#xff09;库扮演着至关重要的角色。随着Rust语言的不断发展&#xff0c;越来越多的优秀的GUI库也相继问世&#xff0c;为Rust开发者提供了更多选择。本…...

Element plus部分组件样式覆盖记录

文章目录 一、el-button 样式二、Popconfirm 气泡确认框三、Popover 气泡卡片四、Checkbox 多选框五、Pagination 分页六、Form 表单七、Table 表格 一、el-button 样式 html&#xff1a; <el-button class"com_btn_style">button</el-button>样式覆盖…...

重塑业务生态,Vatee万腾平台:引领行业变革的新引擎

在数字经济浪潮汹涌的今天&#xff0c;传统行业的边界正被不断模糊与重塑&#xff0c;新兴技术如云计算、大数据、人工智能等正以前所未有的速度改变着商业世界的面貌。在这一背景下&#xff0c;Vatee万腾平台应运而生&#xff0c;以其独特的创新模式和强大的技术实力&#xff…...

标准术语和定义中的【架构】应该如何描述

一、参考国家标准和国际标准中对“架构”的描述 &#xff08;1&#xff09;GB/T 8566-2022 国家标准 架构的术语描述&#xff1a;(系统)在其环境中的一些基本概念或性质,体现在其元素关系,以及设计与演进原则中。 &#xff08;2&#xff09;ISO/IEC/IEEE 42010 国际标准 架构的…...

华为鸿蒙Core Vision Kit 骨骼检测技术

鸿蒙Core Vision Kit 是华为鸿蒙系统中的一个图像处理框架&#xff0c;旨在提供各种计算机视觉功能&#xff0c;包括物体检测、人脸识别、文本识别等。骨骼检测是其中的一项功能&#xff0c;主要用于检测和识别人类身体的骨骼结构。 骨骼检测的关键点 骨骼点检测&#xff1a;通…...

Table API SQL系统(内置)函数System (Built-in) Function详解

目录 函数类型 引用函数 函数精确引用 函数模糊引用 函数解析顺序 精确的函数引用 模糊的函数引用 系统函数 标量函数(Scalar Functions) 比较函数(Comparison Functions) 逻辑函数(Logical Functions) 算术函数(Arithmetic Functions) 字符串函数(Strin…...

一键运行RocketMQ5.3和Dashboard

一键运行RocketMQ5.3和Dashboard 目录 一键运行RocketMQ5.3和Dashboard通过Docker Compose 来一键启动运行的容器包括docker-compose.yml文件运行命令启动本地效果查看 参考信息 通过Docker Compose 来一键启动 运行的容器包括 NameServerBrokerProxyDashBoard docker-compo…...

HAL STM32 SG90舵机驱动控制

HAL STM32 SG90舵机驱动控制 &#x1f516;测试对象&#xff1a;STM32F103SG90舵机 &#x1f33c;功能实现&#xff1a;通过串口指令&#xff0c;控制SG90舵机转动到指定角度。 ✨在实际硬件舵机驱动过程中&#xff0c;使用SG90普通舵机空载运转情况下&#xff0c;电流在180mA…...

【Kubernetes】k8s集群图形化管理工具之rancher

目录 一.Rancher概述 1.Rancher简介 2.Rancher与k8s的关系及区别 3.Rancher具有的优势 二.Rancher的安装部署 1.实验准备 2.安装 rancher 3.rancher的浏览器使用 一.Rancher概述 1.Rancher简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台&#xff0c;实…...

AI编程系列一1小时完成链家房价爬虫程序

背景 AI编程实在太火&#xff0c;写了很多年的Java&#xff0c;现在Python 和Go 简单好用&#xff0c;今天结合智谱清言快速完成一个程序爬虫程序&#xff0c;没有任何Python 编程经验&#xff0c;只需要会提问&#xff0c;熟悉简单HTML结构即可。未来一定是有业务能力者的福…...

【JavaEE初阶】文件内容的读写—数据流

目录 &#x1f4d5; 引言 &#x1f334; 数据流的概念 &#x1f6a9; 数据流分类 &#x1f333; 字节流的读写 &#x1f6a9; InputStream&#xff08;从文件中读取字节内容) &#x1f6a9; OutputStream&#xff08;向文件中写内容&#xff09; &#x1f384; 字符流的…...

Spring Boot项目中使用Sharding-JDBC实现读写分离

Sharding-JDBC是一个分布式数据库中间件&#xff0c;它不仅支持数据分片&#xff0c;还可以轻松实现数据库的读写分离。下面是如何在Spring Boot项目中集成Sharding-JDBC并实现读写分离的详细步骤&#xff1a; 目录 1. 引入依赖 2. 配置数据源 3. 配置Sharding-JDBC相关参数…...

【网络安全】SSO登录过程实现账户接管

未经许可,不得转载。 文章目录 正文正文 登录页面展示了“使用 SSO 登录”功能: 经分析,单点登录(SSO)系统的身份验证过程如下: 1、启动SSO流程:当用户点击按钮时,浏览器会发送一个GET请求到指定的URL: /idp/auth/mid-oidc?req=[UNIQUE_ID]&redirect_uri=[REDI…...

Admin.NET源码学习(3:LazyCaptcha使用浅析)

Admin.NET项目前端登录页面的验证码图片默认使用动态图&#xff0c;且图形内容为阿拉伯数字运算&#xff08;如下图所示&#xff09;&#xff0c;用户输入正确的计算结果才能正常登录。项目采用LazyCaptcha模块生成验证码及动态图。   在Admin.NET.Core项目中添加了Lazy.Cap…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...