目录
大家好,时隔快一年没有更新了,今天开启会持续更新这个专栏,感谢大家的支持
1 28服务的总体介绍
1.1 定义
28服务就是关闭通信和开启通信服务,根据不同的子功能,确定是禁止发送还是禁止接受,是开启发送还是开启接受。
1.2 28服务使用的场景
场景1:在使用诊断仪升级和OTA升级程序的过程中,都会使用到28服务,作用是关闭控制器的通讯,确保在刷写的过程中没有其它的APP报文和NM报文的干扰,刷写完成后会再次使用28服务开启控制器的通信。
场景2:在整车故障问题查询时,也会使用到28服务来进行排查问题,例如整车某个网段总线报文有错误帧,可以通过物理寻址的方式,依次关闭控制器的通讯,当关闭某个控制器的通讯,错误帧消失的时候,基本可以定位是该控制器导致的总线网络异常,但是,这种方法在实际的工程应用中并不是一定有效,曾经遇到过即使关闭了总线通讯,错误帧依然存在的情况,具体原因可能和收发器的硬件或者相关软件设置有关,非专业涉及领域,这里不作详细解析。
2 28服务的请求
2.1 28服务的请求格式
28服务主要关闭前三个字节,第一个是服务ID,第二个是支持的子功能类型,第三个是通信类型,具体的会在文章的下方详细讲解
字节 | 参数名称 | 参数约定 | 数值(Hex) |
Byte1 | Request SID 请求ID | M | 28 |
Byte2 | SubFunction | M | 00 to FF |
Byte3 | CommunicationType | M | 00 to FF |
2.2 28服务请求参数说明
SubFunction:此参数是28服务支持的子功能,28服务在日常测试工作中使用比较多的子功能是00(开启接收和发送)和03(禁止接受和发送)。
00 | 使能接收和发送 |
01 | 使用接收但是禁止发送 |
02 | 禁止接收但是使能发送 |
03 | 禁止接收和发送 |
CommunicationType:此参数是28服务具体禁止或者开启的报文类型,主要是分为应用报文和网络管理报文,实际过程应用中比较多的是03(APP报文和NM报文),具体如下:
00 | ISO预留 |
01 | 正常通信报文,主要指APP报文 |
02 | 网络管理报文 |
03 | 正常通信报文和网络管理报文 |
3 28服务的响应
3.1 28服务的肯定响应
28服务的肯定响应格式很固定也很简单,有效字节就是响应SID和相应的子功能,如下表所示:
字节 | 参数名称 | 参数约定 | 数值(Hex) |
Byte1 | Positive Response SID 肯定响应回复ID | M | 68 |
Byte2 | SubFunction | M | 00 to FF |
3.2 28服务支持的否定响应码
28服务支持的否定响应码总共是四个,如下所示:
NCR | 描述 |
12 | 该子功能不支持 |
13 | 诊断仪发送的诊断报文长度不符合要求 |
22 | 不满足执行该诊断服务的条件 |
31 | 诊断请求中参数超出定义的范围,或者访问的DID和RID是服务器不支持或者在当前会话中不支持的 |
4 举例说明
4.1 肯定响应举例
诊断仪(Request):03 28 03 03 00 00 00 00
ECU肯定响应(Response):02 68 03 00 00 00 00 00
跟该专栏中之前介绍的一样:
Request中03代表有效字节数,28表示请求服务ID,03表示子功能是禁止发送和接收,下一个03表示同时禁止APP报文和NM报文。
Response中02代表有效字节数,68表示响应服务ID,03表示子功能类型,后面全部是填充位。
4.2 否定响应举例
诊断仪(Request):03 28 00 03 00 00 00 00
ECU肯定响应(Response):03 7F 28 22 00 00 00 00
Request中03代表有效字节数,28表示请求服务ID,00表示子功能是开启发送和接收,下一个03表示同时开启APP报文和NM报文。。
Response中03代表有效字节数,7F表示否定响应ID,28表示请求服务类型,22是否定响应码,其余是填充位。
以上就是本次28服务的讲解,如在学习过程中有任何疑问,欢迎留言沟通,一起努力,一起进步,下一章节我们讲解一直没来得及讲解的31服务,敬请期待~
如果喜欢,欢迎点赞收藏