引用模型的采样时间
Model 模块如何继承采样时间
Model 模块的采样时间是它所引用的模型的采样时间。如果引用模型必须以特定速率运行,则由该模型指定所需的速率。否则,引用模型将从父模型继承采样时间。
在触发子系统、函数调用子系统或迭代子系统中放置 Model 模块的具体情况取决于能否继承采样时间。此外,允许 Model 模块继承采样时间可使其重用潜力最大化。例如,一个模型可以固定其所有输入和输出信号的数据类型和维度。您可以使用不同的采样时间重用该模型,例如,以 0.1s 或 0.2s 的离散采样时间触发。
继承采样时间的条件
如果模型符合以下条件,引用模型将继承其采样时间:
没有任何连续状态
指定定步长求解器,且定步长为自动
不包含指定采样时间(继承或常量除外)的模块
不包含任何在内部使用特定采样时间的 S-Function
在采样时间传播后只有一个采样时间(不算常量和触发采样时间)
不包含使用绝对时间的任何模块(如依赖于绝对时间的模块中所列),包括 Stateflow® 图
不包含输出取决于继承的采样时间的任何模块,如输出依赖于继承采样时间的模块中所列。
您可以在父模型中的任何位置使用继承采样时间的引用模型。相反,不能在触发子系统、函数调用子系统或迭代子系统中使用具有内在采样时间的引用模型。为避免速率转移错误,如果模块连接到具有内在采样时间的引用模型,请确保模块与引用模型以相同的速率运行。
注意
连续采样时间不能传播到未要求明确指定采样时间的 Model 模块。
有关详细信息,请参阅输出依赖于继承采样时间的模块。
确定引用模型的采样时间
要确定引用模型是否可以继承采样时间,请将周期性采样时间约束配置参数设置为确保采样时间独立
。如果模型不能继承采样时间,此设置会导致 Simulink® 在编译模型时显示错误消息。有关此选项的详细信息,请参阅Periodic sample time constraint。
要确定引用模型的内在采样时间或多速率引用模型的最快内在采样时间,请执行以下操作:
更新引用该模型的模型
从父模型中选择一个 Model 模块
在 MATLAB® 命令行输入以下内容:
get_param(gcb, 'CompiledSampleTime')
依赖于绝对时间的模块
以下 Simulink 模块依赖于绝对时间,因此会阻止引用模型继承采样时间:
Backlash(仅当模型使用变步长求解器并且模块使用连续采样时间时)
Discrete-Time Integrator(仅当在触发子系统中使用时)
Sine Wave(仅当正弦类型参数为基于时间时)
stateflow
(Stateflow)(当图使用绝对时间时态逻辑或保留字t
来引用时间时)To Workspace(仅当以时间序列或带时间的结构体格式记录时)
某些非 Simulink 模块也依赖于绝对时间。请参阅您使用的模块集的文档。
输出依赖于继承采样时间的模块
在引用模型中使用其输出依赖于继承采样时间的模块可能会导致仿真产生意外或错误的结果。编译不需要指定速率的引用模型时,Simulink 会检查哪些模块的输出是继承采样时间的函数。此检查包括检查 S-Function 模块。如果 Simulink 发现任何这样的模块,它会指定默认的采样时间。如果您将配置参数 > 求解器 > 周期性采样时间约束设置为确保采样时间独立
,Simulink 将显示错误。有关此选项的详细信息,请参阅Periodic sample time constraint。
以下内置模块的输出依赖于继承采样时间。这些模块的输出阻止引用模型从父模型继承采样时间:
From Workspace(如果它有包含时间的输入数据)
Probe(如果探测采样时间)
Simulink 假定 S-Function 的输出不依赖于继承采样时间,除非 S-Function 有明确的相反声明。有关如何创建声明其输出是否依赖于继承采样时间的 S-Function 的信息,请参阅Specify S-Function Sample Times。
在继承采样时间的引用模型中,应避免在未能声明输出是否依赖于继承采样时间的引用模型中使用 S-Function。排除此类 S-Function 有助于避免仿真错误。默认情况下,当您更新或仿真模型时,Simulink 会警告您模型中是否包含此类模块。有关详细信息,请参阅Unspecified inheritability of sample time。
采样时间一致性
使用一致的采样时间速率有助于更可靠地使用被其他模型引用的模型。确保引用模型中的根 Inport 和 Outport 模块的速率与读写它们的模块的速率保持一致。当以下采样时间不一致时,Simulink 将产生错误:
根 Inport 模块的采样时间与该 Inport 模块输入到的模块的采样时间不一致。
根 Outport 模块的采样时间与输入到该 Outport 模块的模块采样时间不一致。
要解决指出引用模型中采样时间不一致的错误,可使用以下方法之一。
顶层 Inport 或 Outport 模块采样时间 | 可能的解决方案 |
---|---|
与它所连接的所有模块都不同,但这些模块的采样时间都相同 | 设置 Inport 或 Outport 模块的采样时间,使其与连接的模块的采样时间相匹配。 |
与一个或多个模块不同,但也有一个或多个模块的采样时间与它相同 | 对于与 Inport 或 Outport 模块不匹配的模块,可在连接到 Inport 或 Outport 模块的信号上插入 Rate Transition 模块。 |
采样率和求解器
顶层模型的求解器控制模型层次结构中的所有连续采样时间。例如,对于定步长求解器,引用模型中的所有连续速率以顶层模型的定步长运行。有关采样时间如何影响求解器的信息,请参阅采样时间的类型。