上位机中的CAN-TP网络层参数整定

CanTp (CAN Transport Layer) AUTOSAR的CAN Transport Protocol(CanTp)模块为汽车电子系统提供了一套高效、可靠的多帧数据传输机制。通过标准化的接口,CanTp模块实现了大数据量的单帧和多帧传输、帧重组、流控制管理及错误处理等功能,确保数据传输的完整性和实时性。在诊断通信、数据记录和传输、固件更新及传感器数据传输等应用场景中,CanTp模块发挥着至关重要的作用。理解并有效利用AUTOSAR CanTp功能,对于开发高效、安全的汽车电子系统具有重大意义。如果你有更多具体问题或需要进一步的支持,请随时告诉我! 阅读详情
AI摘要

CAN-TP层在UDS诊断层和CANDriver层之间,主要处理CAN数据超过8Byte时的分包和解包工作。网络层的定时参数如N_As、N_Ar、N_Bs、N_Br、N_Cs和N_Cr定义了数据传输的不同阶段的时间间隔。例如,N_As是从发送请求到发送完成的最大时间,N_Bs是等待流控帧的超时时间,而N_Cs则影响连续帧的发送间隔。这些参数在确保CAN总线通信效率和可靠性方面起到关键作用。

CAN-TP 层位于 UDS诊断层和CAN Driver层中间,主要作用是:当CAN数据长度超过8Byte(CAN-FD为64Byte)时,对CAN数据进行分包和解包。

9411a58bc09f74231e52ef1744f57930.png

网络层定时参数定义了N_As、N_Ar、N_Bs、N_Br、N_Cs、N_Cr六个参数,各个参数的含义下两张图可以完整的体现,以下会对各个参数进行详细说明。

704f274bfc4b2a32bbc1fb99bad856ae.png

format,png

首先需要明确几个概念

  • N_USData : 网络层数据
  • L_Data : 数据链路层数据
  • .req : 帧发送开始请求
  • .con : 帧发送完成确认
  • .ind : 帧接收完成指示

※ Send 侧的 .con 和Receiver侧的 .ind是一个时间点。

注意:上位机在tp层通信时作为Sender即发送方,故以下参数后缀为s的对Sender有效,后缀为r的应在下位机即BootLoader中进行设置。

下面对每个参数进行详细解释:

1. N_As/N_Ar

dafe27db0bb20f747209575858a2e1db.png

1.1. N_As

Sender.req->Sender.con ,Sender 任意帧类型 从请求发送到发送完成 的时间间隔,任意帧类型包括:单帧、首帧、连续帧、流控帧,Sender发送的报文帧不包含流控帧。

根据需要,N_As应设置为70ms,以下为上位机源码:

uint n_as = 0x70000; //将N_As参数设置为70ms,单位为μs

cantp_status status = CanTpApi.SetValue_2016(

(cantp_handle)Channel,cantp_parameter.PCANTP_PARAMETER_TIMEOUT_AS,

ref n_as, (uint)Marshal.SizeOf(n_as)); //将70ms写入

由于N_As为最大超时时间,这里的波形图为发送方发出的N_PCI(Protocol Control Information,协议控制信息)

  • 单帧

eb0417be18ae27e6a912e2e7395f2b30.png

  • 首帧

c09214c7faa068b6fa324d582106574b.png

  • 连续帧

6c535fec70ff0d519246b08ab546b7a6.png

1.2. N_Ar

Receiver.Req->Receiver.con , Receiver 任意帧类型 从请求发送到发送完成 的时间间隔,在上位机中设置无意义。

2. N_BS/N_Br

2.1. N_Bs

可理解为 Sender 从XXX 到 收到流控帧 的时间,XXX分为三种情况:

① Sender 从 发送完首帧(FF)到 收到流控帧 的时间

1365fde0e128843068af872fe3a4d02f.png

② Sender 从 发送完连续帧(CF)到 收到流控帧 的时间

6c917896ca597929c4232db61b510ef7.png

③ Sender 从 收到流控帧(FC)(状态为Wait)到 收到下一个流控帧 的时间

95a14eb3457854ab5528ed57fc9bed3d.png

在X1VCU诊断调查表中,N_Bs应设置为150ms,源码如下:

uint n_bs = 150000; //将N_Bs参数设置为150ms,单位为μs

status = CanTpApi.SetValue_2016(

(cantp_handle)Channel, cantp_parameter.PCANTP_PARAMETER_TIMEOUT_BS, ref n_bs, (uint)Marshal.SizeOf(n_bs));

由于N_Bs为最大超时时间,这里仅展示三种发送方发出的N_PDU,标号与三种情况说明一一对应:

① Sender 从 发送完首帧(FF)到 收到流控帧 的时间:302μs左右

a483c76993ec6e7d5e397d4be8e7da00.png

② Sender 从 发送完连续帧(CF)到 收到流控帧 的时间:302μs左右

6bfd3ad248797df9c8e7d6faf5c9341c.png

③ Sender 从 收到流控帧(FC)(状态为Wait)到 收到下一个流控帧 的时间:141ms左右

2d356fef70109792ba35995fd0c988d4.png

2.2. N_Br

可理解为 Receiver 从XXX 到 请求发送流控帧 的时间,XXX分为三种情况,在上位机中设置无意义。

① Receiver 从 收到首帧(FF)到 请求发送流控帧 的时间

63b97c1f763bf20f6e33057f5c29e635.png

② Receiver 从 收到连续帧(CF)到 请求发送流控帧 的时间

04726a02204a4665639ad40a0c223f08.png

③ Receiver 从 发送完流控帧(FC)(状态为Wait) 到 请求发送下一个流控帧 的时间

71985a1cee056b9d3a6e6c6e3f6f3c6e.png

3. N_CS/N_Cr

3.1. N_Cs

可理解为 Sender 从XXX 到 请求发送连续帧(CF) 的时间,XXX分为两种情况

① Sender 从 收到流控帧(FC)到 请求发送连续帧(CF) 的时间

59f578c4a20263ce4cf5b85aeec64c40.png

② Sender从 发送完连续帧(CF)到 请求发送下一包连续帧(CF) 的时间

d49d234cfa37be4f72de4d7c259481cf.png

在需求中,N_Cs应设置小于70ms,源码如下:

uint n_cs = 0x01; //将N_Cs参数设置为1ms,单位为ms

cantp_status status = CanTpApi.SetValue_2016(

(cantp_handle)Channel, cantp_parameter.PCANTP_PARAMETER_SEPARATION_TIME_TX, ref n_cs, (uint)Marshal.SizeOf(n_cs));

在逻辑分析仪中,N_Cs表现为以下两种情况:

① Sender 从 收到流控帧(FC)到 请求发送连续帧(CF) 的时间

52c88efeb67058abde4f36620e4a99c5.png

② Sender从 发送完连续帧(CF)到 请求发送下一包连续帧(CF) 的时间

3bf31a8e42b10e1d1a4a3fb63d304bf0.png

3.2. N_Cr

可理解为 Receiver 从XXX 到 收到下一个连续帧(CF) 的时间,XXX分为两种情况,在上位机设置该参数无意义。

① Receiver 从 发送完流控帧(FC)到 收到连续帧(CF) 的时间

fda2b0f0c60281d893340d48a85975f1.png

② Receiver 从 收到连续帧(CF)到 收到下一包连续帧(CF) 的时间

 

8096458ad8b1e5b3e0f11ddd0f55506e.png

 

UDS(三)网络层时间参数 网络层定义了N_Ar、N_As、N_Br、N_Bs、N_Cr、N_Cs六个时间参数。 网络层在检测到错误的时间传递至上层使用者 1.当N_As 超时时,即发送方没有及时发送出N_PDU,系统将放弃信息的接收并传递<N_Result> = <N_TIMEOUT_A>的N_USData.comfirm指示 2.当N_Ar超时时,即接收方没有及时发送出N_PDU,系统将放弃信息的接收并传递<N_Result> = <N_TIMEOUT_A>的N_USData.co 阅读详情

相关推荐

告别CAN-TP通信超时!手把手教你用PCAN-Explorer 6和Vector上位机调优N_As/N_Bs/N_Cs参数

本文详细介绍了如何利用PCAN-Explorer 6和Vector上位机优化CAN-TP通信中的N_As/N_Bs/N_Cs参数,解决通信超时和数据传输中断问题。通过实战案例和参数调优技巧,帮助工程师提升车载网络通信的稳定性和效率,适用于汽车电子诊断和ECU刷写场景。

weixin_42543046的博客 232

UDS诊断系列介绍02-传输层CANTP

传输层CANTP模块介绍,单帧多帧的发送与接收逻辑介绍

initiallizer的博客 7967

Bootloader开发必看:从ECU视角理解CAN-TP网络层参数(N_Ar/N_Br/N_Cr配置指南)

本文从ECU开发视角深入解析CAN-TP网络层关键参数N_Ar、N_Br和N_Cr的配置方法,为Bootloader开发提供实用指南。通过分析接收端(Receiver)的帧处理超时、流控响应和连续帧间隔等核心参数,结合嵌入式代码实现和调试技巧,帮助开发者优化CAN总线通信的可靠性和效率。

weixin_28692153的博客 371

CAN-TP(暴力理解)

ISO 15765--CANTP

kian9one的博客 1万+

CAN-TP网络层参数扫盲:从UDS诊断到Bootloader刷写,这些超时时间到底在等谁?

本文深入解析CAN-TP网络层参数在UDS诊断和Bootloader刷写中的关键作用,详细介绍了发送方和接收方的超时参数设置与优化策略。通过实战案例和波形分析,帮助工程师掌握参数整定技巧,提升车载通信的可靠性和效率。

weixin_28717683的博客 160

CANOe系列讲解 - 总目录

最近做了一个基于CANOe的UDS上位机软件,写一个CANOe的使用专栏记录下CANOe的使用。主要包括下记几个内容,会分几个章节进行记录。 ·CANOe的基础知识介绍 ·如何新建CANOe工程发送CAN信号(手动发送/通过DBC文件导入) ·如何发送诊断数据(手动发送/通过CDD文件导入) ·Pannel设计/CAPL编程(通过Pannel操作,自动发送诊断命令)

hjt6927818的博客 8176

上位机CAN-TP网络层参数整定实战:从理论到源码的精准配置

本文深入解析了上位机CAN-TP网络层参数整定的核心实战技巧。针对N_As、N_Bs、N_Cs三个关键定时参数,从理论定义出发,结合逻辑分析仪波形分析,详细阐述了其作用、配置陷阱及调优策略,并提供了C#/C++源码配置示例,旨在帮助工程师实现从理论到源码的精准配置,彻底解决诊断工具通信不稳定的问题。

weixin_29194255的博客 564

CANoe诊断测试排障:ISO-TP网络层N_As/N_Bs/N_Cr时间参数全解析

在CAN总线诊断开发中,ISO 15765-2(ISO-TP)作为网络层协议,负责将超过单帧容量的UDS报文拆分为多帧传输,并通过时间参数协调收发节奏。这些参数直接影响刷写、网关转发等场景的稳定性,一旦配置不当,就会引发CANoe诊断测试中的超时或帧丢失问题。从基础的时间约束原理出发,理解N_As、N_Bs、N_Cr等参数的监控与调优方法,是提升UDS诊断测试效率的关键。借助CANoe的Trace分析与CAPL脚本,工程师可以实时观测帧间隔、定位超时根因,并结合自动化断言建立常规检查机制。本文从工程实践角度

weixin_34054931的博客 172

CAN-FD时代,你的上位机TP参数调对了吗?深入对比经典CAN与CAN-FD的网络层定时差异

本文深入探讨了CAN-FD时代上位机TP参数调优的关键差异,对比经典CAN与CAN-FD在网络层定时参数上的显著变化。通过分析数据场扩容、波特率分离等技术革新,提供UDS诊断场景下的参数重构逻辑和优化建议,帮助工程师高效适配高速总线环境。

weixin_30394669的博客 443

CAN-TP传输协议详细介绍 AutoSAR

CAN-TP协议通过分段、流控制、数据确认和超时重传等机制,实现了在控制器局域网络上可靠地传输大数据量的信息。CAN-TP传输协议是建立在CAN总线之上的高层协议,用于在控制器局域网络上可靠地传输大数据量的信息。以上示例中,send_data函数用于将原始数据分割并发送CAN数据帧,receive_data函数用于接收CAN数据帧、处理CAN-TP数据段并发送确认帧。流控制:通过流控制机制,CAN-TP协议确保发送方以适当的速度传输数据,并避免接收方缓冲区溢出。四、CAN-TP传输协议的源代码实现。

带你成为别人眼中的大佬! 2641

UDS TP层参数

基本传输定时参数N_As、N_Ar、N_Bs、N_Br、N_Cs、N_Cr

天赐好车的博客 1063

CAN-TP帧类型(SF/FF/CF/FC)解析

简介 CAN-TP帧类型可分为 单帧和多帧。 单帧(SF) : Single Frame,数据长度小于等于7个Byte时,使用单帧进行传输 多帧可分为 首帧(FF)/流控帧(FC)/连续帧(CF),数据长度大于等于8个Byte时,使用多帧进行传输 首帧(FF):First Frame 流控帧(FC): Flow Control 连续帧(CF): Consecutive Frame 帧格式 单帧格式 单帧比较简单,标准CAN中, Byte1[7:4] : 固定为0,表示单帧。 ..

hjt6927818的博客 4万+

canoe:基于15765的can网络传输层TP测试用例

使用canoe来对can网络TP层进行测试,基于15765的测试用例.

告别CAN-TP通信超时!手把手教你用C#在上位机配置N_As/N_Bs/N_Cs参数(附源码)

本文深入解析CAN-TP参数配置,手把手教你用C#在上位机中正确设置N_As、N_Bs和N_Cs等关键参数,解决UDS诊断通信中的超时问题。通过实战代码和调试技巧,提升汽车电子开发中的通信稳定性和可靠性。

weixin_30384217的博客 392

地震勘探原理---地震预处理

3.1 为什么说要对数据进行振幅补偿?具体来说,地震波在传播过程中会遇到各种各样的地质条件,例如不同的岩层、土壤、水层等,这些介质的密度、速度等特性不同,因而对地震波的能量消耗也有所不同。在传播距离较远的情况下,能量损失可能会导致接收到的地震信号振幅变小。相反,在传播距离较近的情况下,能量损失可能较小,导致接收到的地震信号振幅变大。如果不对数据进行振幅补偿,这种振幅不均衡会导致地震数据分析和解释的误差和不确定性增加,可能产生错误的结论。

DARRENANJIAN的博客 3272

【C++】C++异常语法、使用、规范、异常安全及异常的优缺点

实际中我们可以可以去继承exception类实现自己的异常类。但是实际中很多公司像上面一样自己定义一套异常继承体系。因为C++标准库设计的不够好用。如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码。C++ 提供了一系列标准的异常,定义在 中,我们可以在程序中使用这些标准的异常。异常是一种处理错误的方式,

weixin_51692487的博客 1524

Uds on Can & ISO 15765-2

UDS (Unified Diagnostic Services,统一的诊断服务)诊断协议是ISO 15765和ISO 14229定义的一种汽车通用诊断协议,位于OSI模型中的应用层,它可在不同的汽车总线(例如CAN, LINFlexray, Internet)上实现。UDS协议的应用层定义是ISO 14229-1,目前大部分汽车厂商均采用UDS on CAN的诊断协议。协议的目的是建立统一的诊断服务:多种网络,统—诊断。

weixin_54376810的博客 1810

U8备份提示“远程组件初始化失败”

问题现象: SQL出现问题后重装,U8没有重装,之后直接附加数据库,U8可以正常登陆,但是在备份的时候提示远程组件初始化失败。 问题原因: 因为重装了SQL,没有进行U8数据源初始化,导致Master库中丢失了存储过程储 解决办法:在Master库重建存储过程 USE [master] GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[U8FileServerExtendProc] @cmdLi.

SamYux 2473

UDS诊断必读:TP层如何用8字节CAN帧传输4KB数据

经典CAN数据帧一次最多承载8字节,而UDS诊断服务常需传输数百至数千字节数据,这种长度不匹配依赖ISO 15765-2网络层(TP层)解决。TP层通过单帧、首帧、连续帧和流控帧的交互,将长消息分段、重组并控制发送节奏,配合BlockSize和STmin等参数,实现在低速总线上可靠传输大块数据。该机制广泛用于车载诊断、Bootloader刷写、标定表下载等场景,其超时参数与边界条件直接影响刷写效率和稳定性。本文从报文格式、握手流程、时间参数计算和常见故障排查入手,帮助工程师快速掌握TP层核心逻辑,规避经典C

weixin_34178244的博客 342

机械工程师如何用Codex实现CAD自动化:从重复劳动到智能设计

在机械设计领域,CAD二次开发长期面临学习门槛高、维护成本大的难题。随着AI编程助手如Codex的出现,通过自然语言生成可执行代码,工程师无需精通编程即可实现图纸批量处理、BOM表自动生成、参数化建模等任务。这种技术将重复性操作自动化,显著提升设计效率,让工程师聚焦于核心创新。应用场景涵盖批量修改图纸属性、跨软件数据流转、自动打印等。本文分享机械工程师利用Codex落地自动化的实战经验与避坑指南。

weixin_32296621的博客 357

金融科技创新中人工智能的应用:8篇优质论文精选(含2023)

随着科技的飞速发展,金融领域正经历着前所未有的变革。在这个过程中,人工智能技术发挥着越来越重要的作用。为了深入探讨金融人工智能的研究和应用,享享特地整理了几篇金融人工智能方面的论文,大家可以看一下金融人工智能方向最新的研究成果!面向金融领域的大型语言模型本文介绍了BloombergGPT,一个基于广泛金融数据训练的500亿参数模型。基于彭博(Bloomberg)广泛数据来源,建立了一个基于彭博数据的3630亿令牌数据集,并结合了额外3450亿通用数据令牌。

2401_82426425的博客 3210

UDS诊断TP层全解析:从CAN单帧到4KB数据分帧传输

在汽车电子软件开发中,CAN总线因其高可靠性和实时性被广泛采用,但经典CAN数据场仅8字节,面对UDS诊断协议动辄几十字节甚至上千字节的响应消息,直接传输显然不现实。ISO 15765-2定义的传输协议层(TP层)承担着将大数据拆分、打包、排序与重组的关键职责,是连接UDS应用层与CAN物理层的桥梁。理解单帧、首帧、连续帧、流控帧这四类帧的交互规则,掌握长度字段、序列号、流控参数BS与STmin的配置逻辑,是诊断栈开发与故障排查的必备基础。本文从CAN帧的容量瓶颈出发,逐步拆解一次4095字节诊断数据在总线

weixin_34161029的博客 297

汽车TARA分析实战:从威胁建模到安全需求落地的完整指南

在汽车电子电气系统开发中,威胁分析与风险评估(TARA)是确保功能安全与网络安全的核心方法论。其原理在于通过结构化的流程,系统性地识别资产、分析威胁场景并评估风险,旨在将安全理念前置,从设计源头规避风险。这一过程的技术价值在于将模糊的安全担忧转化为可量化、可追溯的工程需求,从而指导资源精准投放,是符合ISO 26262和ISO/SAE 21434标准要求的关键实践。其应用场景贯穿智能汽车从概念设计到系统开发的各个阶段,尤其对于涉及自动驾驶、智能座舱、车云通信等复杂功能的域控制器开发至关重要。本文聚焦于TAR

weixin_42706667的博客 303
上一篇: OSEK网络管理
下一篇: 基于Cbrother脚本通过excel生成c代码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

您猜我猜不猜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值