远程诊断DoIP
目录
远程诊断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端口
- UDP_DISCOVERY
- 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针脚直连,反之亦然。
以太网物理层需求
根据IEEE 802.3中定义,DoIP应支持100Base-TX(100Mbit/s以太网)
根据IEEE 802.3中定义,DoIP应支持10Base-TX(10Mbit/s以太网)
对10Mbit/s网络支持的提出目的是,当两个以太网接口之间100Mbit/s网络无法建立时,10Mbit/s的低速网络会作为备用方案启动。
根据IEC 60950-1 (TNV1 circuit) and IEEE 802.3定义,DoIP边缘节点应设置变压器线圈以满足对1500V电压1min以上的隔离。
以太网数据链路层需求
DoIP边缘节点应支持与外部网络建立10Mbit/s的以太网
DoIP边缘节点应支持100Mbit/s以太网
根据IEEE 802.3中定义,DoIP的边缘节点在建立连接时,应支持自动握手及自动协商(Auto-Negotiation)以保证端口使用相同的传输速率及单双工模式等
根据IEEE 802.3中定义,测试设备应支持100Mbit/s标准
为提高对以太网线缆(端对端及交叉线缆)的容错能力,测试设备应支持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的更多相关文章
- 车载以太网第二弹|测试之实锤 -DoIP测试开发实践
前言 车载以太网测试之实锤系列,之前我们已经从环境设备组成.被测对象组成再到测试过程和测试结果分析,分享了完整的PMA测试 .IOP测试 .TC8中的TCP/IP协议一致性测试 .也分享了1000BA ...
- Adaptive AUTOSAR 学习笔记 14 - 车辆诊断
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...
- 深入浅出HTTP请求(转自http://www.cnblogs.com/yin-jingyu/archive/2011/08/01/2123548.html)
HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务 器)请 ...
- Ext FileSystem Family、Ext2、Ext3
catalog . 简介 . Ext2文件系统 . Ext3文件系统 . 小结 1. 简介 VFS虚拟文件系统接口和数据结构构成了一个框架,各个文件系统的实现都必须在框架内运转,但这并不要求每个文件系 ...
- 同时大量连接导致的DDOS攻击,导致收发器宕机,用户大面积超时掉线
前段时间一个客户改成电信网通自动路由后(当然和这个没有关系,但是客户一般没有分析能力,会多想),用户经常大面积掉线,用户才180多个,在线最多也才120多,十分苦恼,原先帮其维护的技术人员,只是远程诊 ...
- HTTP深入浅出 http请求
HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求 ...
- iOS - NetRequest 网络数据请求
1.网络请求 1.1 网络通讯三要素 1.IP 地址(主机名): 网络中设备的唯一标示.不易记忆,可以用主机名(域名). 1) IP V4: 0~255.0~255.0~255.0~255 ,共有 2 ...
- java基础之 http
HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求 ...
- Android IOS WebRTC 音视频开发总结(六四)-- webrtc能走多远我不知道,但这个市场真实存在
本文主要总结目前都有哪些使用场景用到webrtc,文章最早发表在我们的微信公众号上,详见这里, 欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com webrtc只 ...
随机推荐
- Jsp页面中的中文乱码问题解决
Jsp页面中的中文乱码问题解决 在编写Jsp页面的时候,发现写入其中的中文在浏览器浏览的时候会出现乱码的情况. 出现乱码的原因分析: 因为页面中对自己的编码格式的声明和页面的实际编码格式不相同,而浏览 ...
- textarea标签提示录入剩余字数
textarea标签提示录入剩余字数 <textarea onkeydown="checkMaxInput(this,300)" onkeyup="checkMax ...
- Spring总结七:AOP动态代理的实现
Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类. 首先我们来用代码简单演示jdk动态代理: 现在有一个商品的增删改查的操作 /** * 商品操作接口 ...
- PHP内核介绍及扩展开发指南—Extensions 的编写(下)
第一个参数是HashTable,在1.2.3节提到Zend使用HashTable来存储PHP函数,function_table用于指 定从哪个HashTable中获取函数.通常应该用CG(functi ...
- 使用Python定时执行一任务,自动登录某web系统,生成报表,然后发送邮件给指定人员
一.项目需求 每周从A系统生成一张Excel报表,发送此报表给指定人员,相关人员依据此报表去完成后续的工作. 项目限制: 1.无法通过EDI系统交互的方式从后台读取数据 2.由于公司网络环境限制,不能 ...
- Linux扩展根目录
一.简介 使用linux系统的过程中,有时发现系统根目录(/)的空间不足,导致系统运行很慢,针对该现象,本文详细介绍根目录(/)的空间扩展方法. 二.操作步骤 1)查看根目录大小 df 2)查找系 ...
- PHP中static与self
一直搞不清楚,今天百度自己也测试了一下. <?php class A { public static function closure(){ echo __CLASS__."<b ...
- SVN常见问题及解决方式(二)
1.分支不同 ==> update merge(svn自动合并)2.分支冲突 ==> 协商解决冲突,选择一个正确的版本覆盖(最新的正确直接Revert最新):出现四个文件.黄色感叹号代表S ...
- (字符串)ZigZag Conversion
[解析] 第一次看到这个题目的人,可能不知道ZigZag是什么意思,简单解释一下,就是把字符串原顺序012345……按下图所示排列: 发现所有行的重复周期都是 2 * nRows - 2 对于首行和末 ...
- JQuery解决事件动画重复问题
开发项目时,经常要写动画效果,有时候会遇到动画重复问题,例如:当鼠标移动到某个元素上时,执行某个动画,当我鼠标多次移动到该元素时,该动画就要连续执行,那么怎么去解决呢? 话不多说,直接添代码,简单明了 ...