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 ...
随机推荐
- gulp使用小结(二)
接上篇文章接Gulp使用小结(一) 内容如下: 首先,偶在gulp-demos上已经提交了个较通用的栗子...俺琢磨半天,原准备分阶段搞些 Gulp 套路,但是写完介个栗子之后,觉得已经能覆盖绝大多数 ...
- SqlServer英文单词全字匹配
环境:Vs2013+Sql Server2012 问题:现在数据库记录如下: Sentence列保存的是英文的句子,我现在想找出所有包含“I”(单词)的句子,如果我用 Sentence like '% ...
- java spring 邮件发送
开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...
- 【.NET深呼吸】清理对象引用,有一个问题容易被忽略
大家知道,托管代码一个重要的特点是自动管理内存,即我们常说的垃圾回收机制,那些高大上的理论我就不重复了,有兴趣的朋友可以翻书.我这个有个毛病——不喜欢很严肃地去说一些理论的东西,所以我不多介绍了. 一 ...
- Building OpenCascade on Windows with Visual Studio
Building OpenCascade on Windows with Visual Studio eryar@163.com 摘要Abstract:详细说明OpenCascade的编译配置过程,希 ...
- Vue.js学习笔记(8)拖放
小颖在目前负责的项目中,负责给同事提供所需组件,在这期间,我们家大颖姐姐让我 写个拖拽组件,一开始我是用click实现,先将你要拖拽的dom点一下,然后再点你要放的位置,这个dom再通过小颖写的方法, ...
- Create Volume 操作(Part I) - 每天5分钟玩转 OpenStack(50)
前面已经学习了 Cinder 的架构和相关组件,从本节我们开始详细分析 Cinder 的各种操作,首先讨论 Cinder 如何创建 volume. Create 操作流程如下: 客户(可以是 Open ...
- ASP.NET MVC之国际化(十一)
前言 在项目中遇到国际化语言的问题是常有的事情,之前在做关于MVC国际化语言时,刚开始打算全部利用AngularJS来实现,但是渐渐发现对于页面Title难以去控制其语言转换,于是对于页面Tiltle ...
- android app反编译
最新在反编译别人的apk,有时候看到别人的app有很炫的效果,就想知道别人是怎么样实现的,顺便自己参考,借鉴一下,下一次如果工作中碰到这个问题就知道怎么实现了.最近恰好放假三天,就研究了一下,一般别人 ...
- 通过配置http拦截器,来进行ajax请求验证用户登录的页面跳转
在.NET中验证用户是否登录或者是否过期,若需要登录时则将请求转向至登录页面. 这个流程在进行页面请求时是没问题的,能正确进行页面跳转. 然而在使用xmlhttprequest时,或者jq的getJs ...