UDS - 14.2.1 RoutineControl (31) service

news2024/11/18 20:29:01

来自:ISO 14229-1-2020.pdf

目录

14.2.1 服务描述

14.2.1.1 概述

14.2.1.2 通过引用routineIdentifier来启动一个例程

14.2.1.3 通过引用routineIdentifier来停止一个例程

14.2.1.4 通过引用routineIdentifier来请求例程结果

14.2.2请求消息

14.2.2.1请求消息定义

14.2.2.2请求消息子功能参数$Level (LEV_)定义

14.2.2.3 请求消息数据参数定义

14.2.3 积极响应信息

14.2.3.1 积极响应消息定义

14.2.3.2 积极响应消息数据参数定义

14.2.4 支持的否定响应码(NRC_)

14.2.5 消息流示例

14.2.5.1 示例#1: SubFunction = startRoutine

14.2.5.2 例#2: SubFunction = stopRoutine

​14.2.5.3 示例#3:SubFunction = requestRoutineResults


14.2.1 服务描述

客户端使用RoutineControl服务执行定义的步骤序列并获得任何相关结果。该服务具有很大的灵活性,但典型的使用可能包括诸如擦除内存、重置或学习自适应数据、运行自检、覆盖正常的服务器控制策略以及控制服务器值以随时间改变,包括预定义序列(例如关闭可转换屋顶)等等。一般来说,当用于控制输出时,该服务用于更复杂的类型控制,而inputOutputControlByIdentifier用于相对简单的(例如静态)输出控制。

14.2.1.1 概述

客户端使用RoutineControl服务用来:

  • 开始例程;
  • 结束例程;
  • 请求例程结果。

例程由一个2字节的routineIdentifier引用。
下面的子句指定由routineIdentifier引用的启动例程、停止例程和请求例程结果。
重要:服务器和客户端必须满足8.7中规定的请求和响应消息行为。

14.2.1.2 通过引用routineIdentifier来启动一个例程

在StartRoutine请求消息完成和第一个响应消息完成之间的一段时间内,例程应在服务器的内存中启动,如果响应消息是积极的或消极的,表明请求已经执行或正在执行中。

例程可以是代替正常操作代码运行的测试例程,也可以是在正常操作代码运行时启用并执行的例程。特别是在第一种情况下,可能需要使用DiagnosticSessionControl服务在特定的诊断会话中切换服务器,或者在使用StartRoutine服务之前使用SecurityAccess服务解锁服务器。

14.2.1.3 通过引用routineIdentifier来停止一个例程

如果响应消息是积极的或消极的,表明停止例程的请求已经执行或正在执行中,则在StopRoutine请求消息完成和第一个响应消息完成后,服务器例程应在服务器的记忆中停止一段时间。

在任何时候(像在服务器的内存中进行编程或初始化等)服务器例程都应该关闭。

14.2.1.4 通过引用routineIdentifier来请求例程结果

此子功能用于由客户端通过引用routineIdentifier来请求例程结果(例如,退出状态信息),并由在服务器内存中执行的例程生成。

基于例程结果,可能已经在stopRoutine子函数参数的积极响应消息中收到(例如,正常/异常退出结果)requeststroutinerresults子函数应使用。

例程结果的一个例子可能是服务器收集的数据,由于服务器性能限制,这些数据无法在例程执行期间传输。

14.2.2请求消息


14.2.2.1请求消息定义


表425指定了请求消息。

  1. #1: 例程控制请求诊断服务标识符,值为31
  2. #2: 子功能 = [例程控制类型],例如值为01
  3. #3/#4: 例程标识符[]=[字节#1 字节#2],例如值为01 02
  4. #5...#n: 例程控制选项记录[]=[例程控制选项#1 ... 例程控制选项#m ],例如值为06

14.2.2.2请求消息子功能参数$Level (LEV_)定义

该服务使用子功能参数来选择对例程的控制。可能标准的解释和使用在表426中详细说明(未显示suppressPosRspMsgIndicationBit(位7))。

 

  1. 00: ISOSAEReserved,此值由本文档保留,以供将来定义。
  2. 01: startRoutine,该参数指定服务器将启动由routineIdentifier指定的例程。
  3. 02: stopRoutine,该参数指定服务器停止由routineIdentifier指定的例程。
  4. 03: requestRoutineResults,该参数指定服务器将返回由routineIdentifier指定的例程的结果值。
  5. 04-7F: ISOSAEReserved,此值由本文档保留,以供将来定义。

14.2.2.3 请求消息数据参数定义

表427指定了请求消息的数据参数。

  1. routineIdentifier:这个参数应该标识一个服务器本地例程,并且不在表F.1中定义的dataIdentifiers的范围内。
  2. routineControlOptionRecord:这个参数记录包含:

         - 例程条目选项参数,可选地指定例程的启动条件(例如timeToRun, startUpVariables等);

         - 例程退出选项参数,可选地指定例程的停止条件(例如:timeToExpireBeforeRoutineStops,              变量等);

         - request Routine Results选项参数。

14.2.3 积极响应信息


14.2.3.1 积极响应消息定义


表428指定了积极响应消息。

  1. #1: 例程控制响应诊断服务标识符,值为71
  2. #2: 例程控制类型,例如值为01
  3. #3/#4: 例程标识符[]=[字节#1 字节#2],例如值为01 02
  4. #5: 例程信息,例如值为01
  5. #6...#n: 例程状态记录[]=[例程状态#1 ... 例程状态#m ],例如值为06
  6. C1: RoutineInfo字节指定了一个方案(例如StartRoutine, StopRoutine, RequestRoutineResults),以允许任何例程的通用外部测试设备处理。对于任何由ISO/SAE规范(例如ISO 27145-3, SAE J1979-DA, ISO 26021)定义routineStatusRecord的例程,即使ISO/SAE定义的routineStatusRecord的大小等于“0”数据字节,该参数也是必需的。对于那些routineStatusRecord完全由车辆制造商定义的例程,该参数的支持是可选的。这个字节的定义应该留给汽车制造商。

    U: 如果车辆制造商为routineIdentifier (RID)指定了RoutineStatusByte #m,则只能包含在routineStatusRecord[]中。

14.2.3.2 积极响应消息数据参数定义


表429指定了积极响应消息的数据参数。

  1. routineControlType:该参数是请求消息中SubFunction参数的第6 - 0位的回显。
  2. routineIdentifier:该参数是请求消息中的routineIdentifier的回显。
  3. routineInfo:RoutineInfo字节编码是特定于车辆制造商的,并根据此返回值为车辆制造商提供了一种机制,以支持通用的外部测试设备处理所有实现的例程(例如,如果需要stopRoutine或requestRoutineResults)。
  4. routineStatusRecord:这个参数记录被用来给客户端:
    1. - 关于例程开始后服务器状态的附加信息,或者
    2. - 关于例程停止后服务器状态的附加信息(例如,总运行时间,例程在停止前生成的结果等),             或
    3. - 例程的结果(退出状态信息),该例程之前已经在服务器中停止。

14.2.4 支持的否定响应码(NRC_)

本服务应实施以下否定响应代码。表430记录了每个响应代码发生的情况。如果错误场景适用于服务器,则列出的否定响应应使用。

 计算序列如图30所示。 

  1. SubFunctionNotSupported(12-SFNS):如果请求的子函数通常不被支持,或者请求的RoutineIdentifier不被支持,这个NRC将被发送。
  2. incorrectMessageLengthOrInvalidFormat(13-IMLOIF):如果信息长度错误,则应发送此NRC。
  3. conditionsNotCorrect(22-CNC):如果请求RoutineControl的条件不满足,这个NRC将被返回。
  4. requestSequenceError(24-RSE):在下列情况下,应退还NRC:
    • -程序目前处于激活状态,当接收到'startRoutine'子函数时不能重新启动(由车辆制造商决定给定的程序是否可以在激活状态下重新启动)
    • -当接收到stopRoutine子函数时,这个例程目前不是活动的。
    • -当接收到'requestRoutineResults'子函数时,例程结果不可用(例如,请求的routineIdentifier从未启动过)。
  5. requestOutOfRange(31-ROOR):在下列情况下,应退还NRC:
    1. -服务器不支持请求的routineIdentifier,
    2. -用户可选的routineControlOptionRecord包含了请求的routineIdentifier的无效数据。
  6. securityAccessDenied(33-SAD):如果客户端发送带有有效安全routineIdentifier的请求,并且服务器的安全特性当前处于激活状态,则发送NRC。
  7. GeneralProgrammingFailure(72-GPF):如果服务器在执行访问服务器内部内存的例程时检测到错误,则应返回此NRC。例如,当例程擦除或编程永久存储器设备(例如闪存)中的某个存储器位置时,对该存储器位置的访问失败。

 注:例程控制服务处理流程。

14.2.5 消息流示例

14.2.5.1 示例#1: SubFunction = startRoutine

本小节规定了在服务器中启动一个例程以连续地(尽可能快地)对所有输入和输出信号进行信号间歇测试的测试条件。然后,技术人员可以“摆动”被测系统的所有线束连接器。完成此操作后,服务器中的例程将停止。routineIdentifier通过routineIdentifier 0201引用这个例程。

试验条件:点火=开,发动机=关,车速= 0 [kph]。
通过将suppressPosRspMsgIndicationBit (SubFunction参数的第7位)设置为"FALSE"('0'),客户端请求有一个响应消息。

表431指定了RoutineControl请求消息流—示例#1。

 表432指定了积极响应消息流—示例#1。

14.2.5.2 例#2: SubFunction = stopRoutine

本小节规定了在服务器中启动一个例程以连续地(尽可能快地)对所有输入和输出信号进行信号间歇测试的测试条件。然后,技术人员可以“摆动”被测系统的所有线束连接器。完成此操作后,服务器中的例程将停止。routineIdentifier通过routineIdentifier 0201引用这个例程。

试验条件:点火=开,发动机=关,车速= 0 [kph]。
通过将suppressPosRspMsgIndicationBit (SubFunction参数的第7位)设置为"FALSE"('0'),客户端请求有一个响应消息。

表433指定了RoutineControl请求消息流—示例#2。

表434指定了RoutineControl正向响应消息流—示例#2。 

14.2.5.3 示例#3:SubFunction = requestRoutineResults

本小节规定了在服务器中启动一个例程以连续地(尽可能快地)对所有输入和输出信号进行信号间歇测试的测试条件。然后,技术人员可以“摆动”被测系统的所有线束连接器。完成此操作后,服务器中的例程将停止。routineIdentifier通过routineIdentifier 0201引用这个例程。

试验条件:点火=开,发动机=关,车速= 0 [kph]。
通过将suppressPosRspMsgIndicationBit (SubFunction参数的第7位)设置为"FALSE"('0'),客户端请求有一个响应消息。

表435指定了RequestRoutineResults请求消息流——示例#3。

表436指定RequestRoutineResults积极响应消息流—示例#3。

14.2.5.4 例4:SubFunction = 带routineControlOption的startRoutine

本款规定了在变速箱控制单元中启动例行程序以在特殊模式下校准某一档位的换挡的测试条件。
档位可以是#1到#20的任何档位,模式可以是工作台,独立和车载。routineIdentifier通过routineIdentifier 0202引用这个例程。

试验条件:点火=开,发动机=关,车速= 0 [kph]。
通过将suppressPosRspMsgIndicationBit (SubFunction参数的第7位)设置为"FALSE"('0'),客户端请求有一个响应消息。

表437指定了RoutineControl请求消息流—示例#4。

 

 表438指定了RoutineControl正向响应消息流—示例#4。

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

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

相关文章

【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现

和之前介绍的批量归一化层作用类似,残差网络(ResNet)提出的主要目的也是为了优化深度神经网络中数值稳定性问题。 1. 残差块介绍 假设输入为x\boldsymbol{x}x,希望学出的理想映射为f(x)f(\boldsymbol{x})f(x)。下图左右为普通网…

【GO】 K8s 管理系统项目[API部分--Namespace]

K8s 管理系统项目[API部分–Namespace] 1. 接口实现 service/dataselector.go type namespaceCell corev1.Namespacefunc(n namespaceCell) GetCreation() time.Time {return n.CreationTimestamp.Time }func(n namespaceCell) GetName() string {return n.Name }2. Namespa…

景联文科技:赋能智能安防,详谈其中运用到的数据标注类型

“数据显示,2013-2020年我国智能安防行业市场规模由101亿元增长至511亿元。随着智能安防在多个领域的深化应用,预计2023年我国智能安防行业市场规模将超1000亿元。 智能安防领域中,数据标注主要应用于计算机视觉与语音识别两个主要领域,具体…

人口数据可视化,深圳是人口密度最高的城市,东莞上海位居二三名

进入2022年以来,人口问题频频引起热议,人口老龄化、生育意愿再创新低、男女比例失衡等等问题频出。具体的人口问题如何,跟随可视化互动平台的数据可视化大屏一起来了解吧! 我国各省人口数量从地图分布图看,广东省、山…

安装Pytorch

太难了 之前在学校就没安装好 各种报错 终于安装好了 浅浅记录一下 撒花撒花 菜鸡经验: 1.本地python 与 Anaconda 是两个独立的东西 2.可直接在Anaconda中创建不同新的虚拟环境以适配不同的需求 3.cuda 的版本与 NVIDIA版本需要一致,与Python环境也需要…

Echarts图表相关知识

一个基于 JavaScript 的开源可视化图表库。目前我们的前端框架中已经集成了Echarts库v5.3.2),使用的时候不需要再次安装,直接使用即可,具体安装方法不再赘述。 有些时候官网的例子不满足我们的需求,这个时候就要求我们…

cq:fast lookup argument

1. 引言 Ariel Gabizon等人2022年论文《cq: Cached quotients for fast lookups》。 lookup argument的核心思想为: 对于特定的quotient多项式,经某种预处理之后,将更易于计算其commitments。 当前的lookup argument系列方案主要有&#…

实拍视频、图片素材库,高质量、免费下载。

这几个网站的实拍素材,质量高,还可以免费下载。 1、菜鸟图库 https://www.sucai999.com/?vNTYwNDUx 菜鸟图库有超多设计类素材,像平面、UI、电商、办公类等等在这个网站都能找到,网站还有很多实拍视频素材,质量很高&a…

k8s集群部署01

k8s集群部署01Kubernetes简介Kubernetes部署节点部署关于yum缓存提示满了,Rhel7换源解决报错解决过程配置文件内容—要自己看链接是否过期集群初始化Kubernetes-kubectl命令出现错误【The connection to the server localhost:8080 was refused - did you specify t…

git chrry pickup

git chrry pickup目录概述需求:设计思路实现思路分析1.java2.转移分支3.git merge4.cherry pick.切换到 master 分支Cherry pick 操作参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,…

基于MVC的在线影票售卖系统/基于ASP.NET的电影院售票系统

摘 要 随着电影院规模的不断扩大,人流数量的急剧增加,有关电影院的各种信息量也在不断成倍增长。面对庞大的信息量,就需要有在线影票售卖系统来提高电影院工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速查询&…

副业项目分享,旧衣回收项目怎么做

大家好,我是蝶衣王的小编,今天分享一个简单的项目 我们每个家庭都有多余的旧衣服。许多人会直接把它们扔进垃圾桶。然而,这里隐藏着巨大的商机。说到这里,每个人都应该想到:旧衣服的回收。 事实上,目前国…

《位图布隆过滤器》

【一】位图的概念 位图,就是用每一个比特位来存放某种状态,适用于海量数据,整数,数据无重复的场景,通常是用来判断某个数据存不存在的。例如:10个整数本应该存放四十个字节,此时用位图只需要十…

Ajax(JavaWebAjax、源生Ajax、跨域)

1.JavaWeb - Ajax 概念:AJAX(Asynchronous Java JavaScript And Xml ):异步的JavaScript和Xml AJAX作用: 与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据。 使用…

2022-12-28-面试题整理

1. Spring中Bean创建完成后执行指定代码的几种实现方式 实现ApplicationListener接口 实现ApplicationListener接口并实现方法onApplicationEvent()方法,Bean在创建完成后会执行onApplicationEvent()方法 Component public class DoByApplicationListener impleme…

Java操作redis数据库之读取csv文件

csv文件 要想对某个文件进行具体操作,首先要了解这个文件的结构。csv 全称“Comma-Separated Values”,是一种逗号分隔值格式的文件,是一种用来存储数据的纯文本格式文件。CSV 文件由任意数目的记录组成,记录间以某种换行符分隔&…

FPGA再入门——UART IP核调用

我的工作偏向硬件设计与调试,但是经过几年的发展,发觉不会调程序发展真的很受限制。最近越来越被这种限制折磨的很难受,所以开始学习调调程序。其实,本科与研究生阶段都有过做写代码的经历,算是入过门。但是&#xff0…

[3]ESP32连接MQTT服务端

MQTT库&#xff1a;PubSubClient 连接MQTT服务端 #include <Arduino.h> #include <WiFi.h> #include <PubSubClient.h>const char *ssid "613专属"; const char *password "613613613"; const char *mqttServer "test.ranye-…

CDGA|持续投入开展数据治理工作可以从这四大方向着手

数字化转型趋势下&#xff0c;外部监管以及内部数据使用都对数据治理提出更高效、更准确、更完备、更合规的要求&#xff0c;企业如何抓住新形势下的要求&#xff0c;开展自身数据治理工作&#xff1f; 纵观数据治理的发展历程&#xff0c;剖析数据治理的建设路径&#xff0c;持…

3. 中断向量是( )。 ————计算机组成原理

中断向量是&#xff08; &#xff09; A.子程序入口地址 B.中断向量表的首地址 C.终端服务程序入口地址 D.终端服务入口地址的地址 答案&#xff1a; C 知识点&#xff1a; 终端的概念&#xff1a; 1 机器出现了一些紧急事务&#xff0c;CPU不得不停下当前正在执行的程序&…