【网络层/TP 传输层】

CAN-TP 层位于 UDS诊断层和CAN Driver层中间,主要作用是当CAN数据长度超过8Byte(CAN-FD为64Byte)时,对CAN数据进行分包和解包。 通信方面包含时间管理和错误处理。

一.网络层协议的数据单元

N_PDU :
{ 1)N_AI:隐含源地址,目标地址和寻址方式信息。

2)N_PCI:用于标识N_PDU类型:单帧,第一帧,连续帧和流控制帧。
在这里插入图片描述
3)N_Data: 包含应用层协议控制信息A_PCI和A_DATA。
}

二. 网络TP层的服务结构

A. 请求服务(Request):用于向网络层传递控制报文信息及要发送的数据,应用于更高层或应用层。如tester向ECU发出数据。应用层-》 传输层

B. 指示服务(Indication):用于向更高层或应用层传递状态信息及接收到的数据,应用于网络层。如ECU收到了tester的数据,传至应用层。 传输层-》应用层

具体说来,Indication前端应该执行的是底层传入数据的处理函数,即读取PDU信息,这一帧具体是SF、FC、CF还是FF。若满足条件,继续向上,即应用层传递。

C. 确认服务(Confirm):被网络层使用,用于向更高层或应用层传递状态信息。tester收到了ECU方面的数据。传输层-》应用层

具体说来,Confirm和Indication很像的是都是从网络层向应用层传递信息,有何区别呢?

在代码的处理中,Confirm的前端应向底层外发Tx数据或超时处理函数,反馈的信息不需要包含数据。而Indication传递的信息则分为两种,一种包含真实数据,另一种不包含。

三. 根据ISO-TP中的描述,Can帧主要分四类:

1) 单帧(Singal frame, SF): 第一个字母总是0,
在这里插入图片描述
2) 首帧(First frame, FF) :第一个字母总是1
在这里插入图片描述
2)流控帧(Flow control frame, FC)
在这里插入图片描述
3)连续帧(Consecutive frame, CF),第一个字母总是2,
在这里插入图片描述
多帧时序如下:

  1. Sender ->发送首帧
  2. Receiver ->回复流控帧
  3. Sender-> 发送连续帧(根据流控帧确认发送连续帧的间隔和次数)
  4. Receiver -> 收到指定数量的连续帧后,再次回复流控帧
  5. Sender-> 发送连续帧(根据流控帧确认发送连续帧的间隔和次数)
    在这里插入图片描述
    三.(时间)定时参数: s: sender r: receiver
    在这里插入图片描述
    在这里插入图片描述
    四.错误识别处理
    在这里插入图片描述
    1) SF_DL错误: 首帧的数据长度为0 或者大于7,则会被接收方忽略。
    2) FF_DL错误: 第一帧数据长度不符合规范
    3) CF_SN错误:1) 控制流不限制,SN没有按照顺序,跳了,wrong_sn 2) 控制流限制为2
    4) CF_SN错误:1)控制流限制2,SN没有按照顺序,接受方没有回应,N_Bs超时
    5) FC_FS错误:1)接受方Flow state 非法
    6) FC_N_WFTmax错误:接收方最多连续发送多少个等待FC帧个数,本地变量,仅可以在多包报文发送过程中接收方网络实体中定义,系统初始化时应设置正确,使用这个变量用于避免发送方节点一直处于等待FC状态;

五.非预期报文处理 ??

非预期帧的处理:在多包报文传输过程中,任何一方接收到的非期望报文(同一个N_AI),网络设计者确定网络采用全双工或半双工,然后依据节点处于接收状态,发送状态及空闲状态时,接收到非预期报文,

网络层的处理方法不同
◼ 半双工状态,网络层处于发送状态,收到任何数据报文,均忽略;
◼ 全双工状态,除SF和物理寻址的FF外,其它包括功能寻址FF均作忽略处理,且不向上层报告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值