背景

在之前专题介绍过DOIP诊断路由相关的知识,仅简单对DOIP诊断通信流程做了介绍,大家可能在实际学习或者做项目过程中会不太好理解,本文将从CANoe的log进行详细介绍。
车载网关测试入门4【路由功能】补充3-DOIP诊断路由

DOIP诊断流程

我们知道在进行DOIP诊断通信之前,必须完成以下步骤:

  • 建立物理层连接
  • 车辆发现
  • 建立TCP连接
  • 路由激活
  • 诊断通信

但是,具体这些步骤是怎么进行的呢?详细做了哪些操作呢?在进行详细介绍之前,还是先看看上文展示的DOIP诊断通信流程的示意图,如下图:
DOIP诊断通信流程示意图

建立物理连接

  • 物理硬线的连接
    也即是测试设备(比如VN5650)与DUT(被测件,本文选取的是边缘节点)的正确连接;何谓正确连接?直观表现是Link up,那如何Link up呢?其实这就是以太网物理层的概念了。需要按照主机厂需求进行以下配置:
  • 通信俩主机的主从模式;
    比如:对于以太网通信的两个主机来说,必须在物理层,设置一端是Master,一端是Slave,当然有的主机是支持Master/Slave Auto-Detect的,那么对端不管是固定Master或者固定Slave或者Auto-Detect都是可以通信的;
  • 通信速率
    比如:10M、100M、1000M;(如果配置Auto-Negotiation自动协商,即便通信速率不一致也不会影响Link状态)
  • 以太网线缆的类型
    比如:TX和T1
    由于,本例DUT选择的是边缘节点(比如智能网关、中央域控),所以咱们需要也把DOIP激活线连接上,DoIP激活线的作用是是控制以太网诊断功能启停的硬件信号线(通常为硬线或唤醒信号),这样咱们能保证DUT的后续功能正常。
    如下图:
    物理连接

获取IP地址

IP的分配目前有三种方式:静态IP、AutoIP、DHCP,三种分配方式的总结见下图:

特性 静态IP DHCP Auto IP
IP来源 手动配置 DHCP服务器分配 设备自动生成(169.254.x.x
地址稳定性 固定不变 动态变化(可配置保留地址) 临时随机
管理复杂度 高(需人工维护) 低(自动管理) 无(完全自动)
适用场景 服务器、网络设备 家庭/企业动态网络 DHCP故障时的本地应急通信
外部依赖 依赖DHCP服务器 无(仅本地链路)
互联网访问 支持 支持 不支持

本文选择的是DCHP与Auto IP俩种方式。如下图:
在这里插入图片描述
如上图,控制器发送DHCP DISCOVER报文,等待服务器分配IP,由于没有连接服务器,所以控制器IP获取失败;一分钟后(项目需求),如果还未通过服务器给控制器分配IP地址,控制器将会自己给自己配置IP地址。
由于服务器在超时时间后未成功给控制器分配IP,因此,控制器会自动随机给自己分配一个IP,并且会广播发送三帧ARP报文xxx.xxx.xxx.201(网关自己分配的)的网络中(目的是询问该IP有人有吗?没人用我就用了,也叫做ARP探针报文),如果网络中没有其它节点回复,也就是该IP地址没有被网络中的节点使用,因此,控制器就可以放心大胆使用xxx.xxx.xxx.201这个IP了。
至此,控制器成功获取了IP。
在这里插入图片描述
上图有个有意思的现象,也就是控制器发送的三帧ARP报文是:
源MAC:02:00:00:00:10:21
源IP:0:0:0:0
目标MAC:00:00:00:00:00:00
目标IP:xxx.xxx.xxx.201(网关自己分配的IP)
为什么senderIP不是源主机的IP地址(xxx.xxx.xxx.201),而是全0呢?
因为这三条是为了刺探网络中有没有IP和它冲突(也就是有没有其他节点使用该IP),还不代表这个IP地址可以正式使用
只有发送三条ARP Probe后没有收到ARP响应,说明没有冲突,配置成功,此时ARP协议层还会再发送一条ARP Announcement,senderIP和targetIP都是xxx.xxx.xxx.201(表明我正式用这个IP了)。如下图:
在这里插入图片描述

车辆发现

  • 3*车辆公告报文
    成功分配到IP地址后,边缘节点会发送三帧车辆公告报文,车辆声明报文(Vehicle announcement),标准规定,当一个DoIP节点成功获取到IP地址后,应在500ms内发送3条车辆声明报文,向网络中的所有DoIP节点广播自己的车辆信息(例如:EID、、GID、VIN码、逻辑地址、Further action required)。如下图:
    在这里插入图片描述
  • 车辆识别请求报文
    如果诊断仪(上位机)没有成功接收到控制器发送的三帧车辆公告报文,这时候控制器可以自己主动发送车辆识别请求报文,以获取控制器的车辆信息。如下图:
    在这里插入图片描述
    控制器收到诊断仪(上位机)的车辆识别请求报文后,回复识别应答报文,该报文的内容和三帧车辆公告报文的内容是完全一样的。如下图:
    在这里插入图片描述

添加车辆至列表

在经过上文的物理连接建立和车辆发现步骤后,诊断设备已经获取到了DoIP节点的必要信息,此时诊断设备应将该DoIP节点的信息添加至车辆列表中,供操作人员选择。

建立TCP连接

操作人员选择该车辆后,诊断设备与DoIP节点间建立TCP连接,也即是咱们说的三次握手。如下图:
在这里插入图片描述

路由激活

TCP连接建立成功后,诊断设备发送路由激活报文,DoIP节点给出响应。诊断设备向操作人员指示连接成功,这样就可以进行DOIP诊断了。
在这里插入图片描述

诊断通信

路由激活步骤执行完毕后,就可以进行诊断通信了,在诊断设备和DoIP节点间传输诊断数据,比如进行故障诊断、软件升级。如下图:
在这里插入图片描述
所有诊断操作完成后,操作人员注销诊断设备,诊断设备关闭与DoIP节点间的TCP连接(也即是四次挥手)。

总结

以上,是DOIP诊断通信的流程介绍,希望能帮助到大家更好地理解DOIP诊断。如果本文存在描述问题,也欢迎大家一起探讨!

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐