5.3 应用层协议
5.3.1 一般定义
应用层协议规定消息传输应始终是确认的消息传输,即从客户端发送的每一个服务请求都有有一个或者多个相应的响应。当然也存在一些特殊情况,比如功能寻址下一些服务端完成不了的服务请求,并不会进行相应的响应。(该部分内容会在7.5详细展开讲解)
应用层协议应与会话层协议并行处理。即等待响应时间应满足会话层的定时参数要求。
5.3.2 协议数据单元规定
A_PDU由A_SDU和A_PCI构成,A_PDU的通用格式如下:
A_PDU (
Mtype,
SA,
TA,
TA_type,
[RA,]
A_Data = A_PCI + [parameter 1, ...],
Length
)
其中:
——“Mtype,SA,TA,TA_type,RA,Length”与 A_SDU 中使用的参数相同;
——“A_Data”是为每个单独的应用层服务定义的一串字节数据。 A_Data 字符串应以 A_PCI 开头,后面 是每个服务指定的 A_SDU 的所有服务特定参数。 括号表示参数列表的这部分可能为空;
——“Length”决定 A_Data 的字节数。
5.3.3 应用层协议控制信息
5.3.3.1 PCI 协议控制信息
A_PCI 有两种格式。 A_PCI 参数的第一个字节的值代表格式。
对于所有第一个字节不等于 0x7F 的服务请求和服务响应,
应使用以下定义: A_PCI ( SI) 其中: ——“SI”是参数服务标识符。
对于第一个字节值等于 0x7F 的服务响应,
应使用以下定义: A_PCI ( NR_SI, SI )
其中: ——“NR_SI”是识别否定服务响应/确认的特殊参数; ——“SI”是服务标识符的参数。
特殊情况:对于服务通过周期性标识符读取数据(0x2A,见 10.5)中定义的周期性数据响应消息的传输,应用层协议数据单元(A_PDU) 中不存在 A_PCI。
5.3.3.2 SI 服务标识符
数据类型:1字节无符号整型数值
范围:0x00~0xFF
5.3.3.3 NR_SI 否定响应服务标识符
数据类型:1字节无符号整型数值
固定值:0x7F
描述:
用于表示该响应消息为否定响应
5.3.4 否定响应/确认服务原语
每个诊断服务都具有否定响应/否定确认消息。(这部分没啥好说的,约定俗成的东西)
5.3.5 服务端响应实施规则
5.3.5.1 一般定义
以下小节规定了执行服务时的服务端的行为。 服务端和客户端应遵循这些实施规则。
5.3.5.2 一般的服务端响应行为
本节中规定的一般的服务端响应行为对所有请求消息都是必需的。
——强制:每个请求消息都要进行检查
——可选:可以由每个请求消息来选择性地进行检查
——制造商/供应商自定义:该步骤可以通过附加的制造商/供应商的具体检查来扩展。
下图描述了一般的服务器响应行为流程。
通过改图也可以很清楚的看出一般服务的NRC优先级为:0x21>0x11>0x7F>0x33>0xXX(供应商自定义)>0x31。
5.3.5.3 具有子功能参数的请求消息和服务端响应行为
5.3.5.3.1 对具有子功能参数的请求消息的一般的服务端响应行为
对于具有子功能参数的所有请求消息,此子条款中指定的一般服务端响应行为是必需的。
下图为带子功能参数的请求消息的一般的服务端响应行为流程。
通过该流程图不难看出,带子功能参数的NRC优先级为: 0x13>0x12>0x7E>0x33>0x24>0xXX(供应商自定义)。
5.3.5.3.2 物理寻址的客户端请求消息
下图为具有子功能参数的物理寻址请求消息和服务端响应行为的具体实施情况。
5.3.5.3.3 功能寻址客户端请求消息
下图为具有子功能参数的物理寻址请求消息和服务端响应行为的具体实施情况。
5.3.5.4 不具子功能参数的请求消息和服务端响应行为
5.3.5.4.1 对不具子功能参数的请求消息和服务端响应行为
对于没有子功能参数的请求消息没有通用的服务端响应行为可用。在本节上下文中的请求消息为符合本标 准格式化要求的服务请求消息。
5.3.5.4.2 物理寻址客户端请求消息
下图为物理寻址下不具有子功能参数的客户端请求消息的具体实施情况
5.3.5.4.2 功能寻址的客户端请求消息
下图为物理寻址下不具有子功能参数的客户端请求消息的具体实施情况。