DoIP基础知识_doip是什么
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
1、概述
DoIP是Diagnostic communication over Internet Protocol 的简称顾名思义就是通过网络协议进行诊断通信。
ISO 13400的所有部分都基于ISO/IEC 7498-1中规定的OSI基本参考模型该模型将通信系统分为七层。从上到下称为应用层(第7层)、表示层、会话层、传输层、网络层、数据链路层和物理层(第1层)。ISO 13400使用了这些层的一个子集。ISO 13400为DoIP指定了传输层、网络层、数据链路层和物理层。
ISO 13400由以下部分组成其总称为"道路车辆-互联网协议诊断通讯"(DoIP):
1、 一般信息和用例定义。
2、 传输协议和网络层服务。
3、 基于IEEE 802.3的有线车辆接口。
以下部分正在筹备中
4、 以太网诊断连接器。
5、 一致性测试规范。
ISO 13400协议与OSI基本参考模型的对应关系可参考下图
2、DoIP的优势
1、更快的诊断响应。
2、传输大量数据的时间更短用于软件刷新和参数下载。
2、使得远程的直接诊断成为可能。
3、基本要求
3.1、数据链路与物理层要求
根据ISO-13400的要求DoIP通信在物理层支持100BASE-TX (100 Mbit/s Ethernet) 和10BASE-T (10 Mbit/s Ethernet) 两种制式。DoIP设备的MAC地址也符合IEEE 802.3 的要求。
3.2、传输层与网络层要求
ISO-13400规定DoIP通信在传输层上必须同时支持UDP和TCP并将UDP和TCP的使用场合进行了定义对所使用的端口号也进行了定义。后续会说明。
ISO-13400规定DoIP通信在网络层上使用IPv6协议但是为了后向兼容的原因也支持IPv4。此外对于IPv4来说还要支持地址解析协议ARP对于IPv6来说还要支持邻居发现协议(NDP)这两个协议是用于在只知道IP地址的情况下获取MAC地址的。
4、基本数据类型
DoIP数据作为SDU层层向下传递直至构成完整的以太网帧通过物理层的介质发送出去。DoIP的数据内容分为5个部分
1、所使用的ISO13400版本信息占用1个字节。
2、所使用的ISO13400版本信息依比特取反占用1个字节。
3、数据类型占用2个字节标识本帧数据的用途比如用于上报或请求车辆信息、诊断命令、诊断逻辑链接激活、alive check等。
4、数据长度占用4个字节标识后面的数据长度。
5、诊断数据长度为0至2的32次方减1这里的数据又分为sender address、receiver address、应用数据这三部分。
4.1、ISO13400版本取值范围
DoIP版本取值范围如下表
Version | 含义 |
0x00 | reserved |
0x01 | DoIP ISO/DIS 13400-2:2010 |
0x02 | DoIP ISO 13400-2:2012 |
0x03…0xFE | reserved by this part of ISO 13400 |
0xFF | default value for vehicle identifcation request messages |
4.2、ISO13400数据类型
DoIP数据的第三个部分是data type,即描述数据包中的数据类型取值范围如下图所示
上面这个表格不但定义了代表不同数据类型的值还说明了具体的数据类型应该是通过UDP还是TCP来发并定义了应该在哪个端口上发。
其中最常用的数据类型应该是0x80010x80020x8003了代表的含义分别是诊断消息、诊断消息正响应和诊断消息负响应。
0x0001至0x0004用于汽车标识上报或请求只能通过UDP报文来发送这种命令主要用于在汽车和诊断仪进入网络之后、诊断连接建立之前的车辆发现过程。
0x0005和0x0006标识的Routing activation request 和 response用于在socket建立之后进行诊断通信的请求。
0x0007和0x0008用于Alive check用于检查当前建立的诊断连接socket是否仍然在使用中如果不再使用则关闭socket释放资源。
4.3、ISO13400完整数据结构举例
下图是一个DoIP数据完整结构的举例
5、DoIP的使用场景
ISO13400中定义了DoIP的4种使用场景。
5.1、一辆车和一个外部测试设备实例之间的直接物理连接
5.2、一辆车和一个外部测试设备实例之间的网络连接
这种通信场景意味着多个车辆和多个外部测试设备被连接到同一个网络。这意味着外部测试设备应有可能识别网络中的车辆并选择与之建立通信的特定车辆。从车辆的角度来看这意味着车辆应该实现识别机制并且应该能够处理或拒绝多个连接尝试因为其他外部测试设备可能会干扰当前建立的通信。外部测试设备和车辆都应支持将自身集成到现有IP网络中其中包括网络层参数的协商。这种通信场景通常发生在车辆连接到现有网络或无线基础设施时其他车辆和外部测试设备(例如维修车间网络)也使用这些网络或无线基础设施。
5.3、多辆车和一个外部测试设备实例之间的网络连接
从车辆的角度来看这个通信场景与3.2中描述的场景相同。只有外部测试设备能够支持多个连接(即插座)。这种通信场景可能发生在例如有一个专用的flash重编程服务器它可以同时更新多辆汽车(例如在经销商或制造区域)。
5.4、一辆车与外部测试设备的多个实例之间的网络连接或外部测试设备的单个物理实例上的测试应用程序
在这种情况下车辆应能够清楚地分离负责每个逻辑链路的每个外部测试设备的诊断请求和响应。此外在单个测试设备实例上运行的测试设备或应用程序应能够检测到其他测试设备实例或应用程序已经与同一车辆通信因此车辆不可能同时支持所有操作。
6、DoIP诊断通信建立连接的过程
DoIP诊断同学建立连接分为四个过程
1、物理连接Physically connection。
2、车辆声明Vehicle Discovery。
3、通信建立Connection Establishment。
4、诊断通信Diagnostic Communication。
6.1、物理连接
车外客户端Test equipment用相应的接口卡IP-Based Network连接车身边缘节点DoIP Edge Node GW。在ISO 13400协议中规定外部诊断设备连接边缘节点且需用激活线来激活边缘节点的DoIP功能。
物理连接后通过相应手段获取IP地址建立通信。
6.2、车辆声明
物理连接后车辆会议广播的形式发送三次车辆声明声明的信息可以包括
1、VIN
2、EID
3、GID
如果诊断设备没有获取车辆信息也可以主动请求Vehicle Identification request来获取相应信息如上图所示。
6.3、通信建立
在DoIP协议中有Socket概念Socket一端连接着IP地址一端连接着Port端口。并且Socket对于芯片而言是一种资源。因此有激活失效之分。
在协议中定义了Payload Type 0005/0006用于激活Socket。
激活后Socket使能接下来就可以进行诊断通信。
6.4、诊断通信
Socket激活后可以进行诊断通信。通信模型如下图所示
外部Tester发送诊断请求网关收到诊断请求后会给与一个收到答复Acknowledgement,用意是告诉Tester网关此时已收到诊断请求与此同时网关将诊断请求Diagnostic Request发送至Target ECU。ECU收到诊断请求并基于这个请求给与响应。
因此对于Tester而言一共收到两个响应。
1、Diagnostic Message Acknowledgement
2、Diagnostic Message Response
每一帧响应对应的帧类型不同
在DoIP协议中通过PayLoad Type区分报文帧类型用于实现不同的具体功能。但是其具体发送方式都是基于TCP/UDP协议。
上述整个过程报文的发送方式都是以TCP/IP协议当然是将传统的TCP/IP协议做了车规级应用定义不同的阶段模型、不同的Payload Type应用报文类型定义合理的机制来保证Tester与ECU稳健进行诊断通信。
以上是整个DoIP协议定义Tester和ECU通信所需要搭建的“通信桥梁”。