麻烦平衡模型中的简单功率流模型

Trouble balancing a simple power flow model in modelica

我尝试建立一个简单的模型,其中包含源和汇之间的电力或热能流动。 尽管我在连接器中只使用了一对流量和潜在变量,但我似乎遇到了与此 topic 中处理的问题相同的问题:

connector PowerPortE
  flow SI.Power P;
  SI.Voltage v "Dummy potential-variable to balance flow-variable P";
end PowerPortE;

信号响应功率接收器的简单示例如下所示:

model PowerSinkE
  SimplePowerSystem.PowerPortE Port;
  Modelica.Blocks.Interfaces.RealInput P(unit = "W");
  SI.Voltage v(start = 230);
equation
  Port.P = P;
  Port.v = v;
end PowerSinkE;

model Test
  SimplePowerSystem.PowerSinkE Verbraucher ;
  Modelica.Blocks.Sources.Sine sine1(freqHz = 50) ;
equation
  connect(sine1.y,Verbraucher.P);
end Test;

检查 PowerSinkE 顺利,但在尝试模拟时,出现以下错误:

Internal error pre-optimization module removeSimpleEquations failed.

Internal error Found Equation without time dependent variables Verbraucher.Port.P = const.k

An independent subset of the model has imbalanced number of equations (1) and variables (2).
variables:
Verbraucher.v
Verbraucher.Port.v
equations:
1 : Verbraucher.Port.v = Verbraucher.v

An independent subset of the model has imbalanced number of equations (4) and variables (3).
variables:
sine1.y
Verbraucher.P
Verbraucher.Port.P
equations:
1 : Verbraucher.Port.P = Verbraucher.P
2 : sine1.y = sine1.offset + (if time < sine1.startTime then 0.0 else sine1.amplitude * sin(6.283185307179586 * sine1.freqHz * (time - sine1.startTime) + sine1.phase))
3 : Verbraucher.Port.P = 0.0
4 : Verbraucher.P = sine1.y

最初我想将变量 v 完全排除在模型之外(尽管我不得不将它留在连接器中以进行平衡)但这也没有奏效:

Model is structurally singular, error found sorting equations
 1: 0.0 = sine1.offset + (if time < sine1.startTime then 0.0 else sine1.amplitude * sin(6.283185307179586 * sine1.freqHz * (time - sine1.startTime) + sine1.phase));
 for variables
 Verbraucher.Port.v(1)

问题好像是我需要流量变量power但是没有对应的potential变量。我 运行 不知道如何解决这个问题,所以感谢您的帮助。

我最初的想法是消费者中的端口未连接。这添加了等式 consumer.port.P = 0.0。但您真正需要的是端口电压的方程式。

您需要在电气连接器上使用电压和 电流,并且需要电气接地。我建议您查看 Modelica by Example 以了解有关电气和热组件建模的更多信息。

为什么在这种情况下尝试使用连接器?如果你不需要"pyhsical meaning"连接器内部的流量和潜在变量,你可以使用真实的输入和输出来处理信号。

package SimplePowerSystem
 model PowerSinkE
  import SI = Modelica.SIunits;
  SI.Power P;
  Modelica.Blocks.Interfaces.RealInput P_in(unit="W");
 equation
  P = P_in;
 end PowerSinkE;
 model Test
  SimplePowerSystem.PowerSinkE Verbraucher;
  Modelica.Blocks.Sources.Sine sine1(freqHz = 50);
 equation
  connect(sine1.y, Verbraucher.P_in);
 end Test;
end SimplePowerSystem;