本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

周期性 CAN 通信

此示例使用 MathWorks Virtual CAN 通道来设置 CAN 报文的周期性传输和接收(使用 Simulink®)。虚拟通道以环回配置形式连接。

Vehicle Network Toolbox™ 提供了 Simulink 模块,用于通过 Simulink 模型在控制器局域网 (CAN) 上传输和接收实时报文。此示例使用 CAN Configuration、CAN Pack、CAN Transmit、CAN Receive 和 CAN Unpack 模块来执行 CAN 总线上的数据传输。

传输和接收 CAN 报文

创建一个模型,以不同周期传输两条报文,并仅接收指定的报文和解包具有指定 ID 的报文。

  • 使用一个 CAN Transmit 模块传输 ID 为 250 的 CAN 报文,每 1 秒传输一次报文。

  • 使用另一个 CAN Transmit 模块传输 ID 为 500 的 CAN 报文,每 0.5 秒传输一次报文。

  • 向两个 CAN Pack 模块各输入一个信号以使计数器自动递增,计数上限为 50。

  • 两个 CAN Transmit 模块都连接到 MathWorks Virtual Channel 1。

使用一个 CAN Receive 模块从 MathWorks Virtual Channel 2 接收 CAN 报文。将该模块设置为:

  • 仅接收 ID 为 250 和 500 的报文。

  • 如果 Receive 模块在任何特定时间步接收到新报文,该模块会生成一个函数调用触发器。

CAN Unpack 子系统是一个函数调用触发的子系统,它仅当 CAN Receive 模块在特定时间步接收到新报文时才执行。

可视化不同时间戳的报文

绘制结果以查看每个解包报文的计数器值和时间戳。图上的 X 轴对应于仿真时间步。时间戳图显示报文是在指定时间发送的。还可以看出,由于指定了不同周期性速率,传输的 ID 为 250 的报文数量是 ID 为 500 的报文数量的一半。

此示例中使用了 MathWorks CAN 虚拟通道。但是,您可以将模型连接到其他支持的硬件。您还可以修改模型以便以不同速率进行传输,或者传输周期性和非周期性报文的组合。