主要内容

利用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文件中的数据,以符合模型预期输入的内容。接收数据的Inport块的输入数据特征和规范必须匹配。

关于调整这些参数和创建与导入块一起使用的mat文件的详细信息,请参见为导入块创建一个MAT-File.有关前面块参数的描述,请参阅块描述inport.

配置和建立快速仿真模型

确定快速模拟需求后,为快速模拟配置模型。

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

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

  3. 为快速模拟需求设置RSim目标配置参数。

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

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

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

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

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

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

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

    有关与之兼容的编译器的更多信息金宝app仿真软件编码器™产品,请参阅选择和配置C或c++编译器模板makefiles并制作选项

设置快速仿真输入数据

关于快速模拟数据设置

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

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

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

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

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

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

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

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

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

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

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

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

参数结构包含以下信息。

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

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

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

param_struct = rsimgetrtp('RTWDEMO_RSIMTF'
param_struct = modelChecksum:[1.7165E + 009 2.0726E + 009 2.6061C + 009 2.3064E + 009]参数:[1x1 struct]

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

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

保存myrsimdemo.matparam_struct

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

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

将结构转换为单元格数组:

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

    param_struct = rsimgetrtp('RTWDEMO_RSIMTF');

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

  2. 使用的函数rsimsetrtpparam展开结构,使其包含更多参数集。在本例中,再创建两个参数集(总共三个参数集)。

    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. 使用的函数rsimsetrtpparam展开结构,使其包含更多参数集。在本例中,再创建两个参数集(总共三个参数集)。

    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. 更改变量的值w72.75.

    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-File

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

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

格式 描述
一次/数据矩阵
  • 最不灵活的。

  • 一个变量。

  • 两个或更多.列数必须等于所有root Inport块的尺寸的总和加1.第一列必须包含单调上增加的时间点。其他列包含对应于给定行中的时间点的数据点。

  • 数据的类型

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

信号和时间结构
  • 比单一的时间/数据矩阵格式更灵活。

  • 一个变量。

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

  • 如果是时间字段设置为空值时,则清除inport.内插数据参数。

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

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

每端口结构
  • 最灵活的

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

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

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

  • 如果是时间字段设置为空值时,则清除inport.内插数据参数。

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

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

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

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

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

  1. 选择前面的数据文件格式之一。

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

    缺省情况下,import块从下游块继承参数设置。要从外部mat -文件导入数据,显式设置以下参数以匹配mat -文件中的源数据。

    • 主要>内插数据

    • 信号的属性>港维

    • 信号的属性>数据类型

    • 信号的属性>信号类型

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

    有关前面块参数的描述,请参阅块描述inport.

  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];

    信号和时间结构

    t =(0:0.1:2 *π)';var_single_struct.time = t;var_single_struct.signals (1) . values (: 1) = 2 * sin (t);var_single_struct.signals (1) . values (:, 2) = 2 * cos (t);var_single_struct.signals (2) . values =罪(2 * t);var_single_struct.signals (3) . values (: 1) = 0.5 * sin (3 * t);var_single_struct.signals (3) . values (:, 2) = 0.5 * cos (3 * t);v = [var_single_struct.signals (1) . values...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

    信号和时间结构

    以下示例保存工作区结构变量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.mat.Inb1;保存rsim_i_multi_struct.mat.Inb2附加;保存rsim_i_multi_struct.mat.政府间附加

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

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

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

RSIM目标是用于批处理模拟,其中参数和输入信号因多种仿真而变化。新的输出文件名允许您在不覆盖先前仿真结果的情况下运行新模拟。您可以通过创建一系列模拟来创建一个。蝙蝠文件用于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文件中读取From File块的输入数据,而不是前面模拟中使用的mat文件

模型-Foldfilename.mat =newfilename。垫

打印RSim可执行目标选项的摘要 可执行文件名-H
从mat文件中读取import块的输入数据 模型-一世文档名称。垫
时间后n时钟时间秒,哪里n是一个积极的整数值 模型-L.n
将mat文件日志记录数据写入文件文档名称。垫 模型-O文档名称。垫
从文件中读取参数向量文档名称。垫 模型-P.文档名称。垫
对于外部模式,覆盖默认TCP端口(17725) 模型- portTCPport
将mat文件日志记录数据写入之前模拟中使用的mat文件以外的mat文件 模型-T.oldfilename.mat =newfilename。垫
运行模拟直到时间值stoptime到达了 模型- tfstoptime
以verbose模式运行 模型-v.
等待Simulink引擎在金宝app外部模式下启动模型 模型-W.

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

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

  • 打开示例模型。

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

    拷贝文件(fullfile (matlabroot.,'工具箱','rtw','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

  • 苹果Macintosh OS X要运行RSim目标可执行文件,必须定义环境变量dyd_library_path.要包含文件夹箱/麦克海SYS / OS / MAC在MATLAB安装文件夹下。例如,如果您的MATLAB安装在MATLAB /,添加/ matlab / bin / mac/ MATLAB / sys / mac os /定义为dyd_library_path.

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

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

!RTWDEMO_RSIMTF -L 20

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

  • 在Microsoft Windows平台上,

    退出程序,时间限制超过记录可用数据…
  • 在开放组Unix上®平台,

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

您无需对您的模型或其配置执行任何操作以使用此选项。

覆盖模型仿真停止时间

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

! rtwdemo_rsimtf - tf 6.0

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

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

将参数向量读入快速模拟中

要将模型参数矢量读取到快速仿真中,您必须首先创建一个包含参数结构的MAT文件,如下所示创建一个包含模型参数结构的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中。垫参数,如下例所示。

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

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

  3. 运行可执行文件。

    rtwdemo_rsimtf !

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

  4. 加载工作区变量并通过输入以下命令绘制模拟结果:

    负载rtwdemo_rsimtf.mat情节(rt_yout)

    结果图显示了基于默认输入数据的仿真结果。

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

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

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

    负载rtwdemo_rsimtf.mat情节(rt_yout)

    下一个图显示了结果图。

From File块需要类型为的输入数据.如果需要导入非数据类型的信号数据,使用Inport块(见为导入块创建一个MAT-File)或从工作空间块中指定为结构的数据。

工作区数据必须采用以下格式:

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

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

变量.Time变量.Signals(1).values变量。标记(2).values

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

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

要在模拟之后指定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-File.下面的示例在工作区中定义了一个信号和时间结构并为其命名var_single_struct.

    t =(0:0.1:2 *π)';var_single_struct.time = t;var_single_struct.signals (1) . values (: 1) = 2 * sin (t);var_single_struct.signals (1) . values (:, 2) = 2 * cos (t);var_single_struct.signals (2) . values =罪(2 * t);var_single_struct.signals (3) . values (: 1) = 0.5 * sin (3 * t);var_single_struct.signals (3) . values (:, 2) = 0.5 * cos (3 * t);v = [var_single_struct.signals (1) . values...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)

如果已将参数结构转换为用于在不同数据集上运行模拟的单元格数组,如图所示转换用于在不同数据集上运行模拟的参数结构,你必须加一个n垫子文件规范的后缀。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

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

如果您指定了一个或多个保存到工作空间参数- - - - - -时间状态输出, 或者最终状态—在“配置参数”对话框中,单击数据导入/导出窗格,默认值是将仿真日志记录结果保存到文件中模型。垫.例如,示例模型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.

open_system ('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仿真中的延迟数。在这种情况下,您必须重新生成模型的代码。

相关话题