我尝试建立一个简单的模型,在源和汇之间有电流或热功率流。 我似乎遇到了与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)
问题似乎是我需要流量变量功率但没有相应的潜在变量。我想办法解决这个问题,所以感谢您的帮助。
答案 0 :(得分:1)
为什么在这种情况下尝试使用连接器?如果你不需要&#34; pyhsical意思&#34;在连接器内部的流量和潜在变量,您只需使用实际输入和输出来处理信号。
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;
答案 1 :(得分:0)
我最初的想法是消费者中的端口是未连接的。这会增加等式consumer.port.P = 0.0
。但你真正需要的是端口电压的等式。
答案 2 :(得分:0)
您需要在电气连接器上使用电压和电流,并且需要电气接地。我建议您查看Modelica by Example,了解有关电气和热分量建模的更多信息。