总线信号:保存和加载

45视图(30天)
毫米”class=
毫米 2019年6月27日
评论道: 莎拉Nadeau 2019年7月5日
我有一个仿真软件模万博1manbetx型,我想节省总线信号加载到另一个仿真软件模型。我没有保存总线信号的问题(我认为)但我不能得到总线信号加载在另一个文件中。我已经做了一个简单的例子(见附件)了解我想做什么。test_bus_save保存信号:)我想在test_bus_load加载信号。
我做错了什么?有可能拯救一个总线信号加载到另一个模型?
在我的示例中我想把信号空间,但在现实中,我只是想在另一个模型使用的数据信号。但问题是与加载总线信号。
我使用Matlab 2016 b和2018 b (2018 b)创建的文件

答案(7)

莎拉Nadeau”class=
莎拉Nadeau 2019年6月27日
当我试着连接模型,我得到一个错误的输出数据类型设置从文件块。使用这个日志/加载总线数据的方法,你需要一个 万博1manbetxSimulink.Bus 对象使用的数据类型规范从文件块。然后,您可以从文件块的输出数据类型设置为总线:myBus和加载数据。
如果你获得R2019a,你可以加载总线数据不需要一个仿真软件。万博1manbetx总线对象使用 在公共汽车元素 块。

毫米”class=
毫米 2019年6月28日
我看到我上传文件错误的配置。我上传一个新的。但这并不奏效。
我真的不知道你是什么意思的仿真软件。万博1manbetx总线链接。我应该使用另一个块加载仿真软件(和/或保存)?万博1manbetx

莎拉Nadeau”class=
莎拉Nadeau 2019年6月28日
嗨,马克,
你正在做正确的事与记录总线数据。那块往往是有点容易装载总线仿真软件中的数据。万博1manbetx
与任何加载块,包括文件和轮廓尺寸块,你需要告诉什么样的数据块。因为公共汽车是灵活,为了总线数据加载,你需要有一个规范的加载块应该期望发现在公共汽车上你加载。
幸运的是,有一些辅助函数来创建这个总线对象容易,当你想要从另一个模型加载总线数据记录。您可以使用 万博1manbetxSimulink.Bus.createObject 函数创建一个模型。万博1manbetx规范校车你test_bus_load登录。
busInfo = 万博1manbetxSimulink.Bus.createObject (“test_bus_save”,“test_bus_save /总线的创造者”);
返回的是一个结构数组(标量,在这种情况下,因为我们只通过一个街区的名字)和一个字段块处理(块)和仿真软件的名称。万博1manbetx总线对象规范(busName)。当你不使用默认名称名称slBus1总线信号的模型,如果你的名字总线信号,仿真软件。万博1manbetx使用此函数创建的总线规范需要相同的名称。
你可以保存这个模型。万博1manbetx总线规范文件和规范加载到基本工作空间使用模型的回调模型加载公共汽车。不管你使用什么策略,模型加载总线数据需要访问相应的仿真软件。万博1manbetx总线对象。
当你指定的输出数据类型从文件块,使用仿真软件的名称。万博1manbetx总线对象,而不是变量的名称包含总线数据的结构。在这种情况下,你会进入公共汽车:slBus1。
如果你看看Simulink.Bus创建的总线对象。万博1manbetxcreateObject函数,您将看到它包含 万博1manbetxSimulink.BusElement 对象指定为每个总线元素属性,包括名称和数据类型。
我希望这可以帮助!

毫米”class=
毫米 2019年7月2日
编辑:毫米 2019年7月2日
你好,萨拉,
谢谢你的帮助。我试着做(或理解)你所说的,但我不能让它工作。你能帮我做一个例子让我明白你的意思吗?
我也有R2019a但prefferably R2018b(或降低)与高校由于兼容性的原因。

莎拉Nadeau”class=
莎拉Nadeau 2019年7月2日
嗨,马克,
没问题,我附加一个修改版本的示例模型加载总线数据显示如何创建模型。万博1manbetx总线对象,并使用它来定义的数据类型的文件块。我添加了代码和解释的必要步骤PreLoadFcn回调模型。回调到模型,模型浏览器单击按钮(只是为了模型的正确配置的目的(齿轮)按钮)。在模型浏览器的最右边部分,点击“回调”选项卡,然后你应该看到,我添加了PreLoadFcn回调。当您加载模型,它执行代码。
我解释了两种不同的策略来创建模型。万博1manbetx总线对象,这取决于你好的记录总线结构的数据加载到工作区。策略,不加载数据到工作区中需要一行代码运行之前在命令窗口中打开模型,使其执行回调。这个方法的代码被注释掉了,所以回调的“活跃”战略将数据从文件加载到工作区并创建模型。万博1manbetx基于记录的结构总线的总线对象数据。我建这个示例假设您已经运行日志总线数据的模型,所以mat-file已经存在的道路。
如果你可以加载数据到工作区中,您还可以使用一个root尺寸块加载数据总线。我添加了一个模型为例,如果这对你会有帮助。
我认为 这个话题 可能有助于解释模型的概念。万博1manbetx总线对象更多,尽管它并没有特别提到我们使用用例,这是加载总线数据作为外部输入。基本上,仿真软件。万博1manbetx总线对象描述数据的“形状”,和结构提供了数据本身。
我希望这可以帮助。请让我知道如果你有任何问题或如果不为你工作。

毫米”class=
毫米 2019年7月2日
你好,萨拉,
谢谢你的文件。我见过的回调代码,它喜欢你上传。我已经运行 test_bus_save.slx 首先 test_bus_input.mat 被创建。但是当我打开文件( test_bus_load_with_busobj 我得到这个错误:
模型负载1明确
04:30点时间:0.518秒
错误评估的PreLoadFcn调block_diagram“test_bus_load_with_busobj”。
回调字符串是%如果你不想总线数据装载到基本工作空间,您可以创建一个基于总线
%的日志数据的模型和块创建总线输出。使用
%保存文件的语法。该文件定义了一个函数Simulink.Bus名称相同万博1manbetx
%模型中的对象,您可以调用回调定义模型。万博1manbetx总线对象的基础
%的工作区中,这样你就可以用它来为港口在您的模型中定义的数据类型
%在命令窗口中运行这个命令一旦创建函数文件:
% busInfo = 万博1manbetxSimulink.Bus。createObject (“test_bus_save”、“test_bus_save /总线的创造者”,“slBus1.m”);
%确保文件保存的路径。然后,这是所有你需要模型回调:
% slBus1
%如果你可以记录总线数据加载到基本工作空间,您可以使用
%模型调加载文件包含的数据(如果你选择存储在一个文件)
%创建一个模型。万博1manbetx公共汽车从记录总线结构的数据对象。当你数据加载到
从工作区%你的模型,你可以使用其它模块,包括尺寸块加载
%数据到你的模型,而不只是一个从文件块。
%的回调的内容策略:
负载(“test_bus_input.mat”);
busInfo = 万博1manbetxSimulink.Bus.createObject (“abc”);
引起的由:
无效的输入的数量。
(删除注释掉了没有帮助一部分)所有文件( test_bus_save.slx , test_bus_input.mat test_bus_load_with_busobj.slx )在同一个(当前)文件夹中。
当我运行 test_bus_load_with_busobj.slx (ctrl + T)我得到这个错误:
无效的在“test_bus_load_with_busobj / In1”参数设置“OutDataTypeStr”。
引起的由:
错误评估参数“OutDataTypeStr”“test_bus_load_with_busobj /三机一体”
不能解决变量“slBus1”
变量“slBus1”并不存在。
建议行动
负载一个文件到基地的工作区中。修复
创建一个新的变量。修复
组件:仿真软件|类别万博1manbetx:模型误差
无效的设置在test_bus_load_with_busobj /从文件的参数“OutDataTypeStr”。
引起的由:
错误评估参数“OutDataTypeStr”“test_bus_load_with_busobj /从文件”
不能解决变量“slBus1”
变量“slBus1”并不存在。
建议行动
负载一个文件到基地的工作区中。修复
创建一个新的变量。修复
组件:仿真软件|类别万博1manbetx:模型误差
我试着R2018b R2019a和没有改变任何的文件。我想我还是做错了什么吗?
当我清理Calbacks,首次运行
busInfo = 万博1manbetxSimulink.Bus.createObject (“test_bus_save”,“test_bus_save /总线的创造者”,“slBus1.m”)
然后我得到这个:
警告:不能使用信号名称(或标签传播)“总线对象名称的块“test_bus_save /公共汽车
创造者”,因为的名称不是一个有效的MATLAB /标签的名字,或一个变量与该名称已经存在。使用默认标识符“slBus1”
代替。
busInfo =
结构体字段:
块:4.0004
busName:“slBus1”
和两个 test_bus_save 总线的创造者 是正确的名字。当我运行 test_bus_load_with_busobj 我得到这个错误:
错误评估表达式“abc”“ExternalInput”框图中指定配置参数对话框“test_bus_load_with_busobj”。
引起的由:
未定义的“abc”的函数或变量。
组件:仿真软件|类别万博1manbetx:模型误差
错误评估外部输入配置参数对话框中指定数据导入/导出页面。外部输入可能被指定为(a)矩阵的列表、结构timeseries或(b)一个MATLAB或函数表达式
组件:仿真软件|类别万博1manbetx:模型误差
所以我不知道我做错了什么。
1评论
莎拉Nadeau”class=
莎拉Nadeau 2019年7月2日
嗨,马克,
开始,我忘了说,我一直在使用R2018b为您提供了一个解决方案。你不需要使用19。
对不起,我已经使这种情况更加令人困惑的一个错字一次回调,并试图说明多个用例。我将穿过你描述每一个行为,你提到的顺序。
1)这是我的错。当我第一次测试每个方法,我忘了保存模型。我回去重走我的脚步,我写了一行调用Simulink.Bus。万博1manbetxcreateObject不正确。在我发给你的文件了,我通过结构体的名称作为一个字符数组,当功能预计结构本身。这项工作,删除引号(“)在美国广播公司(abc)。
2)这个错误是因为线回调创建模型。万博1manbetx总线对象没有完成,所以在工作区中没有定义的总线对象。这个错误是更多的从我的错误影响。
切换到第二个策略
3所示。这个警告是好的——我相信我提到了这个在前面的评论。如果你想要这个警告消失,你可以命名test_bus_save总线信号。基金模式。然后,创建的总线对象将具有相同的名称作为总线信号代替slBus1,默认值。
运行这条线后,你 应该 已经能够运行test_bus_load_with_busobj。基金模式的行代码没有错误,因为你跑在基工作区创建了总线对象。然而,你遇到这个错误:
4所示。root轮廓尺寸,我补充道,试图说明选项,这取决于您的需求取决于mat-file被加载在工作区中,我觉得我被忽视的注意。
回到基础知识和处理原始的实现,我test_bus_load_with_busobj附加一个更新。基金文件在回调修正(没有引用在abc),尺寸块删除,没有指定的输入参数。这是看到这车装载的工作流动作:
  1. 运行test_bus_save模型。
  2. 打开连接模型,test_bus_load_with_busobj_rev01.slx。
  3. 模拟模型。

登录置评。


毫米”class=
毫米 2019年7月4日
谢谢你工作!
但是我有一个新的问题。当我尝试使用这种方法在我的模型中,我会得到一个错误” 引用不存在的字段“时间”
可能是因为我使用 查表(一维) 连接到一个 时钟 而不是3的信号( 脉冲 , 正弦 正弦 我在我的示例中使用。这次是否可以提取领域的公共汽车吗?
1评论
莎拉Nadeau”class=
莎拉Nadeau 2019年7月5日
嗨,马克。
我很高兴你找到了工作,主要是!
我不确定我是否可以回答你的问题领域的时候,不知道更多的信息关于你保存和使用数据。相关的时间字段记录总线数据?
如果你想访问向量的时间信号在公共汽车上,你应该能够做到这一点。总线数据记录结构,其中每个叶子元素在公共汽车 timeseries 对象。每个timeseries对象都有一个时间字段,您可以访问包含数据的时间。访问此数据可能看起来像:
timeData = busStruct.busSignal1.Time;
“busStruct”在哪里的名字记录数据的结构,“busSignal1”是一片叶子元素的顶级总线结构,和“时间”是用于访问的时间属性timeseries对象代表“busSignal1”的数据。
我不确定有一个访问和使用时间信息的方法在仿真模型中。我附上修改后的模型,从总线数据访问时间信息从test_bus_save记录。基金,并使用它创建一个timeseries对象定义的时间和数据值都是时间数据——这有点奇怪,但你不能负载输入数据没有配对的时间和样本值。
我添加了几行代码到模型定义timeseries PreLoadFcn调变量,我青少年使用输入参数指定为外部输入数据在数据导入/导出模型的面板配置参数。
在模型中,我添加了一个尺寸块加载timeseries输入参数中指定。模型作品,你可以访问记录的数据总线数据的时候,但我不确定是否这是最好的方法。
我工作在外部输入模型的加载和数据记录。万博1manbetx我不熟悉查找表。如果你不能跟踪模型中试图访问一个领域被称为“时间”和如何正确地定义数据,你可能想要一个单独的帖子寻求指导来解决这个问题。

登录置评。

s manbetx 845


释放

R2018b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!