【AutoSar】DoIP协议详解

UDS诊断作为汽车ECU里的一个服务功能,位于应用层,它的实现需要有网络的支撑,我们把基于CAN总线实现的UDS诊断称为DoCAN,基于Ethernet实现的UDS诊断称为DoIP。相比DoCAN中CAN网络的封闭性,DoIP由于Ethernet的互联互通,可以实现车与车、车与人的远距离诊断通信,DoIP在传输层以下的规范遵循ISO 13400,而应用层还是遵循ISO 14229不变,这样可以保证UDS诊断在不同车载网络上的可移植性

从这张图上可以看出:汽车内部必须有一个DoIP的总网关,它作为和外部的诊断设备DoIP通信的唯一接口

一、DoIP报文格式

DoIP报文头格式

在这里插入图片描述

其中:

  • Protocal Version:表示所使用的DoIP协议版本,长度为1Byte, 常见是0x02表示使用ISO 13400-2:2012
  • Inverse protocol version(协议版本取反):用于对协议版本进行验证,确保DoIP报文格式的正确性,当该字段取反后不等于Protocal Version,则证明报文传输出现了问题,协议号对不上
  • Payload Type:有效负载类型
  • Payload Length:负载长度
  • Payload type specific message content:DoIP报文内容,也就是DoIP的有效负载

常见的DoIP有效负载类型如下:

其中大致的分类如下:

  • 节点管理类 0x0000 - 0x0008 包括车辆发现、路由激活、在线监测等功能
  • 车辆信息类 0x4001 - 0x4004 用于获取车辆的节点信息、状态信息等
  • 诊断类 0x8001 - 0x8003 用于传输诊断数据,如UDS诊断服务
  • 预留 其他值 由ISO 13400预留或供OEM自定义使用

DoIP否定报文头

DoIP报头否定响应报文 (0x0000),当DoIP实体接收到DoIP报头中某些字段有误的报文时,需回复Generic DoIP header NACK报文,并携带标识错误信息的NACK code。

其NACK code如下图所示

车辆识别/声明报文

车辆识别和车辆声明报文 (0x0001, 0x0002, 0x0003, 0x0004),此类报文用于识别和确认网络上的被诊断车辆。诊断仪可通过其获取车辆的VIN(Vehicle Identification number),GID(Group identification)和DoIP实体的逻辑地址等信息

ISO 13400中规定,当DoIP实体获取了有效的IP地址后,应在500 ms内发送3条Vehicle announcement message,用于声明自己的车辆信息,具体实现的时候,发送时间和条数可以根据主机厂的需求进行调整。因为是以UDP的方式进行发送,为了尽可能保证报文可被正确接收,所以要发送多次,同时报文的目的IP地址设置为本地限制广播地址

二、DoIP汽车网络架构

DoIP网络架构分为车内网(Vehicle network)和车外网(External network),车内网和车外网之间,有两组重要的线束,其中

  1. 一组是用于数据传输的以太网线:就是我们常见的四线制TX标准网线
  2. 一组是用于诊断功能激活的激活线:是用于车内诊断功能的激活。出于能耗和电磁干扰的考虑,要求非诊断通信期间,与诊断相关的功能处于关闭状态,这样一方面可以降低能耗,另一方面减少对网络带宽的消耗,从而降低电磁干扰。

接下来重点介绍车内网:
1.边缘节点
能够直接和外部诊断仪进行物理交换的节点叫做边缘节点,边缘节点可以视为一个网络交换机,将车内网和车外网组成同一子网,也可以作为一个网关,将车内网和车外网进行安全隔离,屏蔽非法的网络访问和网络攻击

2.DoIP网关节点
车内DoIP网管节点的作用,是实现以太网转换到其他网络总结,比如LIN、CAN的报文路由,实现了DoIP诊断和传统网络总线的兼容。多种网络总线会汇聚到DoIP网关。

3.DoIP节点
一般DoIP节点,比如各个子系统,这些节点支持对自身进行诊断并且收发诊断报文,但是不具备路由功能

4.网络节点
不具备DoIP诊断功能,和DoIP节点共享网络资源

三、DoIP协议主要功能

  1. 车辆发现
    检测车辆是否在线。诊断仪会发送一个广播的车辆发现报文,网络中所有能够接收到此报文的ECU都需要发送自己的身份信息,从而诊断仪知道什么ECU是在线的,并且根据诊断仪地址等判断其所属车辆。

  2. 路由激活
    外部诊断仪和DoIP节点建立连接之后应该发送路由激活请求,路由激活请求被DoIP节点验证为合法之后(通过各种安全验证算法或自定义安全验证流程),诊断仪才能够对ECU进行诊断。

  3. 诊断仪在线监测
    DoIP诊断是基于TCP的,因此不能无限建立连接,毕竟socket是会消耗内存的。因此在ECU设计阶段就规定了最大连接数量。为了避免诊断仪占用信道而不适用,DoIP节点会以指定频率发送诊断仪在线监测请求,若有的连接上无法收到诊断仪回复的响应报文,则会将此连接复位,以待新的诊断仪接入。

  4. 节点信息
    获取DoIP节点信息

  5. 诊断通信
    诊断报文中包含三个信息,即诊断报文发送方的逻辑地址(以下简称SA),诊断报文接收方的逻辑地址(以下简称DA),以及诊断数据,具体如下图所示

更详细内容请参见
https://blog.csdn.net/2301_76563067/article/details/132697197

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值