UDS(ISO14229-2006) 汉译(No.6 应用层服务)
6.1总览
应用层服务通常被当作诊断服务。应用层服务用于在基于客户端-服务器的系统(Client-Server base System)中执行一些功能,例如针对车载服务器(ECU)的检测、检查、监控和诊断。客户端通常指外部测试设备。应用层服务向若干ECU发出诊断功能的请求。ECU的部分功能在诊断服务被请求时,通过应用层服务将诊断数据反馈给客户端。客户端一般是接入CAN总线的非车载测试仪,在某些系统中也会由车载测试仪担任该角色。应用层服务用例独立于作为客户端的车载或非车载诊断仪。可能有超过一个的诊断仪同时存在于同一车辆系统中。
诊断应用层接入点规定了规定量的、具有相似整体结构的服务,又针对每个服务定义了六个服务原语:
——服务请求原语(a service request primitive),被用于客户端诊断程序,传递诊断服务的请求数据到诊断应用层的功能。
——服务请求确认原语(a service request-confirmation primitive),被用于客户端诊断程序,用于指示请求服务原语数据被完整的传送至服务器。
——服务指示原语(a service indication primitive),用于诊断应用层传递数据到服务器的ECU诊断应用的功能。
——服务响应原语(a service response primitive),用于服务器中ECU诊断应用传递从请求诊断服务到诊断应用层的数据。
——服务响应确认原语(a service response-confirmation primitive),用于服务器的ECU诊断应用功能,该功能指明响应服务原语发出的数据完好的传输到客户端。
——服务确认原语(a service confirmation primitive),用于诊断应用层发送数据到诊断仪。

Figure 4--Application layer service primitives--confirm service(应用层服务原语——确认服务)

Figure 5 -- Application layer service primitive -- unconfirmed service(应用层服务原语——非确认服务)
对给定的服务,请求原语和指示原语通常拥有相同的服务数据单元(Service Data Unit)。ISO 14229仅列举了特隶属于每个请求原语的服务数据单元的参数。用户应假设相同的参数确切地对应每个相应的服务指示原语。
对于给定的服务,响应原语和确认原语通常拥有相同的服务数据单元。ISO 14229仅列举了特隶属于每个响应原语的服务数据单元SDU的参数。用户应假设相同的参数确切地对应每个相应的指示服务原语。
对于每个响应服务原语(和响应的服务确认原语)制订了两个不同的SDU(两个服务数据单元,即两组不同的参数)。当诊断服务请求被ECU的诊断程序成功执行,一组参数被该服务原语的正响应所使用;如果诊断服务请求未被ECU的诊断程序及时且成功执行,另一组用于否定响应的参数则会被使用到。
对于给定的服务,请求-服务确认原语和响应-服务确认原语一般都有相同的SDU。这些服务原语的目的在于表明完成了之前的请求/响应服务原语的调用。ISO14229所描述的服务不使用这些服务原语,但数据链路的具体实现文档可能会用到这些服务原语来定义,例如服务执行的基准点(比如ECUReset服务会在ECU响应完全送达客户端后才执行ECU重置,那么ECUReset就是在服务器中被响应-确认服务声明了)。
6.2应用层服务格式定义
应用层服务拥有两种不同的格式,这取决于配置了车辆诊断系统。
如果各服务器和客户端直接相连于一个已配置好的车辆系统诊断网络,那么默认(普通、标准)的应用层诊断服务格式就会派上用场。此格式兼容于运行于K或L线的诊断系统格式。默认的应用层服务格式将在6.3种介绍。
应用层服务远程格式适用于车辆系统落实本地和远程服务器概念。远程格式带有一个附加的地址参数,称为远程地址。远程格式用于访问那些不直接连入主诊断网的服务器。在6.4中定介绍了应用层服务远程格式。
6.3标准服务原语的格式描述
6.3.1一般定义
所有的应用层服务都具有相同的一般格式,服务原语按写成如下形式:
service_name.type(
parameter A, parameter B, parameter C
[,parameter 1, ...]
)
解释:
——"service_name"是指诊断服务的名字(如:诊断回话控制DiagnosticSessionControl)
——"type"指示服务原语类型(如:请求)
——"parameter
A, parameter B, parameter C"服务调用所包含的必要参数
——"[parameter
1, ...]"依赖于特定服务的一些参数(例如:parameter1作为DiagnosticSessionControl服务的diagnosticSession小项)。括号说明该部分参数为可选参数。
6.3.2服务请求和服务指示原语
针对每一个应用层服务,服务请求和服务指示原语是根据以下一般格式指定:
service_name.request(
SA,
TA,
TA_type,
[,parameter 1, ...],
)
请求原语用于诊断仪应用功能,说明请求诊断服务到应用层的服务和数据发送。
service_name.indication(
SA,
TA,
TA_TYPE,
[,parameter 1, ...]
)
指示原语被用于应用层指定一个从应用层到ECU诊断应用程序的内部事件,并传输请求诊断功能到ECU诊断应用程序的服务器功能的数据。
具体的应用层服务的请求和指示原语通常具有相同的参数和参数值,这意味着当数据从客户端传输到服务器时,各个各个参数的值不应被应用层的通信对等端协议实体所改变。相同的值在服务请求中被客户端应用程序的客户端功能传输到应用层,并将被诊断应用程序的服务器功能所接收,(诊断应用程序隶属于诊断应用程序端的服务确认。)
6.3.3服务响应和服务确认原语
针对每一个确定的应用层服务,服务响应原语和服务确认原语根据以下格式指定:
service_name.response(
SA,
TA,
TA_type
Result
[,parameter 1, ...]
)
响应原语被用于ECU诊断应用程序的服务器功能,以启动该服务并传送请求诊断服务到应用层的响应数据。
service_name.confirm(
SA,
TA,
TA_type,
Result,
[,parameter 1, ...]
)
确认原语用于应用层指定一个从应用层到客户端应用的内部事件,并且该事件传送有关上一个服务请求诊断仪中客户端功能的结果。它不一定指示任何活动的远程接口,例如:请求服务不被服务器支持,或者通信中断。
对于一个特定的应用层,响应原语和确认原语常具有相同的参数和参数值。这意味着当数据从服务器传输到客户端时,各个参数的值不应被应用层的通信对等端协议实体所改变。相同的值在服务请求中被客户端应用程序的客户端功能传输到应用层,并将被诊断应用程序的服务器功能所接收,(诊断应用程序隶属于诊断应用程序端的服务确认。)
针对每一个响应和确认原语两个不同的服务数据单元[SDU](两组参数)被定义:
——如果ECU的服务器功能正确执行了请求诊断服务,肯定的响应和确认原语应被用于第一个服务数据单元。
——如果请求诊断服务失败或者没有在规定的时间没有被ECU的服务器功能完成,一个负响应原语和确认原语将被用于第二个服务数据单元。
6.3.4服务请求确认原语和服务响应确认原语
对于每一个应用层服务,服务请求确认原语和服务响应确认原语根据以下一般格式指定。
service_name.req_confirm(
SA,
TA,
TA_Type,
Result
)
请求确认原语是应用层定义的一个应用层到客户端的内部事件,该事件传送有关上一次服务请求到诊断仪——客户端功能的结果。
service_name.rsp_confirm(
SA,
TA,
TA_Tpye,
Result
)
响应确认原语用于应用层指定一个由应用层到客户端、并传输关于上一个服务响应到ECU应用程序——服务器功能的结果的内部事件,
6.4远程服务原语的格式说明
6.4.1一般定义
如果使用应用层远服务的程格式,就可以诊断本地客户端和远程服务器之间的通信。所有定义的作为应用层服务的默认格式都适用。
UDS(ISO14229-2006) 汉译(No.6 应用层服务)的更多相关文章
- UDS(ISO14229-2006) 汉译(No.7 应用层协议)【未完,待续】
7.1定义 应用层协议通常作为确认消息的传输,意味着从客户端发送的每一个请求都将有由服务器端产生的与之相对的响应. 唯一的例外在于:例如使用了功能寻址方式,或者该请求/指示没有指定生成响应/确定的少数 ...
- UDS(ISO14229-2006) 汉译(No.7 应用层协议)
标签:cte amp 通信 pac condition man 没有 参数错误 family 7.1定义 应用层协议通常作为确认消息的传输,意味着从客户端发送的每一个请 ...
- SOA面向服务架构
SOA面向服务架构 风尘浪子 只要肯努力,梦想总有一天会实现 随笔分类 - SOA面向服务架构 结合领域驱动设计的SOA分布式软件架构 摘要: 领域驱动设计DDD的总体结构,Repository层使用 ...
- ABP入门系列(18)—— 使用领域服务
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1.引言 自上次更新有一个多月了,发现越往下写,越不知如何去写.特别是当遇到DDD中一些概念术语的 ...
- NLayerAppV3-Infrastructure(基础结构层)的Data部分和Application(应用层)
回顾:NLayerAppV3是一个使用.net 2.1实现的经典DDD的分层架构的项目. NLayerAppV3是在NLayerAppV2的基础上,使用.net core2.1进行重新构建的:它包含了 ...
- kali linux之应用层Dos
应用层服务漏洞: 服务代码存在漏洞,遇异常提交数据时程序崩溃 应用处理大量并发请求能力有限,被拒绝的是应用或OS 缓冲区溢出漏洞: 向目标函数随机提交数据,特定情况下数据覆盖临近寄存器或内存 影响:远 ...
- 保持WCF服务端与客户端的长连接
背景 客户端与服务端使用WCF建立连接后:1.可能长时间不对话(调用服务操作):2.客户端的网络不稳定. 为服务端与客户端两边都写“心跳检测”代码?不愿意. 解决 设置inactivityTimeou ...
- FTP服务搭建配置笔记
1.什么是文件共享服务? 简单来说就是文件域存储块设备可以共享给他人使用. 1.1 实现文件共享服务的三种方式 FTP:属于应用层服务,可以跨平台使用 NFS:属于内核模式,不可以跨平台使用 Samb ...
- CentOS6.7搭建部署FTP服务 (详解主配置文件)
FTP传输 三种解析: username -->UID :/etc/passwd 将用户名转换成UID的库. hostname---> IP :DNS服务,/et ...
随机推荐
- C#4语法
在C# 4.0中可以通过委托某个成员的实现来实现一个接口,例如下面的代码: public class Foo : IList { private List _Collection implements ...
- 基于空项目模板创建使用Owin来host的WebApi项目
首先创建一个空的web项目,如下图所示: 项目创建成功以后,安装下面三个package. Install-Package Microsoft.AspNet.WebApi -Version 5.2.2I ...
- cookie自动登录的实现
cookie自动登录是指把用户登录的信息按期限(自定)保存在客户端,当用户请求登录时判断客户端用没有cookie对象,有的话填充值,否则登录界面的输入框为空,不进行填充. 登录界面 ...
- ASP.NET Web API自身对CORS的支持:从实例开始
在<通过扩展让ASP.NET Web API支持W3C的CORS规范>中我们通过自定义的HttpMessageHandler为ASP.NET Web API赋予了跨域资源共享的能力,具体来 ...
- MySQL外键之级联
简介 MySQL外键起到约束作用,在数据库层面保证数据的完整性.例如使用外键的CASCADE类型,当子表(例如user_info)关联父表(例如user)时,父表更新或删除时,子表会更新或删除记录,这 ...
- 《Spark快速大数据分析》—— 第七章 在集群上运行Spark
- 打造自己的html5视频播放器
前段时间重新学习了一下html5的video部分,以前只是停留在标签的使用上,这一次决定深入了解相关的API,并运用这些API打造一个简单的视频播放器.所谓“打造自己的”,就是要自己重写video标签 ...
- 前端学PHP之函数
× 目录 [1]函数定义 [2]函数参数[3]返回值[4]变量函数[5]回调函数[6]递归函数[7]加载函数[8]匿名函数 前面的话 PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数 ...
- Linux异常表
一.为什么需要异常表? 处于内核态的程序有下面四种情况会产生缺页异常: 1.内核试图访问属于进程地址空间的页,但是,该页对应的页框不存在或者内核试图去访问一个只读的页,分别对应“请求调页”和“写时复制 ...
- mouseenter以及mouseleave兼容性
在IE的全系列中都实现了mouseenter和mouseleave事件,但是在早期的w3c浏览器中却没有实现这两个事件.有时候,我们需要使用 mouseenter事件来防止子元素的冒泡,这就涉及到事件 ...