ISO15765_2 网络层服务

1 参考OSI的CAN模型

1.1 CAN分层模型

标准CAN网络通信采用分层设计模式,参考OSI基本模型,其分层如下:

编号

层架构

层架构

ISO

1

Application Layer

应用层

ISO-15765-3

2

Session Layer

会话层

ISO-15765-3

3

Network layer

网络层

ISO-15765-2

4

Data Link layer

数据链路层

ISO-11898-1

5

Physical layer

物理层

生产厂商定义

 

1.2 CAN 软件架构

CAN软件架构(Vector协议栈)如下:

 

15765-2介绍CAN TP模块的标准,介绍报文在俩个节点网络层之间的数据交换,用于诊断报文的组包,解包。

 

  一个CAN报文一次能传输8个字节的数据,而诊断服务中读取数据标识符服务,读取的数据长度往往超过8个字节,这时候会采用15765-2的标准,发送节点会把数据分割成若干帧报文发送出去,接收节点接收到若干帧报文后,把数据重新组装在一起。如上图的所示,只有诊断报文才会通过CANTp模块处理。

 

2 网络层协议

      网络层服务协议指定不同节点之间的网络层数据传输协议,网络层协议允许传输/接收数据长度最高达4095个字节的数据,并反馈传输/接收的结果给相对应的层。

 

  报文数据长度不超过7个字节(正常寻址下)时,报文通过单帧发送/接收;当报文数据长度大于7个字节时,网络层会对数据进行组包(接收报文)及解包(发送报文),并通过首帧流控帧续帧配合完成数据的发送。

2.1.1 单帧传输数据

     单帧用于传输数据长度低于7(正常寻址下)的数据传输。

     如请求诊断会话服务的请求默认会话子服务:

     

2.1 .2多种帧混合传输数据

      如发送一个数据长度为54个字节的数据,其发送流程如下:

   其流程是:

  •    发送节点发送首帧,
  •    接收节点接收到首帧后反馈一帧流控帧(流控帧用于协调传输能力,BS =3 ),
  •    发送节点持续发送3帧续帧(连续帧表明当前BS =3)后,接收端再次反馈一帧流控帧,发送节点发送剩下的续帧。(各帧详细介绍,见PCI)

2.2 网络层协议数据单元N_PDU

      N_PDU用于实现不同节点间的网络层实体的通讯。      

      N_PDU有SF N_PDU, FF N_PDU, CF N_PDU, FC N_PDU四种类型。

 

2.2.1  N_PDU格式

     网络协议数据单元由地址信息,协议控制信息,数据域构成。其格式如下:

    

Address Information

Protocol Control Information

Data Field

N_AI

N_PCI

N_Data

 

 

2.2.1.1 N_AI

地址信息由源地址,目标地址,目标地址类型,网络地址扩展信息组成。

 

当Message Type为Diagnostic时,N_AI由N_SA, N_TA, N_TAtye组成。

当Message Type为Remote Diagnostic时,N_AI由四个组成。

 

N_SA

N_TA

N_TA type

N_AE

1 byte

1 byte

Physical/functional

1 byte

 

物理寻址与功能寻址

N_TAtype参数是N_TA的扩展,用于选择通信模式:

 

物理寻址:1对1通信,适用于所有格式N_PDU。

功能寻址:1对N通信,仅适用于单帧通信。

 

2.2.1.2 N_PCI(重要内容)

   N_PCI详细标准如下:

 

  • Signal Frame单帧

      SF N_PCItype为0,代表单帧;SF_DL  代表当前的数据长度,范围1~7.

    

   如上的单帧报文解析,0代表单帧,3数据长度为3;3E 00 代表传输的数据,后五位为填充数据。

   注意:如果一帧报文的数据不足8字节,生于部分要用特定数据(自定义)进行填充。

 

    如果接收到的SF_DL为0或大于7,网络层要忽略本次接收;

 

  • First Frame首帧

     FF PCItype为1,代表首帧,FF_DL占12个比特其范围为1~4095,表明网络层能处理最大的数据长度为4095各字节;

 

         

      如上的首帧报文解析,1 代表首帧报文,02C代表数据总长度为44字节,62 F1 AE 05 88 91为传输数据,这里传输了6字节数据,剩下的38字节数据将通过单帧传输过来。

 

  如果FF_DL小于8(正常寻址)或小于7(扩展或混合寻址),网络层要忽略本次接收。

  如果FF_DL大于目前数据缓存区的容量,认为当前出现错误,并反馈发送节点停止后续报文传输(设置流控帧的FS = OverFlow)

 

  • Consecutive Frame续帧

   CF PCItype为2,SN为帧序列号。

  多帧传输时,首帧后第一个续帧的SN为1,默认首帧 的SN为0(该SN不体现在PCI中)。如下图没有data 7 中没有20这个数据。

  当SN达到15后且数据未传完的情况时,接收端会发送一帧流控帧,然后发送端的下一个续帧的SN 为 0.

一次续帧连续传输的帧数由流控帧的BS参数限定(最大为15);

多帧传输的最后一帧时续帧,其的SN可能时0到BS中的任意整数值。

 

 

  • Flow Control Frame流控帧

流控帧由FS,BS,Stmin三个参数组成。

 

FS

流控制状态

ContiuneToSend(0x00):表明接收端做好接收BS个续帧的准备

Wait(0x01):让接收端等待接收新的流控帧

OverFlow(0x02):表明当前接收能力不足,让发送端停止后续发送

BS

快大小

表明接收端要求一次接收续帧的能力大小

Stmin

最小时间间隔

接收端同志发送端自己的接收能力,让发送端调整发送报文的时间。

范围(0~127)代表(0~127)ms

范围(0xF1~0xF9)代表(100~900)us

 

byte7中:3代表当前为流控帧,0代表ContiuneToSend(0x00):表明接收端做好接收BS个续帧的准备;

byte6中:F代表当前要求续帧的快大小为15,即需连续发送15帧续帧。

byte5中:5代表续帧之间传输的时间间隔为5ms。

 

流控帧的作用:

     因不同节点的传输及数据处理能力不一样,流控帧接受节点就是告诉发送节点自身的接受能力与状态,防止出现发送节点发送过快,接受节点处理不过来的情况。

 

最大等待流控帧等待传输(N_WFTmax)(需确认):

     当FC 的 FS 为Wait时,表示接受节点希望发送节点暂停发送,等待FS 为CTS时,再继续发送。等待过程中,会定期发送流控帧,

如果后续流控帧的FD一直为Wait咋处理呢:

     FC.WT报文发送的最大次数为N_WFTmax,当接受到N_WFTmax次等待流控帧后,忽略本次传输。

 

2 网络层定义参数(待更新)

 

 

 

 

 

 

发布了3 篇原创文章 · 获赞 2 · 访问量 435

猜你喜欢

转载自blog.csdn.net/qq_35056682/article/details/105572328