主要内容

合并的信号

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

模型描述

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

这两个信号被输入到不同的Enabled子系统中,这些子系统用粗线勾勒出来。

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

这个块的输出每5秒在0和1之间切换一次。当离散脉冲发生器块的输出为正时,顶层使能子系统进行仿真。当离散脉冲发生器模块的输出为零时,底层使能子系统进行仿真。

为了迫使底层使能的子系统模拟离散脉冲发生器块的输出为零时,输出通过设为NOT运算符的逻辑运算块。当NOT块的输入为0时,它输出一个值为1。

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

最后,Merge块的输出显示在Simulink Scope上。金宝app

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

有条件地执行子系统

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

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

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

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

逻辑算符块

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

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

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

注意:在Simuli金宝appnk编辑器中调试选项卡,信息覆盖菜单提供了在框图上显示信号和端口属性的选项。

Simulink®中的布尔信号金宝app

您可以选择让Simulink为逻辑运算符块的输入和输出使金宝app用布尔值或双值,使用以下步骤。

1.控件上的Simulink编辑器中打开配置参数对话框金宝app建模选项卡上,选择模型设置

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

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

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

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

合并块和交替启用子系统

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

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

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

3.离开初始输出字段,以指定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 -函数的更多信息,请参阅文档。