要以交互方式创建总线对象及其元素,请使用Simulink®总线编辑器。使用总线编辑器创建的总线对象存储在MATLAB®基本工作区中。要模拟使用总线对象的块,总线对象必须位于基本工作区或数据字典中。要保存与模型关联的总线对象定义,请将总线对象从基本工作空间导出到MATLAB代码文件或MAT文件中。
可以在定义总线对象之前或之后将总线对象指定为块的数据类型。但是,在模拟模型之前,总线对象和相应的总线信号必须具有相同数量、相同顺序的总线元素。此外,总线对象和模型中相应信号中的每个总线元素必须具有相同的属性。
在模型开发过程中,您可以修改总线信号以匹配总线对象,也可以修改总线对象以匹配总线。
打开总线编辑器
根据你的建模任务,使用以下方法之一打开总线编辑器。
建模任务 | 方法 |
---|---|
建立一个模型 | 在Simulink编辑器中,选择Edit > Bus Editor. |
在模型之外创建总线对象 | 在 MATLAB命令行, 输入buseditor. |
探索和更新模型 | 在模型管理器的总线对象对话框中,单击启动总线编辑器按钮。 |
为总线对象创建总线元素
1 在“Bus Editor ”窗格中,选择CONTROL总线对象。
2 选择 File > Add/Insert BusElement。
3 在CONTROL总线对象中创建了一个具有默认名称和属性的新总线元素。总线元素出现在CONTROL总线对象下方的层次窗格中。
4 在对话框窗格中,将名称设置为VALVE1,以反映总线中顶部信号的名称。
对于常量块,打开“Block Parameters”对话框,然后选择“Signal Attribute”选项卡。
5 在Bus Editor对话框窗格中,将DataType属性设置为double,以匹配常量块的输出数据类型块参数设置。使用其他总线图元对象属性的默认设置。
6 单击 Apply。
7 创建与valve2总线元素信号对应的第二个总线元素对象。在层次窗格中,选择VALVE1总线元素对象,然后单击“Add/Insert Bus Element”按钮。
8 对 Constant1 , 打开Block Parameters 并选择 Signal Attributes 选项卡.
输出数据类型是int8.
9 在“Bus Editor对话框”窗格中,对于VALVE2总线元素对象,将DataType属性设置为int8。使用其他总线图元对象属性的默认设置。
10 点击Apply.
11 为主总线的次级总线元件信号创建总线元素对象。在层次窗格中,选择MAIN总线对象,然后单击“ Add/Insert Bus Element”按钮。
12 将Name属性设置为SECONDARY,将Data type属性设置为int32,以匹配In1块输出信号数据类型。单击应用。
13 为主总线的主总线元素信号创建一个总线元素对象。在“层次结构”窗格中,选择SECONDARY总线元素对象,然后单击“Add/Insert Bus Element”按钮。
14 将Name属性设置为PRIMARY,将Data type属性设置为boolean,以匹配In2块输出信号数据类型。单击应用。
要为控制总线(主总线的第三个总线元素)定义总线元素对象,请执行嵌套总线对象定义中的步骤。
嵌套总线对象定义
总线中的任何信号都可以是另一总线,而另一总线又可以包含任何深度的从属总线。用总线对象描述嵌套的总线需要嵌套对象提供的总线对象定义。
每个总线对象都定义了一种数据类型,其属性由对象指定。要将一个总线对象定义嵌套在另一个中,请将由另一个总线物体定义的数据类型分配给一个总线物件的总线元素。总线元素对象表示嵌套总线。指定总线元素对象数据类型的总线对象定义了嵌套的总线元素。
由总线对象定义的数据类型称为总线类型。通过为元素分配总线类型来嵌套总线,可以在多个上下文中方便地使用相同的总线定义,而不会产生不必要的交互。
1 在Bus Editor层次结构窗格中,选择PRIMARY总线元素对象,然后单击“Add/Insert Bus Element”按钮。
2 在对话框窗格中,将名称属性设置为VALVES_BUS。
3 对于Data类型属性,使用Bus:模板,将<object name]替换为CONTROL,CONTROL是控制总线的总线对象的名称。
4 单击apply。
如果展开VALVES_BUS总线元素对象,将看到CONTROL总线对象的两个总线元素对象VALVE1和VALVE2。
5 考虑将总线对象导出到MATLAB代码文件。在Bus Editor中,选择File > Export to File.。在“导出”对话框中,为总线对象MAT文件指定文件名。
避免循环嵌套总线对象定义
您可以根据需要将总线对象嵌套在任意多个不同的总线对象中,也可以根据需要在同一个总线对象中嵌套任意多次。您可以将总线对象嵌套到任何深度,但不能通过直接或间接地在其内部嵌套总线对象来定义圆形结构。
如果定义了循环结构,总线编辑器会发布警告,并将完成循环的元素的数据类型设置为加倍。单击“确定”关闭警告并继续使用编辑器。
生成一下代码,可以看到bus creator在代码中没有体现。
使用总线对象创建非虚拟总线
要使用在这些示例中定义的总线对象将虚拟总线更改为非虚拟总线,请执行以下操作:
1 打开Bus Creator block parameters 对话框。将输出数据类型设置为总线:控制,并选择Output as nonvirtual bus.。
2 打开Bus Creator1 Block Parameters 对话框。将输出数据类型设置为总线:MAIN,并选择Output as nonvirtual bus。
3 在Bus Creator1块之后添加另一个Outport块,并将其连接到main信号。
4 打开Out3 Block Parameters 对话框。在Signal Attributes 选项卡中,将Data type 设置为“Bus:MAIN”,然后选择“Output as nonvirtual bus in parent model.”。
最后生成代码可以看到bus creator都生成了实际的代码,而虚拟总线的bus creator这部分是不生成代码的