参考网址:
https://ww2.mathworks.cn/help/vnt/ug/build-can-communication-simulink-models.html#brzf0ew-4
一、Simulink模型简述
在该模型中使用MathWorks虚拟CAN通道传输和接收报文。
●报文传输部分:使用CAN Configuration模块配置CAN通道,Constant模块向CAN Pack模块提供数据,并使用CAN Transmit模块将数据发送到虚拟CAN通道。
●报文接收部分:使用CAN Configuration模块配置CAN通道,CAN Receive模块接收报文,同时使用包含CAN Unpack模块的Function-Call Subsystem模块从CAN Receive模块获取数据,并使用CAN Unpack模块的参数来解包报文数据,最后通过Scope模块显示接收到的数据。
二、构建模型的报文传输部分
Step 1. 创建新模型
1.要启动Simulink并创建新模型,请在MATLAB命令提示符下输入以下内容:1
simulink
在Simulink Start Page对话框中,点击Blank Model,然后点击Create Model,将打开一个空的Editor窗口。
2.在Editor工具条的Simulation选项卡上,点击Save > Save As为新模型指定名称。
Step 2. 打开模型库
1.在模型Editor工具条的Simulation选项卡中,点击Library Browser。
2.Simulink Library Browser将打开。其左窗格包含按字母顺序显示的可用模块库的树。展开Vehicle Network Toolbox节点,然后点击CAN Communication。
Step 3. 将Vehicle Network Toolbox模块拖到模型中
要将模块放入模型中,请点击库中的一个模块并将其拖到编辑器中。对于此示例,模型中需要针对以下每个模块创建一个实例:
●CAN Configuration
●CAN Pack
●CAN Transmit
Step 4. 拖放其他模块以完成模型
此示例使用Constant(Simulink)模块作为数据源。从Simulink > Commonly Used Blocks库中,向模型添加一个Constant(Simulink)模块。
Step 5. 连接模块
在Constant模块和CAN Pack模块输入之间建立连接。将指针移至Constant模块的输出端口附近时,指针将变为十字准线。点击Constant模块输出端口并按住鼠标按键,将指针拖动到CAN Pack模块的输入端口。然后松开按键。
以相同的方式,在CAN Pack模块的输出端口与CAN Transmit模块的输入端口之间建立连接。
CAN Configuration模块不连接到任何其他模块,此模块配置其CAN通道以用于通信。
Step 6. 指定模块参数值
通过双击模型中的每个模块为模块设置参数。
配置CAN Configuration模块。双击CAN Configuration模块以打开其参数对话框。验证或设置以下参数:
配置CAN Pack模块。双击CAN Pack模块以打开其参数对话框。验证或设置以下参数:
配置CAN Transmit模块。双击CAN Transmit模块以打开其参数对话框。验证或设置以下参数:
配置Constant模块。双击Constant模块以打开其参数对话框。
在Main选项卡上,进行如下设置:
在Signal Attributes选项卡上,进行如下设置:
经过配置的模型如下图所示:
三、构建模型的报文接收部分
Step 7. 将Vehicle Network Toolbox模块拖到模型中
对于示例的这一部分,首先为Vehicle Network Toolbox CAN Communication模块库中的以下每个模块创建一个实例:
●CAN Configuration
●CAN Receive
Step 8. 拖放其他模块以完成模型
使用Simulink的Ports & Subsystems模块库中的Function-Call Subsystem模块构建您的CAN Message pack子系统。
双击Function-Call Subsystem模块以打开子系统编辑器。双击In1端口标签,将其重命名为CAN Msg。双击Out1端口标签,将其重命名为Data。将CAN Unpack模块从Vehicle Network Toolbox模块库中拖放到此子系统中。如果将该模块放置在输入信号线和输出信号线之间,它们将自动连接。
此时Function-Call Subsystem模块的内部应如下图所示。
将CAN Unpack放在Function-Call Subsystem内的原因是为了捕获所有可能的报文。
Step 9. 连接模块
将Function-Call Subsystem模块重命名为CAN Unpack Subsystem。将CAN Receive模块的CAN Msg输出端口连接到CAN Unpack Subsyste模块的In1输入端口。将CAN Receive模块的f()输出端口连接到CAN Unpack Subsystem模块的function()输入端口。要直观地显示仿真结果,请将Scope (Simulink)模块从Simulink模块库拖放到您的模型中。将CAN Unpack Subsystem模块的CAN Msg输出端口连接到Scope模块的输入端口。CAN Configuration模块不连接到任何其他模块。该模块用于配置CAN Receive模块所使用的CAN通道以接收CAN报文。
Step 10. 指定模块参数值
配置CAN Configuration1模块。双击CAN Configuration模块以打开其参数对话框。进行如下设置:
配置CAN Receive模块。双击CAN Receive模块以打开其Parameters对话框。进行如下设置:
配置CAN Unpack子系统。双击CAN Unpack子系统以打开Function-Call Subsystem编辑器。在模型中,双击CAN Unpack模块以打开其参数对话框。进行如下设置:
四、保存并运行模型
Step 11. 保存模型
在运行仿真之前,点击Save图标或从Editor工具条的Simulation选项卡中选择Save保存模型。
Step 12. 更改配置参数
在模型Editor工具条的Modeling选项卡中,点击Model Settings。将打开Configuration Parameters对话框。
在Solver Options部分中,进行如下选择:
Step 13. 运行仿真
要运行仿真,请点击Editor工具条的Simulation或Modeling选项卡中的Run按钮。
运行仿真时,CAN Transmit模块将从CAN Pack模块中获取报文。然后它会通过Virtual Channel 1传输该报文。Virtual Channel 2上的CAN Receive模块会接收该报文并将其传递到CAN Unpack Subsystem模块以解包报文。
在仿真运行时,模型窗口底部的状态栏会更新仿真的进度。
Step 14. 查看结果
双击Scope模块以在图上查看报文传输。如果您在图上看不到所有数据,请点击Autoscale工具栏按钮,这会自动缩放坐标轴以显示所有存储的仿真数据。