Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

常见的示波器模块任务

要可视化随时间推移的仿真结果,请使用 Scope 模块或 Time Scope (DSP System Toolbox) 模块

将多个信号连接到一个示波器

要将多个信号连接到一个示波器,请将其他信号拖放到 Scope 模块。系统将自动创建一个额外的端口。

要指定输入端口的数量,请执行下列操作:

  1. 打开一个示波器窗口。

  2. 从工具栏中,选择 File > Number of Input Ports > More

  3. 输入输入端口的数量,最多 96 个。

来自非虚拟总线和总线数组的信号

您可以将来自非虚拟总线和总线数组的信号连接到 Scope 模块。要显示总线信号,请使用 Normal 或 Accelerator 仿真模式。Scope 模块按照元素在总线中出现的顺序从上到下显示每个总线元素信号。嵌套的总线元素以平铺方式显示。例如,在以下模型中,nestedBus 信号具有 constsubSignalstep 信号作为元素。subSignal 子总线具有 chirpsine 信号作为其总线元素。在 Scope 模块中,subSignal 总线的两个元素显示在 conststep 信号之间。

使用 Scope 模块保存仿真数据

此示例说明如何使用 Scope 模块将信号保存到 MATLAB 工作区。您可以对 Scope 或 Time Scope 模块使用下列步骤。要保存来自浮动示波器或波形查看器的数据,请参阅从 Floating Scope 保存仿真数据

使用 vdp 模型,打开工作区的数据记录。您可以按照以下命令进行操作,或在示波器窗口中,点击 Configuration Properties 按钮并导航到 Logging 选项卡,打开 Log data to workspace

vdp
scopeConfig = get_param('vdp/Scope','ScopeConfiguration');
scopeConfig.DataLogging = true;
scopeConfig.DataLoggingSaveFormat = 'Dataset';
out = sim('vdp');

在 MATLAB 命令行窗口中,查看从 out.ScopeData 结构体记录的数据。

x1_data = out.ScopeData{1}.Values.Data(:,1);
x1_time = out.ScopeData{1}.Values.Time;
plot(x1_time,x1_data)

运行时暂停显示

当仿真在后台运行时,使用 Simulink Snapshot 可暂停示波器画面显示。

  1. 打开一个示波器窗口并开始仿真。

  2. 选择 Simulation > Simulink Snapshot

    左下角的示波器窗口状态是 Frozen,但仿真继续在后台运行。

  3. 与暂停的显示进行交互。例如,使用测量值、复制示波器图像或进行缩放。

  4. 要解冻画面,请再次选择 Simulation > Simulink Snapshot

复制示波器图像

此示例使用模型 vdp 说明如何复制和粘贴示波器图像。

  1. 向您的模型添加一个 Scope 模块。

  2. 将信号连接到示波器端口。请参阅将多个信号连接到一个示波器。例如,在 vdp 模型中,将信号 x1x2 连接到示波器。

  3. 打开示波器窗口并运行仿真。

  4. 选择 File > Copy to Clipboard

  5. 将图像粘贴到文档中。

    默认情况下,Copy to Clipboard 以白色背景和可见线条形式保存波形的可打印版本。如果要粘贴与所显示内容完全一样的波形图,请选择 View > Style,然后选中 Preserve colors for copy to clipboard 复选框。

绘制信号线组

此示例说明示波器如何绘制信号数组。

在此简单模型中,Sine Wave 模块连接到示波器模块。Sine Wave 模块输出幅值为 [10, 20; 30 40] 的四个信号。示波器以矩阵顺序 (1,1)、(2,1)、(1,2)、(2,2) 分别显示数组中的每个正弦波。

引用模型中的示波器

此示例说明引用模型中示波器的行为。当您在引用模型中使用示波器时,在示波器中看到的输出会因仿真位置的不同而异,具体取决于您是从顶层模型开始仿真,还是从引用模型的示波器开始仿真。

注意

示波器窗口显示最近打开的顶层模型的仿真结果。示波器模块和查看器中的播放控制项对包含该模块或查看器的模型进行仿真。

此示例将 sldemo_mdlref_counter 模型用作顶层模型,也用作从 sldemo_mdlref_basic 模型的引用模型。

打开 sldemo_mdlref_basic 模型,双击 CounterA 模块。sldemo_mdlref_counter 模型作为引用模型打开,画布上的路径导航对此进行指示。

使用主运行按钮运行仿真,然后打开 ScopeA 示波器。示波器可视化来自整个模型的数据。

如果您使用示波器中的运行按钮重新运行仿真,示波器只会可视化数据,就好像引用模型是独立打开的一样。示波器模块和查看器中的播放控制项对包含该模块或查看器的模型进行仿真。在这种情况下,没有顶层模型的引用模型输入始终为零。

注意

如果从示波器点击运行,模型不会显示模型正在后台运行。有关仿真状态,请查看示波器中的状态栏。

使能子系统中的示波器

将示波器放置在 Enabled Subsystem 模块中时,示波器的行为因具体仿真模式的不同而有所不同:

  • Normal 模式 - 当子系统启用时示波器绘制数据。当子系统禁用时,显示的绘图会显示缺口。

  • External、Accelerator 和 Rapid 模式 - 当子系统启用时示波器绘制数据。显示画面用直线连接缺口部分。

修改示波器的 x

此示例说明如何使用 Time spanTime display offset 参数修改 Scope 模块的 x 轴值。Time span 参数修改显示的仿真时间量,并偏移 x 轴标签。Time display offset 参数修改 x 轴上使用的标签。

您也可以将此过程用于 Time Scope 模块、Floating Scope 模块或波形查看器。

打开模型并运行仿真以查看原始示波器输出。仿真运行 10 个时间步,每个时间步递增 1。

model = 'ModifyScopeXAxis';
open_system(model);
sim(model);
open_system([model,'/Scope']);

修改显示的时间跨度

Time span 参数修改为 2。您可以按照以下命令进行操作,或在示波器窗口中,点击 Configuration Properties 按钮并导航到 Time 选项卡。

scopeConfig = get_param([model,'/Scope'],'ScopeConfiguration');
scopeConfig.TimeSpan = '2';
sim(model);
open_system([model,'/Scope']);

示波器的 x 轴现在只显示最后两个时间步,并偏移 x 轴标签以显示 0-2。底部工具栏显示 x 轴的偏移量为 8。此偏移量不同于 Time display offset 值。

如果您不想在仿真开始时将信号初始化可视化或其他启动任务,则 Time span 参数非常有用。如果您点击 Span x-axis 按钮,您仍可以看到完整的仿真时间跨度。

偏移 x 轴标签

Time display offset 参数修改为 5。再次使用以下命令,或在示波器窗口中,点击 Configuration Properties 按钮并导航到 Time 选项卡。

scopeConfig.TimeDisplayOffset = '5';
sim(model);
open_system([model,'/Scope']);

现在,示波器中显示相同的时间跨度 2,但 x 轴标签具有偏移量 5,从 5 开始,到 7 结束。如果您点击 Span x-axis 按钮,x 轴标签仍然从 5 开始。

在波形视图上显示信号单位

您可以使用 InportOutport 模块在模型组件边界(SubsystemModel 模块)上指定信号单位。请参阅Simulink 模型中的单位指定。然后,您可以将 Scope 模块连接到 Outport 模块或连接到源自 Outport 模块的信号。在此示例中,Out1 模块的 Unit 属性设置为 m/s

在波形视图上显示单位

  1. 在 Scope 窗口的工具栏中,选择 Configuration Properties 按钮

  2. 在 Configuration Properties:Scope 对话框中,选择 Display 选项卡。

  3. Y-label 框中,输入 y 轴的标题,然后输入 (%<SignalUnits>)。例如,输入

    Velocity (%<SignalUnits>)
    
  4. 点击 OKApply

    信号单位在 y 轴标签中显示为米/秒 (m/s),在 Cursor Measurements 面板中显示为毫米/秒 (mm/s)。

从 Simulink 工具条中,您还可以选择 Debug > Information Overlays > Units。您不必在 Y-Label 属性中输入 (%<SignalUnits>)

以编程方式在波形视图上显示单位

  1. 获取示波器属性。在命令行窗口中,输入

    load_system('my_model')
    s = get_param('my_model/Scope','ScopeConfiguration');
    
  2. 在第一个显示画面中添加 y 轴标签。

    s.ActiveDisplay = 1
    s.YLabel = 'Velocity (%<SignalUnits>)';
    

您还可以将模型参数 ShowPortUnits 设置为 'on'。这样,模型中的所有示波器(无论在 Y-Label 属性中是否有 (%<SignalUnits>))都会在显示画面上显示单位。

load_system('my_model')
get_param('my_model','ShowPortUnits')
ans =
off
set_param('my_model', 'ShowPortUnits','on')
ans =
on

根据记录的数据对象确定单位

当使用 “Dataset” 格式保存来自示波器的仿真数据时,您可以在时序对象的 DataInfo 字段中找到单位信息。

注意

示波器对信号单位的支持仅适用于 “Dataset” 记录格式,不适用于 “Array”、“Structure” 和 “Structure With Time” 等旧记录格式。

  1. 在 Scope 窗口的工具栏中,选择 Configuration Properties 按钮

  2. 在 Configuration Properties 窗口中,选择 Logging 选项卡。

  3. 选中 Log data to workspace 复选框。在文本框中,输入用于保存仿真数据的变量名称。例如,输入 ScopeData

  4. 从 Scope 窗口工具栏中,选择运行按钮

  5. 在命令行窗口中,输入

    ScopeData.getElement(1).Values.DataInfo
    Package: tsdata
    Common Properties:
                 Units: m/s (Simulink.SimulationData.Unit)
         Interpolation: linear (tsdata.interpolation)
    

将具有不同单位的信号连接到示波器

当一个示波器上有多个端口时,Simulink® 会确保每个端口接收仅使用一种单位的数据。如果尝试合并具有不同单位的信号(例如,通过使用 Bus Creator 模块),Simulink 将返回错误。

示波器根据端口和显示画面的数量显示单位:

  • Number of ports equal to the number of displays - 以一一对应的方式将端口分配到显示画面,并在 y 轴标签上显示端口信号的单位。

  • Greater than the number of displays - 先以一一对应的方式将端口分配到显示画面,将其余的信号分配给最后一个显示画面。最后一个 y 轴标签上以逗号分隔列表形式显示不同单位。

选择显示画面的数量和布局

  1. 在 Scope 窗口中,选择 Configuration Properties 按钮

  2. 在 Configuration Properties 对话框中,选择 Main 选项卡,然后选择 Layout 按钮。

  3. 选择所需显示画面的数量和布局。

    您可以在一个行或一个列中选择四个以上的显示画面。在布局中点击,然后拖动鼠标指针扩展布局,最多可扩展为 16 行 16 列。

  4. 点击以将所选布局应用于 Scope 窗口。

MATLAB 桌面上停靠和取消停靠 Scope 窗口

  1. 在 Scope 窗口的右上角,点击“停靠 Scope”按钮。

    Scope 窗口位于 MATLAB® 桌面的命令行窗口上方。

  2. 点击“显示 Scope 操作”按钮,然后点击取消停靠 Scope

另请参阅

| |

相关主题