【车载开发系列】UDS诊断---输入输出控制($0x2F)

news2024/12/27 15:44:55

【车载开发系列】UDS诊断—输入输出控制($0x2F)

UDS诊断---输入输出控制($0x2F)

  • 【车载开发系列】UDS诊断---输入输出控制($0x2F)
    • 一.概念定义
      • 1)与0x31例程控制服务的关系
      • 2)与0x22读取数据标识符的关系
    • 二.应用场景
    • 三.限制条件
    • 四.报文格式
      • 1)请求报文
      • 2)肯定响应
      • 3)否定响应

一.概念定义

  1. 诊断工具使用此服务来替代ECU实现的标识符对应的输入信号的值、ECU内部功能和/或控制电子系统的输出。
  2. 2F服务作为输入输出控制服务,其全称为InputOutControlByIdentifier。简而言之就是屏蔽实际的输入输出信号值,取而代之的是client主动以某种特定的控制方式去设置这些信号值。
  3. 该服务是用于client主动请求server去对相关输入输出信号进行控制。
  4. ECU简单来说就是一个对输入(sensor)进行计算再产生输出(actuator)的系统。类似于软件架构风格当中的管道过滤器风格,而2F这个服务就是对ECU的输入和输出进行控制。

1)与0x31例程控制服务的关系

  1. InputOutputControlByIdentifier (0x2F) 和RoutineControl (0x31) 这两个诊断服务的用途和用法有点类似,都是调用ECU内部一些预定义的操作序列,相当于是我们从外部利用诊断手段控制ECU的接口。
  2. 2F服务主要用于较为简单的输入输出控制,而更为复杂的输入输出控制使用31(Routine Control)服务则更为合适。

2)与0x22读取数据标识符的关系

  1. 0x22服务可以通过信号所在的DID去获取对应的数值,然后与2F请求设置的数值比较是否相同,进而便可以知道2F控制是否生效。
  2. 支持2F的DID必然支持22服务,反之支持22的DID不一定支持2F服务。
  3. UDS定义可以用22服务读取2F服务中使用的dataIdentifier,返回值是状态信息,具体的状态信息是什么,可以由使用者自定义。

二.应用场景

  1. 输入输出控制比较常用的场景就是用来进行一些下线检测,前面提到仪表的各种警告灯,在下线时如果想检查是否能够点亮,不太可能去制造相关的故障或状态来让仪表的灯点亮,所以输入输出控制这个服务就可以用在这里。
  2. 通过控制仪表控制器的输出变量,来直接控制点亮相关的警告灯,来达到检测目的。
  3. 请求打开远光灯,那么请求之后无论车内的开关什么状态,远光灯都是打开状态,但是要注意这个控制的值应该在符合其正常或安全的范围内才可以被执行
  4. 2F服务主要针对输入输出控制,列举常见的使用场景如下:
    • 车窗的升降控制;(OutputControl)
    • 雨刮器的启动关闭控制;(OutputControl)
    • 直连执行器的启动与停止;(OutputControl)
    • 车灯的开启与关闭;(OutputControl)
    • ADAS相关功能的配置开启与关闭;(InputControl)
    • LED报警灯的驱动与关闭;(OutputControl)

三.限制条件

  1. 一般输入输出控制仅在扩展会话下支持,且需要先通过安全访问才可以执行
  2. 一旦按照诊断会话服务所介绍的跳转到了默认会话,那么所有被改变的内容都会恢复到被控制之前的状态。
  3. 输入输出控制服务会通过一个数据ID以及ID所代表的数据参数来表示其所控制的一个或一类输入或输出内容,只有经授权的诊断工具才可以使用输入输出控制功能,而且只有在特定的车辆运行条件下该功能才能被激活。基本条件一般定义如下(不同的车企有不同的定义):
    • 车速小于3km/h;
    • 车速有效;
    • 激活的输入输出并不存在严重的故障条件(根据特定的ECU/系统来定义);
    • 系统不存在任何与操作者、驾驶员及乘客安全相关的隐患(根据特定的 ECU/系统来定义)
  4. 若上述任何一个条件不满足,ECU应该拒绝通信控制请求报文并发送否定响应码22h。
  5. 每个激活的输入输出将保持激活状态直到:
    • 执行了ECU的硬件或软件复位;
    • 由于任何原因,ECU由非默认会话模式切换到默认会话模式。
  6. 某些特殊的ECU可能会对该服务做特别的约束。这些需求需在该ECU的诊断文档中描述说明清楚。
  7. 用户的可选参数“控制选项”(ControlOption)应包含ECU输入信号、内部功能和/或输出信号的所需信息。

四.报文格式

0x2F这个服务是没有子功能的。这个需要特别注意。

1)请求报文

  1. 2F服务的request由4部分组成,第一部分就是SID;
  2. dataIdentifier,用于标识被控制的IO对象
  3. controlOptionRecord,用于标识控制方式,比如是启动、停止控制,还可以有一些自定义的参数来进行更精准的控制,比如让某个执行器的动作持续多长时间。
    controlOptionRecord又分为两部分,分别是1个byte的inputOutputControlParameter,以及若干byte由厂家自定义使用的controlState,controlState就是要控制的状态参数
  4. controlEnableMaskRecord,这是一个可选参数,用于标识controlOptionRecord中的哪些parameter被使用。
    在这里插入图片描述
  • inputOutputControlParameter具体的值定义如下
HexDescription描述controlState详细
0x00returnControlToECU将控制权还给ECU,即结束控制请求里不需要包含,响应里必须包含诊断工具不再能通过 “ 输入输出本地标识符 ”控制输入信号,内部参数或输出参数
0x01resetToDefault将dataIdentifier所引用的输入信号、内部参数、输出信号等设为默认值请求里不需要包含,响应里必须包含请求通过“输入输出本地标识符”复位输入信号,内部参数或输出参数至缺省值
0x02freezeCurrentState将dataIdentifier所引用的输入信号、内部参数、输出信号等冻结住请求里不需要包含,响应里必须包含:请求通过“输入输出本地标识符”冻结输入信号,内部参数或输出参数的当前状态
0x03shortTermAdjustment将dataIdentifier所引用的输入信号、内部参数、输出信号进行设置,其实就相当于开始了对ECU的控制请求和响应里必须包含请求通过RAM中的“输入输出本地标识符”调整输入信号,内部参数或输出参数的值至参数controlOption 中的值

2)肯定响应

  1. 肯定响应报文和请求报文格式少了一个参数,第一个字节是肯定响应的服务ID,后面紧跟着DID和inputOutputControlParameter,然后是控制状态,注意没有controlMask参数。
  2. ControlOptionRecord:表示控制模式及控制的相关参数组成的数据集;
  3. 在肯定响应当中,有单参数控制响应和多参数控制响应两种情况,具体体现在ControlOptionRecord中数据集的个数。
    在这里插入图片描述

3)否定响应

于2F服务负响应的格式如下:
诊断服务负响应格式: 0x7F + Request SID + NRC。
以此类推,2F服务诊断服务负响应: 0x7F + 0x2F + NRC。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据传送类指令(PUSH,POP,LEA)

目录 数据传送类指令 堆栈的概念: 进栈指令 (PUSH) 出栈指令(POP) 练习 LEA取偏移地址(有效地址EA)指令(去括号) LEA和OFFSET区别: 用法注意 LEA和MO…

微服务框架 SpringCloud微服务架构 微服务保护 31 限流规则 31.6 热点参数限流

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护31 限流规则31.6 热点参数限流31.6.1 热点参数限流31.6.2 案例31 限流规则 31.6 热点参数限流 3…

【代码审计-.NET】基于.NET框架开发的基本特征

目录 一、.NET基本架构 1、基本构成 2、可支持语言 3、封装 4、文件 5、指向解析 6、安全认证 二、工具 1、ILSpyi 2、dnSpy 3、Reflector (网上找的一张图谱) 本博客只面向讲安全相关内容 一、.NET基本架构 1、基本构成 可支持语言&#xf…

web shell控制目标

文章目录一、封神台五1、为什么提权2、如何寻找exp3、使用exp提权一、封神台五 1、为什么提权 进入目标机器后权限可能不够导致无法执行高权限操作 右键地址进入终端 发现没有操作权限 提权原理:借助高权限的进程执行我们的指令 2、如何寻找exp 什么是exp&a…

【MOSMA】基于粘菌算法求解多目标优化问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

【Java版oj】day02倒置字符串

目录 一、原题再现 二、问题分析 三、完整代码 一、原题再现 倒置字符串_牛客题霸_牛客网 描述 将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I 输入描述: 每个测试输入包含1个测试用例&#x…

web前端期末大作业 html+css+javascript+jquery+bootstarp响应式鲜花售卖网站16页

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

最新最全面的Java面试题及答案(212道)

文章目录一. Java 基础1. JDK 和 JRE 有什么区别?2. 和 equals 的区别是什么?3. 两个对象的 hashCode() 相同,则equals() 也一定为true,对吗?4. final 在 Java 中有什么作用?5. Java 中的 Math. round(-1.…

【图像分割】基于Kmean聚类 分水岭、oust、粒子群算法优化脂肪肝图像分割附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

OPT(奥普特)工控机新品上市,产品矩阵再扩大

近日,OPT(奥普特)发布工控机新品,进一步扩展产品矩阵,为制造业数字化转型提供更为全面的机器视觉产品和服务。 OPT(奥普特)上市的工控机共有两大系列,分别是3U桌面式和4U上架式的设…

【金猿人物展】映盛中国CEO谭运猛博士:数字化逆向重构将会占据行业红利成为新宠...

‍谭运猛本文由映盛中国创始人兼CEO谭运猛撰写并投递参与“数据猿年度金猿策划活动——2022大数据产业趋势人物榜单及奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业2022年伴随着新冠疫情的反复和经济下行的持续影响,各行各业都面临着数字化转型的行…

【每日小技巧】如果Tomcat的端口被占用,怎么处理该报错

苦恼的问题:当我们在用Tomcat时,发现我们要用的端口被其他程序占用了,如图: 解决办法: ①winR,输入cmd,打开命令行 输入命令netstat -ano,列出所有的端口号使用情况 ②查看PID&#…

矩阵理论复习(四)

2003年试题 向量二范数也具有酉不变性 Schur定理的应用 向量范数的判定 向量范数的比较 酉矩阵的M-P广义逆就为该矩阵的转置 列满秩矩阵的左逆 一个矩阵乘以其逆矩阵等于单位矩阵,单位矩阵的算子范数均为1,算子范数的相容性 正规矩阵的性质 …

嵌入式:ARM的工作模式与寄存器组织

文章目录特权模式处理器启动时的模式转换图ARM的寄存器组织ARM寄存器组成概述ARM状态下的寄存器组织Thumb状态下的寄存器组织CPSR(当前程序状态寄存器)的低5位用于定义当前操作模式 , 如图示特权模式 除用户模式外的其他6种模式称为特权模式。 特权模式…

nodejs基于vue技术的小饰品购物商城网站

开发语言:nodejs 框架:Express 数据库:mysql 数据库工具:Navicat11 开发软件:VS code/HBuilder X 浏览器:谷歌浏览器 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本…

【C++常用容器】STL基础语法学习queue容器

目录 ●queue的基本概念 ●queue常用接口 ●构造函数 ●赋值操作 ●数据存取 ●大小操作 ●queue的基本概念 简要介绍:queue是一种先进先出的的数据结构,它有两个出口。队列容器允许从一端新增元素,从另一端移除元素。队列中只有队…

如何批量查询谷歌PR权重是多少?谷歌PR权重怎么批量查询

权重是就是网站在搜索引擎心目中的位置,如果一个网站在搜索引擎心目中的位置高的话,当然容易获得较好的排名,今天不是来跟大家聊如何提升网站权重的,而是教大家如何去看一个网站的权重,做网站的朋友都要知道要做关键词…

RadSystems Studio构建CRUD操作程序

RadSystems Studio构建CRUD操作程序 RadSystems Studio是一个快节奏的开发环境,不需要专门的编程。该软件提供了数字解决方案和组件,以尽快在API和UI中构建程序,只需少量代码,甚至无需编写。该软件减少了编写时间并改进了开发过程…

win10 安装配置nvm

第一步:下载安装包 链接:https://pan.baidu.com/s/1B_gc9DnM8s3utcd_DB1H4Q?pwdxm03 提取码:xm03 第二步:安装nvm 第三步:配置nvm setting文件加上淘宝镜像 node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.or…

【python】os.system() os.popen() 在 python 执行 cmd 指令

先说总结 os.system:获取程序执行命令的返回值。 os.popen: 获取程序执行命令的输出结果。 commands:获取返回值和命令的输出结果。1 os.system() 这个方法是直接调用标准C的system() 函数,仅仅在一个子终端运行系统命令&#x…