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

创建简单模型

您可以使用 Simulink® 来对系统建模,然后仿真该系统的动态行为。本教程中创建简单模型所使用的基本方法也适用于创建更复杂的模型。此示例对简化的汽车运动进行仿真。当踩下踏板时,汽车通常处于行进状态。轻踩并松开加速踏板后,汽车先会处于怠速状态,然后停止。

Simulink 模块是定义模块输入和模块输出之间数学关系的模型元素。要创建这个简单模型,您需要四个 Simulink 模块。

模块名称模块目的模型目的
Pulse Generator为模型生成输入信号 表示加速踏板
Gain将输入信号乘以一个因子计算踩下加速踏板后如何影响汽车的加速度
Integrator, Second-Order对输入信号执行二次积分根据加速度计算汽车位置
Outport指定一个信号作为模型的输出指定汽车位置做为模型的输出

此模型的仿真过程是将一个简短的脉冲信号积分两次,形成一个斜坡。结果显示在一个示波器窗口中。输入脉冲表示是否踩下油门踏板 - 1 表示踩下,0 表示未踩下。输出斜坡表示与起点之间的距离增加。

打开新模型

使用 Simulink Editor 构建模型。

  1. 启动 MATLAB®。在 MATLAB 工具条上,点击 Simulink 按钮

  2. 点击 Blank Model 模板。

    Simulink Editor 打开。

  3. File 菜单中,选择 Save as。在 File name 文本框中,输入您的模型的名称,例如 simple_model。点击 Save。模型使用文件扩展名 .slx 进行保存。

打开 Simulink Library Browser

Simulink 在 Library Browser 中提供了一系列按功能分类的模块库。下面是大多数工作流常用的一些模块库:

  • Continuous - 表示具有连续状态的系统的模块

  • Discrete - 表示具有离散状态的系统的模块

  • Math Operations - 实现代数和逻辑方程的模块

  • Sinks - 存储并显示所连接信号的模块

  • Sources - 生成模型的驱动信号值的模块

  1. 从 Simulink Editor 工具栏上,点击 Library Browser 按钮

  2. 将 Library Browser 设置为始终在其他桌面窗口前端。在 Library Browser 工具栏上,选择 Stay on top 按钮

要浏览模块库,请从左窗格中选择一个类别,然后选择一个功能区。要搜索所有可用的模块库,请输入搜索词。

例如,查找 Pulse Generator 模块。在浏览器工具栏的搜索框中输入 pulse,然后按 Enter 键。Simulink 将在模块库中搜索名称或说明中包含 pulse 的模块,然后显示这些模块。

获取模块的详细信息。右键点击某个模块,然后选择 Help for the Pulse Generator block。Help 浏览器随即打开并显示该模块的参考页。

模块通常有几个参数。您可以通过双击该模块来访问所有参数。

将模块添加到模型

要开始构建模型,请浏览库并添加模块。

  1. Sources 库中,将 Pulse Generator 模块拖到 Simulink Editor 中。您的模型中将出现 Pulse Generator 模块的副本,还有一个文本框用于输入 Amplitude 参数的值。输入 1

    参数值在整个仿真过程中保持不变。

  2. 使用相同的方法将以下模块添加到模型中。

    模块参数
    GainSimulink/Math Operations

    Gain: 2

    Integrator, Second OrderSimulink/Continuous

    Initial condition: 0

    OutportSimulink/Sinks

    Port number:1

    复制现有 Outport 模块,然后使用键盘快捷方式将其粘贴到另一个点,从而添加第二个 Outport 模块。

    您的模型现在已经包含您需要的模块。

  3. 通过点击并拖动每个模块来按如下方式排列模块。要调整模块大小,请点击并拖动一个角。

连接模块

通过在输出端口和输入端口之间创建线条来连接模块。

  1. 点击 Pulse Generator 模块右侧的输出端口。

    该输出端口和所有可以连接的输入端口都将突出显示。

  2. 点击 Gain 模块的输入端口。

    Simulink 用线条连接模块,并用箭头表示信号流的方向。

  3. Gain block 的输出端口连接到 Integrator, Second Order 模块的输入端口。

  4. Integrator, Second Order 模块的两个输出连接到两个 Outport 模块。

  5. 保存模型。选择 File > Save 并为模型指定一个文件名。

添加信号查看器

要查看仿真结果,请将第一个输出连接到一个 Signal Viewer

通过右键点击信号来访问上下文菜单。选择 Create & Connect Viewer > Simulink > Scope。信号上会出现查看器图标,并打开一个示波器窗口。

您可以随时通过双击该图标打开示波器。

运行仿真

定义配置参数后,即可进行模型仿真。

  1. 在模型窗口上,通过更改工具栏上的值来设置仿真停止时间。

    默认停止时间 10.0 适合此模型。此时间值没有单位。Simulink 中的时间单位取决于方程的构造方式。此示例对简化的汽车运动进行 10 秒的仿真 - 其他模型的时间单位可以是毫秒或年。

  2. 要运行仿真,请点击 Run 按钮

仿真开始运行并在查看器中生成输出。

优化模型

此示例使用现有模型 moving_car.slx,并基于此运动模型对接近传感器建模。在这种情况下,数字传感器用于测量汽车与 10 米(30 英尺)外的障碍物之间的距离。模型基于下列条件来输出传感器的测量值和汽车的位置值:

  • 汽车在到达障碍物时会紧急刹车。

  • 在现实世界中,传感器对距离的测量不够精确,从而导致随机数值误差。

  • 数字传感器以固定时间间隔运行。

更改模块参数

要开始,请打开 moving_car 模型。在 MATLAB 命令行窗口中,输入

open_system(fullfile(matlabroot,...
'help', 'toolbox', 'simulink', 'examples', 'moving_car'))

您首先需要对在汽车位置到达 10 时的紧急刹车进行建模。Integrator, Second Order 模块有一个用于此目的的参数。

  1. 双击 Integrator, Second Order 模块。将出现 Block Parameters 对话框。

  2. 选择 Limit x,然后为 Upper limit x 输入 10

    参数的背景色发生变化以指示模型存在未应用的修改。

  3. 点击 OK 应用更改并关闭对话框。

添加新模块和连接

添加一个用来测量与障碍物之间距离的传感器。

  1. 修改模型。根据需要扩展模型窗口,以容纳新模块。

    • 求实际距离。要想求出障碍物位置和车辆位置之间的距离,需要添加 Subtract 模块。还要添加 Constant 模块来为障碍物的位置设置常量值 10

    • 建模真实传感器常见的不完美测量。使用 Sources library 中的 Band-Limited White Noise 模块产生噪声。将 Noise power 参数设置为 0.001。通过使用 Math Operations 库中的 Add 模块将噪声添加到测量中。

    • 对每 0.1 秒触发一次的数字传感器进行建模。在 Simulink 中,以给定时间间隔对信号进行采样需要一个样本和保持器,由零阶保持器实现。从 Discrete 库中添加 Zero-Order Hold 模块。将该模块添加到模型后,将 Sample Time 参数更改为 0.1

    • 添加另一个 Outport,用来连接传感器输出。保留 Port number 参数的默认值。

  2. 连接新模块。请注意,Integrator, Second-Order 模块的输出已连接到另一个端口。要在该信号中创建分支,请左键点击该信号以突出显示可供连接的端口,然后点击适当的端口。

为信号添加注释

为模型添加信号名称以提高其可读性。

  1. 双击信号。将出现可编辑的文本框。

  2. 键入信号名称。

  3. 要完成输入,请点击文本框外部。

  4. 重复上述步骤以添加下图中所示的名称。

比较多个信号

actual distance 信号与 measured distance 信号进行比较。

  1. 创建一个示波器并将其连接到 actual distance 信号。请注意,信号的名称显示在查看器标题中。

  2. measured distance 信号添加到同一个查看器中。右键点击信号,然后选择 Connect to Viewer > Scope1。确保您连接到在上一步中创建的查看器。

  3. 运行模型。查看器显示两个信号:actual distance(黄色)和 measured distance(蓝色)。

  4. 放大图形以观察噪声和采样的影响。点击 Zoom 按钮 。左键点击并拖动鼠标框住您想放大查看的区域。

    您可以反复放大以观察细节。

从图中可以看出,测量值可能偏离实际值多达 0.3 米。此信息在设计安全功能(例如碰撞警告)时非常有用。

另请参阅

模块

相关主题