ISO15765-2中定义了网络层和传输层的内容,下面就对这两部分分别进行介绍。
1 网络层
所有网络层的服务都有统一的结构,为了定义服务,有三种服务原语:
所有的网络层服务也有统一的格式,如下:
service_name.type {
parameter A,
parameter B,
[,parameter C,...]
}
网络层提供了两种服务:
(1)数据发送请求
N_USData.request {
Mtype
N_SA
N_TA
N_TAtype
[N_AE]
<MessageData>
<Length>
}
(2)请求服务确认
N_USData.confirm {
Mtype
N_SA
N_TA
N_TAtype
[N_AE]
<N_Result>
}
(3)首帧指示服务
N_USData_FF.indication {
Mtype
N_SA
N_TA
N_TAtype
[N_AE]
<Length>
}
用于把接收到的分段报文的首帧发送给上层,如果首帧发现任何错误,那么整个报文都将被忽略;如果数据长度(FF_DL)大于接收方可用的缓冲区,也会被认为是一个错误。
(4)数据指示服务
N_USData.indication {
Mtype
N_SA
N_TA
N_TAtype
[N_AE]
<MessageData>
<Length>
<N_Result>
}
用于给上层提供接收到的数据。
(1)参数配置请求服务
N_ChangeParameter.request {
Mtype
N_SA
N_TA
N_TAtype
[N_AE]
<Parameter>
<Parameter_Value>
}
用于对特定内部参数的动态配置请求。
(2)参数配置确认服务
N_ChangeParameter.confirm {
Mtype
N_SA
N_TA
N_TAtype
[N_AE]
<Parameter>
<Result_ChangeParameter>
}
用于向上层确认修改特定协议的请求已经完成(成功与否)。
Service Data Unit(SDU):
(1)Diagnostics型,N_AI(Address Information)包含N_SA,N_TA,和N_TAtype
(2)Remote Diagnostics型,N_AI(Address Information)包含N_SA,N_TA,N_TAtype和N_AE
(1)N_SA,network source address,长度8位
(2)N_TA,network target address,长度8位
(3)N_TAtype,network target address type,枚举类型
物理寻址:一对一通信,支持网络层所有类型的报文
功能寻址:一对多通信,只支持单帧传输(广播)
(4)N_AE,network address extension,长度8位
(1)N_OK:服务执行成功
(2)N_TIMEOUT_A:超过时间N_Asmax/N_Armax
(3)N_TIMEOUT_Bs:超过时间N_Bsmax
(4)N_TIMEOUT_Cr:超过时间N_Crmax
(5)N_WRONG_SN:接收到非预期序列号(PCI.SN)
(6)N_INVALID_FS:流控帧接收到无效的状态
(7)N_UNEXP_PDU:接收到非预期的PDU
(8)N_WFT_OVRN:接收方在流控帧中发出等待状态
(9)N_BUFFER_OVFLW:接收方在流控帧中发出溢出状态
(10)N_ERROR:网络层发现除上述错误之外的错误
(1)N_OK:服务执行成功
(2)N_RX_ON:服务没有执行
(3)N_WRONG_PARAMETER:参数没有定义
(4)N_WRONG_VALUE:参数值超出范围
2
传输层
传输层的功能
(1)传送/接收报文
(2)报告传送/接收报文的结果
传输的数据分为:
(1)单帧传输(SingleFrame transmission)
图1 单帧发送示意
(2)多帧传输(Multiple-frame transmission)
图2 多帧发送示意
多帧包含:
(1)首帧(FirstFrame)
(2)连续帧(ConsecutiveFrame)
接收端通过流控机制(FlowControl)防止传输过程中帧丢失,在缓冲区已满时,接收端发送流控帧(FlowControl Frame)通知发送端暂时先不要发报文。
流控帧(FlowControl Frame)包含以下两个内容:
(1)BlockSize(BS):接收端缓冲区一次性可接收的最大字节数
(2)SeparationTime minimum(STmin):发送连续帧时,帧之间的最小时间间隔
流控机制(FlowControl)的两种模式:
(1)动态:BS和STmin会有更新
(2)静态:BS和STmin为常数
接收段缓冲区存储以下状态来控制连续帧(ConsecutiveFrame)的发送:
(1)FC.CTS:可以继续发送
(2)FC.WAIT:需要等待
(3)FC.OVFLW:首帧(FirstFrame)的字节数超过了缓冲区可存储字节大小
传输层PDU(Protocol Data Unit):
图3 N_PDU格式
(1)N_AI:Address Information,参见上一小节(网络层)内容
(2)N_PCI:Protocol Control Information,定义了发送的N_PDU是哪一种帧
图4 N_PCI定义
(3)N_Data:需要发送的数据
还有些参数含义在之前文章中也介绍过,这里就不讲了,详情请戳链接
3
总结
笔者参考的标准是ISO15765-2:2016(E),与旧版相比又有所扩充,并且把协议分成了网络层和传输层两部分。网络层提供了交换报文的地址信息,决定帧的接收端和发送端;传输层则主要在于帧的传输机制及多帧的拆分,协议后面还讲了四类帧的错误处理机制,这里没有讲,感兴趣的可以自行研究一下。以上均是笔者自己的理解,如有错误欢迎指正。