ISO 15765 网络层协议分析
ISO 15765 网络层的功能主要有:
(1)为上层的应用层提供接口服务。
(2)进行内部操作。为上层服务提供接口从而实现数据交流;主要有为对等实体间的通信提供分段、重组和流控制这几种方法方法。
(3)网络层中的时间控制。
网络层原语服务分析
对于为上层提供服务,网络层一共定义了以下 3 个原语服务
通过这三种原语服务可以与上层服务的建立起简单通信,对于这些网络层的原语服务都遵循如下结构:
Server_name:是指具体的服务(在应用层中的规定)
Type:三种原语服务中的一种
N_AI(Address Information)包含了原语服务的地址信息,一般包含:是否是远程帧(Mtype)、原语的发出地址(N_SA)、原语的目的地址(N_TA)
N_PCI(Protocol Control Information)则包含了原语帧的具体信息如:此消息帧属于何种帧类型(单帧、首帧、连续帧)、帧的长度(Length)等
N_Data(Data Field)为该原语所包含的具体的数据
网络层内部传输服务
在内部传输操作中,由于CAN 总线上的数据帧每帧只能传输8 个字节,ISO15765 为了适应CAN 总线上的数据传输,根据诊断报文数据长度的不同规定了单帧传输和多帧传输这两种方式。
1.单帧传输
当应用层的诊断服务数据可以利用单帧 CAN 数据传送时,可以采用单帧传送方式
2.多帧传输
当所需传输的数据无法利用单帧 CAN 报文传送时,则使用多帧传送方式进行。在多帧传送方式中,网络层根据需要,将诊断数据进行拆分成一个首帧和多个连续帧。首帧包含了分段数据的总长度信息以及一些数据帧;每个连续帧的第一个字节都包含拆分的顺序编号,后面的七个字节用于存放诊断数据。接收端在接收到连续帧后根据接收数据帧的编号重组服务数据。
发送端和接收端通过N_PCI 确认发送或者接收的帧为首帧、流控制帧还是连续帧
接收端通过对接收到数据帧的第一个字节进行分析就可以得出所接收到的数据帧为何种数据帧,以及所需要接收的数据长度。
接收的数据第一个字节的高四位为 0 则表示所接收的数据帧为单帧,再通过读取低四位以确定单帧数据中的有效数据字节长度。
接收的数据第一个字节的高四位为 1 则表示所接收的数据帧为多帧的首帧。再读取第四位和第二个字节后确认所要接收的字节数后,根据接收的能力和双方通信速率发送流控制帧,然后等待多帧连续帧的到来。
接收的数据第一个字节的高四位为 2 则表示所接收的数据帧为多帧的连续帧。然后在比对SN(连续帧编号)之后将数据放入接收缓冲区。
接收的数据第一个字节的高四位为 3 则表示所接收的数据帧为流控制帧。低四位的FS 表示发送端所需要进行的动作。BS 为能够连续发送连续帧的数量、STmin 为每两帧之间的时间间隔。
接收的数据第一个字节的高四位为 4-F 则保留。
网络层时间控制分析
网络层的时间管理是为了保证发送端和接收端不会因为等待而永久的挂起,从而失去了通信的能力。因此在每次通话的过程中设置了超时的时间参数。
N_As:发送端将数据传送到接收端的最大时间。
N_Bs:发送端在成功发送首帧后到收到流控制帧的最大时间。
N_Br:接收端在接收到首帧后到发送流控制的最大时间。
N_Ar:接收端将流控制传送到发送端的最大时间。
N_Cr:接收端在成功发送流控制后到收到连续帧的最大时间。
Ttan:每帧传输的时间。
STmin:连续帧两帧之间的最小发送间隔。
根据整个的传输流程我们可以得到诊断报文的传输延迟的公式:
N_As、N_Bs、N_Cr、Ttan 在实际应用中均为固定值,由此可知在多帧传输中,STmin 参数对于多帧传输的时间有着重要的影响。
发送接收流程