车载网络测试 - UDS诊断篇 - 流控制帧

车载网络测试 - UDS诊断篇 - 流控制帧_第1张图片

目录

一、流控制帧的功能

二、流控制帧组成说明

1、流控制帧组成

2、流控制帧字段说明

a、FlowControl

b、FlowState

c、BlockSize

d、STmin

e、Padding bytes

三、流控制帧使用举例

1、数据发送方发送所有连续帧数据

2、数据发送方每次发送至多2条连续帧

3、流控制帧等待


        在CAN&CANFD总线协议的诊断层测试中,我们除了对于诊断功能(或叫UDS诊断功能)的测试、ID测试(DID、Routine ID、IO Control ID等测试)、DTC故障码的测试外,还有一块非常重要的功能,那就是对于CAN&CANFD协议的传输层CANTP的测试,CAN&CANFD传输层中我们都知道诊断数据存在单帧和多帧2种诊断数据类型;其中单帧比较好理解,就是一帧数据即可完成完整的数据交互信息;然而当数据在一帧数据中无法完成传输的时候,这时候我们的多帧数据出厂的时候,多帧数据中有一个非常重要的数据,那就是流控制帧,今天我们主要就是来看下流控制帧到底是什么?

一、流控制帧的功能

        指示发送网络实体是否可以继续进行消息传输。

        FC N_PDU由FlowControl协议控制信息(FC N_PCI)来标识。 FC N_PDU指示发送网络实体开始、停止或恢复CF N_PDU的传输。 当准备好接收更多数据时,在正确接收
a、FF N_PDU
b、如果需要发送更多连续帧,则连续帧块的最后一个 CF N_PDU。
        FC N_PDU 还可以通知发送网络实体在分段消息传输期间暂停 CF N_PDU 的传输,或者如果发送实体发送的 FF N_PDU 中的长度信息 (FF_DL) 超过缓冲区大小,则中止分段消息的传输 接收实体的。

二、流控制帧组成说明

1、流控制帧组成

车载网络测试 - UDS诊断篇 - 流控制帧_第2张图片

组成:FlowControl  + FlowState + BlockSize + STmin + Padding bytes

2、流控制帧字段说明

a、FlowControl

        byte 0高四位(bit4-bit7),值为3,代表流控制帧

b、FlowState

Value 名称 说明
0 ContinueToSend (CTS) FlowControlContinueToSend参数应通过将N_PCI字节#1的低半字节设置为“0”来编码。 它应导致发送方恢复连续帧的发送。
该值的含义是接收器准备好接收最大BS数量的连续帧。
1 Wait (WAIT) FlowControl 等待参数应通过将 N_PCI 字节 #1 的低半字节设置为“1”来编码。 它将导致发送方继续等待新的 FlowControl N_PDU 并重新启动其 N_BS 计时器。 如果FlowStatus设置为Wait,则FlowControl消息中的BS(BlockSize)和STmin(SeparationTime最小值)的值不相关并且应被忽略。
2 Overflow (OVFLW) FlowControl Overflow 参数应通过将 N_PCI 字节 #1 的低半字节设置为“2”来编码。 它应导致发送方中止分段消息的传输,并使用参数 = N_BUFFER_OVFLW 进行 N_USData.confirm 服务调用。 该N_PCI FlowStatus参数值仅允许在FirstFrame N_PDU之后的FlowControl N_PDU中传输,并且仅在接收到的FirstFrame N_PDU的消息长度FF_DL超过接收实体的缓冲器大小时才应使用。
如果 FlowStatus 设置为 Overflow,则 FlowControl 消息中的 BS(BlockSize)和 STmin(SeparationTime 最小值)的值不相关,应被忽略
3-F Other 保留值

c、BlockSize

Value 名称 说明
0 BlockSize (BS) BS参数值0应用于向发送方指示在分段消息的传输期间不再发送FC帧。 发送网络层实体应发送所有剩余的连续帧,并且对于来自接收网络层实体的进一步 FC 帧不进行任何停止。
01-FF BlockSize (BS) 该 BS 参数值范围应用于向发送方指示在没有来自接收网络实体的中间 FC 帧的情况下可以接收到的连续帧的最大数量

d、STmin

Value 名称 说明
00-7F SeparationTime:0 ms–127 ms STmin在0x00–0x7F(0–127) 范围内的单位是绝对毫秒 (ms)。
80-F0 Reserved ISO 15765 的这一部分保留了该值范围。
F1-F9 SeparationTime:100 us–900 us 0xF1–0xF9范围内STmin 的单位是100 µs 的偶数倍,其中参数
值 0xF1 代表 100 µs,参数值0xF9 代表 900 µs。
FA-FF Reserved ISO 15765 的这一部分保留了该值范围。

e、Padding bytes

        填充字节这里根据不同的主机厂,有不同的定义的,不过常见的填充字节主要有0x00、0xAA、0xCC、0x55等字节对未使用字节进行填充,我们根据主机厂的规范定义进行填充即可。

三、流控制帧使用举例

1、数据发送方发送所有连续帧数据

Tester:03 22 F1 90 00 00 00 00

DUT:10 14 62 F1 90 30 30 30

Tester:30 00 14 00 00 00 00 //希望DUT返回所有的连续帧数据

DUT:21 30 30 30 30 30 30 30  T1

DUT:22 30 30 30 30 30 30 30  T2

帧间隔:20ms < T2 - T1 < 150ms

2、数据发送方每次发送至多2条连续帧

Tester:03 22 F1 F2 00 00 00 00

DUT:10 26 62 F1 F2 30 30 30

Tester:30 02 1E 00 00 00 00 //希望DUT返回2帧连续帧数据

DUT:21 30 30 30 30 30 30 30  T1

DUT:22 30 30 30 30 30 30 30  T2

帧间隔:30ms < T2 - T1 < 150ms

Tester:30 02 28 00 00 00 00 //希望DUT返回2帧连续帧数据

DUT:23 30 30 30 30 30 30 30  T3

DUT:24 30 30 30 30 30 30 30  T4

帧间隔:40ms < T2 - T1 < 150ms

Tester:30 02 14 00 00 00 00 //希望DUT返回2帧连续帧数据

DUT:25 30 30 30 30 00 00 00

3、流控制帧等待

Tester:03 22 F1 90 00 00 00 00

DUT:10 14 62 F1 90 30 30 30

Tester:31 00 14 00 00 00 00 //Tester繁忙,DUT等待

Tester:30 00 14 00 00 00 00 //希望DUT返回所有的连续帧数据

DUT:21 30 30 30 30 30 30 30  T1

DUT:22 30 30 30 30 30 30 30  T2

        以上是今天对于流控制帧介绍的所有内容,以及我们经常会遇到的使用的方法。

你可能感兴趣的:(网络,CANTP,UDS,ISO,15765)