DoIP的全称是Diagnostic Over Internet Protocol,即基于TCP/IP协议的诊断协议。
随着以太网技术在车载领域的应用范围逐步扩大,越来越多的控制器支持通过以太网进行诊断通信,由于采用以太网通信技术,DoIP诊断具有超高的数据传输速率,速率达到了100 Mbit/s,相较于CAN总线诊断,DoIP诊断总体速率是CAN诊断的100-200倍,网络上的传输速率是CAN诊断的300-400倍。并且硬件成本低,无需使用VCI,在个人电脑上只需要一个以太网接口即可实现诊断的物理连接。DoIP技术可以完美匹配IT基础设施,固定诊断和远程诊断均能应用,车载以太网技术将是未来解决如何快速更新ECU软件及标定的主要策略之一。
DoIP诊断应用场景
场景1:单一诊断仪与车辆直连
诊断仪与车辆直连后,可以诊断单车所有DoIP节点,一般用于单车故障诊断或者ECU升级刷写等功能。
场景2:多台诊断仪并行诊断单台车辆
多台诊断仪通过交换机级联,诊断同一台汽车,各诊断信道互不干扰,可实现多团队同时作业,提高整体工作效率。
场景3:单诊断仪并行诊断多台车辆
多台车辆通过交换机级联,一台诊断仪可与这些车辆建立多个并行的诊断连接。相较于传统的CAN诊断,DoIP诊断有独有的机制,用于标识每一辆汽车及车载的各个ECU单元。单诊断仪连接多台车辆的形式一般用于产线上生产监控及ECU刷写等。
车内诊断网络布局
以上我们简要阐述了一般的应用场景,那么接下来我们走进车内网络,看看外部诊断仪是如何与车内ECU之间建立诊断连接。
下图摘自DoIP协议标准文档ISO-13400-2,我们将围绕这张图来进行说明。
图中分为车内网(Vehicle network)和车外网(External network),车内网和车外网之间,有两组重要的线束:
- 一组是用于数据传输的以太网线
- 另一组是用于诊断功能激活的激活线
以太网线就是我们常见的四线制TX标准网线。
而激活线的设计,是用于车内诊断功能的激活。
处于能耗和电磁干扰的考虑,要求非诊断通信期间,与诊断相关的功能处于关闭状态,这样一方面可以降低能耗,另一方面减少对网络带宽的消耗,从而降低电磁干扰。
车内网中,直接与外部诊断仪进行物理连接的节点,叫做边缘节点(DoIP edge node)。边缘节点可作为一个网络交换机,将车内网与车外网组成同一子网;也可以作为一个网关,将车内网与车外网进行安全隔离,屏蔽非法的网络访问和网络攻击。
除了边缘节点之外,还有另一类网关,即车内的DoIP网关节点。
车内DoIP网关节点的作用,是实现以太网到其他网络总线(如CAN、LIN)的报文路由,这样便实现了DoIP诊断与传统网络总线的兼容。多种网络总线汇聚到DoIP网关,这大大的降低了布线的复杂性,并且提高了各总线网络中ECU的诊断效率。
车内网络中,还存在一般的DoIP节点,这些节点只支持对自身的诊断,而不具备路由功能。最后,还有一类网络节点(Network node),不具备DoIP诊断功能,与DoIP节点共享网络资源。
在车内网络中,各DoIP网关和DoIP节点可以全部级联于DoIP边缘节点,也可以分布于多个交换机网络,但最终都可以被边缘节点直接访问到。
对于边缘节点,人们经常通常有以上的疑问,其实透传和非透传这两种方案,没有好坏之分,都有各自适合的应用场景。
例如,连接的外接诊断仪,主要用于多车故障诊断和ECU刷写,为了实现快速的ECU访问和在线监测,要求车内各ECU享有唯一的IP地址,适合使用透传方案。若连接的是TBOX之类具有联网功能控制单元,为了避免车内网受到外部网络攻击,因此适合使用非透传方案。
DoIP协议的主要功能
DoIP协议栈作为以太网诊断软件架构的中间件,主要具备如下五大功能,这五大功能体现了DoIP诊断的特殊性,是区别于传统CAN诊断的重要特征。
接下来我们按照DoIP诊断从连接建立到诊断通信实施的流程,对各个功能模块进行简要讲解。
1、车辆发现
顾名思义,就是用来检测车辆是否在线,具体来说就是诊断仪首先发送一个广播的车辆发现报文,网络中所有接收到这条报文的ECU都将发送自己的身份信息。通过各个ECU发回的身份信息,诊断仪便可以准确得获知有哪些ECU在线,并且可以根据这些信息对这些ECU进行归类,比如各自属于那一台汽车。
2、路由激活
与传统意义上网关的“路由”不同,DoIP协议中的“路由”指的是诊断仪与被诊断节点之间的报文传输。
外部测试仪与DoIP节点之间的通信连接建立之后,应发送路由激活请求,路由激活请求被DoIP节点验证合法之后,诊断仪才能对ECU进行诊断。路由激活包含了DoIP节点对外部诊断仪的安全认证过程,ECU开发人员可以自定义安全认证的算法,用于屏蔽非法诊断仪对ECU进行的诊断。
3、诊断仪在线监测
与传统CAN总线不同,DoIP诊断需要预先与ECU建立通信连接,也就是TCP socket。
由于socket的建立会消耗内存资源,因此不能无限制创建连接。ECU在设计阶段,会定义最多能支持并行连接的诊断仪数量,并行连接的诊断仪数量达到上限之后,将无法建立新的诊断通信连接。因此这些诊断连接通道属于稀缺的资源,为了避免通道被无效占用,因此设计了诊断仪在线监测机制。DoIP节点会向现在有的诊断连接通道上,发送诊断仪在线监测请求,若有的连接上无法收到诊断仪回复的响应报文,则会将此连接复位,以待新的诊断仪接入。
4、节点信息
节点信息包含了节点的属性,例如如最大支持的并行诊断仪连接数量,最大可接受的诊断报文长度,以及当前节点的电源状态,即是否所有部件都完成上电。节点信息作为诊断通信前的诊断条件检查,以确保后续诊断通信不受外部因素干扰。
5、诊断通信
作为DoIP协议的核心功能,此功能负责诊断报文的传输。诊断报文中包含三个信息,
- 诊断报文发送方的逻辑地址(以下简称SA)
- 诊断报文接收方的逻辑地址(以下简称DA)作用相当于CANID
- 诊断数据
在CAN总线网络中,通过CANID来寻址要诊断的ECU
而在DoIP网络中,诊断报文接收方的逻辑地址的作用相当于CANID,用于寻址要诊断的目的ECU。下图通过一个以太网转CAN的诊断示例,展示SA和DA在诊断通信中的作用。
6、扩展一下:
以上介绍了DoIP诊断规范中的网络拓扑和软件功能,在实际软件开发过程中,还会涉及到诸多的技术细节,例如:
- 边缘节点透传与非透传方案设计;
- DoIP节点间IP地址分配策略,即静态IP或者动态IP的选择;
- 各节点间GID(节点分组ID)同步策略设计;
- 路由激活安全认证策略设计等。
针对DoIP诊断技术需求,东信创智可以提供以下三种服务模式:
- DoIP协议培训服务;
- 商用DoIP协议栈(如vector的microsar协议栈)集成和软件配置服务;
- DoIP网关样件,可以用于技术验证和诊断测试。
https://zhuanlan.zhihu.com/p/427437371https://zhuanlan.zhihu.com/p/427437371