Engee 文档
Notebook

交流电压电压表

在这个例子中,我们将展示如何制作一个电压表模型,用于测量来自瞬时电压传感器的交流电压。

模型描述

标准交流电压表可以依靠各种原理将瞬时(AC)信号转换为稳定的指示器。

最经常地,作为这样的电压表的输出值,当在输入处施加正弦波时,期望接收等于有效信号值 (哪里 -正弦波的振幅)。 测量不同波形时,必须输入校正因子。

让我们假设我们面前有一个电压表,其读数与输入信号的幅度成正比(情况并非总是如此,有时读数与其功率成正比)。 电压发生器 ControlledVoltage 接收一些可变控制信号,并且传感器 Voltage 向我们返回在模型的步进设置所设置的时间点测量的瞬时值。

image.png

该模型在输入端采用可变形式信号(默认情况下为正弦信号),乘以确定其幅度的阶跃信号。 步瞬间将信号发生器的幅度从1增加到5V。

image.png

Цифровой вольтметр 它也由屏蔽子系统表示。 在其设置中,您可以指定平滑窗口的大小,这将影响更改电压表读数的平滑度。

image.png

这种电压表的装置,简单地说,提供了寻找信号的幅度,并显示一个值等于幅度除以 .

启动模型

在启动模型之前,我们专门将发电机设置为正弦模式,指的是单元内部的一个组件。 Генератор сигналов.

In [ ]:
# Если модель еще не открыта, загрузим из файла
if "ac_voltmeter_simple"  getfield.(engee.get_all_models(), :name)
    engee.load( "$(@__DIR__)/ac_voltmeter_simple.engee");
end;

engee.set_param!( "ac_voltmeter_simple/Генератор сигналов/Signal Generator", "WaveForm"=>"sine" )
data = engee.run( "ac_voltmeter_simple" )
Out[0]:
Dict{String, DataFrame} with 2 entries:
  "u" => 2001×2 DataFrame…
  "y" => 2001×2 DataFrame
In [ ]:
plot(
    plot( data["u"].time, data["u"].value, label="Мгновенные значения сигнала" ),
    plot( data["y"].time, data["y"].value, label="Показания вольтметра" ),
    layout  = (2,1)
)
Out[0]:

正如我们所看到的,当测量幅度为1的正弦波时,电压表返回的值大约等于 0.707.

让我们看看如果我们将锯齿值应用于电路的输入会发生什么(sawtooth)或矩形脉冲(square).

In [ ]:
engee.set_param!( "ac_voltmeter_simple/Генератор сигналов/Signal Generator", "WaveForm"=>"sawtooth" )
data = engee.run( "ac_voltmeter_simple" )
Out[0]:
Dict{String, DataFrame} with 2 entries:
  "u" => 2001×2 DataFrame…
  "y" => 2001×2 DataFrame
In [ ]:
plot(
    plot( data["u"].time, data["u"].value, label="Мгновенные значения сигнала" ),
    plot( data["y"].time, data["y"].value, label="Показания вольтметра" ),
    layout  = (2,1)
)
Out[0]:

锯齿信号的有效值为 ,即幅值为1的锯齿波信号具有有效值 0.578.

但在图表上我们看到电压表仍然返回给我们 0.707. 该值是由于其操作原理导致测量中的方法学误差。

知道输入信号的形状,很容易通过将其乘以适当的系数来补偿该误差的影响。

结论

如果需要,您可以在Engee中创建一个电压表模型,其精度可达箭头或段指示器的惯性。 分别实现整流器、直流装置等元件。

但是,如果模拟的目的是证明众所周知的方法学错误,则可以使用我们所做的基本库的块来引入它们。