主要内容

使用RSim系统目标文件在主机上加速、优化和测试混合动态系统

在您创建模型之后,您可以使用快速模拟(RSim)系统目标文件来描述模型行为。由构建过程产生的可执行程序用于在开发计算机上的非实时执行。可执行程序是高度优化的模拟混合动力系统的模型,包括使用可变步长求解器和过零检测的模型。生成代码的速度使RSim系统目标文件非常适合用于批处理或蒙特卡罗模拟的程序构建。

关于快速仿真

使用RSim目标生成运行快速、独立模拟的可执行文件。您可以使用脚本以交互方式或编程方式使用不同的数据集重复模拟,而无需重建模型。这可以加快模型行为的表征和调整以及代码生成测试。

使用命令行选项:

  • 在一个或多个mat文件中定义参数值和输入信号,您可以在模拟开始时加载和重新加载这些文件,而无需重新构建模型。

  • 将日志记录数据重定向到一个或多个mat文件,然后您可以分析和比较这些文件。

  • 控制仿真时间。

  • 指定外部模式选项。

请注意

要运行RSim可执行文件,请将计算机配置为运行MATLAB®并有MATLAB和Simulink金宝app®安装文件夹访问。要部署一个独立的主机可执行文件(即,不安装MATLAB和Simulink),请考虑使用基于主机的共享库目标(ert_shrlib)。金宝app”

快速模拟的优势

从快速模拟中获得的优势是不同的。更大的仿真实现速度的改进,比标准Simulink仿真快10倍。金宝app有些模型在模拟速度上可能没有明显的改善。要确定您的模型的速度差异,请计算标准Simulink模拟的时间,并将结果与快速模拟进行比较。金宝app另外,在Rapid Accelerator仿真模式下进行模型仿真测试。

通用快速仿真工作流

与基于模型的设计的其他阶段一样,模型行为的描述和调优是一个迭代的过程,如图中的通用工作流图所示。工作流中的任务是:

识别快速仿真需求

设置快速模拟的第一步是确定模拟需求。

问题…… 有关更多信息,请参见…
您希望模拟运行多长时间? 配置和建立快速仿真模型
有解决方案要求吗?您是否希望使用为快速模拟配置模型的相同求解器? 配置和建立快速仿真模型
您的快速模拟需要适应灵活的自定义代码接口吗?或者,您的模拟需要保留存储类设置吗? 配置和建立快速仿真模型
您将使用多个数据集运行模拟吗? 建立快速仿真输入数据
输入数据是由全局参数、信号还是两者都包含? 建立快速仿真输入数据
什么类型的源块向模型提供输入数据——从文件、导入还是从工作区? 建立快速仿真输入数据
模型的参数向量(模型_P)用作输入数据? 创建一个包含模型参数结构的mat文件
输入参数和信号的数据类型是什么? 建立快速仿真输入数据
源数据是由一个变量还是多个变量组成? 建立快速仿真输入数据
输入数据是否包含可调参数? 创建一个包含模型参数结构的mat文件
您是否需要访问可调参数信息——模型校验和和参数数据类型、标识符和复杂性? 创建一个包含模型参数结构的mat文件
您是否需要为模拟运行更改模拟停止时间? 配置和建立快速仿真模型覆盖模型仿真停止时间
您想为模拟设置时间限制吗?如果您的模型经常出现零交叉,且步长较小,可以考虑设置一个时间限制。 为快速模拟设置时钟时间限制
是否需要保留每次模拟运行的输出? 为模拟指定新的输出文件名为文件块指定新的输出文件名
您希望以交互方式运行模拟还是以批处理模式运行? 批处理和蒙特卡罗模拟脚本

配置导入以提供仿真源数据

您可以使用import块作为快速模拟的输入数据源。为此,配置块,以便它们可以从外部mat文件导入数据。缺省情况下,import块从下游块继承参数设置。在大多数情况下,要从外部mat -文件导入数据,必须显式设置以下块参数以匹配mat -文件中的源数据。

  • 主要>插入数据

  • 信号的属性>港维

  • 信号的属性>数据类型

  • 信号的属性>信号类型

如果您不能控制模型内容,您可能需要修改mat文件中的数据,以符合模型期望的输入。接收数据的import块的输入数据特征和规格必须匹配。

有关调整这些参数和创建MAT文件以与输入块一起使用的详细信息,请参见为输入块创建MAT文件。块参数说明请参见的块说明轮廓尺寸

配置和建立快速仿真模型

确定快速仿真需求后,配置模型以进行快速仿真。

  1. 设定模型组态参数系统目标文件rsim.tlc(快速仿真目标)。

  2. 点击RSim目标查看RSim目标窗格。

  3. 为您的快速仿真需求设置RSim目标配置参数。

    如果你想… 然后……
    生成允许RSim可执行文件从mat文件加载参数的代码 选择启用RSim可执行文件从MAT文件加载参数(默认)。
    让目标根据已经为模型配置的求解器选择求解器

    解算器的选择汽车(默认)。上指定固定步长求解器时,代码生成器将使用内置求解器解算器窗格或调用Simulink求解器模块金宝app(共享库),如果指定了可变步长求解器。

    明确指示目标使用固定步长求解器 解算器的选择使用固定的解决者。在“配置参数”对话框中,单击解算器窗格中,指定固定步长求解器。
    明确指示目标使用可变步长解算器

    解算器的选择使用Si金宝appmulink求解器模块。在“配置参数”对话框中,单击解算器窗格中,指定一个可变步长求解器。

    强制存储类汽车用于灵活的自定义代码接口 选择强制存储类为AUTO(默认)。
    保留存储类设置,例如ExportedGlobalImportedExtern,因申请需要 清晰的强制存储类为AUTO
  4. 设置数据导入和导出选项。在数据导入/导出窗格中,在保存到工作空间部分中,选择时间输出,最终状态参数的应用。默认情况下,代码生成器将模拟日志记录结果保存到一个名为模型.mat。有关更多信息,请参见出口仿真数据

  5. 如果您正在使用外部模式通信,请设置接口,使用代码生成>接口窗格。看到用于参数调谐和信号监测的外部模式模拟获取详细信息。

  6. 新闻Ctrl + B。代码生成器构建了一个高度优化的可执行程序,您可以使用不同的数据在开发计算机上运行该程序,而无需重新构建。

    控件兼容的编译器的详细信息金宝appSimulink编码器™产品,请参阅选择和配置C或C++编译器模板制作文件和制作选项

建立快速仿真输入数据

关于快速模拟数据设置

快速模拟输入数据的格式和设置取决于您的需求。

如果输入数据源是。。。 然后……
模型的全局参数向量(模型_P 使用rsimgetrtp函数获取矢量内容,然后将其保存到mat文件中。
模型的全局参数向量,你想要一个向量和可调参数之间的映射 调用rsimgetrtp函数获取全局参数结构,然后将其保存到MAT文件中。
由From File块提供 创建一个“从文件”块可以读取的mat文件。
由导入块提供 创建符合输入端口块可以读取的三种数据文件格式之一的MAT文件。
由From Workspace块提供 在MATLAB工作空间中创建结构变量。

RSim目标要求作为From File和import块输入的MAT-files包含数据。的target将mat文件数据直接插入生成的代码中,然后将其编译并链接为可执行文件。相反,RSim允许您为每个后续模拟替换数据集。如果模型中存在From File块或import块,则必须提供包含From File或import块数据的mat文件。

创建一个包含模型参数结构的mat文件

要创建包含模型全局参数结构的mat -文件(模型_P),

  1. 通过调用函数获得结构rsimgetrtp

  2. 将参数结构保存到MAT文件。

如果希望在不同的数据集上运行模拟,请考虑将参数结构转换为单元阵列,并将参数变化保存到单个mat文件中。

获取模型的参数结构。获取全局参数结构(模型_P)来调用该函数rsimgetrtp

param_struct= rsimgetrtp ('模型”)
论点 描述
模型 你运行快速模拟的模型。

rsimgetrtp函数强制对指定的模型执行更新关系图操作,并返回包含以下字段的结构。

描述
modelChecksum 编码模型结构的四元素向量。代码生成器使用校验和来检查模型的结构是否在生成RSim可执行文件之后发生了变化。如果您删除或添加一个块,然后生成一个新的模型_P向量,新的校验和不再与原来的校验和匹配。RSim可执行程序检测参数向量中的不兼容性,并退出以避免返回不正确的模拟结果。如果模型结构发生了更改,则必须重新生成模型的代码。
参数 包含模型全局参数的结构。

参数结构包含以下信息。

描述
dataTypeName 参数数据类型的名称,例如,
dataTypeID 代码生成器使用的内部数据类型标识符
复杂的 如果为实值,则值为0;1如果复杂
dtTransIdx 代码生成器使用的内部数据索引
价值观 与此结构相关联的参数值向量
地图 该字段包含将“值”与模型的可调参数关联起来的映射信息。这个映射信息,连同RSIMestParam,用于创建后续的rtP结构,而无需编译框图。

代码生成器根据其存储值报告可调定点参数。例如,一个sfix (16)的参数值1.4按比例2 ^ 8值为358作为一个int16

在下面的例子中,rsimgetrtp返回示例模型的参数结构rtwdemo_rsimtfparam_struct

param_struct = rsimgetrtp (“rtwdemo_rsimtf”
param_struct = modelChecksum: [1.7165e+009 3.0726e+009 2.6061e+009 2.3064e+009]

将参数结构保存为MAT-File。在你给rsimgetrtp,将函数调用的返回值保存到mat文件中。然后可以使用命令行选项指定mat -文件作为快速模拟的输入。

下面的示例保存返回的参数结构rtwdemo_rsimtf到MAT-filemyrsimdemo.mat

保存myrsimdemo.matparam_struct

有关使用命令行选项指定所需文件的信息,请参见运行快速模拟

转换参数结构运行模拟变化的数据集。要使用快速模拟来测试对特定参数的更改,可以将模型参数结构转换为单元阵列。然后,可以使用@操作符为文件中的特定参数集指定索引,从而访问特定参数集。

要将结构转换为单元阵列,请执行以下操作:

  1. 使用的函数rsimgetrtp获取包含示例模型参数信息的结构rtwdemo_rsimtf。将结构存储在一个变量中param_struct

    param_struct = rsimgetrtp (“rtwdemo_rsimtf”);

    参数结构的字段是包含参数信息的子结构。的价值观场的参数子结构包含可在模拟代码执行期间调优的参数的数值。

  2. 使用的函数RSIMestParam展开结构,使其包含更多参数集。在这种情况下,再创建两个参数集(总共三个参数集)。

    param_struct = rsimsetrtpparam (param_struct 3);

    函数将参数字段设置为包含三个元素的单元格数组。每个元素包含单个参数集的信息。默认情况下,该函数通过复制第一个元素来创建单元格数组的第二个和第三个元素。因此,所有的参数集使用相同的参数值。

  3. 为第二和第三个参数集中的参数指定新值。

    param_struct.parameters{2}。价值观= [-150 -5000 0 4950]; param_struct.parameters{3}.values = [-170 -5500 0 5100];
  4. 将包含参数集信息的结构保存到mat -文件中。

    保存rtwdemo_rsimtf.matparam_struct

或者,您可以修改模型中的块参数,并使用rsimgetrtp创建多个参数集。

  1. 使用的函数rsimgetrtp获取包含示例模型参数信息的结构rtwdemo_rsimtf。将结构存储在一个变量中param_struct

    param_struct = rsimgetrtp (“rtwdemo_rsimtf”);

  2. 使用的函数RSIMestParam展开结构,使其包含更多参数集。在这种情况下,再创建两个参数集(总共三个参数集)。

    param_struct = rsimsetrtpparam (param_struct 3);

    函数将参数字段设置为包含三个元素的单元格数组。每个元素包含单个参数集的信息。默认情况下,该函数通过复制第一个元素来创建单元格数组的第二个和第三个元素。因此,所有的参数集使用相同的参数值。

  3. 更改块参数或工作区变量的值。例如,更改变量的值w7072

    w = 72;

  4. 使用rimsgetrtp获取另一个包含参数信息的结构。将结构存储在一个临时变量中rtp_temp

    rtp_temp = rsimgetrtp (“rtwdemo_rsimtf”);

  5. 赋值参数领域的rtp_temp结构param_struct作为第二个参数集。

    param_struct。参数{2} = rtp_temp.parameters;

  6. 更改变量的值w7275

    w = 75;

  7. 使用rimsgetrtp获取另一个包含参数信息的结构。然后,为参数字段到param_struct作为第三个参数集。

    rtp_temp = rsimgetrtp (“rtwdemo_rsimtf”);param_struct。参数{3} = rtp_temp.parameters;

  8. 将包含参数集信息的结构保存到mat -文件中。

    保存rtwdemo_rsimtf.matparam_struct

有关在运行模拟时如何指定每个参数集的详细信息,请参见更改RSim模拟的块参数

为From文件块创建一个MAT-File

类的输入数据源可以使用mat -文件从文件块。mat文件中的数据格式必须与该块所期望的数据格式匹配。例如,如果您使用矩阵作为MAT文件的输入,那么这与可执行文件的矩阵大小不能不同。

要创建一个mat -文件从文件布洛克:

  1. 对于数组格式数据,在工作区中创建一个由两行或多行组成的矩阵。第一行必须包含单调递增的时间点。其他行包含与该列中的时间点对应的数据点。时间和数据点必须是类型数据

    例如:

    t =(0:0.1:2 *π)';Ina1 = [2 * sin (t) 2 * cos (t));Ina2 =罪(2 * t);Ina3 = [0.5 * sin (3 * t) 0.5 * cos (3 * t)];var_matrix=[t Ina1 Ina2 Ina3]';

    用于其他受支持的数据金宝app类型,例如int16或定点,时间数据点的类型必须为,就像数组格式数据一样。但是,示例数据可以是任何维度的。

    有关设置输入数据的更多信息,请参阅从文件

  2. 将矩阵保存到mat文件中。

    下面的示例保存矩阵var_matrix到MAT-filemyrsimdemo.mat版本7.3格式。

    保存“-v7.3”myrsimdemo.matvar_matrix

    然后可以使用命令行选项指定mat -文件作为快速模拟的输入。

为输入块创建MAT文件

可以使用MAT文件作为输入块的输入数据源。

mat文件中的数据格式必须符合下表中列出的三种基于列的格式之一。表格按照从最不灵活到最灵活的顺序列出了格式。

格式 描述
单一时间/数据矩阵
  • 至少灵活。

  • 一个变量。

  • 两个或两个以上的。列数必须等于所有根导入块的维度之和加1。第一列必须包含单调递增的时间点。其他列包含与给定行的时间点相对应的数据点。

  • 数据的类型

例如,请参见单一时间/数据矩阵在以下步骤中,步骤4。有关更多信息,请参见将数据数组加载到根级输入

Signal-and-time结构
  • 比单一时间/数据矩阵格式更灵活。

  • 一个变量。

  • 必须包含两个顶级字段:时间信号。的时间字段包含一个模拟时间的向量。的信号字段包含一个子结构数组,每个子结构对应于一个import块。子结构索引对应于导入块号。每一个信号子结构必须包含一个名为价值观。的价值观字段必须包含对应的import块的输入数组,其中每个输入对应于由时间字段。

  • 如果时间字段设置为空值时,则清除轮廓尺寸插入数据参数。

  • 数据类型必须匹配导入块设置。

例如,请参见Signal-and-time结构在以下步骤中,步骤4。有关此格式的更多信息,请参见将数据结构加载到根级输入

每个端口结构
  • 最灵活的

  • 多个变量。变量的数量必须等于导入块的数量。

  • 每个导入块由独立的带时间结构或不带时间结构组成。每个import块数据结构只有一个信号字段。要使用这种格式,请在输入文本字段,以逗号分隔的列表形式输入结构的名称,三机一体in2、……酒店,在那里三机一体是模型第一个端口的数据,in2用于第二个端口,以此类推。

  • 每个变量可以有不同的时间向量。

  • 如果时间字段设置为空值时,则清除轮廓尺寸插入数据参数。

  • 数据类型必须匹配导入块设置。

  • 要将多个变量保存到相同的数据文件中,您必须按照模型所期望的顺序保存它们,使用附加选择。

例如,请参见每个端口结构在以下步骤中,步骤4。有关更多信息,请参见将数据结构加载到根级输入

所支持的金宝app格式和下面的过程在rtwdemo_rsim_i

为导入块创建一个MAT-file:

  1. 选择上述数据文件格式之一。

  2. 更新导入块参数设置和规格,以匹配mat -文件提供的数据规格。

    默认情况下,输入块继承下游块的参数设置。若要从外部MAT文件导入数据,请显式设置以下参数以匹配MAT文件中的源数据。

    • 主要>插入数据

    • 信号的属性>港维

    • 信号的属性>数据类型

    • 信号的属性>信号类型

    如果您选择使用结构格式的工作空间变量和时间字段为空,清除块参数插入数据或修改参数,使其设置为非空值。插值需要时间数据。

    块参数说明请参见的块说明轮廓尺寸

  3. 为模型构建RSim可执行程序。构建过程为模型创建和计算结构校验和,并将其嵌入生成的可执行文件中。RSim目标使用校验和来验证传递到模型中的数据是否与模型可执行文件所期望的一致。

  4. 创建mat -文件,为快速模拟提供源数据。您可以从工作区变量创建mat -文件。使用前面格式比较表中的规范,为您的模拟创建工作区变量。

    每种格式的示例如下:

    单一时间/数据矩阵

    t =(0:0.1:2 *π)';Ina1 = [2 * sin (t) 2 * cos (t));Ina2 =罪(2 * t);Ina3 = [0.5 * sin (3 * t) 0.5 * cos (3 * t)];var_matrix=[t Ina1 Ina2 Ina3];

    Signal-and-time结构

    t=[0:0.1:2*pi];var_single_struct.time=t;var_single_struct.signals(1).值(:,1)=2*sin(t);var_single_struct.signals(1).值(:,2)=2*cos(t);var_single struct.signals(2*t);var_single struct.signals(3).值(:,1)=0.5*sin(3*t);var_struct...var_single_struct.signals (2) . values...var_single_struct.signals (3) . values);

    每个端口结构

    t =(0:0.1:2 *π)';Inb1.time = t;Inb1.signals.values (: 1) = 2 * sin (t);Inb1.signals.values (:, 2) = 2 * cos (t);t =(0:0.2:2 *π)';Inb2.time = t;Inb2.signals.values(: 1) =罪(2 * t);t =(0:0.1:2 *π)';Inb3.time = t;Inb3.signals.values (: 1) = 0.5 * sin (3 * t); Inb3.signals.values(:,2)=0.5*cos(3*t);
  5. 将工作区变量保存到mat文件中。

    单一时间/数据矩阵

    下面的示例保存工作区变量var_matrix到MAT-filersim_i_matrix.mat

    保存rsim_i_matrix.matvar_matrix

    Signal-and-time结构

    下面的示例保存工作区结构变量var_single_struct到MAT-filersim_i_single_struct.mat

    保存rsim_i_single_struct.matvar_single_struct

    每个端口结构

    当将每个端口结构变量保存到单个mat文件时,使用保存命令的附加选项。请确保按照模型期望的顺序追加数据。

    下面的示例保存工作区变量Inb1Inb2,政府间对MAT-filersim_i_multi_struct.mat

    保存rsim_i_multi_struct.matInb1;保存rsim_i_multi_struct.matInb2附加;保存rsim_i_multi_struct.mat政府间附加

    保存当将数据保存到mat -文件时,命令不会保留在命令行中指定工作区变量的顺序。例如,如果你指定了变量v1v2,v3,则mat -文件中变量的顺序可以是v2 v1 v3

    然后可以使用命令行选项指定mat -文件作为快速模拟的输入。

批处理和蒙特卡罗模拟脚本

RSim的目标是批量仿真,其中参数和输入信号在多个仿真中变化。新的输出文件名允许您运行新的模拟而不覆盖先前的模拟结果。您可以通过创建。bat文件用于Microsoft®窗户®平台。

使用文本编辑器为Windows平台创建一个文件,并通过键入文件名来执行该文件,例如:mybatch,其中文本文件的名称为mybatch.bat

rtwdemo_rsimtf - f rtwdemo_rsimtf.mat = run1。垫- o其中回答。垫- tf 10.0rtwdemo_rsimtf- frtwdemo_rsimtf.mat=run2.mat -o results2.mat -tf 10.0 rtwdemo_rsimtf -f rtwdemo_rsimtf.mat=run3.mat -o results3.mat -tf 10.0 rtwdemo_rsimtf -f rtwdemo_rsimtf.mat=run4.mat -o results4.mat -tf 10.0

在本例中,批处理模拟使用文件中的四组输入数据运行run1.matrun2.mat,等等。RSim可执行文件将数据保存到用- o选择。

每个文件中包含模拟结果的变量名是相同的。因此,一旦数据在MATLAB工作空间中,加载连续的数据集而不重新命名数据,将导致用新数据覆盖先前的工作空间变量。为了避免覆盖,可以在加载下一组数据之前将结果复制到一个新的MATLAB变量。

您还可以编写MATLAB脚本来创建新的信号和新的参数结构,以及使用bang命令保存数据和执行批处理运行().

有关运行模拟和可用命令行选项的详细信息,请参见运行快速模拟。有关快速模拟批处理脚本的示例,请参见示例运行批处理模拟而不重新编译生成的代码

运行快速模拟

快速模拟

使用RSim目标,您可以一次性构建一个模型,并运行多个仿真来研究不同参数设置和输入信号的影响。您可以直接从操作系统命令行运行模拟,使用bang(!)字符从MATLAB命令行重定向命令,或者从脚本执行命令。

从操作系统命令行,使用

rtwdemo_rsimtf

从MATLAB命令行,使用

rtwdemo_rsimtf !

下表列出了可以使用RSim目标命令行选项来控制模拟的方法。

…… 使用……
从MAT文件(而不是用于上一次模拟的MAT文件)读取From文件块的输入数据

模型- foldfilename.mat =newfilename.mat

打印RSim可执行目标选项的摘要 可执行文件名- h
从mat文件中读取import块的输入数据 模型-我文件名.mat
暂停后n时钟时间秒,哪里n是正整数吗 模型- ln
将mat文件日志记录数据写入文件文件名.mat 模型- o文件名.mat
从文件中读取参数向量文件名.mat 模型- p文件名.mat
对于外部模式,覆盖默认TCP端口(17725) 模型- portTCPport
将mat文件日志记录数据写入之前模拟中使用的mat文件以外的mat文件 模型- toldfilename.mat =newfilename.mat
运行模拟直到时间值stoptime达到 模型- tfstoptime
以verbose模式运行 模型- v
等待Simulink引擎以金宝app外部模式启动模型 模型- w

下面几节将使用rtwdemo_rsimtf示例模型举例说明其中一些命令行选项。在每种情况下,本例假设您已经完成了以下操作:

  • 已创建或更改为工作文件夹。

  • 打开示例模型。

  • 复制数据文件matlabroot/工具箱/ rtw / rtwdemos / rsimdemos / rsim_tfdata.mat到您的工作文件夹。可以使用该命令执行该操作。

    拷贝文件(fullfile (matlabroot“工具箱”,“环球套票”、“rtwdemos”,…“rsimdemos”、“rsim_tfdata.mat”),pwd);

运行快速模拟的要求

以下要求适用于固定和可变步长可执行文件。

  • 您必须在配置为运行MATLAB的计算机上运行RSim可执行文件。此外,RSim.exe文件必须能够访问此计算机上的MATLAB和Simulink安装文件夹。要获得该访问权限金宝app,PATH环境变量必须包括/bin和/bin/($ARCH),其中($ARCH)表示您的操作系统体系结构。例如,对于在Windows平台上运行的个人计算机,($ARCH)是“win64”,而对于Linux计算机,($ARCH)是“glnxa64”。

  • 在GNU®Linux®为了运行RSim可执行文件,定义LD_LIBRARY_PATH环境变量来提供MATLAB安装文件夹的路径,如下所示:

    % setenv LD_LIBRARY_PATH /matlab/sys/os/glnx64:$LD_LIBRARY_PATH

  • 苹果打印机共享要运行RSim目标可执行文件,必须定义环境变量DYLD_LIBRARY_PATH要包含文件夹bin / macsys /操作系统/ mac在MATLAB安装文件夹下。例如,如果您的MATLAB安装在MATLAB /,添加/ MATLAB / bin / mac/ MATLAB / sys / mac os /定义为DYLD_LIBRARY_PATH

为快速模拟设置时钟时间限制

如果模型经历频繁的零交叉,并且模型的小步长很小,考虑为快速模拟设置一个时间限制。要设置时间限制,请指定- l选项的正整数值。在运行指定的时钟时间(不是模拟时间)后,模拟将中止。例如,

! rtwdemo_rsimtf - l 20

根据您的时钟,在可执行文件运行20秒后,程序终止。您将看到类似于以下内容之一的消息:

  • 在微软Windows平台上,

    退出程序,时间限制超过记录可用数据…
  • 在Open Group UNIX上®平台,

    **退出模型'vdp' @ Fri jul25 15:43:23 2003

使用此选项不需要对模型或其配置进行任何操作。

覆盖模型仿真停止时间

上的“配置参数”对话框中指定的时间,在默认情况下,快速模拟将一直运行到模拟时间解算器窗格。控件可以覆盖模型模拟停止时间- tf选择。例如,下面的模拟运行到时间达到6.0秒。

!rtwdemo_rsimtf-tf6.0

RSim目标停止并使用mat文件数据日志规则记录输出数据。

如果模型包含“从文件”块,模拟的结束将由“配置参数”对话框中指定的停止时间设置来调节解算器窗格,或使用RSim目标选项- tf。忽略块的时间向量中的值。但是,如果模拟时间超过时间和信号矩阵的端点(如果最终时间大于数据矩阵的最终时间值),则信号数据外推到最终时间值。

读取参数矢量到快速模拟

要将模型参数向量读入快速模拟,必须首先创建一个mat -文件,该文件包含如下所述的参数结构创建一个包含模型参数结构的mat文件。然后,您可以在命令行中使用- p选择。

例如:

  1. 为示例模型构建一个RSim可执行文件rtwdemo_rsimtf

  2. 修改模型中的参数并保存参数结构。

    param_struct = rsimgetrtp (“rtwdemo_rsimtf”);保存myrsimdata.matparam_struct
  3. 使用新参数集运行可执行文件。

    ! rtwdemo_rsimtf - p myrsimdata.mat
    ** start model 'rtwdemo_rsimtf' @ Tue Dec 27 12:30:16 2005垫* *
  4. 输入以下命令,加载工作区变量并绘制仿真结果:

    负载myrsimdata.mat情节(rt_yout)

指定从文件块的新信号数据文件

如果模型的输入数据源是从文件块,您可以在模拟期间从单个mat文件向块提供输入数据,或者您可以将mat文件从一个模拟更改为下一个模拟。每个mat文件必须遵循为From文件块创建一个MAT-File

要在初始模拟之后更改mat -文件,可以使用- f选择和一个oldfile.mat =newfile中.mat参数,如下例所示。

  1. 在MATLAB工作空间中设置一些参数。例如:

    w = 100;θ= 0.5;
  2. 为示例模型构建一个RSim可执行文件rtwdemo_rsimtf

  3. 运行可执行文件。

    rtwdemo_rsimtf !

    RSim可执行文件运行一组模拟,并创建包含特定模拟结果的输出mat文件。

  4. 输入以下命令,加载工作区变量并绘制仿真结果:

    负载rtwdemo_rsimtf.mat情节(rt_yout)

    结果图显示基于默认输入数据的模拟结果。

  5. 创建一个新的数据文件,newfrom.mat,其中包括以下数据:

    t = [0: .001:1];u =罪(100 * t。* t);你= (t, u);保存newfrom.mat
  6. 控件使用新数据运行快速模拟- f选项替换原始文件,rsim_tfdata.mat,newfrom.mat

    ! rtwdemo_rsimtf - f rsim_tfdata.mat = newfrom.mat
  7. 输入以下命令,加载数据并绘制新的结果:

    负载rtwdemo_rsimtf.mat情节(rt_yout)

    下一个图显示了结果图。

From File块需要类型为的输入数据。如果需要导入非数据类型的信号数据,使用一个导入块(参见为输入块创建MAT文件)或带有指定为结构的数据的From Workspace块。

工作区数据的格式必须为:

变量。时间变量。信号.价值观

如果您有多个信号,请使用以下格式:

变量。时间变量。信号(1).values variable.signals(2).values

为导入块指定信号数据文件

如果模型的输入数据源是一个import块,则可以在模拟期间从单个mat文件向该块提供输入数据,或者可以将mat文件从一个模拟更改为下一个模拟。每个mat文件必须遵循下列三种格式之一为输入块创建MAT文件

要在模拟之后指定mat -文件,可以使用-我选项和包含输入数据的mat文件的名称。例如:

  1. 打开模型rtwdemo_rsim_i

  2. 检查导入块参数设置。为工作区变量指定的以下导入块数据参数设置和规范必须匹配mat -文件中的设置,如配置导入以提供仿真源数据

    • 主要>插入数据

    • 信号的属性>港维

    • 信号的属性>数据类型

    • 信号的属性>信号类型

  3. 构建的模型。

  4. 设置输入信号。例如:

    t =(0:0.01:2 *π)';s1 = [2 * sin (t) 2 * cos (t));s2 =罪(2 * t);s3 = [0.5 * sin (3 * t) 0.5 * cos (3 * t)];图(t, [s1 s2 s3])

  5. 使用中描述的三种可用的文件格式之一准备mat文件为输入块创建MAT文件。下面的示例在工作区中定义了一个信号和时间结构并为其命名var_single_struct

    t=[0:0.1:2*pi];var_single_struct.time=t;var_single_struct.signals(1).值(:,1)=2*sin(t);var_single_struct.signals(1).值(:,2)=2*cos(t);var_single struct.signals(2*t);var_single struct.signals(3).值(:,1)=0.5*sin(3*t);var_struct...var_single_struct.signals (2) . values...var_single_struct.signals (3) . values);
  6. 保存工作区变量var_single_struct对MAT-filersim_i_single_struct

    保存rsim_i_single_struct.matvar_single_struct
  7. 控件使用输入数据运行快速模拟-我选择。加载并绘制结果。

    ! rtwdemo_rsim_i我rsim_i_single_struct.mat
    **启动模型'rtwdemo_rsim_i' @ Tue Aug 19 10:26:53 2014 *** rsim_i_single_struct。垫子加载成功!*** **创建了rtwdemo_rsim_i。垫* *** Execution time = 0.02024185130718954s
  8. 加载并绘制结果。

    负载rtwdemo_rsim_i.mat情节(rt_tout rt_yout);

更改RSim模拟的块参数

中描述的创建一个包含模型参数结构的mat文件,在更改Simulink块图中的一个或多个参数后,可以提取参数向量,金宝app模型_P,用于整个模型。然后可以将参数向量以及模型校验和保存到mat文件中。这个mat文件可以由独立的RSim可执行文件直接读取,允许您替换整个参数向量或单个参数值,以便研究表示系数的参数值的变化,以及输入信号的新数据,等等。

RSim可以读取mat文件并替换整个模型_P结构,而无需重新编译整个模型。

例如,假设您更改了模型中的一个或多个参数,生成了新的模型_P向量,并保存模型_P转到一个新的mat文件mymatfile.mat。运行相同的程序rtwdemo_rsimtf模型和使用这些新的参数值,使用- p选项,如下例所示:

! rtwdemo_rsimtf - p mymatfile.mat负载rtwdemo_rsimtf情节(rt_yout)

如果已将参数结构转换为单元阵列,以便在不同的数据集上运行模拟,请参见转换参数结构运行模拟变化的数据集,你必须加一个nmat文件规范的后缀。n是单元格数组的元素,其中包含要用于模拟的特定输入。

下面的示例转换param_struct,更改参数值,并将更改保存到MAT-filemymatfile.mat,然后使用单元格数组的第二个元素中的参数值作为输入运行可执行文件。

param_struct = rsimgetrtp (“rtwdemo_rsimtf”);param_struct = rsimsetrtpparam (param_struct 2);param_struct.parameters {1}
ans = dataTypeName: 'double' datatype: 0 complex: 0 dtTransIdx: 0 values: [-140 -4900 0 4900] map: [] structParamInfo: []
param_struct.parameters{2}。价值观=[-150 -5000 0 4950]; savemymatfile.matparam_struct! rtwdemo_rsimtf - p mymatfile.mat@2 -o rsim2.mat

为模拟指定新的输出文件名

如果您指定了一个或多个保存到工作空间参数- - - - - -时间输出,或最终状态—在“配置参数”对话框中,单击数据导入/导出窗格中,默认是将模拟日志记录结果保存到文件中模型.mat。例如,示例模型rtwdemo_rsimtf通常将数据保存到rtwdemo_rsimtf.mat,如下所示:

rtwdemo_rsimtf !创建rtwdemo_rsimtf.mat

属性可以为数据日志指定新的输出文件名- o选项。

!rtwdemo_rsimtf-o rsim1.mat

在本例中,运行代码生成时提供的参数集,包括From File块数据参数。

为文件块指定新的输出文件名

与指定新的系统输出文件名的方法基本相同,还可以为保存在一个或多个To file块中的数据提供新的输出文件名。为此,在代码生成时使用新名称指定原始文件名,如下面的示例所示:

! rtwdemo_rsimtf - t rtwdemo_rsimtf_data.mat = mynewrsimdata.mat

在本例中,假设原始模型将数据写入输出文件rtwdemo_rsimtf_data.mat。指定一个新的文件名将强制RSim写入该文件mynewrsimdata.mat。使用这种技术,您可以避免覆盖现有的模拟运行。

在快速仿真期间交互式调整参数

RSim系统目标文件旨在让您以尽可能快的速度运行批处理模拟。使用该系统目标文件和可调参数数据结构的可变步长或固定步长求解器,无论您是否设置默认参数行为可调内联,可创建多个参数集。您可以使用生成的可执行程序(Windows上的.exe)运行数据集。可执行程序的每次调用都允许指定用于结果的文件名。

对于这个示例,默认参数行为被设置为内联。模型将工作区变量声明为可调参数。使用RSim系统目标文件默认参数行为设置为可调,并且不显式声明可调参数,请参阅运行批处理模拟而不重新编译生成的代码

打开示例模型

打开示例模型rtwdemo_rsim_param_tuning

开放式系统(“rtwdemo_rsim_param_tuning”);

该模型使用RSim目标和rsimgetrtp函数允许向非实时可执行文件传递新数据,而不需要重新编译Simulink模型。金宝app该特性允许您获取模型中声明的可调参数的映射,并将其保存在mat文件中。然后,您可以创建自己的MATLAB GUI或独立的GUI(独立于MATLAB)来读取和写入mat文件,并重新运行可执行文件以生成新的输出文件。

在模型中,按顺序双击按钮以运行示例。

要查看用于创建MATLAB图形界面和独立图形界面的代码,请双击视图MATLAB程序按钮。

有关更多信息,请参见使用RSim系统目标文件在主机上加速、优化和测试混合动态系统

快速仿真目标局限性

RSim目标有以下限制:

  • 不支持代数循环。金宝app

  • 不支持金宝app解释MATLAB函数块。

  • 不支持非线性MAT金宝appLAB语言或Fortran s函数。

  • 如果RSim构建包含引用模型(通过使用模型块),设置这些模型以使用固定步长解算器为其生成代码。但是,顶部模型可以使用可变步长解算器,只要参考模型中的块是离散的。

  • 在某些情况下,更改块参数可能导致对模型的结构更改,从而更改模型校验和。这种改变的一个例子是改变DSP仿真中的延迟数。在这种情况下,您必须重新生成模型的代码。

相关的话题