可变大小信号基础
一个金宝app仿真软件®信号可以是标量、向量(1-D)、矩阵(2-D)或N-D。Si金宝appmulink可变大小信号是一种信号,其大小(维度中元素的数量)除了其值外,还可以在模型仿真过程中发生变化。但是,在模拟过程中,维数不能改变。此功能允许您使用不同的资源、约束和环境对系统建模。
提示
当模型接口上不支持可变大小信号时金宝app引用模型时使用局部求解器
中启用。解算器窗格中.
您可以在Simulink模型中使用以下方法创建可变大小的信号:金宝app
开关或多端口切换不同输入端口的块具有不同大小的固定大小的信号。输出是一个可变大小的信号。
一个选择器用
开始和结束索引(端口)
索引选项。索引端口信号可以指定输入数据信号的不同子区域,该子区域在模拟进行时产生可变大小的输出信号。一个功能块,输出端口配置为可变大小的信号。输出不仅包括信号的值,还包括信号的维数。
变大小信号如何传播
在Simuli金宝appnk环境中,可变大小的信号可以通过以下两种方式之一在模型执行过程中改变其大小:
在模型执行的每一步。
模型中的各个块在执行输出方法期间修改信号的大小。
仅在有条件执行的子系统初始化期间。
大小变化发生在子系统(如Action、Enable和Function-Call子系统)中不同的模式切换事件期间。
通过考虑带有状态的Discrete 2-Tap Filter块,您可以看到键的区别。
离散二抽头滤波器
假设在模拟过程中,该滤波器的输入信号维数从4变为1。Unit Delay块的状态何时以及如何从4调整到1以继续处理输入是不明确的。为了确保一致性,两个单元延迟块必须同步改变它们的状态行为。为了防止歧义,在信号大小在执行过程中随时改变金宝app的情况下,Simulink通常禁止状态数量取决于输入信号大小的块。
相反,考虑函数调用子系统中相同的离散2-Tap过滤器块。假设这个子系统使用第二种方式来传播可变大小的信号。在这种情况下,输入信号的大小仅在子系统初始化时从4变为1。在初始化时,子系统将其所有状态(包括两个单元延迟块的状态)重置为初始值。重设子系统可确保对滤波器输入信号的状态分配没有歧义。
模式相关的变大小信号演示如何以互补的方式使用两种传播可变大小信号的方法来对复杂系统建模。
确定信号线是否有可变尺寸
下面的示例演示如何在命令提示符或脚本中使用命令来确定信号线是否具有可变大小。在大型模型或子系统层次结构或参考模型中,使用此技术来确定信号是否由于上游块而具有可变大小。
示例模型sldemo_varsize_basic
包含一个信号一个
这是a的下游开关块。
开放示例模型。
选择总和输出信号被标记的块
一个
.在命令窗口中键入以下内容,将模型设置为已编译状态(类似于图表更新)。
sldemo_varsize_basic ([],[],[],“编译”)
获取块输出端口的句柄。
portandles = get_param(gcb,“portHandles”);outportandle = portthandles . outport;
查询编程式参数
CompiledPortDimensionsMode
输出端口的。varSize = get_param(outportthandle,“CompiledPortDimensionsMode”)
varSize = 1
变量的值
varSize
是1
,表示该信号一个
具有可变大小。的值
0
表示信号没有可变大小。终止模型编译。
sldemo_varsize_basic ([],[],[],“术语”)
空信号
空信号是长度为的信号0
.例如,有大小的信号[0]
,(0 x3)
,x0 [2]
,[2 x0x3]
都是空信号。金宝appSimulink允许空信号和可变大小的信号,并支持大多数元素的操作。金宝app但是,Simuli金宝appnk不支持修改信号尺寸的块金宝app的空信号。不支金宝app持的块包括沿着指定维度的重塑、排列和求和。
金宝app对可变大小信金宝app号的块支持
Simu金宝applink块数据类型支持表包括支持可变大小金宝app信号的块的完整列表。
查看表格。
打开一个Sim金宝appulink模型。
在MATLAB中®命令行,输入
showblockdatatypetable
.将打开带有Simulink块数据类型支持表的单独窗口。金宝app金宝app
一个X
在适应的支持金宝app列表示对该块的支持。金宝app
提示
您也可以通过输入查看表格showblockdatatypetable
在命令提示符处。
可变大小信号的子系统初始化
的初始信号大小外港块在有条件执行的子系统中根据所选择的参数而变化。
如果你设置传播可变大小信号的大小父子系统中的参数在执行期间
,初始输出输出块的参数不能超过输入端口的最大大小。如果初始输出参数值为:
初始输出参数 | 初始输出信号大小 |
---|---|
一个非标量矩阵 | 初始输出信号的大小为初始输出参数。 |
一个标量 | 初始输出信号大小是一个标量。 |
默认的[] | 初始输出大小为空信号(维度均为零)。 |
如果你设置传播可变大小信号的大小父子系统中的参数仅当启用时
,初始输出Output块的参数必须是标量值。
类型的输入重新传播大小时外港块时,使用标量参数值的标量展开来设置初始输出值。
如果初始输出参数为默认值
[]
, 金宝appSimulink将初始输出作为接地值。如果模型在开始时没有激活父子系统(
T = 0
,对应的子系统输出的当前大小外港块被设置为最大大小。当它的父子系统重新传播信号大小时,子系统可变大小输出信号的值也被重置为它们的初始输出参数值。
有条件执行的子系统块
控制端口块位于有条件执行的子系统中。您可以设置传播可变大小信号的大小参数将这些块设置为在执行期间
,仅当恢复执行时
(动作端口),和仅当启用时
(启用和触发或函数调用)。
切换模块
开关块通过允许不同大小的输入信号并金宝app将输入信号的大小传播到输出信号来支持可变大小的信号。您可以设置允许不同的数据输入大小参数设置为“信号属性”窗格中的这些块的“开”或“关”。
可变大小的信号限制
下表描述了可变大小的信号限制。
限制 | 解决方案 |
---|---|
数组格式日志不支持可变大小的信号。金宝app | 使用一个结构 ,结构随时间变化 ,或数据集 记录可变大小信号的格式。 |
可变大小的信号必须有离散的采样时间。 | - - - - - - |
嵌入式编码器®不支持ERT s 金宝app-函数、自定义存储类、函数原型控制、AUTOSAR模型接口、c++接口和ERT可重用代码接口的变大小信号。 | - - - - - - |
金宝appSimulink不支持可变金宝app大小的参数或DWork向量。 | - - - - - - |
快速加速模式不支持具有可变大小信号的根级输入端口的模型。金宝app | - - - - - - |
虚拟总线用作引用模型的输入或输出(模型块)不支持可变大小的信号。金宝app | 将总线信号配置为非虚信号。有关将总线用作引用模型的输入或输出的详细信息,请参见在模型接口上使用总线.有关控制总线虚拟性的详细信息,请参见复合信号的类型. |
对于将初始条件指定为MATLAB结构的块,不支持可变大小的信金宝app号。 | - - - - - - |
只有在普通仿真模式下,总线信号阵列才支持可变大小的信金宝app号。 | - - - - - - |
对于具有可变大小信号的总线信号数组,不支持信金宝app号记录。 | - - - - - - |
不能将存储类应用到根级外港块(见模型界面元素的C代码生成配置(金宝app仿真软件编码器))如果进入块的信号大小可变。 | 将存储类应用于信号线,而不是外港块。 |