我正在使用 Simulink 构建 HIL/SIL 测试,该测试从车辆上测试车辆控制单元 (VCU)。此 VCU 通过 J1939 CAN 网络与配电模块 (PDM) 通信。PDM 处理来自开关和致动器的输入和输出,并将信息放在 CAN 总线上。VCU 然后知道 PDM 从连接的传感器看到什么。反过来,VCU 将有关 PDM 应如何控制连接的执行器的信息放在 CAN 总线上。
我的笔记本电脑通过 Vector 适配器和 Simulink 连接到同一条 CAN 总线。
为了测试 VCU,我需要模仿 PDM 并向 VCU 发送消息,就像我是 PDM 一样。然后 VCU 必须采取正确的行动并相应地控制真正的 PDM。
显然,如果我只是模仿 PDM,我的消息会干扰从真实 PDM 发送的消息。所以基本上,我需要 PDM 闭嘴,只听。我为 PDM 代言。但是,PDM 不能在只听模式下进行配置,所以我必须拦截它发送的所有消息,这样它们就永远不会到达 VCU。
我的想法是当 PDM 开始发送时我会检测(通过观察所有消息的仲裁字段),并在仲裁字段中拉低一点。它会识别出我的“信息”比它自己的优先级,并且它会停止传输。就好像 CAN 总线总是忙于给 PDM 腾出空间。这将关闭 PDM 而不会引发错误。但欢迎提出其他建议。
那么(如何)可以在 MATLAB/Simulink 或使用单独的 CAN 控制器中拦截 J1939 CAN 消息?