前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Matlab】Simulink中CAN模块的使用(车辆网络工具箱)

【Matlab】Simulink中CAN模块的使用(车辆网络工具箱)

作者头像
DevFrank
发布2024-07-24 14:50:47
1260
发布2024-07-24 14:50:47
举报
文章被收录于专栏:C++开发学习交流

此外,更多时候我们是在Simulink中使用CAN信号的传输和接收,例如下面这个用Simulink仿真汽车CAN信号的例子。

为了做出上述功能,我们先来学一下Simulink中CAN模块的基本使用。

文章目录
  • CAN模块介绍
  • 周期性CAN报文传输
    • 传输和接收CAN报文
    • 可视化不同时间戳的报文
  • 基于事件的CAN报文传输
  • 记录和重播CAN报文

CAN模块介绍

1.CAN Configuration

2.CAN Log

3.CAN Replay

4.CAN Pack

在这里插入图片描述
在这里插入图片描述

5.CAN Unpack

在这里插入图片描述
在这里插入图片描述

6.CAN Receive

在这里插入图片描述
在这里插入图片描述

7.CAN Transmit

在这里插入图片描述
在这里插入图片描述

了解了CAN相关Simulink模块的基本信息,再来搭建下面的模型。

周期性CAN报文传输

使用 MathWorks 虚拟 CAN 通道在 Simulink 中设置 CAN 报文的周期性传输和接收。虚拟通道以环回配置形式连接。

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

传输和接收CAN报文

创建一个模型,以2个不同的周期传输报文(也就是选择两个不同的波特率),并仅接收指定的报文和解包具有指定 ID 的报文。

  • CAN Configuration设置波特率为500000(500K)。
  • 使用一个 CAN Transmit 模块传输 ID 为 250 的 CAN 报文,每 1 秒传输一次报文(Transmit)。
  • 使用另一个 CAN Transmit 模块传输 ID 为 500 的 CAN 报文,每 0.5 秒传输一次报文(Transmit)。
  • 向两个 CAN Pack 模块各输入一个信号以使计数器自动递增,计数上限为 50。
  • 两个 CAN Transmit 模块都连接到 MathWorks 虚拟通道 1。

使用一个 CAN Receive 模块从 MathWorks 虚拟通道 2 接收 CAN 报文。将该模块设置为:

  • 仅接收 ID 为 250 和 500 的报文。
  • 如果 Receive 模块在任何特定时间步接收到新报文,该模块会生成一个函数调用触发器(function)。

CAN Unpack 模块位于函数调用子系统中。子系统仅当 CAN Receive 模块在特定时间步接收到新报文时才执行。

在这里插入图片描述
在这里插入图片描述
可视化不同时间戳的报文

配置好通道1和通道2后的模型如下:

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

基于事件的CAN报文传输

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • CAN模块介绍
  • 周期性CAN报文传输
    • 传输和接收CAN报文
      • 可视化不同时间戳的报文
      • 基于事件的CAN报文传输
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档