接触过UDS诊断的人应该知道,诊断通信有两种方式:物理寻址和功能寻址。那什么是物理寻址和功能寻址呢?
简单点说,物理寻址是单播,功能寻址是多播。具体来说,由于UDS诊断通信的C/S模式(客户端Tester/服务器ECU),物理寻址是Tester发送的诊断请求,只有一个目标ECU回复诊断响应;功能寻址是Tester发送的诊断请求,有多个目标ECU回复诊断响应
那物理寻址和功能寻址是如何实现的呢?具体表现在哪?
我们以DoCAN为例:
Tester发送一条诊断请求,这条诊断请求肯定是一条can消息,我们假设id为0x701。位于CAN总线上的所有ECU都能收到这条can消息,但是只有一个ECU会接收0x701这条消息。然后回复诊断响应,也就是目标ECU发送一条can消息0x601。这就是物理寻址的通信逻辑
Tester发送一条诊断请求,这条诊断请求肯定是一条can消息,我们假设id为0x7ff。位于CAN总线上的所有ECU都能收到这条can消息,且有多个ECU会接收0x7ff这条消息。然后它们都会回复自己的诊断响应,也就是目标ECU都会发送各自的诊断响应的can消息。如果上面物理寻址的目标ECU也在功能寻址里,那么它发送的can消息还是0x601。这是功能寻址的通信逻辑
文字描述可能有点啰嗦,画图表示:
物理寻址:
功能寻址:
<