客户端将数据传输到服务器(下载)或从服务器请求数据(上传)。数据传输方向由前面的 RequestDownload 或 RequestUpload 服务定义。 如果客户端启动了 RequestDownload,则要下载的数据将包含在 TransferData 请求消息中的参数 transferRequestParameter 中。 如果客户端启动了 RequestUpload,则要上载的数据将包含在 TransferData 响应消息中的参数 transferResponseParameter中。TransferData 服务请求应包括一个在多个 DataTransfer 请求序列期间TransferData 服务失败的情况下改进错误处理的 blockSequenceCounter。当收到 RequestDownload 服务或 RequestUpload 服务请求消息时,服务器的 blockSequenceCounter 必须初始化为 1。 这意味着,紧随 RequestDownload 服务或RequestUpload 服务请求消息之后的第一个 TransferData 服务请求消息以1 的 blockSequenceCounter 开头。
诊断请求格式
具体的格式如下:
处于下载阶段,则参数 transferRequestParameterRecord 时必须存在的。关于参数 blockSequenceCounter 这里说一个补充说明:
blockSequenceCounter 参数值从 0x01开始,第一个 TransferData 请求位于RequestDownload 服务或 RequestUpload 服务之后。对于每个后续的 TransferData 请求,其值将增加 1。当值增加到 0xFF 时,blockSequenceCounter 值翻转并从 0x00 开始并带有下一个TransferData 请求消息。如何理解可以参加下方的 4 个例子
a)如果在服务器中正确接收并处理了传输数据下载数据的请求,但是肯定响应消息未到达客户端,则客户端将判断为应用程序层超时,并将重复发送相同的请求(包括相同的blockSequenceCounter )。服务器将接收到重复的 TransferData 请求,并应基于所包含的blockSequenceCounter 确定重复此 TransferData 请求。然后服务器将立即发送肯定响应消息,而无需再次将数据写入其内存中。
b)如果服务器中没有正确接收到 TransferData 下载数据的请求,则服务器将不会发送肯定响应消息。客户端将判断为应用程序层超时,并将重复相同的请求(包括相同的blockSequenceCounter )。服务器将接收到重复的 TransferData 请求,并应基于所包含的blockSequenceCounter 确定这是新 的TransferData。服务器将处理该服务并发送肯定响应消息。
c)如果在服务器中正确接收并处理了传输数据的上载数据请求,但是肯定响应消息未到达客户端,则客户端将判断应用程序层超时并重复相同的请求(包括相同的blockSequenceCounter )。服务器将收到重复的 TransferData 请求,并可以根据包含的 blockSequenceCounter 确定重复此TransferData 请求。服务器将立即发送肯定响应消息,再次访问其内存中先前提供的数据。
d)如果在服务器中未正确接收上载数据的 TransferData 请求,则服务器将不会发送肯定响应消息。客户端将判断应用程序层超时,并将重复相同的请求(包括相同的 blockSequenceCounter)。服务器将接收到重复的 TransferData 请求,并可以基于所包含的blockSequenceCounter 确定这是新的 TransferData。服务器将处理该服务并发送肯定响应消息。
正响应格式
具体的格式如下:
处于上传阶段,则参数 transferRequestParameterRecord 时必须存在的。
负响应NRC码
具体的NRC码如下: