Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

指定采样时间

指定采样时间

Simulink® 允许您直接将模块的采样时间指定为数值,或者通过定义采样时间向量以符号形式指定。对于离散采样时间,向量为 [Ts, To],其中 Ts 是采样期间,To 是初始时间偏移量。例如,假设有一个离散模型每隔两秒生成一次输出。如果您的基本时间单位为秒,您可以为 SampleTime 参数指定数值 2,直接设置离散采样时间。因为偏移量的值为零,所以不需要指定;但您可以在 Sample time 字段中输入 [2,0]。

对于非离散模块,向量的分量是符号值,代表采样时间的类型中的一种类型。下表总结了这些类型及其对应的采样时间值。此表还明确了每一种采样时间类型是否为显式,并列出了关联的颜色和注释。 因为继承的采样时间是显式的,所以您可以将它指定为 [-1, 0]-1。但是,触发的采样时间是隐式的;只有 Simulink 可以分配采样时间 [-1, -1]。(有关颜色和注释的详细信息,请参阅查看采样时间信息。)

指定采样时间信息

采样时间类型采样时间颜色注释显式
离散[Ts, To]按速度降序排列:红色、绿色、蓝色、浅蓝色、深绿色、橙色D1,D2,D3,D4,D5,D6,D7,...Di
连续[0, 0]黑色Cont
固定子步[0, 1]灰色FiM
继承[–1, 0]不适用不适用
常量[Inf, 0]品红色Inf
可变[–2,Tvo]棕色V1,V2,...Vi
可控制[base, -2i],i = 0、1、2…棕色Ctrl1,Ctrl2,Ctrl3, ….Ctrli
混合不适用黄色不适用
触发Source: D1、Source:D2、...Source:Di青蓝色T1,T2,...Ti
异步[-1, –n]紫色A1,A2,...Ai
数据流不适用浅紫色不适用

分配给每个模块的颜色取决于其采样时间(相对于模型中的其他采样时间)。也就是说,相同的采样时间在父模型及其引用的模型中可能会分配不同的颜色。(请参阅模型引用。)

例如,假设有一个模型定义了三个采样时间:123。再假设它引用了一个模型,该模型定义了两个采样时间:23。在这种情况下,以 2 采样率运行的模块在父模型中显示为绿色,在引用的模型中显示为红色。

请注意,MuxDemux 模块只是对运算符进行分组;通过它们传递的信号将保留计时信息。因此,对于从 Demux 模块发出的信号线,如果驱动它们的源模块具有不同的采样时间,它们可能具有不同的颜色。在这种情况下,MuxDemux 模块采用混合颜色编码(黄色),表明它们处理的是多速率信号。

同样,Subsystem 模块如果包含具有不同采样时间的模块,它们也采用混合颜色,因为没有任何一种速率与它们关联。如果一个子系统中的所有模块都按同一种速率运行,Subsystem 模块的颜色将根据该速率来决定。

您可以使用此表中的显式采样时间值,以交互方式或以编程方式为基于模块或基于端口的采样时间指定采样时间。

下面的模型 ex_specify_sample_time 可作为此部分的参考。

ex_specify_sample_time

在此示例中,将输入正弦波信号的采样时间设置为 0.1。目的是获得 0.2 的输出采样时间。Rate Transition 模块作为零阶保持器。设置采样时间并对模型进行仿真后,生成的模块图如下图所示。(颜色和注释表明这是一个离散模型。)

设置采样时间后的 ex_specify_sample_time

以交互方式指定基于模块的采样时间

要以交互方式设置模块的采样时间,请执行以下操作:

  1. 在 Simulink 模型窗口中,双击该模块。模块参数对话框随即打开。

  2. Sample time 字段中输入采样时间。

  3. 点击 OK

Sample time 字段中输入 0.1 后,Sine Wave 模块的参数对话框如下图所示。

要在整个模型中指定和检查基于模块的采样时间,请考虑使用 Model Data Editor(在 Modeling 选项卡上,点击 Model Data Editor)。在 Inports/OutportsSignalsData Stores 选项卡上,将 Change view 下拉列表设置为 “Design” 并使用 Sample Time 列。有关 Model Data Editor 的详细信息,请参阅使用 Model Data Editor 配置数据属性

以交互方式指定基于端口的采样时间

Rate Transition 模块具有基于端口的采样时间。您可以按照以下步骤,以交互方式设置输出端口的采样时间:

  1. 双击 Rate Transition 模块。参数对话框随即打开。

  2. Output port sample time options 的下拉菜单选项保留为 “Specify”。

  3. Output port sample time 字段中的 -1 替换为 0.2

  4. 点击 OK

有关 Rate Transition 参数对话框中的采样时间选项的详细信息,请参阅 Rate Transition 参考页。

以编程方式指定基于模块的采样时间

要以编程方式设置模块的采样时间,请使用 set_param 命令将其 SampleTime 参数设置为所需的采样时间。例如,要将 Specify_Sample_Time 模型中的 Gain 模块的采样时间设置为继承 (-1),请输入以下命令:

set_param('Specify_Sample_Time/Gain','SampleTime','[-1, 0]')

与交互式指定方式一样,如果第二个向量分量为零,则您只能输入第一个向量分量。

set_param('Specify_Sample_Time/Gain','SampleTime','-1')

以编程方式指定基于端口的采样时间

要将 Rate Transition 模块的输出端口采样时间设置为 0.2,请使用 set_param 命令和参数 OutPortSampleTime

set_param('Specify_Sample_Time/Rate Transition',...
'OutPortSampleTime', '0.2')

以编程方式访问采样时间信息

要访问与某个模型关联的所有采样时间,请使用 API Simulink.BlockDiagram.getSampleTimes

要访问单个模块的采样时间,请使用 API Simulink.Block.getSampleTimes

为自定义模块指定采样时间

您可以设计自定义模块,使输入端口和输出端口以不同的采样时间速率运行。有关为 S-Function 指定基于模块和基于端口的采样时间的信息,请参阅 Specify S-Function Sample Times

确定采样时间单位

由于 Simulink 模型的执行不依赖于一组特定的单位,所以您必须为您的应用确定合适的基本时间单位,并相应地设置采样时间值。例如,如果您的基本时间单位是秒,则您可以将采样时间设置为 0.5 来表示 0.5 秒的采样时间。

在仿真开始后更改采样时间

要在仿真开始后更改采样时间,必须先停止仿真,重置 SampleTime 参数,然后重新开始执行。

另请参阅

|