大家好哈,我是穿拖鞋的汉子!
伴随着需求不断提升(车身数据传输速率和带宽需求),为了满足需求将以太网引进到车载网络中。车载以太网在诊断传输层的应用协议是ISO 13400(Diagnostic On IP—DoIP),定义的是从物理层到应用层搭建通信桥梁的规则。
该公众号以往关于DoIP文章如下:
上述文章自己总结的都是偏向具备内容,针对的是在基于车载以太网进行诊断通信,搭建通信桥梁的整个过程(对于DoIP可以理解为DoIP是搭建通信桥梁的规则)。
今天自己想基于ISO 13400协议总结下偏系统的概述性的内容,以方便后续自己查阅。
一、基于车载以太网的诊断系统分析
首先如下图,ISO 13400协议开篇示意图:
1、物理层
在该层需要定义是物理电气特性:
-
需要选定车载总线类型:-Tx、-T1、BroadR-Reach,具体选定那种总线类型,需要参看各家车规芯片、接口特性;
-
Software、Hardware工程师根据不同类型定义驱动;
-
基于诊断范畴需求参看IEEE 802.3(国际上定义无线通信的协议簇)、ISO 13400-3定义以太网在车身做诊断接口参数(比如激活线特性);
上述内容可以在如上图OSI七层模型清晰看到(对应协议名称)。
2、传输层
在车载诊断范畴,传输层中应用的协议是ISO 13400。
该协议的目的是建立物理层到应用层的通信桥梁,该规则可以保证诊断通信链路的稳定和安全。
DoIP是Diagnostic on IP,相当于诊断在车载以太网的应用。
报文传输的载体还是传统互联网的TCP/UDP/IP协议(这些协议1980年就已经提出,经历了时间和市场的考验),DoIP协议就是定义一系列规则,使用不同的帧类型(在协议中,通过Payload Type)来搭建通信流程
A:车辆连接;
B:车辆声明;
C:Routing激活(Socket激活);
D:诊断通信。
具体内容可参看开篇具体文章。
3、会话层
在ISO 14229-2中定义了诊断范畴需要用到的时间参数:
具体可参看如下截图:
该ISO 14229子类中定义了诊断过程中相应的时间参数(P2、P2*、S3等)
通过示意图,详细直观说明了时间参数在诊断过程中的定义。
4、应用层
应用层是实现诊断功能(OSI七层模型),具体的诊断功能如下所示:
-
Service
-
DID
-
DTC
都是在此层实现,对应的协议是ISO 14229-1。
因为此时诊断报文是基于车载以太网传输,所以需要查看ISO 14229-5(该文是UDS协议在在车载以太网上的具体应用和具体限制),因为UDS在不同的车载总线应用是不同的,因此通过不同的子类(子类-3到-7,对应不同的车载总线)加以说明。
二、车载以太网典型网络拓扑
由于车载以太网有很好的网络延展性,可以点对点,也可以应用交换机等策略实现良好的车载网络拓扑。
考虑到车载以太网后续会有远程无线应用,在ISO 13400中给出了如下网络拓扑示意图:
1、边缘节点
在ISO 13400协议中只有边缘节点可以连接外部Tester(严格按照ISO协议的话)。并且车身内部节点定义时会有逻辑地址,这样的话,Tester只知道车内节点的逻辑地址,Tester将该请求发送至GW时,GW内部有逻辑地址和真实地址的Map关系表,这样可以有效的保护车内节点数据安全。
只有GW可以解析逻辑地址和真实地址之间的关系,这样虽然可以有效的保护数据安全,但是也造成了GW很大的负荷,会形成通信“堵塞”现象。
所以现在也有用户有如下策略:
让Tester经过安全认证,GW充当路由功能,Tester直接根据真实地址直接跟ECU进行通信(GW无脑转发)。
三、车载以太网诊断通信流程
最新版 ISO 13400协议将信息安全因素考虑进去,在整个通信桥梁搭建过程中增加了TLS(Transport Layer Security),具体通信流程如下图:
1、通信连接
在ISO 13400协议中关于车辆边缘节点IP地址有两种方式:
(1)、DHCP;
(2)、Auto-IP;
并且前者优先级比后者高。
但考虑到现阶段整车数量,多数OEM采用是静态IP地址(IPV4偏多)。
2、车辆声明
车辆将自身的识别信息以广播形式自发三次(上电后)于所在网络,Tester若未获取,进行通信前可进行车辆信息请求.
PS:需要注意的是这个过程有许多时间参数需要注意,后续我会以文章形式整理出来。
3、Routing激活
以DoIP Payload Type 0005/0006来激活车载以太网诊断通信套接字(Socket),也就是TCP进行三次握手连接后,执行该动作,激活诊断通信功能。
4、诊断通信
此时Tester会发送DoIP Payload Type 8001的诊断请求进行诊断通信,边缘节点接受到请求后会回复DoIP Payload Type 8002的ACK,告知Tester收到诊断请求,与此同时会发送诊断请求给车内具体节点。车内节点收到后会给予诊断相应(此时DoIP Payload Type 8001)。
PS:若边缘节点判定Tester发送的诊断请求有无效信息时:
A:无效目标地址;
B:报文超长;
等等,此时边缘节点会回复DoIP Payload Type 8003的NACK。
具体判定机制可参看文章开头文章。
PS:车内节点之间通信可不用严格按照DoIP协议定义流程(俗称阉割版DoIP协议)。
愿你我相信时间的力量,
做一个长期主义者!