记:从零开始讲解UDS(三)——网络层

7 篇文章 11 订阅
6 篇文章 26 订阅

0x00 UDS概述

UDS(University Diagnostics System通用诊断系统)是一个在整车系统上经常使用的设备维护协议。其主要遵循的法规为:ISO-15765、ISO-14229,其主要协议模式脱胎于OBD(On-board diagnostics)诊断协议。经常应用在整车的各种ECU上面。是一个在整车ECU应用层开发经常使用的也是较为复杂的协议层之一。
本篇文章主要介绍了UDS关于网络层相关的简要介绍。阅读本文之前,您需要了解的一些前置技能有:

技能名称技能熟练度技能教程链接
CAN总线熟悉暂无
数据类型熟悉暂无
OBD了解暂无
整车缩写了解暂无

当初我想了好久,是不是要把网络层和应用层的某些特定指令放在一起说一下,因为某些指令放在网络层实现可以较为迅速的进行响应,也能避免某些奇奇怪怪的反应(超时之后才会反馈等)。但是想到每篇文章对应的层级,最后还是准备将其放在应用层上面去写。
本篇文章某些情况下,算是对《 记:从零开始讲解UDS(一)——协议概述》的承接……毕竟网络层与底层息息相关。一中主要在客户以及初学者角度介绍了一下UDS相关的帧格式。本篇文章主要是以一个开发人员的视角,将整个网络层抽象为一个可以具体实施的操作教程。

0x01 网络层相关定义

0x11 包格式定义

其实,UDS中,指令是作为包(package)发出的。但是UDS对于包的定义很模糊,常常会和帧相混淆(单帧Single Frame其实就是最小的包),数据的打包可以按照单独的数据长度进行判断,小于7个数据+指令以内的为单帧,大于其的为多帧。有些车厂还会要求在最后的位置加入CRC等校验或者直接选择加密。所以仅有少数的指令可以一直用在单帧格式。
而指令数据的结构也会占用部分数据格式。格式基本为:

数据名称数据长度备注
指令8单个指令最长为8位
长度12所有的数据长度
数据N一般不会超过1000

基本上普通的数据包长度约在10~50之间。比其再高的情况就是在刷写的时候。当然,这个比应用层更大。需要在应用层之后讲解。

0x21 数据最大限制

这个主要是当前的最大值限制,这个限制位最大为8位,存在于流控帧内,标志当前一包最大的发送大小以及另类的发送校验。这个值严格控制在这个数以内或者就是这个数值。在出现了于其不匹配的情况、传输超时或结束后数据最大限制与实际传输位不同的情况、传输之中出现错位的情况,ECU都会报负反馈。

0x31 传输速度最小限制

因为CAN总线中带有多个数据,为了不会过于占用当前总线空间,所以会在首诊内加入最短时间STmin,限制ECU发送数据最短的时间,而最长时间根据当前定义的诊断仪-ECU互相定义的STime1/2/3进行判断。因此,传输速度被限制在一个非常短的时间区间内。因此,普通的RTOS内的软件定时器并不能保证这个数据真的可以传输成功(如果你使用了某些RTOS的软件定时器的话),务必要使用相对稳定的硬件定时器(最好需要经过校准或使用单独的有源晶振,校准方式我会在下面的博客内简单讲解)。

0x02 后记

其实,UDS在传输层和网络层能做的很少,受益于其良好的物理层帧格式定义,已经不需要真复杂的抽象当前传输的数据格式,因此,网络层其实仅将当前数据+指令打包位为单帧或后,根据当前传输层的相关规则与限制条件进行数据传输。
下面,我将用较大的篇幅讲述关于应用层与UDS烧写相关的操作。因为UDS作为一个依托CAN协议栈的衍生协议栈,在应用层的需求很大。当然,由于UDS对底层的网络层与数据传输层进行了定义,就算脱离了CAN的协议栈也可以独立工作,仅需要将其物理层帧格式略微修改一下即可。但是要求对于当前的物理传输层需要很高的要求(一定的组网能力以及对传输速率和抗干扰能力的要求)。故在LIN总线上也可以进行使用。

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: PCAN UDS(Unified Diagnostic Services)是一种用于车辆诊断的通用协议,允许车辆与诊断工具进行通信和交换数据。以下是使用PCAN UDS的简要教程。 首先,您需要安装适当的PCAN UDS软件和硬件设备。这通常包括一台支持CAN总线通信的PCAN硬件适配器和相关的驱动程序。确保您的设备被正确安装并且与车辆的CAN总线相连。 接下来,您需要编写或使用现有的UDS诊断应用程序。该应用程序将使用PCAN UDS库函数与车辆进行通信。您可以使用C++或其他支持PCAN UDS的编程语言来开发应用程序。 在应用程序中,您需要使用PCAN UDS库函数来建立与车辆的通信连接。这包括初始化CAN适配器并打开CAN总线。之后,您可以使用诊断服务请求(Diagnostic Service Request)来向车辆发送请求,例如读取DTC(Diagnostic Trouble Code)或读取传感器数据等。 在与车辆进行通信时,您需要遵循PCAN UDS协议的规范。该协议定义了与车辆进行通信时所使用的数据格式和命令。您需要了解如何构建正确的请求和解析车辆的响应。 在请求车辆的诊断服务时,您需要提供相应的服务标识符(Service Identifier)和相关的参数。服务标识符指定要执行的诊断服务,例如读取故障码或执行特定的测试程序。 最后,您需要处理车辆对请求的响应。这可能包括解析响应数据并采取适当的操作。您可以根据车辆的响应来诊断车辆的问题或执行适当的维护操作。 总之,使用PCAN UDS进行车辆诊断涉及安装适当的硬件和软件设备,并编写或使用现有的诊断应用程序。您需要遵循PCAN UDS协议的规范,并使用PCAN UDS库函数与车辆进行通信和解析响应。这样,您可以有效地使用PCAN UDS进行车辆诊断和维护操作。 ### 回答2: PCAN UDS是一种诊断通信协议,用于在汽车电子控制单元(ECU)之间进行数据交换和通信。下面是使用PCAN UDS的简要教程: 1. 准备工作:首先,您需要获取PCAN UDS适配器,并根据制造商提供的说明将其正确连接到车辆的诊断接口上。然后,确保在计算机上安装了适配器的驱动程序和相关的UDS协议库。 2. 连接和初始化:在您的计算机上打开UDS通信的开发环境,例如PCAN-View软件。选择正确的适配器并建立连接。在建立连接后,您需要根据车辆协议的要求初始化UDS通信,例如选择正确的诊断会话,设置通信速率等。 3. 发送请求:使用UDS通信协议,您可以向目标ECU发送请求。请求可以是故障码读取、参数设置、数据传输等。首先,您需要确定目标ECU的地址和要发送的请求类型。然后,构建请求消息,并通过适配器将其发送到目标ECU。 4. 接收和解析响应:一旦目标ECU收到请求并作出响应,您将收到一个响应消息。使用UDS协议库解析接收到的响应消息,并提取所需的信息。这可能包括读取的故障码、指定的参数值等。 5. 处理和显示数据:通过UDS通信,您可以向ECU发送多个请求并接收多个响应。您可以根据具体的应用需求,将收到的数据进行处理、显示和存储。 请注意,以上教程仅提供了PCAN UDS的基本使用步骤。实际应用中可能还有更多的细节和复杂性需要考虑。因此,在使用PCAN UDS时,建议参考适配器和UDS协议的文档,以确保正确的配置和操作。 ### 回答3: PCAN UDS是一款用于汽车诊断和通信的工具,它使用CAN总线进行通信。以下是PCAN UDS的使用教程。 首先,您需要将PCAN UDS设备与您的汽车电脑系统连接起来。可以通过CAN总线插口将设备连接到汽车的OBD-II接口。 一旦设备连接成功,您需要打开PCAN UDS软件。在软件中,您将能够设置和配置与汽车进行通信的参数。 然后,您需要加载PCAN UDS的驱动程序。这将确保设备能够正确地与您的汽车通信。 一旦驱动程序加载成功,您可以开始使用PCAN UDS进行诊断和通信。您可以通过选择相应的诊断功能来执行特定的操作,如读取故障码、清除故障码、读取传感器数据等。 另外,您还可以使用PCAN UDS汽车进行通信,并向汽车发送特定的请求以获取所需的数据。您可以通过设置适当的参数,如地址、数据长度等来发送请求。 PCAN UDS还提供了日志录功能,您可以将通信流录下来以进行后续分析和故障排除。 最后,当您完成诊断或通信操作后,您可以断开PCAN UDS设备与汽车的连接,并关闭PCAN UDS软件。 总之,PCAN UDS是一种功能强大的诊断和通信工具,通过CAN总线与汽车进行通信。通过以上的使用教程,您可以轻松地使用PCAN UDS进行汽车诊断和通信操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GreenDreamer

如果帮到了你,还望请我喝杯咖啡

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

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

打赏作者

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

抵扣说明:

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

余额充值