文档

合并的信号

该模型展示了以下Simulink®概念:金宝app

模型描述

该模型的左侧包含两个块,例如来自Simulink Sources库的repeat Sequence块。金宝app每个块生成一个在块的图标上显示的形式的标量输出信号。

这两个信号被馈送到不同的Enabled子系统,它们用粗线勾勒出来。

启用的(或有条件执行的)子系统由离散脉冲发生器块生成的信号控制。

该块的输出每5秒在0和1之间切换一次。当离散脉冲发生器模块的输出为正时,顶部启用的子系统正在模拟。当离散脉冲发生器模块的输出为零时,底部启用的子系统正在模拟。

为了强制启用底层的子系统在Discrete Pulse Generator块的输出为零时进行模拟,输出将通过一个设置为NOT运算符的Logical Operator块传递。当输入为0时,NOT块输出值为1。

两个启用的子系统的输出被馈送到Merge块中。

Merge块的输出最后显示在Simulink作用域上。金宝app

您可以运行模拟来查看Scope上Merge块的输出。请注意,Scope上显示的波形类型每5秒变化一次。这是由于Merge块的行为。

有条件执行的子系统

Merge块示例包含两个有条件执行的子系统。

有条件执行的子系统是在模拟过程中只在特定时间执行的子系统,即当满足某些条件时。在这种情况下,子系统是启用的子系统,由它们的图标和块顶部或底部的额外输入端口来区分,如下所示。

输入到附加端口的信号称为控制信号。这个信号的值提供了一个条件,该条件确定子系统是否在任何给定的时间步骤中执行。启用的子系统在控制信号严格为正时执行。

在本例中,您希望在控制信号为正时执行一个启用的子系统,而在控制信号为零时执行另一个启用的子系统。您可以通过使用Simulink中的逻辑操作符块来做到这一点。金宝app

逻辑运算符块

Simulink中的逻辑运算符块提供了一种将逻辑运算符和布尔金宝app信号合并到Simulink图中的方法。

您可以打开Logical Operator块以查看下拉菜单中列出的不同操作符。当输入信号非零时,NOT的当前设置返回1(或TRUE),当输入信号严格为零时返回0 (FALSE)。

在本例中,您可以使用此特性在控制信号归零时生成一个正值,方法是保持当前操作符设置为NOT并关闭对话框。

注意:控件可以显示每个信号的数据类型端口数据类型命令金宝app显示>信号和端口菜单。

布尔信号在Simulink®金宝app

您可以选择使用以下步骤,让Simulink为Logica金宝appl Operator块的输入和输出使用布尔值或双精度值。

1.选项打开“配置参数”对话框配置参数命令从模拟菜单。

2.进入“配置参数”对话框中的“优化”页面。

3.看实现逻辑信号为布尔数据(vs. double)参数已启用。这个优化告诉Simulink它是否应该允许一个数金宝app据类型为double的信号传入或传出支持布尔数据类型的块。金宝app

4.单击好吧按钮。配置参数对话框

通过将数据类型转换块放在离散脉冲发生器块之后,可以避免指示逻辑操作符块期望布尔输入信号的错误。

合并块和交替启用子系统

您可以使用Merge块创建单个信号,其值等于当前正在执行的启用子系统的输出。以下步骤。

1.双击该块,打开合并块的块参数对话框。

2.指定输入数量作为您希望合并其输出的启用子系统的数量。在本例中,您希望将*Number of input *设置为2。

3.离开初始输出字段empty用于指定Merge块将其初始输出设置为其中一个输入信号的初始值。在这种情况下,输出将是模拟开始时启用的子系统的初始值。

4.关闭合并块的块参数对话框。

5.将两个有条件执行的子系统的输出连接到Merge块的输入。

与前面一样,在运行模拟时,Merge块的输出是在任何时间点有条件执行的子系统正在执行的值。

有趣的特性:通过编程改变块的背景颜色

当您运行模拟时,您应该已经注意到当前执行的有条件执行子系统的颜色发生了变化。这并对所有有条件执行的子系统自动发生。它是使用s函数和MATLAB®代码实现的!

如果您通过双击Simulink图中的块来打开一个已启用的子系统,您将看到它包含以下内容。金宝app

1.Enable块,使其成为有条件执行的子系统,并为控制信号添加输入端口

2.一个二级MATLAB文件s函数块,运行MATLAB文件s函数mergefcn.m

在每个时间步骤中,s函数的mdlUpdate子函数执行。它根据当前是否正在执行来设置子系统的BackgroundColor属性,使用以下命令。

set_param(“mergedemo /子系统”、“写成BackgroundColor”,“绿色”)

有关如何编写MATLAB文件s函数的更多信息,请参阅文档。

这个话题有用吗?