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

[UDS] --- CommunicationControl 0x28

1 0x28功能描述

根据ISO14119-1标准中所述,诊断服务28服务主要用于网络中的报文发送与接受,比如控制应用报文的发送与接收,又或是控制网络管理报文的发送与接收,以便满足一定场景下的应用需求。

2 0x28应用场景

一般而言,对于28诊断服务,主要应用场景为以下场合:

存在某些特殊的测试场景,比如只希望接收或者发送对应的网络管理与应用报文;绝大多数情况下应用在刷写ECU的过程中,即在预编程条件下执行28服务功能寻址便可以抑制总线应用报文与网络管理报文的发送与接收,以便减少网络总线负载,提高ECU下载效率,同时刷写结束后也要执行28服务使能对应控制报文的发送与接收,在此过程中一般会配合85服务一起使用,后期会给大家介绍,敬请关注。

上述这些应用场景较为常见,这里就不一一列举。

3 0x28服务请求

3.1 0x28 request格式

按照ISO14229-1标准所述,下图所示为28通信控制原理中诊断服务请求格式:
在这里插入图片描述- #1参数为service ID 28

  • #2参数为子功能码
  • #3参数为通信类型
  • #4 #5 参数nodeIdentificationNumber仅在subFunction等于4或者5才有效,否则#4,#5参数可以不存在

3.2 子功能码

在这里插入图片描述
子功能码各个数字含义如下:
在这里插入图片描述

3.3 communication type

在这里插入图片描述

  • Bit0-1:
    0x1:正常应用报文
    0x2:网络管理报文
    0x3:应用与网络报文

  • Bit4-7:
    0x0:表示使能或者抑制所有的Dcm控制的comM通道;
    0x1:使能或者抑制特定的comM通道;
    0xF:仅能接受请求的comM通道

在这里插入图片描述

4 0x28请求和响应

4.1 正响应及示例

以抑制网络管理报文发送为例
28服务诊断请求实例如下图所示:
在这里插入图片描述
正响应格式
如下图所示,为28诊断服务的正响应格式:
在这里插入图片描述
从上图中可以看出,28诊断服务的正响应由以下2个部分组成:

  • Response ID:该参数固定为SID+0x40 = 0x68;
  • SubFunction:该参数为上述诊断请求格式中controlType;

其中,0x01就是跟诊断请求中的controlType保持一致即可

4.2 负响应NRC

绝大多数情况下,Server针对Client的请求都会给到正响应,比如发生重启前需确保整车处于安全状态,如引擎熄火,车速不能超过3km/h等,或者为了防止不按照诊断请求格式进行请求,那么Server需要通过某种方式来告诉Client执行不成功的原因在哪里以便于调查问题直至得到正响应。

因此ISO14229-1针对所有的诊断服务提供了一种统一的诊断负响应的诊断格式:7F +SID + NRC。

其中NRC全称为Negetive Responce Code,每个NRC具有唯一的含义来代表当前诊断请求错误的原因所在。当然每个诊断服务支持的NRC不尽相同,具体支持的NRC需要参考ISO14229-1标准文档,对于28服务而言支持的NRC如下表:
在这里插入图片描述

相关文章:

  • 信号去噪之卡尔曼滤波
  • 前端大容量存储方案IndexedDB
  • lazarus开发:提升sqlite数据插入速度
  • day45
  • raft和zab算法的区别
  • ubuntu安装python以及conda
  • STM32F4VGT6-DISCOVERY:uart1驱动
  • Ruby中的self、作用域和可见性
  • 排序算法-堆积树排序法(HeapSort)
  • 论坛介绍 | COSCon'23 开源文化(GL)
  • Docker Consul概述及构建
  • Istio实战(十二)-Istio 延长自签发证书的有效期
  • 从历史的探索到RFID固定资产管理的未来
  • QECon大会亮相产品,支持UI自动化测试?RunnerGo
  • 高阶数据结构学习 —— 图(1)
  • @angular/forms 源码解析之双向绑定
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • angular2 简述
  • C语言笔记(第一章:C语言编程)
  • Flex布局到底解决了什么问题
  • Mocha测试初探
  • node入门
  • Zsh 开发指南(第十四篇 文件读写)
  • 从零搭建Koa2 Server
  • 技术胖1-4季视频复习— (看视频笔记)
  • 解决iview多表头动态更改列元素发生的错误
  • 移动端 h5开发相关内容总结(三)
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • $().each和$.each的区别
  • $refs 、$nextTic、动态组件、name的使用
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转)3D模板阴影原理
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET CLR Hosting 简介
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .Net Memory Profiler的使用举例
  • .net refrector
  • .NET Standard 的管理策略
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET实现之(自动更新)
  • /var/spool/postfix/maildrop 下有大量文件
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @在php中起什么作用?
  • [Bugku]密码???[writeup]
  • [CentOs7]iptables防火墙安装与设置
  • [hdu 2896] 病毒侵袭 [ac自动机][病毒特征码匹配]