Main Content

模型离散化器

什么是模型离散化器?

模型离散化器有选择地将连续 Simulink® 模块替换为离散模块。离散化是数字控制器设计中的一个关键步骤,用于硬件在环仿真。

模型离散化器可用于:

  • 识别模型的连续模块

  • 将模块的参数从连续更改为离散

  • 将离散化设置应用于模型中的所有连续模块或所选模块

  • 创建随原始连续模块一起包含多个离散化候选项的可变子系统

  • 在不同离散化候选项之间切换并计算生成的模型仿真

模型离散化器不支持封装子系统。

要求

使用模型离散化器需要具备的条件

  • 您必须拥有 Control System Toolbox™ 5.2 或更高版本的许可证。

  • 确保您的模型不包含任何过时的模块,且升级到最新 Simulink 版本。有关详细信息,请参阅模型升级

  • 您必须将现有模型中的可配置子系统模块转换为可变子系统。有关详细信息,请参阅Convert Configurable Subsystem to Variant Subsystem

使用模型离散化器离散化模型

此示例说明如何使用模型离散化器来离散化 f14 模型。

model='f14';
open_system(model)

模型离散化器工作流

要离散化模型,请执行下列操作:

启动模型离散化器

要打开该工具,请在 Simulink 编辑器中,在 App 选项卡上,在 App 下,在控制系统下,点击模型离散化器

Simulink 模型离散化器随即打开。

Open Model Discretizer for f14 model

您也可以使用 slmdldiscui 函数从 MATLAB® 命令行窗口中打开模型离散化器。

以下命令序列使用 f14 模型打开 Simulink 模型离散化器窗口:

openExample('f14');
slmdldiscui('f14')

要从模型离散化器打开一个新的模型或库,请选择文件 > 加载模型

指定转换方法

转换方法用于指定在离散化中使用的算法的类型。有关不同转换方法的详细信息,请参阅 Control System Toolbox。

变换方法列表包含以下选项:

变换方法描述

零阶保持

对输入执行零阶保持。

一阶保持

对输入进行线性插值。

突斯汀

双线性(突斯汀)逼近法。

预修正的突斯汀

采用频率预修正突斯汀逼近法。

匹配的零极点

匹配的零极点方法(仅适用于 SISO 系统)。

指定采样时间

采样时间字段中输入采样时间。对于模型离散化器,该值必须为数值。

您可以通过为离散模块或可变子系统输入一个二元素向量来指定偏移时间。第一个元素是采样时间,第二个元素是偏移时间。例如,输入 [1.0 0.1] 会指定具有 0.1 秒偏移的 1.0 秒采样时间。如果未指定偏移时间,则默认值为零。

在 S 域中离散化模块时,您可以输入工作区变量。请参阅离散模块(在 S 域中输入参数)

指定离散化方法

将当前选择替换为字段中指定离散化方法。这些选项包括

离散化方法描述

离散模块(在 S 域中输入参数)

创建一个离散模块,其参数从对应的连续模块保留得来。

离散模块(在 Z 域中输入参数)

创建一个离散模块,其参数是直接放入模块对话框的“硬编码”值。

可变子系统(在 S 域中输入参数)

使用 S 域值为当前所选内容创建多个离散候选项。

可变子系统(在 Z 域中输入参数)

在 Z 域中为当前所选内容创建多个离散候选项。

离散模块(在 S 域中输入参数).  创建一个离散模块,其参数从对应的连续模块保留得来。采样时间和离散化参数也在模块的参数对话框中。

该模块实现为封装的离散模块,后者在封装初始化代码中使用 c2d (Control System Toolbox) 将连续参数转换为离散参数。

只有这些模块能够在采样时间更改为零时恢复连续行为。通过以工作区变量形式(例如 'Ts')输入采样时间,可轻松实现连续和离散之间的转换。请参阅指定采样时间

注意

如果您从模型生成了代码,则当在模型的“配置参数”对话框中将默认参数行为设置为内联时,参数不可调。

下图并排显示了一个连续 Transfer Function 模块和一个已在 S 域中使用突斯汀变换方法离散化的 Transfer Function 模块。每个模块的“模块参数”对话框显示在模块下方。

离散模块(在 Z 域中输入参数).  创建一个离散模块,其参数是直接放入模块对话框的“硬编码”值。模型离散化器使用 c2d (Control System Toolbox) 函数获取离散化的参数(如果需要)。

如需有关 c2d (Control System Toolbox) 函数的更多帮助,请在命令行窗口中键入以下内容:

help c2d

下图并排显示了一个连续 Transfer Function 模块和已在 Z 域中离散化的 Transfer Function 模块。每个模块的“模块参数”对话框显示在模块下方。

注意

如果您要在“模型离散化”会话后完全恢复原始连续参数值,您应在 S 域中输入参数。

可变子系统(在 S 域中输入参数).  使用 S 域值为当前所选内容创建多个离散候选项。创建一个离散模块,其参数从对应的连续模块保留得来。​

在选择此选项时,可变子系统中模块的位置字段变为活动状态。此选项允许您创建新的可变子系统。

可变子系统(在 Z 域中输入参数).  在 Z 域中为当前所选内容创建多个离散候选项。创建一个离散模块,其参数是直接放入模块对话框的“硬编码”值。​

在选择此选项时,可变子系统中模块的位置字段变为活动状态。此选项允许您创建新的可变子系统。

离散化模块

要离散化链接到库的模块,您必须在库本身中离散化模块或在模型窗口中禁用库链接。

您可以通过从文件菜单中选择加载模型来从模型离散化器打开库。

您可以通过以下方式禁用库链接:在模块上右键点击并从上下文菜单中选择库链接 > 禁用链接

离散化模块有两种方法:

选择模块并离散化

  1. 在模型离散化器树视图窗格中选择模块。

    要选择多个模块,请在选择这些模块时按住键盘上的 Ctrl 键。

    注意

    您必须从模型离散化器树视图中选择模块。在编辑器中点击模块不会将其选中来进行离散化。

  2. 如果选择一个模块,请从离散化菜单中选择离散化当前模块;如果选择多个模块,请从离散化菜单中选择离散化所选模块

    您还可以通过点击如下所示的离散化按钮来离散化当前模块。

存储离散化设置并将其应用于模型中的所选模块

  1. 输入当前模块的离散化设置。

  2. 点击存储设置

    这会将当前模块及其离散化设置添加到预设模块组中。

  3. 根据需要重复步骤 1 和 2。

  4. 离散化菜单中选择离散化预设模块

从可变子系统中删除离散化候选项

您也可以通过以下方式从可变子系统中删除离散化候选项:在可变子系统中模块的位置字段中选择该候选项,然后点击删除按钮。

撤消离散化

要撤消离散化,请点击撤消离散化按钮。

您也可以从离散化菜单中选择撤消离散化

此操作将撤消当前所选项及其子级中的离散化。例如,对子系统执行撤消操作将从该子系统层次结构的所有层级的所有模块中删除离散化。

查看离散化的模型

模型离散化器在层次结构树状视图中显示模型。

查看离散化的模块

当模块已离散化时,该模块的图标在树视图中变为用“z”突出显示。

下图显示 Aircraft Dynamics Model 子系统已离散化为一个包含两个离散化候选项的可变子系统。

Discretize Aircraft Dynamics Model subsystem

f14 模型中的其他模块尚未离散化。

下图显示离散化为一个可变子系统(包含原始连续模型和两个离散化候选项)后的 f14 示例模型的 Aircraft Dynamics Model 子系统。

Result of discretization of Aircraft Dynamics Model subsystem

下图显示具有两个离散化候选项的 Aircraft Dynamics Model 可变子系统。

Aircraft Dynamics Model variant subsystem with the two discretization candidates

刷新模型的模型离散化器视图

要在模型更改后刷新模型的模型离散化器树视图,请点击刷新按钮。

您也可以选择视图 > 刷新

离散化 Simulink 模型中的模块

您可以使用 Discretizing 库,将 Simulink 软件模型中的连续模块替换为 S 域中离散化的等效模块。

以下过程说明如何将 f14 模型的 Aircraft Dynamics Model 子系统中的连续 Transfer Fcn 模块替换为 Discretizing 库中的离散化 Transfer Fcn 模块。模块在 S 域中使用零阶保持转换方法和两秒采样时间进行离散化。

  1. 打开 f14 模型。

  2. f14 模型中打开 Aircraft Dynamics Model 子系统。

  3. 打开 Discretizing 库窗口。

    在 MATLAB 命令提示符下输入 discretizing

    Library: discretizing 窗口随即打开。

    此库包含 S 域的离散化模块。

  4. Discretized Transfer Fcn 模块(具有初始状态)添加到 f14/Aircraft Dynamics Model 窗口。

    1. Library: discretizing 窗口中点击 Discretized Transfer Fcn 模块。

    2. 将其拖到 f14/Aircraft Dynamics Model 窗口中。

  5. 打开 Transfer Fcn.1 模块的参数对话框。

    f14/Aircraft Dynamics Model 窗口中双击 Transfer Fcn.1 模块。

    模块参数:Transfer Fcn.1 对话框随即打开。

  6. 打开 Discretized Transfer Fcn 模块的参数对话框。

    f14/Aircraft Dynamics Model 窗口中双击 Discretized Transfer Fcn 模块。

    模块参数:Discretized Transfer Fcn 对话框随即打开。

    将参数信息从 Transfer Fcn.1 模块对话框复制到 Discretized Transfer Fcn 模块的对话框。

  7. 采样时间字段中输入 2

  8. 方法下拉列表中选择 zoh

    现在,Discretized Transfer Fcn 的参数对话框如下所示。

  9. 点击确定

    f14/Aircraft Dynamics Model 窗口现在类似于如下所示。

  10. 删除原始 Transfer Fcn.1 模块。

    1. 点击 Transfer Fcn.1 模块。

    2. 删除键。

      f14/Aircraft Dynamics Model 窗口现在类似于如下所示。

  11. Discretized Transfer Fcn 模块添加到模型中。

    1. 点击 Discretized Transfer Fcn 模块。

    2. Discretized Transfer Fcn 模块拖到相应位置以完成模型。

      f14/Aircraft Dynamics Model 窗口现在类似于如下所示。

使用 sldiscmdl 函数离散化模型

从 MATLAB 命令行窗口使用 sldiscmdl 函数离散化 Simulink 软件模型。您可以使用 sldiscmdl 函数指定转换方法、采样时间和离散化方法。

例如,以下命令使用 1 秒采样时间和零阶保持转换方法在 S 域中离散化 f14 模型:

sldiscmdl('f14',1.0,'zoh')

另请参阅

|

相关主题