UDS与DoIp整理
UDS与Doip 知识框架整理
UDS(Unified Diagnostic Service)
1、概念
由ISO14229协议规定,使用诊断测试仪(客户端)控制车载电子单元(ECU,服务端),实现电子喷油喷射、自动变速和防抱死制动系统工作等等。
简单的意思就是外部设备与ECU的通信协议,可以与ECU进行交互,但是不是传输数据的链路,传输数据的协议由ISO15765协议规定。
下文中服务器指下位机或者ECU。
- 诊断数据:
测试人员修改可以位于电子控制单元存储器中的数据,诊断数据包括模拟输入和输出,数字输入和输出,中间值和各种状态信息。诊断数据示例包括车速、油门角度、后视镜位置、系统状态等。
三种类型为诊断数据定义的值:
1、电流值:电子控制单元正常操作当前使用的值;
2、存储值:在特定时刻(例如,当故障发生或
定期);本副本在电子控制单元的控制下制作;
3、静态值:例如VIN。
服务器不保留诊断数据,测试人员可以只保留请求的当前值。
- 诊断程序:
它是一种嵌入在电子单元内部的一种程序,通过客户端的请求可以开启相应的服务。
- 诊断服务:
客户端请求服务器进行信息交换,目的是需要从服务器获取诊断数据,或者对服务器进行某种操作,
- 诊断会话:
服务器中的状态,其中启用了一组特定的诊断服务和功能。意思就是某种特定的诊断操作需要进入特定的会话才能正确执行,否则就会出现该会话模式不支持该操作的提示。
比如常见的刷APP程序,需要在编程会话模式中才可以执行,要不然随便一刷就刷掉原始代码了,不安全。刷APP代码需要在Boot Software中进行。
Boot Software:在ECU上电或复位后立即执行,其主要目的是以检查有效的应用程序是否可用以执行,而不是将控件转移到重编程软件,意思就是如果重编程软件(也成为APP程序)不可以执行,则直接不进行跳转,只在Boot软件中。
在一些NXP的芯片中,自带固件,会扫描一些区域是否有可执行文件,会跳到相应的区域去执行。比如可以执行不带Boot软件的APP程序。
- 诊断故障代码:DTC(diagnoise trouble Code)
由车载诊断系统识别的故障状态的数字通用标识符,就是车载故障的编码。
- ECU:电子控制单元,一个功能模块的控制器,比如车门ECU、车窗ECU、调速ECU。
2、UDS框架图
可以通过多种通讯手段进行诊断(数据交互),比如CAN、IP和Lin等,DoCAN即Diagnosis on CAN,不同的通讯协议对应着不同的定义说明,在不同14229协议中比如14229-5,定义了车载以太网,即diagnosis on internet
应用层服务通常被称为诊断服务。应用层服务是用于基于客户机-服务器的系统,在车辆车载服务器执行测试、检查、监视或诊断等功能。客户端(通常称为外部测试设备)使用应用层
请求在一个或多个服务器上执行诊断功能。服务器,通常是一个功能,它是ECU的一部分,使用应用层服务提供诊断服务的响应数据返回到客户端。客户端通常是一个外部测试人员,在同一车辆系统中可能有多个客户端。诊断应用层的服务访问点提供许多服务,这些服务都具有相同的一般结构。
服务标识符:Service Identifier(SI)
0x10-0x3E、0x83-0x88、0xBA-0xBE 请求服务
0x50-0x7E、0xC3-0xC8、0xFA-0xFE 积极响应7F 否定响应服务标识符
请求分为物理请求和功能请求,物理请求像单个设备请求诊断,功能请求类似广播请求。
功能请求不回复部分否定响应。
否定响应分为:SNS(不支持该服务)、SNSIS(该会话不支持该服务)、SFNS(不支持该子函数)、SFNSIAS(在该会话不支持该子函数功能)和ROOR(请求超出范围)
注意:否定响应中 78表示等待。比如 0x7F 0x27 0x78
通用服务器响应流程
首先进行多个否定响应的判断
0x21:服务器忙
0x11:不支持该服务
0x7F:在该会话模式不支持该服务
0x33:在服务器未解锁的状态访问,
0x31:不支持该服务的子功能
然后正确解析服务,并执行操作
3、接下来介绍具体的服务
3.1、诊断以及通信管理功能
3.1.1 诊断会话模式:0x10
诊断会话在服务器中启用一组特定的诊断服务或功能。服务器始终仅存在一个活动的诊断会话。服务器应始终启动默认值开机时进行诊断会话。如果没有启动其他诊断会话,则默认诊断只要服务器通电,会话就应该一直在运行。
在不同的会话模式,可以进行特定的诊断功能,比如在扩展会话模式,可以禁止通讯,其他模式下就不可以。
子功能服务标识符:01 默认会话
服务器中的默认诊断会话,并且不支持任何诊断应用程序超时处理规定(例如,不需要TesterPresent服务来保持该会话处于活动状态)。
服务器在发送DiagnosticSessionControl肯定响应消息后,应停止当前诊断会话,并在此后启动新请求的诊断会话。子功能服务标识符:02 编程会话
此diagnosticSession主要的功能就是对下位机进行编程,俗称刷APP程序
如果服务器在引导软件中运行programmingSession,则只能通过ECUReset(0x11)服务保留programmingSession。
如果服务器在APP中运行编程会话,则服务器会复位,然后在引导程序中运行编程会话。
可以执行擦除代码,刷写代码等服务(0x31 0x34 0x36)
- 子功能服务标识符:03 扩展会话
该DiagnosticSession可用于启用支持功能调整所需的所有诊断服务。 它也可以用于启用诊断服务,这些服务不专门与功能调整相关。
- 子功能服务标识复:04 安全系统诊断会话
可以执行所有与诊断相关的服务功能函数。
诊断仪发送10 03,然后服务器返回50 03 ,代表成功进入扩展模式,可以进行一些操作,比如安全访问,禁止DTC,禁止通信等。
CAN通讯一次只能发送8个字节,第一个字节代表有效字节数,00 32 01 F4 需要看具体的参数意义。
其否定响应码主要有 12 13 22
12:不支持该子函数,比如在默认会话模式 就不支持直接跳转到编程会话,否则返回否定响应
13:消息长度错误
22:当前状态不支持该会话模式,比如在无BootLoader的APP程序中,执行10 02,就会返回22。
如果执行该指令需要的时间较长,则下位机(服务器)就会先返回78,让诊断仪等待,然后再返回正确的响应数据。
3.1.2 0x11 ECU复位
3.1.3 0x27 安全访问服务
3.1.4 0x28 通信控制服务
3.1.5 0x3E
3.1.6 0x85 控制DTC设置服务
二、数据传输功能单元
三、存储数据传输单元
四、协程功能单元
五、上传下载功能单元
DoIP
UDS与DoIp整理相关推荐
- 如何使用DiVa测试UDS On DoIP
随着汽车以太网的快速发展,很多ECU都使用了DoIP进行诊断和刷写,那如何使用DiVa测试 UDS On DoIP呢? 使用DiVa进行UDS On CAN测试大家都很熟悉了,UDS On DoIP测 ...
- UDS诊断 - DOIP和以太网协议关系
DoIP技术:UDS诊断服务,通过TCP/IP及以太网来进行车辆诊断,协议定义在ISO 13400. ISO13400涉及到的主要分布在传输层.网络层.数据链路层.物理层四层中. 物理层: ISO13 ...
- DoIP, uds等
DoIP(一)--基础概念_老孟_的博客-CSDN博客_doip DoIP技术:UDS诊断服务,通过TCP/IP及以太网来进行车辆诊断,协议定义在ISO 13400. ISO13400涉及到的主要分布 ...
- 风丘科技为您提供电动汽车热管理方案
热管理技术作为汽车节能.提高经济性和保障安全性的重要措施,在汽车研发过程中具有重要作用.传统燃油汽车的热管理系统主要包括发动机.变速器散热系统和汽车空调,而电动汽车的热管理系统在燃油汽车热管理架构的基 ...
- Vue 跨域下载或读取文件
image.png 下载文件 export async function download(file_url, file_name) {let res = await Axios({method: & ...
- IPETRONIK电动汽车热管理方案
热管理技术作为汽车节能.提高经济性和保障安全性的重要措施,在汽车研发过程中具有重要作用.传统燃油汽车的热管理系统主要包括发动机.变速器散热系统和汽车空调,而电动汽车的热管理系统在燃油汽车热管理架构的基 ...
- 经纬恒润Adaptive AUTOSAR解决方案 INTEWORK-EAS-AP
概述 随着汽车电子软件规模的不断扩大,Classic AUTOSAR(以下简称CP)的软件架构和方法论已被越来越多的OEM和供应商认可.与此同时,CP也面临着很大的挑战,无法满足汽车对高级自动驾驶,高 ...
- UDS诊断看这篇就够了,吐血整理
传送门 ==>> AutoSAR入门和实战系列总目录 1 简介与概述 不同诊断通信协议的开发,调整,实施和维护会给车辆制造商,系统供应商和ECU供应商带来不必要的成本.为了解决此问题,将不 ...
- CANoe.DiVa操作指南——基于DoIP使用CANoe.DiVa用于UDS一致性测试
文章目录 前言 一.数据输入端--诊断数据库 二.测试设置端--CANoe.DiVa设置 三.测试运行端--CANoe运行环境搭建 总结 前言 时间犹如指间滑落的细沙,不经意间已来到而立之年.自己慢慢 ...
- 在Wireshark中过滤UDS和OBD诊断ISO13400(DoIP)数据
目录 0 WireShark简介 1如何在WireShark中添加诊断数据的"源地址"和"目标地址"列信息 2过滤诊断数据 3 解析以太网诊断DoIP数据 4 ...
最新文章
- 读《程序员的思维修炼》有感
- SQL必知必会——插入数据(十五)
- forward 和redirect的区别
- java 11:数组作为函数参数,数组做为函数返回值
- java判断优先级代码,Java如何查看线程的优先级?
- HTML5 Canvas save 保存恢复状态
- Upload LABS Pass-2
- python自带模块可以控制鼠标吗_python自带模块模拟鼠标和键盘操作
- 算法之路(5)--括号匹配问题(Valid Parentheses)[leetcode]
- 测试一段C代码的执行时间(windows系统和ubuntu系统)
- 推荐系统之基于用户行为数据的协同过滤(Collaborative Filtering)
- 41-MybatisPlus
- Laya之微信小游戏入门
- 企业微信与帆软BI内网服务器集成
- 第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)
- java命令行输出hello_J2SE基础之命令行中编写第一个 Hello World
- iOS AppStore上架流程图文详解​
- pyecharts应用代码实例3-3:数据地图在线生成器【基于Streamlit的纯Python网站】
- 众至统一安全管理平台GuardIt AllInOne,一站式、轻量化、低成本、快接入
- java 分班_java培优分班考试试题