最近由于工作的缘故,需要对控制单元的诊断系统进行开发,故利用业余时间查阅相关论文及标准协议,以此能够对控制端以及诊断仪端的软件开发能够有整体的概念,以及评估开发所需要做的工作。 特利用周末时间对自己的学习进行总结,供大家相互探讨。

诊断系统,顾名思义对控制系统的传感器与执行器进行故障的诊断,以便维修人员能够准确的解决故障。目前随着车辆控制单元的增加,诊断系统越加复杂,但其根本的设计架构及遵循的协议几乎完全一致,也就是说无论是TCU,ECU,BMS,HCU,还是EPS,ABS,MCU,Display,软件中的诊断协议几乎一致,诊断仪的功能仅仅是数量的增加,功能上大致一致。

目前诊断系统的通讯协议多种多样 ,含有 KWP2000,UDS,J1939,OBD 等等,KWP2000 与UDS是欧洲人主导,KWP2000 有基于CAN的,也有基于K线的,UDS在设计之初就是基于CAN线。目前UDS是各个厂家应用的趋势。J1939,OBD的一些协议是美国人主导的。J1939即可以通讯,也有关于诊断的相关协议,OBD主要应用在国五以上,与排放相关,国四虽说有标注,但不强制使用。下面的几张抠图,显示这些协议的构成。

相关的诊断协议大多都定义 物理层,数据链路层,网络层,应用层。其它几层暂时没有相关定义。

以下文章 以UDS开发为例,将从开发的角度陈述几个开发问题,供大家学习,包含开发架构,模块分析,代码结构进行阐述。

诊断系统的开发架构

诊断系统包含控制端的软件与诊断仪端的软件,这两者的软件架构基本一致。如下图所示。

因此只要明白一端的软件架构即可,下面以控制端的软件为例子进行描述。

模块分析--- 诊断数据,策略管理层

诊断数据与策略管理层是独立于标准协议之外,根据不同的控制单元,策略及数据管理不尽相同,但归根到底就两个功能 数据的读取与写入,读取包含,系统运行变量的读取,故障代码读取,写入包含,清除故障代码命令写入,相关标定变量写入,数据刷写写入。相关命令写入。相关诊断功能的实现是隶属于应用层软件的开发,在此不做描述。本文以读取控制系统中某个变量为例进行细节描述,如下图所示:

模块分析--- UDS 协议应用层

UDS 的协议应用层为定义各个诊断命令的含义与指令,建立A-PDU,进行命令的解析。具体设计可以参考标准的ISO14229协议。

模块分析 --- UDS 网络层

UDS 的网络层为核心,可以理解为信息交互的路由器,或者火车的编组站,对各个信息进行编组。一组为一个数据单元,一个数据单元为8个byte,命名为N-PDU

N-PDU=N_AI+N_PCI+N_DATA.

在对数据编组的过程中,分为单帧与连续帧。传输方式如下图所示:

N-AI 包含的为地址信息与寻址信息。

N-PCI 为在传输数据的时候的控制信息,详细如下图所示。

N-Data 为传输的数据。具体为数据域后面的7个数据域。

模块分析 ---- 数据链路层与物理层。

数据链路层的各个功能基本都有具体的CAN传输芯片完成,而物理层表述的为传输过程中的线束及传输信号要求。代码结构分析

在进行软件设计的过程中,数据链路层与物理层描述的为硬件描述层隶属于硬件范围,网络层为服务描述层处于RTE下方与BSW上方,而诊断数据库与诊断策略都包含在ASW层。网络层,数据链路层,物理层在Autosar都含有标准模块,均可以找到标准进行更改应用,诊断策略及诊断数据库包需要根据具体的应用进行设计。

UDS协议(车辆控制单元诊断系统开发架构及DID读取数据流程)相关推荐

  1. 车辆控制单元诊断系统

    随着汽车普及程度越来越高,汽车服务市场不断扩大,汽车维修公司对汽车故障快速定位的需求也越来越大.对于车主而言,迅速地了解爱车的车况及故障信息有助于及时对车进行检修和维护.目前诊断系统的通讯协议多种多样 ...

  2. Android开发之通过CursorAdapter读取数据(源代码分享)

    依照惯例我们先来看下谷歌官方文档对游标适配器的介绍,该适配器可以将数据库的数据暴露给ListView,将数据显示在LIstView空间上.特别注意的一点是,官方文档上写道游标必须包含一个列命名为&qu ...

  3. python读文件和写文件-python开发--从文件中读取数据和写入文件

    #! /usr/bin/env python -*- coding:utf-8 -*- """ @Author:gcan @Email:1528667112@qq.com ...

  4. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    阅读目录 一.网络编程 一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想 ...

  5. UDS协议发展历史(UDS是什么?)

    诊断协议那些事儿 本文为诊断协议那些事儿专栏首篇文章,旨在介绍诊断的起源.发展历史,让读者对诊断有一个基本的认识,明确UDS到底是什么. 关联文章: UDS的应用场景 UDS的OSI模型 UDS服务列 ...

  6. 物联网大数据平台软件开发架构案例解析

    物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...

  7. 基于scapy uds协议包实践

    一.UDS协议说明: 源自百度:UDS协议(Unified Diagnostic Services,统一诊断服务)是诊断服务的规范化标准,比如读取故障码应该向ecu发什么指令,读数据流又发什么指令.O ...

  8. 分享一个 物联网大数据平台软件开发架构案例

    物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...

  9. 20181110-软件开发架构2

    学习目标 听<软件架构相关音频>软件开发架构一节  待解决问题 构件的概念 ? 如何表达一个项目的架构,用什么图表? 架构设计作为一个系统开发的中间产品,交付的是什么内容? 各种架构风格的 ...

  10. 六款小巧的HTTP Server[C语言] - 贵贵的博客 - 开发|架构|开源|共享

    六款小巧的HTTP Server[C语言] - 贵贵的博客 - 开发|架构|开源|共享 六款小巧的HTTP Server[C语言] keminar 发表于 2010-02-05 23:14:41. 发 ...

最新文章

  1. 对Android 开发者有益的 40 条优化建议(转)
  2. Pytorch nn.Transformer的mask理解
  3. 中科创星投资云游九州,布局时空大数据
  4. 每日一皮:客户期望 vs 最终产品
  5. python【力扣LeetCode算法题库】35- 搜索插入位置
  6. 神曲背后的故事:算法工程师带你理性解构“蚂蚁呀嘿”
  7. linux快速复制大量小文件方法
  8. linux挂载fat分区,[实例]用fstab在Linux下自动挂载Win的FAT和NTFS分区
  9. 得意而忘乎形:谈葛水平的水墨画
  10. 【必备】jQuery性能优化的38个建议
  11. 数据3分钟丨《个人信息保护法》将施行;2021全球分布式云大会将在沪召开;GaussDB取得“双第一”...
  12. 为什么说 Web 开发永远不会退出历史舞台?
  13. 苍溪实验中学计算机等级考试,苍溪实验中学2021年招生录取分数线
  14. 华为2台3928千兆电口对接trunk启不来
  15. java计算base64图片大小
  16. SAP中物料成本视图原始组的应用原理分析
  17. 三星电视与计算机连接网络设置,三星电视怎么连接有线网络?五步搞定网络设置...
  18. 判断是否为非负数、小数点后两位
  19. 6、IOC操作Bean管理[外部Bean、内部Bean、级联Bean、注入集合类型属性]
  20. mysql sending data 耗时_mysql sending data状态时间花费太大

热门文章

  1. 数据库课程设计实验报告--图书馆管理系统
  2. 使用花生壳做内网穿透
  3. sum of digits
  4. vsftp配置问题启示录
  5. matlab 取整数命令,matlab取整函数命令代码
  6. R语言从入门到精通Day2之【R语言软件下载与安装】
  7. matlab 二进制写入文件,在Matlab中读取/写入二进制文件
  8. 数学建模按赛题划分常用代码
  9. Altium差分布线和等长方法
  10. QXDM5 中 Qt5WebKit.dll 丢失问题解决办法