远程诊断DoIP


继传统CAN线、MOST、FlexRay以及CAN-FD后,车载以太网将凭借其低成本、高带宽、高传输速率、网络实时而被纳入到新型整车总线中。尤其在娱乐信息系统及T-Box子网中,采用以太网传输视频数据代替原有各模块间复杂连接线将很大程度减少线束重量及复杂度。同时以太网也将是未来解决如何快速更新ECU软件及标定的主要策略之一。

DoIP技术,在UDS诊断服务基础上,通过TCP/IP及以太网来进行远程车辆诊断,协议定义在ISO 13400,文档中详细描述了外部测试及刷新设备如何与整车内部ECU通过以太网及TCP/IP协议进行通讯。 
文档目前分三份:

  • — Part 1: General information and use case definition
  • — Part 2: Transport protocol and network layer services
  • — Part 3: Wired vehicle interface based on IEEE 802.3

以下两份正在筹备中

  • — Part 4: Ethernet Diagnostic Connector
  • — Part 5: Conformance test specification

Part 1: General information and use case definition

ISO13400架构实现基于互联网的OSI 7层模型(详见ISO/IEC 7498-1及ISO/IEC 10731),各层采用的协议见以下表格。 

SI七层模型自上向下分成应用层,表示层,会话层,传输层,网络层,数据链路层,以及物理层。但ISO13400涉及到的主要分布在传输层、网络层、数据链路层、物理层四层中。 

根据互联网中的定义, OSI模型中,由软件(进程)或者硬件(输入/输出芯片)实现的活跃部分称之为实体Entity,用于进行信息的发送或者接收。实体是子系统中的活动单元,每一层被拆分成多个实体,同一层内的通讯由不同子系统上的对等实体(Peer-Entity)来实现。

DoIP诊断网络架构

整个DoIP诊断网络架构由所有的Entity实体与外部的测试设备组成。

有简单的外部设备点对点与车内单独某个DoIP实体连接,或是在一个复杂的分布式网络中,多台测试设备通过DoIP网关与多台车辆中的多个DoIP实体以及子网进行连接通信。

DoIP的应用场景具体有三个:

1. 售后模式 车辆的检测与维修

在维修厂里,外部的检修设备不需要使用传统ALDL口硬线连接,通过TCP/IP协议与车辆建立直接联系,并按照指令顺序将可靠请求发送给车辆DoIP实体,而后模块反馈出车辆实时的错误追溯信息。

2.产品/工厂模式 车辆ECU的模块刷新

外部刷新设备根据既定的刷新流程步骤,通过以太网或TCP/IP协议在进行安全访问及模块解锁后与车辆内部模块IP网络建立通信。车辆内部网络对外部刷新设备传输过来的Op及标定文件应支持下载以及写入操作。

产品模式下,工程开发工具往往实现的是设备与模块DoIP实体点对点的通讯与刷新,但在工厂模式下,采取的则是刷新设备对整车进行的并行刷新操作。

3. 在工厂模式总装终检线工位进行检测维修

在工厂制造环节,外部检测设备会按照指定顺序,对接入IP网络的车辆进行终检工位的完整性测试。与售后模式下有所不同的是,在工厂环节,外部测试设备通常会与整车多个模块的多个DoIP实体进行连接以及并行通讯。

诊断连接场景

单台车与外部设备使用双绞线点对点通信

这种方式意味着在进行IP诊断时,系统不会受到来自其他车辆或者设备的干扰,通常用IP寻址或者自动配置。 

通过无线网络连接单车与单一外部测试设备

在这种场景下,意味着无线网络中可能会存在多辆车或者多个设备,因此无论是车或者是设备都应具备判别机制,能在网络下识别出所需要连接的对象,并且拒绝来自其他车辆或者设备的请求信号。当然,设备与车辆本身都应具备自动接入到已存在的IP网络的能力。应用场景如维修厂。 

单设备与多辆车进行无线连接

在该场景下,只有外部测试设备需要有点对多连接的能力(sockets),如在工厂里某一台产线整车刷新服务器需要同时对多台车辆进行并行刷新。 

单车与多个外部设备连接,但只允许同时只建立一条通道

车辆具备了与多部设备连接的能力,对于车辆来说,需要具备区分诊断请求还是反馈的能力。而对于外部设备,则需要有判断当前车辆是否有在与其他设备进行通讯的能力。该情况会发生在工厂模式下,在某些网络重叠区域,某台设备需要对车辆进行模块的刷新,而另一台设备则需要对该车辆进行检修时。 

DoIP之通信建立

ISO 13400-2文档详细定义了整车电子模块组件如何通过TCP/IP协议与外部刷新诊断设备建立通信连接。其中包括作为IP节点的汽车网关如何加入到现有网络中,及外部刷新诊断设备如何在网络中检测到车辆并与其内部IP组件建立有效通讯。

其中,DoIP架构模型必须实现以下特征:

  • — 汽车与设备具备检测对方并加入到网络的能力
  • — 汽车具有声明存在且被检测到的能力
  • — 获取车辆基本状态信息 (如Power Mode状态)
  • — 通信建立,如双方通信请求建立,保持,以及对网关的控制等
  • — 汽车网关实现诊断设备与车辆子网组件之间的数据路由
  • — 错误状态处理

DoIP中的一些定义

DoIP Entity 
DoIP实体是任意一个满足DoIP协议的host,其中包括DoIP节点及DoIP网关

DoIP Gateway 
DoIP网关是在车辆网络内部,实现与本模块及所连接多个子网内ECU通讯访问的节点

DoIP Node 
DoIP节点是在车辆网络内部,遵守DoIP协议,但不具备路由DoIP数据到连接子网内功能的节点

DoIP Edge Node 
DoIP边缘节点是在车辆内部,与诊断口Ethernet activation line直连的节点

External Test Equipment 
车辆外部设备是指存在车辆网络外部,通过DoIP协议与车辆内部子网DoIP Entity实现通讯建立的设备

In-vehicle Test Equipment 
车辆内部设备与外部设备拥有同样功能,但不具备Activation硬线,车辆身份请求及DCHP服务(自动为接入网中的DoIP节点分配不同的IP地址) 

针对协议定义,虽从名字上看TCP/IP协议仅包括传输控制协议(TCP)与网际协议(IP),但实际上TCP/IP是协议簇,包含了除这两种以外的用户数据报协议(UDP),文件传输(FTP)和地址解析协议(ARP)等。

这里着重介绍TCP与UDP,这两者都是传输层协议,且在后续建立通讯中起到非常重要的作用。

DoIP中TCP原理及通信建立

TCP(Transmission Control Protocol)传输控制协议是一种面向连接的协议,即必须与对方建立可靠连接后才能进行数据交互。这个建立过程就是「三次握手」,即建立TCP连接时,需Client与Server端总共发3次包来确认连接的建立。

DoIP建立TCP通讯时,通常成对出现端口,一个用于发送,称之为远程端口(remote port);另一个用于接收,称之为本地端口(local port)。但一个host的发送端口相对也就是对方host的接收端口。每个DoIP Entity需对TCP_DATA端口进行监听,TCP_DATA端口号通常为13400,以便外部设备能与节点建立通讯。

参考互联网体系中TCP/IP的握手流程,DoIP节点与外部诊断设备建立流程如下: 

  • 第一次握手: 建立连接

Client也就是External Test Equipment发送连接请求报文段,将标志位syn置为1,并随机产生一个Sequence Number: seq=x; 把这个值发送给Server DoIP Entity,此时Client进入SYN_SENT的状态,等待Server确认。

  • 第二次握手: Server收到syn报文段

Server收到Client的syn报文段,由syn=1知道Client正在请求建立连接。Server把ack=x+1;同时要发送syn请求消息,因此把标志位syn置成1,并随机生成seq=y;Server把所有信息一并放入报文段(即syn+ack报文段)发给Client用来确认连接请求,自此Server进入了SYN_RCVD状态。

  • 第三次握手: Client收到Server(syn+ack)报文段

检查ack是否等于x+1,如果正确,把ack=y+1,并把数据包发给Server,Server会检查ack是否等于y+1,seq是否等于x+1,如果正确就连接成功,Client和Server进入ESTABLISHED状态,完成握手,可以开始接收数据。

DoIP中UDP原理及通信建立

UDP(User Data Protocol)用户数据报协议是一种非连接,不保证可靠性的传输层协议,也就是传输数据前Client与Server不需建立连接。只需要知道对方IP地址及端口号,即能够直接发送数据包,只是不能保证是否能够到达。但相比TCP,UDP的速度更快,因此对于需要实时同步传输,但不要求可靠到达的数据,优先考虑UDP协议。

在下载数据的场景下,当要求数据精确无误时,由于UDP会出现丢数据的情况,因而就应采用更安全的TCP。但在高速网络保证下,传输数据延迟以及稳定性得以改善的情况下,若丢帧后采用应用层控制数据重传,则也能够保证UDP传输的可靠性。

DoIP场景下,通过两个UDP端口

  1. UDP_DISCOVERY
  2. UDP_TEST_EQUIPMENT_REQUEST

来建立通讯并进行远程数据控制,尤其需要外部设备对车辆IP节点进行广播消息请求时,须使用UDP,由于TCP机制所在,无法实现广播与多播。

过程如下,DoIP以UDP_DISCOVERY或动态定义端口来作为Source Port,向UDP_DISCOVERY广播报文数据,而外部诊断设备则始终监听UDP_DISCOVERY端口来获取消息。 

当外部诊断设备需要发送数据时,同样将目标端口设置为UDP_DISCOVERY,源端口UDP_TEST_EQUIPMENT_REQUEST则是动态定义,范围为(49152~65535)。

当请求发送给DoIP后,诊断设备保持对UDP_TEST_EQUIPMENT_REQUEST的监听。 
DoIP反馈请求时,把目标端口设置为UDP_TEST_EQUIPMENT_REQUEST,具体实现过程参考下图: 

在ISO13400-2中,DoIP的策略制定中参考了非常多的传统通信网络技术。下次会分析在DoIP过程中,不同层级之间如何实现对DoIP帧中的payload数据进行解析等。

DoIP以太网诊断口设计规范

在 Part3中,基于IEEE 802.3 100BASE-TX的标准(速率达100M的快速以太网信令标准),就物理层以及数据链路层对DoIP的通信接口及测试设备提了设计需求。 
Part4里则是强调DoIP中通信诊断口的设计规范。这里对ISO13400的part3及part4部分关于以太网诊断口pin脚布局进行简介。

以太网需求定义

根据IEEE 802.3u 100BASE-TX标准定义,车载以太网连接口由四条传输线(transmission line)加一条额外的使能线(activiation line)组成,通过使能线可决定DoIP边缘节点(Edge Node)的打开与否。 

以太网线缆分两类:

  • 端对端(1:1)连接:通常用于网络集线器或交换机与端节点(如计算机)连接。

此情况下,每个RJ45线缆接口,即水晶头的每一个针脚会与车辆的接口针脚一一对应连接。也就是Source Port的Rx+接口会与Destination Port的Rx+口对应相连。

  • 交叉连接(cross-linked):通常用于两个端节点间直连(两台计算机之间)。

此情况下,Source Port的Tx针脚会与Destination Port的Rx针脚直连,反之亦然。

以太网物理层需求

  1. 根据IEEE 802.3中定义,DoIP应支持100Base-TX(100Mbit/s以太网)

  2. 根据IEEE 802.3中定义,DoIP应支持10Base-TX(10Mbit/s以太网)

    对10Mbit/s网络支持的提出目的是,当两个以太网接口之间100Mbit/s网络无法建立时,10Mbit/s的低速网络会作为备用方案启动。

  3. 根据IEC 60950-1 (TNV1 circuit) and IEEE 802.3定义,DoIP边缘节点应设置变压器线圈以满足对1500V电压1min以上的隔离。

以太网数据链路层需求

  1. DoIP边缘节点应支持与外部网络建立10Mbit/s的以太网

  2. DoIP边缘节点应支持100Mbit/s以太网

  3. 根据IEEE 802.3中定义,DoIP的边缘节点在建立连接时,应支持自动握手及自动协商(Auto-Negotiation)以保证端口使用相同的传输速率及单双工模式等

  4. 根据IEEE 802.3中定义,测试设备应支持100Mbit/s标准

  5. 为提高对以太网线缆(端对端及交叉线缆)的容错能力,测试设备应支持Auto-MDI特性,也就是线序自适应的功能,设备可通过这个功能可以自动检测连接到自己接口上的网线类型,能够自动进行调节。

而DoIP边缘节点不需具备Auto-MDI特性。

诊断口两种针脚布局定义

目前通行的以太网针脚布局有两种,但具体OEM采用何种应参照具体的整车通讯网络架构进行选择。 
以下两种车载以太网诊断口模式都是参考了IEEE 802.3信号规范,基于现有ISO 15031-3/SAE J1962车辆诊断口标准设计。

首先,对于高频信号传输,成对的Tx+/Tx-以及Rx+/Rx-都应尽可能地接近对方,另外,还需要有一个额外的针脚用于表示pin脚类型以及激活以太网控制器。

第一种类型

第一种以太网pin脚布局可用于解决当主机厂已占用1&9针脚的冲突。

下图为当主机厂占用了1&9针脚作为CAN_H与CAN_L时的诊断口端面针脚布局: 

各pin脚定义如下表: 

对应诊断口与设备连接时的通信示意图: 

第二种类型

第二种以太网pin脚布局可用于解决在主机厂已占用3&11针脚的冲突。

下图为当主机厂占用了3&11针脚作为CAN_H与CAN_L时的诊断口端面针脚布局: 

各pin脚定义如下表: 

对应诊断口与设备连接时的通信示意图: 

文章转载于:解读:车辆远程诊断DoIP

远程诊断DoIP的更多相关文章

  1. 车载以太网第二弹|测试之实锤 -DoIP测试开发实践

    前言 车载以太网测试之实锤系列,之前我们已经从环境设备组成.被测对象组成再到测试过程和测试结果分析,分享了完整的PMA测试 .IOP测试 .TC8中的TCP/IP协议一致性测试 .也分享了1000BA ...

  2. Adaptive AUTOSAR 学习笔记 14 - 车辆诊断

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...

  3. 深入浅出HTTP请求(转自http://www.cnblogs.com/yin-jingyu/archive/2011/08/01/2123548.html)

    HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务 器)请 ...

  4. Ext FileSystem Family、Ext2、Ext3

    catalog . 简介 . Ext2文件系统 . Ext3文件系统 . 小结 1. 简介 VFS虚拟文件系统接口和数据结构构成了一个框架,各个文件系统的实现都必须在框架内运转,但这并不要求每个文件系 ...

  5. 同时大量连接导致的DDOS攻击,导致收发器宕机,用户大面积超时掉线

    前段时间一个客户改成电信网通自动路由后(当然和这个没有关系,但是客户一般没有分析能力,会多想),用户经常大面积掉线,用户才180多个,在线最多也才120多,十分苦恼,原先帮其维护的技术人员,只是远程诊 ...

  6. HTTP深入浅出 http请求

    HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求 ...

  7. iOS - NetRequest 网络数据请求

    1.网络请求 1.1 网络通讯三要素 1.IP 地址(主机名): 网络中设备的唯一标示.不易记忆,可以用主机名(域名). 1) IP V4: 0~255.0~255.0~255.0~255 ,共有 2 ...

  8. java基础之 http

    HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求 ...

  9. Android IOS WebRTC 音视频开发总结(六四)-- webrtc能走多远我不知道,但这个市场真实存在

    本文主要总结目前都有哪些使用场景用到webrtc,文章最早发表在我们的微信公众号上,详见这里, 欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com webrtc只 ...

随机推荐

  1. Aws s3 api

    PUT操作的这个实现将一个对象添加到一个bucket中. 您必须具有对bucket的WRITE权限才能向其中添加对象. Amazon S3从不添加部分对象; 如果您收到成功响应,则Amazon S3将 ...

  2. 如何查询centos、Debian服务器、查看系统内核版本,系统版本,32位还是64位

    查看centos内核的版本: 1)[root@localhost ~]# cat /proc/version Linux version 2.6.18-194.el5 (mockbuild@build ...

  3. 关于recv的返回值

    通常recv有几种返回值 1.==0 表示收到FIN包, 因为FIN包,是状态为标记为FIN的空包,没有携带数据,所以recv的长度为0 2.>0 表示收到了数据, 但是有没有收完,是不知道的 ...

  4. ROS编译:catkin简析

    博客转载自:https://blog.csdn.net/zyh821351004/article/details/50388429 Catkin tutorials: http://wiki.ros. ...

  5. 专题2-通过按键玩中断\2440按键中断编程lesson2

    1.程序优化 修改Makefile 把main.c里面的mmu代码复制到mmu.c并修改如下 main.c的修改 由于在bootloader当中一般不会使用MMU,所以 main.c 加入led.c文 ...

  6. Monkey稳定性测试环境搭建说明

    一.安装Java环境 安装Java环境-JDK:下载地址:http://pan.baidu.com/s/1pJ6Yqs7,jdk安装解压即可. 二.设置环境变量 双击下载的JDK ,设置安装路径.这里 ...

  7. Recurrent Neural Network(递归神经网络)

    递归神经网络(RNN),是两种人工神经网络的总称,一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neural network ...

  8. POJ3020 Antenna Placement(二分图最小路径覆盖)

    The Global Aerial Research Centre has been allotted the task of building the fifth generation of mob ...

  9. linux 系统的ssh服务

    ssh服务由服务端软件Openssh和客户端(常见的有ssh,SecureCRT,putty,xshell)组成,ssh服务默认使用22端口提供服务,它有两个不兼容的ssh协议版本,分别是1.x和2. ...

  10. RequireJS 主入口加载模块经常会加载失败的问题

    在接入requirejs时,在main入口遇到了这样的问题,使用jquery,刷新10次页面会有3-4次加载失败,找不到$符号等等 require.config({ 'baseUrl': './mod ...