主要内容

创建Nonvirtual公交车

非虚拟总线类似于C代码中的结构体。使用非虚拟总线:

  • 在生成的C代码中以结构形式封装总线数据。

  • 建造一列公共汽车。

  • 通过s函数与外部代码接口。

  • 有总线数据交叉MATLAB®函数块或Stateflow®图的边界。

  • 显示和日志总线与范围块。

非虚拟总线需要金宝app仿真软件。公共汽车对象的数据类型。若要模拟包含非虚拟总线的模型,则引用公共汽车对象必须位于基本工作空间或模型使用的数据字典中。有关更多信息,请参见用Simulink指定总线属性。金宝app总线对象数据类型

非虚拟总线还要求总线的所有元素具有相同的样本时间。有关更多信息,请参见修改非虚拟总线的示例时间

创建非虚拟总线的方法根据总线的位置和创建总线的块的不同而不同:

为了关注基本步骤,这些例子很简单。然而,当您有许多信号要合并时,总线是最有用的。

在组件内创建非虚拟总线

可以使用总线创建器块在组件中创建非虚拟总线。

打开并编译示例模型,该模型使用总线创建者块创建虚拟总线的层次结构。要编译模型,在建模选项卡,单击金宝app更新模型运行.编译模型更新了线条样式,您可以使用它来直观地识别总线。

要创建这个模型,请参见组件内的信号线群

此模型中的虚拟总线不是由金宝app仿真软件。公共汽车对象。要将总线创建者块的输出更改为非虚拟总线,您必须拥有公共汽车匹配总线层次结构的对象。

创建公共汽车对应于TopBusNestedBus,可以使用金宝appSimulink.Bus.createObject函数。在MATLAB命令窗口中,输入:

金宝appSimulink.Bus.createObject(“NonvirtualBusCreationModel”,…“NonvirtualBusCreationModel /总线Creator1”);

这个函数创建公共汽车对象,该对象对应于指定块的输出总线。如果输出总线包含嵌套总线,则函数还将创建公共汽车与嵌套总线对应的对象。在这个例子中,函数创建了两个公共汽车对象以相应的总线命名,TopBusNestedBus

查看公共汽车对象,打开公共汽车编辑器.在MATLAB命令窗口中,输入:

buseditor

既然你已经公共汽车对象对应于你想要创建的非虚拟总线,创建非虚拟总线。在Simuli金宝appnk编辑器中,双击名为Bus creatator1的总线创建器块。在“块参数”对话框中设置输出数据类型总线:TopBus,选择输出为非虚拟总线复选框,然后单击好吧TopBus现在是一个非虚拟总线,而NestedBus仍然是一个虚拟总线。为了通过行样式识别非虚拟总线,编译模型。

双击名为总线的创造者.在“块参数”对话框中设置输出数据类型总线:NestedBus,选择输出为非虚拟总线复选框,然后单击好吧NestedBus现在是一个非虚拟总线。要更新它的行样式,编译模型。

如果不保存公共汽车对象,则必须重新创建公共汽车对象。查询如何保存公共汽车对象,看到用Simulink指定总线属性。金宝app总线对象数据类型

在接口上创建非虚拟总线

要在接口上创建非虚拟总线,请将总线元素连接到Out总线元素块,并指定输出总线是非虚拟的。

打开示例模型,它使用三个公共汽车元素块在输出端口创建虚拟总线,OutBus

要创建这个模型,请参见将多个输出信号连接到一个端口

非虚拟总线需要金宝app仿真软件。公共汽车对象的数据类型。创建公共汽车与输出总线相对应的对象数据类型。

  1. 在Simuli金宝appnk工具条中,在建模选项卡,设计画廊,选择公共汽车编辑器

  2. 公共汽车编辑器,创建两个公共汽车对象通过点击增加公共汽车两次。

  3. 的名字公共汽车对象。选择一个公共汽车对象,并设置的名字OutBus.选择其他的公共汽车对象,并设置的名字NestedBus

  4. 为每一个公共汽车对象,创建金宝app仿真软件。公共汽车Element对象,该对象对应于总线的元素。选择NestedBus,然后单击添加/插入BusElement两次。名称的元素正弦一步.选择OutBus,然后单击添加/插入BusElement两次。名称的元素尖声地说NestedBus

  5. 指定一个公共汽车对象数据类型用于任何嵌套总线。与NestedBusBusElement对象选择,设置数据类型总线:NestedBus,然后单击应用

要输出非虚拟总线,请指定公共汽车对象数据类型和总线虚拟。

  1. 通过双击一个输出总线元素块打开端口对话框。

  2. 在对话框的树层次结构中,暂停OutBus,然后单击旁边出现的铅笔图标OutBus

  3. 指定公共汽车对象的数据类型。集数据类型总线:OutBus

  4. 在对话框的树层次结构中,单击现在出现在旁边的信号属性OutBus

  5. 指定总线虚拟。集总线虚拟世界nonvirtual,然后关闭对话框。

模型的输出是非虚拟总线。要查看非虚拟总线,请在另一个模型中引用该模型或将Out总线元素块移动到一个子系统中。在编译模型时,行样式会更新。要编译模型,在建模选项卡,单击金宝app更新模型运行

如果不保存公共汽车对象,则必须重新创建公共汽车对象。查询如何保存公共汽车对象,看到用Simulink指定总线属性。金宝app总线对象数据类型

根(顶级)轮廓尺寸外港块还可以在接口上创建非虚拟总线。指定总线虚拟:

  • 对于根导入块,在信号的属性选项卡,选择输出为非虚拟总线

  • 对于根Outport块,在信号的属性选项卡,选择在父模型中输出为非虚拟总线

在公共汽车元素块使用总线虚拟世界参数确定它们是继承还是定义总线虚拟。如果块定义的总线虚拟性和输入总线的虚拟性不匹配,则编译模型会产生错误。

转换虚拟总线到非虚拟总线

控件可以在模型中的任何位置将虚拟总线转换为非虚拟总线信号转换块。

打开并编译示例模型,其中包含由总线创建器块创建的虚拟总线层次结构。要编译模型,在建模选项卡,单击金宝app更新模型运行.编译模型更新了线条样式,您可以使用它来直观地识别总线。

要定义总线并支持到非虚拟总线的转换,总线创建器块金宝app指定金宝app仿真软件。公共汽车对象的数据类型。创建公共汽车对象在加载模型时,模型使用PreLoadFcn回调。

控件上的Simulink工具条中查看回调金宝app建模选项卡上,单击模型属性.在模型属性对话框中,打开回调选项卡并选择PreLoadFcn回调模型。

要将虚拟总线转换为非虚拟总线,请使用To nonvirtual bus块,该块是信号转换块,输出设置为Nonvirtual总线

在示例模型中:

  1. 向模型添加一个To Nonvirtual Bus块。

  2. 将To Nonvirtual Bus块拖动到总线creatator1和Scope块之间的线上。当你将木块拖到直线上时,木块在两端与直线相连。

假设要转换的总线的数据类型不是由公共汽车对象。你需要执行这些额外的操作:

  1. 创建相应的公共汽车对象。

  2. 指定公共汽车总线的对象数据类型。例如,设置数据类型的非虚拟总线块的公共汽车对象,该对象对应于输入总线。

to Nonvirtual Bus块的输入是一个虚拟总线,输出是一个非虚拟总线。要查看非虚拟总线样式,请编译模型。

从MATLAB结构创建非虚拟总线

可以使用Constant块紧凑地表示带有常量值元素的非虚拟总线。

在Constant块上指定:

  • 一种基于MATLAB的恒定值

  • 一个金宝app仿真软件。公共汽车对象作为输出数据类型

当输出数据类型为a时,常量块仅支持MATL金宝appAB结构公共汽车对象。

例如,定义一个名为const_param_struct与元素命名抵消获得,阈值

const_param_struct。抵消= 197;const_param_struct。获得= 4.32;const_param_struct。阈值= 795.68;

定义相应的公共汽车对象的数据类型。

金宝appSimulink.Bus.createObject (const_param_struct)

公共汽车对象使用默认名称slBus1

打开并模拟示例模型,其中包含一个常量块恒定值设置为const_param_struct输出数据类型设置为总线:slBus1

open_system (“NonvirtualBusFromStructModel”) sim卡(“NonvirtualBusFromStructModel”);

Constant块的输出是非虚拟总线。

另请参阅

对象

相关的话题