物联网控制原理与技术--基于Matlab/simulink的CAN总线的应用(超详细/设计/实验/作业/练习)

课程名:物联网控制原理与技术

内容/作用:设计/实验/作业/练习

学习:基于Matlab/simulink的CAN总线的应用

一、前言

  1. 学习matlab中有关simulink的正确使用及其应用。
  2. simulink的基本使用、模型的建立、模型的复制剪切粘贴、命名。
  3. 熟练编写基本的Can总线的应用。

二、环境与设备

1、Windows 10
2、Matlab 2012a

三、原理

为了构建完整的CAN通信仿真,我们需要建立消息传输模型、消息接收模型、保存并运行消息传输模型。该实验主要是学习如何通过CAN网络发送数据。该实验使用Simulink中的Vehicle Network Toolbox库与其他模块库一起来构建一个简单模型,整个运行过程如下:
(1)使用虚拟CAN通道传输消息。
(2)使用CAN配置块配置CAN通道。
(3)使用常量块将数据发送到CAN包块。
(4)使用CAN Transmit块将数据发送到虚拟CAN通道。
(5)将此部分与构建消息接收模型进行保存并运行模型。
对于这部分实验:
使用 MathWorks 虚拟 CAN 通道传输报文。
使用CAN Configuration模块配置 CAN 通道。
使用Constant(Simulink)模块向CAN Pack模块提供数据。
使用CAN Transmit模块将数据发送到虚拟 CAN 通道。
将此部分与构建模型的报文接收部分进行保存并运行模型部分结合,可构建完整的模型并运行仿真。

四、内容

一、创建报文的发送部分

  1. 创建新模型
    (1)要启动 Simulink 并创建新模型
    在 Simulink Start Page 对话框中,点击 Blank Model,然后点击 Create Model。将打开一个空的 Editor 窗口。
    点击 Save As 为新模型指定名称。

2:打开模块库
打开Simulink Library Browser。其左窗格包含按字母顺序显示的可用模块库的树。展开 Vehicle Network Toolbox节点,然后点击CAN Communication。

3:将 Vehicle Network Toolbox 模块拖到模型中
要将模块放入模型中,请点击库中的一个模块并将其拖到编辑器中。对于此实验,模型中需要针对以下每个模块创建一个实例:
CAN Configuration
CAN Pack
CAN Transmit
注意模型中每个模块的默认配置使用 MathWorks Virtual 1 Channel 1。您可以将模型中的模块配置为使用来自其他供应商的虚拟通道或硬件设备。

4:拖放其他模块以完成模型
此实验使用 Constant (Simulink) 模块作为数据源。从 Simulink > Commonly Used Blocks 库中,向模型添加一个 Constant (Simulink) 模块。

5:连接模块
在 Constant 模块和 CAN Pack 模块输入之间建立连接。将指针移至 Constant 模块的输出端口附近时,指针将变为十字准线。点击 Constant 模块输出端口并按住鼠标按键,将指针拖动到 CAN Pack 模块的输入端口。然后松开按键。
以相同的方式,在 CAN Pack 模块的输出端口与 CAN Transmit 模块的输入端口之间建立连接。
CAN Configuration 模块不连接到任何其他模块。此模块配置其CAN通道以用于通信。

6:指定模块参数值
通过双击模型中的每个模块为模块设置参数。
配置 CAN Configuration 模块. 双击 CAN Configuration 模块以打开其参数对话框。验证或设置以下参数:
将 Device 设置为 MathWorks Virtual 1 (Channel 1)。
将 Bus speed 设置为 500000。
将 Acknowledge Mode 设置为 Normal。
点击 OK。
配置 CAN Pack 模块. 双击 CAN Pack 模块以打开其参数对话框。验证或设置以下参数:
将 Data is input as 设置为 raw data。
将 Name 设置为默认值 CAN Msg。
将 Identifier type 设置为默认的 Standard (11-bit identifier) 类型。
将 Identifier 设置为 500。
将 Length (bytes) 设置为默认长度 8。
点击 OK。
配置 CAN Transmit 模块. 双击 CAN Transmit 模块以打开其参数对话框。验证或设置以下参数:
将 Device 设置为 MathWorks Virtual 1 (Channel 1)。
点击 OK。
配置 Constant 模块. 双击 Constant 模块以打开其参数对话框。
在 Main 选项卡上,进行如下设置:
将 Constant value 设置为 [1 2 3 4 5 6 7 8]。
将 Sample time 设置为 0.01 秒。
在 Signal Attributes 选项卡上,进行如下设置:
将 Output data type 设置为 uint8。
点击 OK。
经过配置的模型如下图所示。
在这里插入图片描述

在这里插入图片描述

二、构建模型的报文接收部分
说明如何结合使用 Vehicle Network Toolbox 模块与 Simulink 库中的其他模块,来构建模型中接收 CAN 报文的部分。以下实验说明如何通过 CAN 网络接收数据,步骤如下:
将 Vehicle Network Toolbox 模块拖到模型中
拖放其他模块以完成模型
连接模块
指定模块参数值
对于这部分实验
使用 MathWorks 虚拟 CAN 通道接收报文。
使用 CAN Configuration 模块来配置虚拟 CAN 通道。
使用 CAN Receive 模块接收报文。
使用包含 CAN Unpack 模块的 Function-Call Subsystem (Simulink) 模块。此函数从 CAN Receive 模块获取数据,并使用 CAN Unpack 模块的参数来解包报文数据。
使用Scope(Simulink) 模块显示接收到的数据。

1:将 Vehicle Network Toolbox 模块拖到模型中
对于实验的这一部分,首先为 Vehicle Network Toolbox CAN Communication 模块库中的以下每个模块创建一个实例:
CAN Configuration
CAN Receive
提示
为 CAN Receive 和 CAN Transmit 模块各配置一个 CAN 通道。每个通道都需要有自己的 CAN Configuration 模块。

2:拖放其他模块以完成模型
使用 Simulink 的 Ports & Subsystems 模块库中的 Function-Call Subsystem 模块构建 CAN Message pack 子系统。
将 Function-Call Subsystem 模块拖到模型中。
双击 Function-Call Subsystem 模块以打开子系统编辑器。
双击 In1 端口标签,将其重命名为 CAN Msg。
双击 Out1 端口标签,将其重命名为 Data。
将 CAN Unpack 模块从 Vehicle Network Toolbox 模块库中拖放到此子系统中。如果将该模块放置在输入信号线和输出信号线之间,它们将自动连接。
现在,您的 Function-Call Subsystem 模块的内部应如下图所示。
在这里插入图片描述

将 CAN Unpack 放在 Function-Call Subsystem 内的原因是为了捕获所有可能的报文。
点击工具条中的后退箭头返回模型视图。

3:连接模块
将 Function-Call Subsystem 模块重命名为 CAN Unpack Subsystem。
将 CAN Receive 模块的 CAN Msg 输出端口连接到 CAN Unpack Subsystem 模块的 In1 输入端口。
将 CAN Receive 模块的 f() 输出端口连接到 CAN Unpack Subsystem 模块的 function() 输入端口。
要直观地显示仿真结果,请将 Scope (Simulink) 模块从 Simulink 模块库拖放到您的模型中。
将 CAN Unpack Subsystem 模块的 CAN Msg 输出端口连接到 Scope 模块的输入端口。
CAN Configuration 模块不连接到任何其他模块。该模块用于配置 CAN Receive 模块所使用的 CAN 通道以接收 CAN 报文。
经过配置的模型如下图所示。
在这里插入图片描述
在这里插入图片描述

4:指定模块参数值
通过双击模型中的模块为模块设置参数。
配置 CAN Configuration1 模块. 双击 CAN Configuration 模块以打开其参数对话框。进行如下设置:
将 Device 设置为 MathWorks Virtual 1 (Channel 2)。
将 Bus speed 设置为 500000。
将 Acknowledge Mode 设置为 Normal。
点击 Ok。
配置 CAN Receive 模块. 双击 CAN Receive 模块以打开其 Parameters 对话框。进行如下设置:
将 Device 设置为 MathWorks Virtual 1 (Channel 2)。
将 Sample time 设置为 0.01。
将 Number of messages received at each timestep 设置为 all。
点击 Ok。
配置 CAN Unpack 子系统. 双击 CAN Unpack 子系统以打开 Function-Call Subsystem 编辑器。在模型中,双击 CAN Unpack 模块以打开其参数对话框。进行如下设置:
将 Data to be output as 设置为 raw data。
将 Name 设置为默认值 CAN Msg。
将 Identifier type 设置为默认的 Standard (11-bit identifier)。
将 Identifier 设置为 500。
将 Length (bytes) 设置为默认长度 8。
点击 Ok。
保存并运行模型

在这里插入图片描述

在运行仿真之前,请先点击 Save 图标或从 Editor 工具条的 Simulation 选项卡中选择 Save 保存您的模型。

5:更改配置参数(注:ctrl+E)
将打开 Configuration Parameters 对话框。
在 Solver Options 部分中,进行如下选择:
从 Type 列表中选择 Fixed-step。
从 Solver 列表中选择 Discrete (no continuous states)。

6:运行仿真

在这里插入图片描述
单击按钮
运行仿真时,CAN Transmit 模块将从 CAN Pack 模块中获取报文。然后,它会通过 Virtual Channel 1 传输该报文。Virtual Channel 2 上的 CAN Receive 模块会接收该报文并将其传递到 CAN Unpack Subsystem 模块以解包报文。
在仿真运行时,模型窗口底部的状态栏会更新仿真的进度。

7:查看结果
在这里插入图片描述

在这里插入图片描述

双击 Scope 模块以在图上查看报文传输。如果您在图上看不到所有数据,请点击 Autoscale 工具栏按钮,这会自动缩放坐标轴以显示所有存储的仿真数据。

五、结果与分析

在这里插入图片描述
通过本实验的学习,学习了matlab中有关simulink的正确使用及其应用。simulink的基本使用、模型的建立、模型的复制剪切粘贴、命名。熟练编写基本的Can总线的应用。在配置函数模型时要细心观察,在配置参数时,要配置正确,以免发生错误。配置完成之后编译运行,然后观察图像,有8条不同颜色的线,则已达到实验目的。总体上了解了CAN总线的应用。

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员老茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值