交流电压表
在本示例中,我们将演示如何制作一个电压表模型,利用瞬时电压值传感器测量交流电压。
模型描述
标准交流电压表可依靠多种原理将瞬时信号(变量)转换为稳定读数。
当输入端施加正弦信号时,此类电压表最常见的输出值是一个有效信号值,等于 (其中 是正弦波的振幅)。在测量不同波形时,必须引入修正系数。
假设我们有一个电压表,其读数与输入信号的振幅成正比(并不总是这样,有时读数与功率成正比)。电压发生器ControlledVoltage
接收一些可变的控制信号,传感器Voltage
则向我们返回在模型步进设置所设定的时间时刻测量到的瞬时值。

该模型的输入是一个可变波形信号(默认为正弦波)乘以一个决定其振幅的阶跃信号。阶跃信号瞬间将信号发生器的振幅从 1 V 增加到 5 V。

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

简单地说,这种电压表的设计就是找出信号的振幅,并显示一个等于振幅除以 的值。
运行模型
在运行模型之前,我们通过寻址块Генератор сигналов
中的一个组件,将振荡器设置为正弦模式。
# Если модель еще не открыта, загрузим из файла
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" )
plot(
plot( data["u"].time, data["u"].value, label="Мгновенные значения сигнала" ),
plot( data["y"].time, data["y"].value, label="Показания вольтметра" ),
layout = (2,1)
)
正如我们所见,当我们测量振幅为 1 的正弦波时,电压表返回的值约等于0.707
或 。
让我们看看在电路输入端施加锯齿值 (sawtooth
) 或矩形脉冲 (square
) 会发生什么。
engee.set_param!( "ac_voltmeter_simple/Генератор сигналов/Signal Generator", "WaveForm"=>"sawtooth" )
data = engee.run( "ac_voltmeter_simple" )
plot(
plot( data["u"].time, data["u"].value, label="Мгновенные значения сигнала" ),
plot( data["y"].time, data["y"].value, label="Показания вольтметра" ),
layout = (2,1)
)
锯齿信号的有效值等于 ,即振幅为 1 的锯齿信号的有效值为0.578
。
但从图中我们可以看到,电压表仍然返回0.707
。这个值是由其工作原理造成的,它导致了测量中的方法误差。
了解了输入信号的形状后,将其乘以适当的系数,就可以轻松补偿这一误差的影响。
结论
如果需要,您可以在Engee中创建一个精确到箭头惯性或分段指示器的电压表模型。整流器、直流装置和其他元件可单独实现。
但如果建模的目的是为了演示众所周知的方法错误,则可以使用基本库中的模块来引入这些错误,这就是我们所做的。