目录
4.4 服务数据单元(Services data unit)规范
4.4.1.1 A_Mtype, Application layer message type(应用层消息类型)
4.4.1.2 A_SA, Application layer source address(应用层源地址)
4.4.1.3 A_TA, Application layer target address(应用层目的地址)
4.4.1.5 A_TA_Type, Application layer target address type(应用层目的地址类型)
4.4.3 可选参数—A_AE, Application layer remote address(应用层远程地址)
书接上回,上一篇笔记我介绍了一下14229-1的内容、意义、发展以及文档中的一些术语和缩略语,这边文章继续往下阅读,做好心理准备,本章的内容不是很好理解哦,让我们一起走进服务的世界。
应用层服务通常被称为诊断服务,诊断服务应用于基于客户端-服务器的系统中,主要的功能是执行对车载服务器的测试、检查、监控或诊断等功能。客户端又常常被称作外部测试设备,他使用应用层服务来请求在一个或多个服务器上执行诊断功能;而服务器通常是ECU的一部分,他使用应用层服务所请求的诊断服务提供相应数据发回给客户端。
4.1 服务的原语
诊断服务层提供了许多服务,这些服务都具有相同的结构。对于每个服务,都指定了6个服务原语。
--服务请求原语:由诊断测试器应用中的客户端功能使用,用于将关于所请求的诊断服务的数据传递到诊断应用层;
--服务请求确认原语:由诊断测试仪应用程序中的客户端功能使用,用于指示在服务请求原语中传递的数据已在诊断测试仪所连接的车辆通信总线上成功发送;
--服务指示原语:由诊断应用层使用,用于将数据传递给ECU诊断应用的服务器功能;
--服务响应原语:由ECU诊断应用中的服务器功能使用,用于将由所请求的诊断服务提供的响应数据传递到诊断应用层;
--服务响应确认原语:由ECU诊断应用程序中的服务器功能使用,以指示在服务响应原语中传递的数据在ECU接收到诊断请求的车辆通信总线上成功发送;
--服务确认原语:由诊断应用程序层用于将数据传递给诊断测试仪应用程序中的客户端功能。
对于这些原语14229-1中有两张图帮助理解,下面两张图分别描述了应用程序层服务原语--经确认的服务和应用程序层服务原语-未经确认的服务。
4.2 应用层服务的格式描述
根据车辆诊断系统的配置方式,应用层服务可以有两种不同的格式。应用层服务的格式由参数A_MType控制:如果车辆系统配置为客户端可以通过使用A_SA和A_TA地址参数寻址所有服务器,则应使用应用层服务的默认格式。这意味着A_Mtype=diagnostics(诊断);如果车辆系统被配置为客户端除了允许寻址特定服务器的A_SA和A_TA地址参数之外还需要地址信息,则应使用应用层服务的远程格式。这意味着A_Mtype=remote diagnostics(远程诊断)。
4.3 服务原语的格式描述
咳咳,事先说明一下,这个服务原语的格式我也没有理解太好,看了一遍就像看了一遍一样,我也只能做一个简单的翻译,并没有太多自己的理解,各位凭自己的理解能力去理解吧。
4.3.1 一般定义
所有的应用层服务都有相同的通用格式。服务原语都是按照下图的模板来编写的:
看看这个图,比较懵是吧,别慌,14229-1给出了图中各元素的解释:
--“service_name”是诊断服务的名称(例如DiagnosticSessionControl),
--“type”指示服务原语的类型(例如request),
--“parameter A,...”是作为由服务原语(寻址信息)传递的值的列表的A_ SDU(Application layer Service Data Unit),
--“parameter A, parameter B, parameter C”是所有服务调用中都应包含的强制性参数,
--“[,parameter 1, ...]”是取决于特定服务的参数(例如,parameter1可以是DiagnosticSessionControl服务的诊断会话)。括号表示参数列表的这部分可能为空。
4.3.2 服务请求和服务指示原语
对于每个应用层服务,服务请求原语和服务指示原语都用下面的通用格式来指定。
诊断测试器应用程序中的客户端功能使用请求原语来启动服务并将有关请求的诊断服务的数据传递给应用程序层。
指示原语由应用层使用,以指示对ECU诊断应用程序很重要的内部事件,并将有关所请求的诊断服务的数据传递给ECU诊断应用程序的服务器功能。
特定应用层服务的请求和指示原语总是具有相同的参数和参数值。这意味着当数据从客户端传输到服务器时,应用层的通信对等协议实体不应改变各个参数的值。在服务请求调用中由客户端应用中的客户端功能传递给应用层的相同值应由诊断应用的服务器功能从对等应用层的服务指示中接收。
4.3.3 服务响应和服务确认原语
对于每个应用层服务,服务响应原语和服务确认原语都用下面的通用格式来指定。
响应原语由ECU诊断应用程序中的服务器功能使用,以启动服务并将所请求的诊断服务提供的响应数据传递给应用程序层。
应用层使用确认原语来指示对客户端应用程序重要的内部事件,并将相关联的先前服务请求的结果传递给诊断测试器应用程序中的客户端功能。它不一定指示远程对等接口上的任何活动,例如,如果服务器不支持请求的服务或通信中断。
特定应用层服务的响应和确认原语始终具有相同的参数和参数值。这意味着当数据从服务器传输到客户端时,应用层的通信对等协议实体不应改变各个参数的值。ECU诊断应用程序的服务器功能在服务响应调用中传递给应用程序层的相同值应由诊断测试仪应用程序中的客户端功能从对等应用程序层服务确认中接收。
对于每个响应和确认原语,将指定两个不同的服务数据单元(两组参数)。
--如果ECU中的服务器功能能够成功执行所请求的诊断服务,则第一个服务数据单元应使用肯定响应和肯定确认原语。
--如果请求的诊断服务失败或ECU中的服务器功能无法及时完成,则否定响应和确认原语应与第二个服务数据单元一起使用。
4.3.4服务请求确认和服务响应确认原语
对于每个应用层服务,服务请求确认原语和服务响应确认原语都用下面的通用格式来指定。
请求确认原语被应用程序层用于指示对客户端应用程序很重要的内部事件,并将关联的先前服务请求的通信结果传递给诊断测试器应用程序中的客户端函数。
应用层使用响应确认原语来指示对服务器应用程序重要的内部事件,并将相关联的先前服务响应的通信结果传递给ECU应用程序中的服务器功能。
4.4 服务数据单元(Services data unit)规范
4.4.1 强制性参数
应用层服务包含三个强制性参数。
4.4.1.1 A_Mtype, Application layer message type(应用层消息类型)
类型:枚举
范围:诊断,远程诊断
描述:参数Mtype应用于识别4.2中规定的车辆诊断系统的格式。ISO 14229的这部分为这个参数指定了两个值的范围:如果A_Mtype = diagnostics,则service_name原语应由参数A_SA、A_TA和A_TAtype组成;如果A_Mtype = remote diagnostics,则service_name原语应由参数A_SA、A_TA、A_TAtype和A_AE组成。
4.4.1.2 A_SA, Application layer source address(应用层源地址)
类型:2字节无符号整数值
范围:0x0000 - 0xFFFF
描述:参数SA应用于对客户端和服务器标识符进行编码。
对于服务请求(和服务指示),A_SA表示请求诊断服务的客户端功能的地址。请求诊断服务的每个客户端功能应以一个A_SA值表示。如果在同一诊断测试仪中实现了多个客户端功能,则每个客户端功能应具有自己的客户端标识符和相应的A_SA值。
对于服务响应(和服务确认),A_SA表示执行请求的诊断服务的服务器功能的地址。服务器功能可以仅在一个ECU中实现,也可以在多个ECU中分布和实现。如果服务器功能仅在一个ECU中实现,则应仅使用一个A_SA值对其进行编码。如果一个服务器功能在多个ECU中分布和实现,则应使用每个单独服务器功能的一个A_SA值对各个服务器功能地址进行编码。
如果远程客户端或服务器是消息的原始来源,则A_SA代表从远程网络到主网络的门户的本地服务器。
注意:如果请求消息使用物理寻址,则响应消息中的A_SA值将与相应请求消息中的A _TA值相同。
4.4.1.3 A_TA, Application layer target address(应用层目的地址)
类型:2字节无符号整数值
范围:0x0000 - 0xFFFF
描述:参数A_TA应用于对客户端和服务器标识符进行编码。
两种不同的寻址方法:物理寻址和功能寻址,都是诊断特有的。因此,可以为一个车辆系统定义两组独立的目标地址(每个寻址方法一个)。
物理寻址应始终是指向在一个ECU中实现的服务器的专用消息。当使用物理寻址时,该通信是客户端和服务器之间的点对点通信。
如果客户端不知道应响应诊断服务请求的服务器功能的物理地址,或者如果服务器功能在多个ECU中实现为分布式功能,则客户端使用功能寻址。当使用功能寻址时,通信是从客户端到在一个或多个ECU中实现的服务器的广播通信。
对于服务请求(和服务指示),A_TA表示应执行请求的诊断服务的服务器的服务器标识符。如果正在寻址远程服务器,则A_TA代表从主网络到远程网络的本地服务器。
对于服务响应(和服务确认),A_TA表示最初请求诊断服务的客户端功能的地址,并且将接收所请求的数据(即请求的A_SA)。 服务响应(和服务确认)应始终使用物理寻址。 如果远程客户端正在寻址,则A_TA代表从主网络到远程网络的本地服务器。
注意:响应消息的A_TA值将始终与相应的请求消息的A_SA值相同。
4.4.1.5 A_TA_Type, Application layer target address type(应用层目的地址类型)
类型:枚举
范围:物理,功能
描述:参数A_TA_type是A_TA参数的扩展。它用于表示为消息传输选择的寻址方法。
4.4.1.6 A_Result
类型:枚举
范围:ok,error
描述:req_confirm和rsp_confirm原语使用参数“A_Result”来指示消息是否已正确传输(ok)或消息传输是否未成功(error)。
4.4.1.7 A_Length
类型:4字节无符号整数值
范围:
描述:此参数包括要传输/接收的数据的长度。
4.4.1.8 A_Data
类型:字节字符串
范围:不适用
描述:此参数包括上层实体要交换的所有数据。
4.4.2 车辆系统要求
车辆制造商应确保系统中的每个服务器具有唯一的服务器标识符。车辆制造商还应确保系统中的每个客户端都具有唯一的客户端标识符。
车辆系统中诊断网络的所有客户端和服务器地址应编码为相同范围的源地址。这意味着在给定的车辆系统中,客户端和服务器不应使用相同的A_SA值表示。
服务器的物理目标地址应始终与服务器的源地址相同。
远程服务器标识符可以独立于主网络上的客户端和服务器标识符进行分配。
一般来说,只有被寻址的服务器才能响应客户端请求消息。
4.4.3 可选参数—A_AE, Application layer remote address(应用层远程地址)
类型:2字节无符号整数值
范围:0x0000-0xFFFF
描述:A_AE用于扩展可用地址范围,以对客户端和服务器标识符进行编码。A_AE只能用于实现本地服务器和远程服务器概念的车辆。远程地址表示其自己的地址范围,并且独立于主网络上的地址。
参数A_AE应用于编码远程客户端和服务器标识符。A_ AE可以表示远程目标地址或远程源地址。
对于主网络上客户端发送的服务请求(和服务指示),A_AE表示应执行请求的诊断服务的服务器的远程服务器标识符(远程目标地址)。
A_AE可以用作物理地址和功能地址。对于A_AE的每个值,系统建设者应指定该值是否代表物理地址或功能地址。
注意:A_TA_type指定A_TA的寻址方法的方式没有特殊参数来表示物理或功能远程地址。 物理和功能远程地址共享1个字节范围内的值,每个值的含义由系统构建者定义。
对于远程服务器发送的服务响应(和服务确认),A_AE表示执行所请求的诊断服务的远程服务器的物理位置(远程源地址)。
远程服务器可以仅在一个ECU中实现,也可以在多个ECU中分布和实现。如果远程服务器仅在一个ECU中实现,则应仅使用一个A_AE值对其进行编码。如果远程服务器分布在多个ECU中并实现,则远程服务器标识符应使用远程服务器的每个物理位置的一个A_AE值进行编码。
结尾
那么到这里,新的一章也就结束了,这一张主要介绍了几个应用层的服务原语和服务的格式介绍,介绍了其中的几个参数,这一章读起来有点晦涩难懂,本人也没有理解太好,所以大多数都是在搬运,那么没关系,相信到后面用到这里知识点的时候,结合实际应用的情况来理解这些参数会更好理解一些。
感谢阅读,让我们一起向前,加油吧!