主要内容

将信号数据映射到根输入端口

导入数据后,通过选择映射模式和选项,选择数据,将信号数据映射到根输入端口。

有关使用根导入映射器工具所涉及的其他步骤的摘要,请参见导入和映射工作流

选择映射模式

要将信号数据映射到根级端口,请使用根导入映射器工具条的“映射到模型”部分中的其中一种映射模式。从工具条中选择的映射模式,例如块名称港顺序,在MATLAB之间进行维护®会话和模型。您不必每次要将信号数据映射到根输入端口时都选择映射模式。

目标 地图模式

根据root-inport块的名称为端口分配信号。如果信号或总线元素的名称与根输入端口块的名称匹配,则将数据映射到相应的端口。

块名称

根据根输入端口块的块路径为端口分配信号。如果信号的块路径与root-inport块路径相匹配,则将数据映射到对应的端口。

块路径

根据端口上的信号名称为端口分配信号。如果数据元素的信号名称与端口上的信号名称相匹配,则将该信号映射到相应的端口。

信号的名字

为导入的数据按顺序分配端口号,从1开始。将信号映射到相应的输入端口。

如果数据多于输入端口,则将剩余数据映射为启用并触发输入端口。

如果数据不是数据集的形式,则按其在数据文件中出现的顺序处理。

港顺序

根据自定义文件中的定义为端口分配信号。若要创建自定义映射模式,请参见创建和使用自定义地图模式

自定义

设置映射选项

如果要设置映射选项,请在根导入映射器工具条上的“映射到模型”部分中单击选项.从工具条中选择的选项,例如更新模型允许部分,在MATLAB会话和模型之间进行维护。您不必每次要将信号数据映射到根导入时都选择该选项。

要绘制信号,请参见地图数据

目标 选项

更新模型并检查根级输入端口和导入数据的数据类型。

更新模型.将信号数据和输入端口参数与根端口进行比较,并显示结果。如果不选择此选项,该工具将导入的数据映射到根级输入端口,但不更新模型。

在从电子表格映射数据时使用强数据类型。

在电子表格中使用强数据类型.清除此复选框以允许根导入映射器工具自动将电子表格输入信号转换为相应根导入的数据类型。根导入映射器工具只能将电子表格数据转换为以下数据类型:int8uint8int16uint16int32uint32.如果选中此复选框,或者根输入端口不是这些数据类型之一,则可能会收到数据类型不匹配错误。

导入仅部分定义的总线数据。

允许部分.确认您导入的任何部分指定的总线数据都正确地映射到根级输入端口。

识别未分配的根输入端口并检测不完整的输入数据集。

遗失信号通知.显示缺少信号的输入。

选择要映射的数据

控件上的向下箭头,指定要映射的场景子集映射到模型按钮。您可以根据不同的场景选择不同的映射方式。

目标 选项

映射所有场景数据集(默认)。

映射所有

映射“场景数据集”部分中当前选择的场景的数据集。

地图选择

映射断开连接的数据集。

地图无关

映射以前映射失败的数据集。

映射失败

地图数据集以前引起警告。

地图警告

地图数据

导入信号或总线后,可以映射数据。

  1. 在“根导入映射器”工具栏中,单击映射到模型

    信号映射的结果显示在场景数据集选项卡。

  2. 在FILE部分中,单击一个数据集以查看映射结果

    • 模拟准备部分列出输入数据和映射的状态。

      请注意

      看到了解映射结果

    • 输入数据的映射定义应用于模型。

在您保存并关闭模型之后,当您将相同场景的输入数据加载到工作区中时,模型将使用为该场景定义的映射。

有关将信号数据映射到根级输入的示例,请参见将集束驱动的模型转换为使用无集束的外部输入

保存模型的映射定义之后,就可以自动加载数据了。有关更多信息,请参见加载映射数据的可选工作流

了解映射结果

完成导入和映射过程后,模拟准备节在状态区域中显示结果。结果取决于您是否选择更新模型选项。

状态 更新模型 不更新模型继续

映射数据和输入端口的属性适合于模拟。

数据和输入端口的数据类型、维度和信号类型属性是兼容的。

不适用

比较数据和根级端口数据类型、维数和信号类型属性不能确定是否存在匹配。如果在映射之前不更新模型,那么除非显式地指定输入端口数据类型,否则工具无法评估是否所有数据类型都匹配。确认您正确地设置了这些块参数:

轮廓尺寸块参数数据类型未设置为继承:汽车

轮廓尺寸块参数未设置为-1

轮廓尺寸块参数信号类型不能汽车

映射数据和输入端口的属性不适合模拟。

信号数据的一个或多个数据类型、维度或信号类型与根级输入端口不兼容。

为了使模型能够模拟,如果Root Inport Mapper没有找到要映射的输入端口信号,它将这些输入端口映射到地面,并将映射的信号显示为空([]).

该图显示了映射成功、失败和地面分配。如果存在问题,状态列将显示建议的解决方案。万博 尤文图斯通读并诊断问题。

有时,模拟准备节显示警告或错误,但对元素的研究表明数据映射没有问题。在这些情况下,如果您没有选择更新模型复选框中的选项菜单,选择它并单击映射到模型一次。

在“根导入映射器”工具中,单击模拟评分选择输入中的复选框。数据导入/导出窗格中的模型配置参数对话框。它还将该值设置为导入的数据变量。若要将更改应用于模型配置,请在数据导入/导出窗格中,单击好吧

如果您的模型使用配置引用来引用配置集,则不能将模型标记为模拟。要使用此数据来模拟使用根导入映射器工具的模型,首先使用model Explorer激活一个配置集。

中模型的模型配置的更改的应用地图数据

您可以通过以下方式查看已导入的数据:

  • 将输出连接到范围,模拟模型,并观察数据。

  • 记录信号并使用模拟数据检查器工具观察数据。

为了突出轮廓尺寸块中与该信号相关联的项时,选择模拟准备部分。所选的轮廓尺寸方块用蓝色勾勒。

请注意

当输入是总线时,单击总线对象的级别以查看总线中的各个元素。

将集束驱动的模型转换为使用无集束的外部输入

这个例子展示了如何将使用Signal Builder块作为输入的集束模型转换为具有根导入的无集束模型。该示例从控制模型收集数据,并将其存储在无控制模型的mat文件中。在存储数据之后,该示例将从控制模型中删除Signal Builder块,并添加根导入以创建无控制模型。然后,mat文件中的数据被映射到模型的根导入。

将线束数据保存到mat文件

在将模型转换为无约束之前,收集约束中的测试用例。

对于本例,修改模型sldemo_autotrans自动变速器控制器建模的例子。

打开示例模型。

导出信号构建块组

从“信号生成器”窗口导出定义“信号生成器”块信号组的数据到mat文件。导出格式为Simulink.SimulationData的Signal Builder信号数据。万博1manbetx数据集,到mat文件,打开信号生成器窗口并选择文件>出口数据>对MAT-File.在对话框中,输入mat文件的名称,以包含要导出的数据和组的编号。在本例中,文件名为slexAutotransRootInportPassingManeuver.mat通过机动组的组号为1。

移除信号构建块

移除名为机动gui的信号构建器块,并用两个导入替换它。

  1. 删除名为机动gui的信号构建器块。

  2. 万博1manbetxSimulink/常用块库中,将两个导入块拖到模型中。

  3. 将输入端口连接到先前连接到Signal Builder块的线路上。

  4. 重命名导入端口。命名与Throttle线连接的输入端口节气门.命名连接到BrakeTorque线的输入端口刹车

将模型另存为slexAutotransRootInportsExample1.slx或者举个例子slexAutotransRootInportsExample.slx

本例的其余步骤使用该模型slexAutotransRootInportsExample.slx.如果您使用不同的名称保存模型,请在后续步骤中使用您的模型名称。

设置无控制输入

现在模型是不受控制的,设置已经保存的输入(参见“将控制数据保存到MAT-Files”)。

在Modeling选项卡中,选择Model Settings。在“数据导入/导出”窗格中,单击连接输入按钮。

将信号映射到根输入

根导入映射器工具打开。

该示例使用该工具从mat文件设置模型输入,并基于映射算法将这些输入映射到输入端口。要选择包含输入数据的mat文件,请单击从MAT-File“根导入映射器”工具栏上的按钮。当链接对话框出现时,单击Browse按钮。在浏览器中,选择前面保存的mat文件。

选择映射模式

当您选择mat文件时slexAutotransRootInportPassingManeuver.mat,确定要将输入数据发送到的根输入端口。万博1manbetxSimulink根据以下五个标准之一匹配输入数据和输入端口:

  • 港顺序—按照文件中出现的顺序映射到相应的端口号。

  • 块名称—根据变量名映射到对应的根导入,并使用匹配的块名。

  • 信号的名字-通过变量名映射到对应的根输入,并使用匹配的信号名。

  • 块路径—通过BlockPath参数映射到对应的根导入和匹配的块路径。

  • 自定义-地图使用MATLAB函数。

在本例的前面,您将输入数据保存到与线束信号Throttle和Brake同名的变量中,并添加了名称与变量匹配的输入端口。给定输入数据和模型输入端口的条件集,映射标准的最佳选择是块名称.使用这个标准,Simulink尝试将输入数万博1manbetx据变量名与输入端口名匹配。选择此选项:

  1. 单击块名称单选按钮。

  2. 单击选项按钮并选择更新模型.这将验证映射。

  3. 单击地图按钮。

在编译数据时,Simulink根据以下标准评估导入万博1manbetx,以确定兼容性问题。这种兼容性的状态由表的颜色绿色、橙色或红色反映。用诊断消息标记警告和错误。如果选项>更新模型选项未选中,根导入映射器通过评估这些块参数和分配的信号来确定兼容性状态:

  • 数据类型—Double, single, enum, ....

  • 复杂性-真实或复杂

  • -信号尺寸vs端口尺寸

最后确定模型的输入

检查映射兼容性的结果。在场景数据集列表中单击场景数据集“PassingManeuver”。如需准备模拟,请单击模拟评分.此操作将映射变量应用到配置参数数据导入导出>外部输入文本框中。如果此文本框有内容,则会覆盖该文本框。

模拟模型

应用更改后,您现在可以模拟模型并查看结果。运行模型。要查看模拟的结果,双击作用域块PlotResults

加载映射数据的可选工作流

在将映射定义保存到模型之后,您可以自动加载数据和模拟数据。考虑以下方法之一。

命令行或脚本

要从MATLAB命令行加载数据并模拟模型,请使用类似于以下命令:

负载(“signaldata.mat”);Simout = sim('model_name');

为了自动化测试和加载不同的信号组,可以考虑使用脚本。

下面的示例代码在加载每个信号组后创建时间序列数据并模拟模型。它:

  • 创建具有变量名的信号组三机一体In2,In3,并将这些变量保存到mat文件中。

  • 加载每个信号组后模拟一个模型。

请注意

中的导入数据变量名称必须匹配配置参数>数据导入/导出>输入参数。

%创建信号组fileName = 'testCase';创建时间序列数据var1 = timeseries(rand(10,1));Var2 =时间序列(rand(10,1));Var3 =时间序列(rand(10,1));%创建数据集ds = Simulink.Sim万博1manbetxulationData.Dataset();Ds = Ds。addElement(var1, 'var1');Ds = Ds。addElement(var2, 'var2');Ds = Ds。addElement( var3, 'var3'); % Save the data save([fileName '_' num2str(k) '.mat' ],'ds'); end clear all % After mapping and saving the model loop over signal groups and simulate % Set the filename to append testcase # to fileName = 'testCase'; % Loop backwards to preallocate for k=3:-1:1 % Load the MAT-file. load([fileName '_' num2str(k) '.mat']); % Simulate the model simOut{k} = sim('model_name'); end

使用PreLoadFcn模型回调

当您对数据和映射感到满意时,您可以配置您的模型,将包含信号组的mat文件加载到MATLAB工作空间中。调用负载PreLoadFcn模型的回调。

  1. 保存mat文件后,在建模选项卡,单击模型设置下拉并选择模型属性

  2. 在模型属性窗口中,选择回调TAB,然后是PreLoadFcn节点。

  3. 输入命令加载包含信号数据的mat文件。例如:

    加载d_signal_data.mat;
  4. 点击好吧并保存模型。

相关的例子

更多关于