3、物理层与数据链路层:以太网物理层基础(100BASE-T1 vs 100BASE-TX)、MAC地址与VLAN在DoIP中的应用
好,咱们进入正题。这一章聊的是DoIP最底层的两件事:物理层怎么传信号,数据链路层怎么寻址和隔离。说白了,就是车上的以太网线怎么连,数据包怎么找到正确的ECU。
3.1 物理层之争:100BASE-T1 vs 100BASE-TX
先说说物理层。你可能会问:为什么车载以太网不用我们熟悉的100BASE-TX?嗯,这里有个关键区别——线束成本。
100BASE-TX需要两对双绞线(四根线),而且对线缆的屏蔽和阻抗要求挺高。这在办公室环境没问题,但车里呢?每根线都是重量和成本。我当年参与一个项目,光因为线束重量超标,整车就得减配好几个功能。所以,汽车行业需要更轻、更便宜的方案。
100BASE-T1就是答案。它只用一对双绞线(两根线),同时传输数据和电源(PoDL,Power over Data Line)。你想想看,少了一半的线,重量和成本直接砍半。而且它的物理层设计专门针对车载电磁环境,抗干扰能力更强。
我个人的习惯是:做DoIP设计时,优先选100BASE-T1。除非你遇到老平台改造,或者需要兼容现有测试设备,才考虑100BASE-TX。
| 特性 | 100BASE-TX | 100BASE-T1 |
|---|---|---|
| 线对数量 | 2对(4线) | 1对(2线) |
| 最大距离 | 100米 | 15米(车内够用) |
| 抗干扰 | 一般 | 强(差分信号+共模扼流圈) |
| PoDL支持 | 否 | 是 |
| 典型应用 | 诊断仪、测试台架 | 车载ECU间通信 |
3.2 MAC地址:DoIP车辆的唯一身份标识
物理层搞定后,数据链路层就要干活了。第一个概念:MAC地址。
每个支持DoIP的ECU,都有一个48位的MAC地址。这个地址在出厂时烧录在硬件里,理论上全球唯一。但在DoIP场景下,MAC地址的作用不仅仅是标识设备——它还参与车辆发现过程。
你想想看,当诊断仪连上车载网络时,它怎么知道有哪些ECU在线?靠的就是MAC地址。诊断仪发送一个广播帧(目的MAC为FF:FF:FF:FF:FF:FF),所有ECU收到后,用自己的MAC地址回复。这就是DoIP车辆发现的第一步。
我个人习惯在项目初期就规划好MAC地址分配方案。比如:
- 网关ECU:固定MAC,比如 00:1E:67:00:00:01
- ADAS域控制器:00:1E:67:00:00:02
- 座舱域控制器:00:1E:67:00:00:03
这样在调试时,一看MAC就知道是哪个节点,省去很多查表的时间。
3.3 VLAN:把网络切成安全隔间
接下来是VLAN。为什么DoIP需要VLAN?原因很简单:车载网络里不止有DoIP流量,还有CAN、LIN、FlexRay等老协议。如果所有流量都混在一个广播域里,那网络风暴会把你搞疯。
VLAN(虚拟局域网)的作用,就是把一个物理网络切成多个逻辑网络。每个VLAN有自己的广播域,不同VLAN之间的流量默认隔离。这在DoIP中特别有用:
- VLAN 10:诊断流量(DoIP)
- VLAN 20:控制流量(CAN网关转发)
- VLAN 30:多媒体流量(音视频)
我记得有一次,客户抱怨诊断仪连接超时。排查后发现,诊断仪和ECU不在同一个VLAN里。诊断仪在VLAN 10,ECU在VLAN 20,中间的路由器没配好。嗯,这种问题其实很常见,尤其是多域控制器架构下。
在DoIP协议中,VLAN ID通常通过DHCP或静态配置。我个人建议:
- 诊断仪侧:固定使用VLAN 10
- ECU侧:通过DHCP Option 121获取VLAN ID
- 网关:配置VLAN间路由,只允许诊断流量通过
3.4 实战:一个典型的DoIP网络拓扑
说了这么多,咱们看一个实际例子。假设你有一辆智能电动车,网络拓扑如下:
诊断仪 (100BASE-TX)
|
| (VLAN 10)
|
网关 (100BASE-T1, MAC: 00:1E:67:00:00:01)
|
|--- ADAS域控制器 (100BASE-T1, MAC: 00:1E:67:00:00:02, VLAN 10)
|
|--- 座舱域控制器 (100BASE-T1, MAC: 00:1E:67:00:00:03, VLAN 10)
|
|--- 动力域控制器 (100BASE-T1, MAC: 00:1E:67:00:00:04, VLAN 20)
在这个拓扑里:
- 诊断仪通过100BASE-TX连到网关
- 网关内部做物理层转换(100BASE-TX ↔ 100BASE-T1)
- ADAS和座舱域控制器在VLAN 10,动力域在VLAN 20
- 诊断仪只能访问VLAN 10的设备,不能直接访问动力域
为什么要这么设计?因为动力域涉及刹车、转向等安全关键功能,不能让诊断流量直接干扰。我曾经见过一个案例,诊断仪误发了一个写请求到动力域控制器,导致车辆进入异常模式。从那以后,我坚持所有诊断流量必须经过VLAN隔离。
3.5 小结
这一章我们聊了:
- 100BASE-T1 vs 100BASE-TX:一对线 vs 两对线,车载场景选T1
- MAC地址:ECU的物理身份证,用于车辆发现
- VLAN:逻辑隔离,保障诊断安全
下一章,我们会深入DoIP的车辆发现机制,看看诊断仪怎么找到车上的ECU。到时候你会看到,MAC地址和VLAN是如何在发现过程中协同工作的。