Измерение среднего значения с переменной частотой - PullRequest
1 голос
/ 16 июня 2020

Я хочу измерить среднеквадратичное значение синусоидального напряжения с переменной частотой.

Реальная частота измеряется через систему ФАПЧ.

Проблема в том, что обычный «средний» блок работает только с частотой как фиксированным параметром, а не с переменной.

Есть ли способ использовать измеренную частоту в качестве частоты для любого типа среднего блока, который можно использовать для вычисления среднеквадратичного значения?

Код для базового примера c со стандартным Блоки OpenModelica прикреплены


 model var_rms
  Modelica.Electrical.Analog.Basic.Ground ground annotation(
    Placement(visible = true, transformation(origin = {-66, -48}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Electrical.Analog.Basic.Resistor resistor(R = 10)  annotation(
    Placement(visible = true, transformation(origin = {8, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Electrical.Analog.Sensors.VoltageSensor voltageSensor annotation(
    Placement(visible = true, transformation(origin = {8, -34}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Blocks.Math.RootMeanSquare rootMeanSquare annotation(
    Placement(visible = true, transformation(origin = {58, -72}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Blocks.Sources.Step Frequency_from_PLL(offset = 50, startTime = 0.5)  annotation(
    Placement(visible = true, transformation(origin = {40, -28}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Electrical.Analog.Sources.SineVoltage sineVoltage(V = 230, freqHz = 50.5) annotation(
    Placement(visible = true, transformation(origin = {50, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
  connect(voltageSensor.n, resistor.n) annotation(
    Line(points = {{18, -34}, {18, 50}}, color = {0, 0, 255}));
  connect(voltageSensor.p, resistor.p) annotation(
    Line(points = {{-2, -34}, {-2, 50}}, color = {0, 0, 255}));
  connect(resistor.p, ground.p) annotation(
    Line(points = {{-2, 50}, {-66, 50}, {-66, -38}, {-66, -38}}, color = {0, 0, 255}));
  connect(voltageSensor.v, rootMeanSquare.u) annotation(
    Line(points = {{8, -46}, {8, -72}, {46, -72}}, color = {0, 0, 127}));
  connect(sineVoltage.n, ground.p) annotation(
    Line(points = {{60, 50}, {76, 50}, {76, -4}, {-66, -4}, {-66, -38}, {-66, -38}}, color = {0, 0, 255}));
  connect(sineVoltage.p, resistor.n) annotation(
    Line(points = {{40, 50}, {18, 50}}, color = {0, 0, 255}));
  annotation(
    uses(Modelica(version = "3.2.3")));
end var_rms;

...