第4章:车载以太网基础
各位同学,今天我们来聊聊车载以太网。说实话,我刚入行那会儿,车上用的还是CAN、LIN这些老伙计。那时候谁能想到,有一天以太网会跑到车上去?但现在,这已经是标配了。
为什么需要以太网?你想想看,自动驾驶、高清地图、OTA升级,这些功能的数据量有多大?CAN总线那1Mbps的带宽,根本扛不住。以太网就不一样了,动不动就是100M、1G,甚至更高。
4.1 以太网在汽车中的应用
车载以太网不是简单地把办公室的网线扯到车上。它要面对的是电磁干扰、温度变化、振动这些恶劣环境。我见过一个项目,因为以太网线束没做好屏蔽,导致摄像头数据时不时丢包,排查了整整两周。
目前车载以太网主要用在以下几个地方:
- ADAS系统:摄像头、雷达的数据传输,带宽要求高
- 信息娱乐系统:多媒体流、导航地图更新
- 诊断系统:通过DoIP进行远程诊断
- 域控制器之间:高速数据交换
核心要点:车载以太网不是简单的"以太网上车",它有自己的物理层标准,比如100BASE-T1和1000BASE-T1,这些和咱们电脑上的以太网完全不同。
4.2 100BASE-T1与1000BASE-T1
这两个标准,说白了就是车载以太网的物理层规范。100BASE-T1是100Mbps,1000BASE-T1是1Gbps。它们和普通以太网最大的区别是什么?
单对非屏蔽双绞线。普通以太网至少需要两对线,而车载以太网只用一对。为什么?为了减重、降成本。车上每多一根线,就是多一份重量和成本。
| 特性 | 100BASE-T1 | 1000BASE-T1 |
|---|---|---|
| 速率 | 100 Mbps | 1 Gbps |
| 线缆 | 单对非屏蔽双绞线 | 单对非屏蔽双绞线 |
| 最大距离 | 15米 | 15米 |
| 主要应用 | 摄像头、传感器 | 域控制器、骨干网 |
个人经验:我在调试一个环视摄像头系统时,用的就是100BASE-T1。当时发现图像偶尔有撕裂,排查了半天,最后发现是线束的阻抗不匹配。嗯,这里要注意,车载以太网对线束的要求比普通以太网严格得多。
1000BASE-T1现在越来越普及了。特别是随着自动驾驶等级提升,摄像头分辨率越来越高,100M带宽已经不够用了。我记得有个项目,客户要求用8个800万像素的摄像头,那数据量,100BASE-T1根本扛不住,最后全换成了1000BASE-T1。
4.3 SOME/IP协议
SOME/IP,全称是Scalable service-Oriented MiddlewarE over IP。名字很长,但核心思想很简单:把汽车上的功能封装成服务,通过以太网来调用。
为什么要用SOME/IP?传统的CAN总线是基于信号的,每个信号都有固定的ID和周期。但以太网不一样,它是基于服务的。你想想看,一个摄像头要发送图像数据,如果用CAN,你得把图像拆成无数个小包,每个包都要定义ID,太麻烦了。用SOME/IP,直接定义一个服务,摄像头发布,其他节点订阅,多简单。
SOME/IP的核心概念:
- Service:服务,比如"摄像头图像服务"
- Method:方法,比如"获取当前帧"
- Event:事件,比如"图像数据到达"
- Field:属性,比如"摄像头状态"
// SOME/IP服务定义示例
service CameraService {
method GetFrame() -> FrameData;
event OnFrameReady(FrameData);
field CameraStatus;
}
避坑指南:我曾经在一个项目中,SOME/IP的Service Discovery配置不当,导致ECU启动后花了30秒才找到所有服务。后来发现是重复周期设置得太长了。记住,Service Discovery的周期要合理设置,不能太长也不能太短。
4.4 DoIP协议
DoIP,Diagnostics over Internet Protocol。说白了,就是用以太网来做诊断。以前做诊断,得用CAN总线,一根线一根线地接,速度慢,还容易出错。现在好了,直接插根网线,或者通过WiFi,就能远程诊断。
DoIP的好处很明显:
- 速度快:刷写一个ECU的固件,用CAN可能要半小时,用DoIP几分钟搞定
- 远程诊断:车在用户手里,工程师在办公室就能诊断
- 数据量大:可以传输诊断日志、故障码快照等大文件
DoIP的通信流程大概是这样的:
- 车辆发现:诊断仪发送广播,寻找车辆
- 路由激活:车辆响应,建立连接
- 诊断通信:发送UDS诊断请求,接收响应
- 断开连接:诊断完成,关闭连接
实际案例:我参与过一个项目,需要远程刷写T-Box的固件。用的就是DoIP。当时遇到一个问题,刷写到一半网络断了,结果T-Box变砖了。后来我们加了断点续传和校验机制,才解决了这个问题。所以,DoIP虽然方便,但可靠性设计一定要做好。
DoIP的报文格式也很简单,它是在TCP/IP之上封装了UDS诊断报文。你想想看,UDS本来是在CAN上跑的,现在搬到以太网上,本质上没变,只是传输层换了。
// DoIP报文头格式
// 协议版本 | 反向协议版本 | 负载类型 | 负载长度
0x02 | 0xFD | 0x8001 | 0x00000008
好了,这一章的内容就到这里。车载以太网是个大话题,今天我们只讲了基础。后面在具体项目中,我们还会深入讲解如何配置SOME/IP、如何调试DoIP。记住,理论是基础,但真正能让你成长的,是动手去调、去试、去踩坑。