【问题标题】:Automotive: How does ECU tell a CAN frame is a part of UDS protocol?汽车:ECU 如何判断 CAN 帧是 UDS 协议的一部分?
【发布时间】:2017-10-03 10:11:59
【问题描述】:

阅读了很多规范,但仍然无法得到一个简单的东西。

所有UDS请求都封装在ISO-TP包中,这些包被封装在简单的CAN帧中,因此ECU不断地从CAN总线接收帧流。

ECU 如何确定此 CAN 帧是任何高级协议的一部分?

例如,我已经向 ECU 发送了安全请求,CAN 帧数据会是这样的

02 27 01

ECU如何确定这不仅仅是一个数据块,而是协议的一部分?

当高级协议使用标头“相互通信”时,我无法找到与 ISO/OSI 堆栈的任何关系,因此我们知道如何解码数据包。

【问题讨论】:

    标签: can-bus iot-for-automotive


    【解决方案1】:

    用于特定协议的 CAN 消息 ID 是按系统定义的。

    在大多数情况下,OBD-II 将通过 CAN ID 7DFh 发送查询,并通过更高的 ID 发送来自不同模块的响应,但即使在特定车型上也可能不同。

    找出用于基于 UDS 的通信的 CAN ID 的一种方法是发送简单的 tester-present (SID 3Eh) 消息并观察似乎有适当响应的 CAN ID。

    【讨论】:

    • 因此在过滤 CAN 帧后,我们知道我们应该通过查看其 ID 来使用更高级别的协议解释此帧,对于 OBD-II,我在 iso_15765-4 中找到了从 7DFh 到 7EFh 的 ID 列表(这与要说什么有关),但是 UDS ID 的最佳实践是什么?所有带有 uds-server 的设备都会响应 tester-present 请求吗?我刚刚查看了一个人正在扫描设备以获取 UDS 支持的视频,并且只有类似 OBD 的地址回复了 youtube.com/watch?v=bqI_Usv77XU&feature=youtu.be 。我想知道UDS可以向例如666地址发送请求吗?
    • @Semant1ka 我没有比通过发送消息进行扫描更好的解决方案,但根据我的经验,只要有一个 CAN ID 需要 UDS,我就设法找到它。是的,几乎任何 CAN ID 都可以用来发送 UDS 数据包(类似于几乎任何 tvp 端口都可以用于 http)
    【解决方案2】:

    通过 CAN 的 UDS 在 DoCAN ISO-15765-2 部分中指定,并描述了用于 ECU 或更好的控制功能之间的功能(广播)和物理 (p2p) 通信的网络和传输层。

    普通 CAN id 不实现任何网络功能,例如寻址。为此,使用了 SAE J1939 网络层。在 J1939 网络中,每个 CAN 客户端都有一个地址,每个功能都有一个参数组 (PGN)。所有这些都被编码在一个 29 位的 CAN ID 中。例如 CAN ID 0x18EF8081。这将通过 PGN 0xEF 将来自 CAN 客户端 0x81 的消息传输到 0x80,0x18 是优先级。

    在 UDS over CAN 中,PGN 0xDA(物理)和 0xDB(功能)用于所有通信。有了这些信息,您就可以实现一个 CAN ID 过滤器,它只匹配 CAN ID 的 PGN 部分。

    【讨论】:

    • 功能是什么?,我知道物理的
    猜你喜欢
    • 2022-10-17
    • 2020-09-06
    • 1970-01-01
    • 2015-06-08
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2023-03-07
    相关资源
    最近更新 更多