问题描述
我已经在 OpenModelica 的 ThermoPower 库中工作了一段时间,现在试图通过首先对布雷顿和兰金动力循环进行建模来构建组合动力循环.
I've been working within the ThermoPower Library of OpenModelica for a while now trying to build a Combined Power Cycle by first modeling the Brayton and Rankine Power Cycles first.
每次我尝试使用泵时,我总是收到如下错误:
Every time I attempt to use a pump, I always receive errors like:
[1] 10:31:00 翻译错误[ThermoPower.Examples: 2523:70-2523:81]:在范围 ThermoPower.Examples.RankineCycle.Models 中找不到变量 q_nom.
[1] 10:31:00 Translation Error[ThermoPower.Examples: 2523:70-2523:81]: Variable q_nom not found in scope ThermoPower.Examples.RankineCycle.Models.
[2] 10:31:00 翻译错误[ThermoPower.Examples: 2531:21-2531:69]:在范围内发现的循环相关常数或参数:{q_nom}、{head_nom}(使用 -d=ignoreCycles 忽略).
[2] 10:31:00 Translation Error[ThermoPower.Examples: 2531:21-2531:69]: Cyclically dependent constants or parameters found in scope : {q_nom}, {head_nom} (ignore with -d=ignoreCycles).
选择的任何泵都会为我的模型声明这些错误.我尝试了许多不同类型的解决方案,但都没有成功.
Any pump chosen, will always declare these errors for my models. I've tried many different types of solutions, all without success.
1) 我尝试使用矢量格式声明泵组件参数的值,即:q_nom = {1,1,1}.尝试模拟时会弹出相同的错误.
1) I've tried declaring values for the pump's component parameters using a vector format i.e. : q_nom = {1,1,1}. Same errors pop up when trying to simulate.
2) 我试过直接点击错误只是为了重定向到 ThermoPower.PowerPlants.这里我指向一行代码:
2) I've tried clicking the error directly only to be re-directed to ThermoPower.PowerPlants. Here I'm directed towards a line of code:
function flowCharacteristic =
ThermoPower.Functions.PumpCharacteristics.quadraticFlow (q_nom=
q_nom, head_nom=head_nom);
在这里,我尝试手动输入 q_nom & 的值.head_nom 没有成功.我还尝试在我的模型顶部复制上面的代码行,试图重新声明"函数flowCharacteristic".这只会导致错误地重新声明不可声明的类.
Here, I've tried manually entering values for q_nom & head_nom with no success. I've also tried copying the line of code above at the top of my model trying to "redeclare" the function "flowCharacteristic". This only results in an error about incorrectly redeclaring a class that is un-declarable.
我尝试了其他解决方案,但没有成功.
I've tried other solutions but with no success.
如果您对如何解决此问题有任何建议,请随时在下方留下您的意见!
If you have any advice on how to troubleshoot this issue please feel free to leave your input below!
更新:
这是我已经研究了一段时间的模型的代码.
Here is the code to the model I have been working on for some time now.
模型 Rankine_HRSG
model Rankine_HRSG
ThermoPower.PowerPlants.HRSG.Components.HE Superheater(
Cfnom_F = 0,
Cfnom_G = 0,
FFtype_F = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FFtype_G = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FluidPhaseStart = ThermoPower.Choices.FluidPhase.FluidPhases.Steam,
HCtype_F = ThermoPower.Choices.Flow1D.HCtypes.Downstream,
Kfnom_F = 0,
Kfnom_G = 0,
N_F = 2,
N_G = 2,
Nt = 1,
Tstartbar_G = 1073.15,
dpnom_F = 0,
dpnom_G = 0,
exchSurface_F = 10,
exchSurface_G = 10,
extSurfaceTub = 20,
fluidNomFlowRate = 50,
fluidNomPressure = 1e+06,
fluidVol = 10,
gasNomFlowRate = 102,
gasNomPressure = 101325,
gasQuasiStatic = false,
gasVol = 10,
lambda = 366,
metalVol = 10,
pstart_F = 5e+06,
pstart_G = 101325,
rhonom_F = 1000,
rhonom_G = 0.33)
annotation(
Placement(visible = true, transformation(origin = {50, 50}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.PowerPlants.HRSG.Components.HE Economizer(
Cfnom_F = 0,
Cfnom_G = 0,
FFtype_F = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FFtype_G = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FluidPhaseStart = ThermoPower.Choices.FluidPhase.FluidPhases.Liquid,
HCtype_F = ThermoPower.Choices.Flow1D.HCtypes.Downstream,
Kfnom_F = 0,
Kfnom_G = 0,
N_F = 2,
N_G = 2,
Nt = 1,
Tstartbar_G = 1023.15,
dpnom_F = 0,
dpnom_G = 0,
exchSurface_F = 10,
exchSurface_G = 10,
extSurfaceTub = 20,
fluidNomFlowRate = 50,
fluidNomPressure = 1e+06,
fluidVol = 10,
gasNomFlowRate = 102,
gasNomPressure = 101325,
gasVol = 10,
lambda = 366,
metalVol = 10,
pstart_F = 5e+06,
pstart_G = 101325,
rhonom_F = 1000,
rhonom_G = 0.33)
annotation(
Placement(visible = true, transformation(origin = {50, -50}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Examples.HRB.Models.Evaporator Evaporator(
Cfnom_G = 0,
FFtype_G = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
Kfnom_G = 0,
N = 2,
Tstart = 1048.15,
cm = 376.812,
dpnom_G = 0,
exchSurface = 10,
fluidNomFlowRate = 50,
fluidNomPressure = 1e+06,
fluidVol = 10,
gamma = 300,
gasNomFlowRate = 102,
gasNomPressure = 101325,
gasVol = 10,
metalVol = 10,
rhom = 8400,
rhonom_G = 0.33)
annotation(
Placement(visible = true, transformation(origin = {50, 0}, extent = {{-10,
-10}, {10, 10}}, rotation = 180)));
ThermoPower.Gas.SourcePressure FlueGasSource(
redeclare package Medium = ThermoPower.Media.FlueGas,
R = 0,
T = 800,
p0 = 101325)
annotation(
Placement(visible = true, transformation(origin = {94, 50}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Gas.SinkPressure FlueGasSink(
redeclare package Medium = ThermoPower.Media.FlueGas,
R = 0,
T = 700,
p0 = 101325)
annotation(
Placement(visible = true, transformation(origin = {10, -50}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Water.SteamTurbineStodola SteamTurbine(
PRstart = 1,
eta_iso_nom = 0.92,
explicitIsentropicEnthalpy = true,
partialArc_nom = 1,
pnom = 10e5,
wnom = 50,
wstart = 50)
annotation(
Placement(visible = true, transformation(origin = {0, 80}, extent = {{-10,
-10}, {10, 10}}, rotation = 180)));
ThermoPower.Examples.RankineCycle.Models.PrescribedPressureCondenser
Condenser(
Vtot = 10,
p = 1e+06)
annotation(
Placement(visible = true, transformation(origin = {-50, 30}, extent =
{{-10, -10}, {10, 10}}, rotation = 0)));
ThermoPower.Water.Pump Pump(
CheckValve = true,Np0 = 1,
V = 10,
dp0 = 0, head(start = 1),
hstart = 1e5,
n0 = 150,
n_const = 150, q_single(fixed = false), rho0 = 1000,
w0 = 50,
w_single(fixed = false),
wstart = 50)
annotation(
Placement(visible = true, transformation(origin = {-38, -12}, extent =
{{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Mechanics.Rotational.Sensors.PowerSensor PowerSensor annotation(
Placement(visible = true, transformation(origin = {-38, 68}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Electrical.Generator Generator annotation(
Placement(visible = true, transformation(origin = {-68, 68}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Blocks.Continuous.FirstOrder firstOrder1 annotation(
Placement(visible = true, transformation(origin = {-50, 92}, extent =
{{-8, -8}, {8, 8}}, rotation = 180)));
Modelica.Blocks.Interfaces.RealOutput Power annotation(
Placement(visible = true, transformation(origin = {-110, 0}, extent =
{{-10, -10}, {10, 10}}, rotation = 180), iconTransformation(origin =
{-110, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
inner ThermoPower.System system annotation(
Placement(visible = true, transformation(origin = {90, 90}, extent =
{{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(PowerSensor.flange_b, Generator.shaft) annotation(
Line(points = {{-48, 68}, {-59, 68}}));
connect(SteamTurbine.shaft_b, PowerSensor.flange_a) annotation(
Line(points = {{-6, 80}, {-14, 80}, {-14, 68}, {-28, 68}}));
connect(SteamTurbine.outlet, Condenser.steamIn) annotation(
Line(points = {{-8, 72}, {-8, 52}, {-50, 52}, {-50, 40}}, color = {0, 0,
255}));
connect(Superheater.waterOut, SteamTurbine.inlet) annotation(
Line(points = {{50, 60}, {50, 64}, {8, 64}, {8, 72}}, color = {0, 0,
255}));
connect(Evaporator.waterOut, Superheater.waterIn) annotation(
Line(points = {{50, 10}, {50, 10}, {50, 40}, {50, 40}}, color = {0, 0,
255}));
connect(Economizer.waterOut, Evaporator.waterIn) annotation(
Line(points = {{50, -40}, {50, -40}, {50, -10}, {50, -10}}, color = {0, 0,
255}));
connect(firstOrder1.y, Power) annotation(
Line(points = {{-58, 92}, {-90, 92}, {-90, 0}, {-102, 0}, {-102, 0},
{-110, 0}}, color = {0, 0, 127}));
connect(PowerSensor.power, firstOrder1.u) annotation(
Line(points = {{-30, 80}, {-30, 80}, {-30, 92}, {-40, 92}, {-40, 92},
{-40, 92}}, color = {0, 0, 127}));
connect(Condenser.waterOut, Pump.infl) annotation(
Line(points = {{-50, 20}, {-50, -10}, {-46, -10}}, color = {0, 0, 255}));
connect(Pump.outfl, Economizer.waterIn) annotation(
Line(points = {{-32, -4}, {-26, -4}, {-26, -80}, {50, -80}, {50, -60},
{50, -60}}, color = {0, 0, 255}));
connect(Economizer.gasOut, FlueGasSink.flange) annotation(
Line(points = {{40, -50}, {20, -50}, {20, -50}, {20, -50}}, color = {159,
159, 223}));
connect(Superheater.gasOut, Evaporator.gasIn) annotation(
Line(points = {{40, 50}, {20, 50}, {20, 30}, {80, 30}, {80, 0}, {60, 0}},
color = {159, 159, 223}));
connect(Evaporator.gasOut, Economizer.gasIn) annotation(
Line(points = {{40, 0}, {20, 0}, {20, -26}, {20, -26}, {20, -30}, {80,
-30}, {80, -50}, {60, -50}, {60, -50}}, color = {159, 159, 223}));
connect(FlueGasSource.flange, Superheater.gasIn) annotation(
Line(points = {{84, 50}, {60, 50}, {60, 50}, {60, 50}}, color = {159, 159,
223}));
annotation(
uses(ThermoPower(version = "3.1"), Modelica(version = "3.2.2")));end
Rankine_HRSG;
推荐答案
我设法使用 OMEdit v1.12.0(64 位)重现了该错误.但是,这似乎是我们使用的 OpenModelica-Version 的一个错误.Dymola 中的相同模型且没有错误/警告.此外,在 OpenModelica 中模拟该示例对我有用.另外,使用这一行:
I managed to reproduce the error using OMEdit v1.12.0 (64-bit). However, it seems that it is a bug with the OpenModelica-Version we are using. Same model in Dymola and no Errors/Warnings.Furthermore, simulating the example works for me in OpenModelica.Also, using this line:
function flowCharacteristic =
ThermoPower.Functions.PumpCharacteristics.quadraticFlow (q_nom={1,2,3},
head_nom={1,2,3});
修复了这个翻译错误.也许尝试下载其他版本的 OM.如果您使用最新版本,请降级,如果您使用旧版本,请升级.如果您无法使用我提供的行修复此错误,请提供您正在使用的 ThermoLib 和 OM 版本.
Fixes this translation error. Maybe try to download an other build of OM. If you use the latest release, downgrade, if you use an old release, upgrade. If you can not fix this error using the line i presented, please provide the version of the ThermoLib and OM you are using.
查看您的模型,存在一些问题:
Looking at your model, there are some issues:
- 在您的兰金循环中使用泵时,您必须为流量特性选择一个函数,并为
q_nom
和head_nom
提供值. - 您提供的周期缺少推动者.气体必须通过泵或
massFlowSource
在您的循环中移动. - 您声明了一个参数
partialArc_nom = 1
,该参数未在 ThermoPower 的 SteamTurbine 模型中使用.
- When using a pump for your rankine cycle, you have to select a function for the flow characteristic and give values for
q_nom
andhead_nom
. - The cycle you provided lacks a mover. The gas has to be moved through your cycle either by a pump or a
massFlowSource
. - You declared a parameter
partialArc_nom = 1
which is not used in the model SteamTurbine of ThermoPower.
修复所有这些错误会生成一个模型,该模型在 OM 和 Dymola 中都没有错误.模拟不起作用,因为一些初始值和方程会引起问题.通过将每个子模型的初始值传播到顶层来改变气体介质或设置一致的初始值可能会解决这个问题.这也可能是由我为参数 q_nom
和 head_nom
设置的虚拟值引起的.为这些参数选择物理值取决于您.在下面找到对我有用的固定代码.
Fixing all these errors results in a model which translates both in OM and Dymola without errors. The simulation does not work because some inital values and equations cause trouble. Changing the gas-medium or setting consitent initialValues by propagating the inital values of each submodel to the top-level may solve this problem. This could also be caused by the dummy-values i've set for the paramteres q_nom
and head_nom
. Choosing physical values for these parameters is up to you.Find below the fixed code which worked for me.
model Rankine_HRSG
ThermoPower.PowerPlants.HRSG.Components.HE Superheater(
Cfnom_F = 0,
Cfnom_G = 0,
FFtype_F = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FFtype_G = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FluidPhaseStart = ThermoPower.Choices.FluidPhase.FluidPhases.Steam,
HCtype_F = ThermoPower.Choices.Flow1D.HCtypes.Downstream,
Kfnom_F = 0,
Kfnom_G = 0,
N_F = 2,
N_G = 2,
Nt = 1,
dpnom_F = 0,
dpnom_G = 0,
exchSurface_F = 10,
exchSurface_G = 10,
extSurfaceTub = 20,
fluidNomFlowRate = 50,
fluidVol = 10,
gasNomFlowRate = 102,
gasQuasiStatic = false,
gasVol = 10,
lambda = 366,
metalVol = 10,
rhonom_F = 1000,
rhonom_G = 0.33,
gasNomPressure=101325,
fluidNomPressure=1000000,
rhomcm=1000,
Tstartbar_G=1073.15,
pstart_G=101325,
pstart_F=5000000)
annotation (
Placement(visible = true, transformation(origin = {50, 50}, extent=
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.PowerPlants.HRSG.Components.HE Economizer(
Cfnom_F = 0,
Cfnom_G = 0,
FFtype_F = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FFtype_G = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FluidPhaseStart = ThermoPower.Choices.FluidPhase.FluidPhases.Liquid,
HCtype_F = ThermoPower.Choices.Flow1D.HCtypes.Downstream,
Kfnom_F = 0,
Kfnom_G = 0,
N_F = 2,
N_G = 2,
Nt = 1,
dpnom_F = 0,
dpnom_G = 0,
exchSurface_F = 10,
exchSurface_G = 10,
extSurfaceTub = 20,
fluidNomFlowRate = 50,
fluidVol = 10,
gasNomFlowRate = 102,
gasVol = 10,
lambda = 366,
metalVol = 10,
rhonom_F = 1000,
rhonom_G = 0.33,
gasNomPressure=101325,
fluidNomPressure=1000000,
rhomcm=1000,
Tstartbar_G=1023.15,
pstart_G=101325,
pstart_F=5000000)
annotation (
Placement(visible = true, transformation(origin = {50, -50}, extent=
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Examples.HRB.Models.Evaporator Evaporator(
Cfnom_G = 0,
FFtype_G = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
Kfnom_G = 0,
N = 2,
cm = 376.812,
dpnom_G = 0,
exchSurface = 10,
fluidNomFlowRate = 50,
fluidVol = 10,
gamma = 300,
gasNomFlowRate = 102,
gasVol = 10,
metalVol = 10,
rhom = 8400,
rhonom_G = 0.33,
gasNomPressure=101325,
fluidNomPressure=1000000,
Tstart=1048.15)
annotation (
Placement(visible = true, transformation(origin = {50, 0}, extent = {{-10,
-10}, {10, 10}}, rotation = 180)));
ThermoPower.Gas.SourceMassFlow FlueGasSource(
redeclare package Medium = ThermoPower.Media.FlueGas,
p0=101325,
T=800,
w0=1)
annotation (
Placement(visible = true, transformation(origin = {94, 50}, extent=
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Gas.SinkPressure FlueGasSink(
redeclare package Medium = ThermoPower.Media.FlueGas,
R = 0,
T = 700,
p0 = 101325)
annotation (
Placement(visible = true, transformation(origin = {10, -50}, extent=
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Water.SteamTurbineStodola SteamTurbine(
PRstart = 1,
eta_iso_nom = 0.92,
explicitIsentropicEnthalpy = true,
wnom = 50,
wstart = 50,
pnom=1000000,
Kt=1)
annotation (
Placement(visible = true, transformation(origin = {0, 80}, extent = {{-10,
-10}, {10, 10}}, rotation = 180)));
//partialArc_nom = 1,
ThermoPower.Examples.RankineCycle.Models.PrescribedPressureCondenser
Condenser(
Vtot = 10, p=1000000)
annotation (
Placement(visible = true, transformation(origin = {-50, 30}, extent=
{{-10, -10}, {10, 10}}, rotation = 0)));
ThermoPower.Water.Pump Pump(
CheckValve = true,Np0 = 1,
V = 10,
dp0 = 0, head(start = 1),
hstart = 1e5,
n0 = 150,
n_const = 150, q_single(fixed = false), rho0 = 1000,
w0 = 50,
w_single(fixed = false),
wstart = 50,
redeclare function efficiencyCharacteristic =
ThermoPower.Functions.PumpCharacteristics.constantEfficiency (eta_nom=0.8),
redeclare function flowCharacteristic =
ThermoPower.Functions.PumpCharacteristics.linearFlow (q_nom={0.5,1},
head_nom={10,15}))
annotation (
Placement(visible = true, transformation(origin = {-38, -12}, extent=
{{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Mechanics.Rotational.Sensors.PowerSensor PowerSensor annotation (
Placement(visible = true, transformation(origin = {-38, 68}, extent=
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Electrical.Generator Generator annotation (
Placement(visible = true, transformation(origin = {-68, 68}, extent=
{{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Blocks.Continuous.FirstOrder firstOrder1 annotation (
Placement(visible = true, transformation(origin = {-50, 92}, extent=
{{-8, -8}, {8, 8}}, rotation = 180)));
Modelica.Blocks.Interfaces.RealOutput Power annotation (
Placement(visible = true, transformation(origin = {-110, 0}, extent=
{{-10, -10}, {10, 10}}, rotation = 180), iconTransformation(origin=
{-110, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
inner ThermoPower.System system annotation (
Placement(visible = true, transformation(origin = {90, 90}, extent=
{{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(PowerSensor.flange_b, Generator.shaft) annotation (
Line(points={{-48,68},{-59.4,68}}));
connect(SteamTurbine.shaft_b, PowerSensor.flange_a) annotation (
Line(points={{-6.4,80},{-14,80},{-14,68},{-28,68}}));
connect(SteamTurbine.outlet, Condenser.steamIn) annotation (
Line(points = {{-8, 72}, {-8, 52}, {-50, 52}, {-50, 40}}, color = {0, 0,
255}));
connect(Superheater.waterOut, SteamTurbine.inlet) annotation (
Line(points = {{50, 60}, {50, 64}, {8, 64}, {8, 72}}, color = {0, 0,
255}));
connect(Evaporator.waterOut, Superheater.waterIn) annotation (
Line(points = {{50, 10}, {50, 10}, {50, 40}, {50, 40}}, color = {0, 0,
255}));
connect(Economizer.waterOut, Evaporator.waterIn) annotation (
Line(points = {{50, -40}, {50, -40}, {50, -10}, {50, -10}}, color = {0, 0,
255}));
connect(firstOrder1.y, Power) annotation (
Line(points={{-58.8,92},{-90,92},{-90,0},{-102,0},{-102,0},{-110,0}},
color = {0, 0, 127}));
connect(PowerSensor.power, firstOrder1.u) annotation (
Line(points={{-30,79},{-30,79},{-30,92},{-40,92},{-40,92},{-40.4,92}},
color = {0, 0, 127}));
connect(Condenser.waterOut, Pump.infl) annotation (
Line(points = {{-50, 20}, {-50, -10}, {-46, -10}}, color = {0, 0, 255}));
connect(Pump.outfl, Economizer.waterIn) annotation (
Line(points={{-32,-5},{-26,-5},{-26,-80},{50,-80},{50,-60},{50,-60}},
color = {0, 0, 255}));
connect(Economizer.gasOut, FlueGasSink.flange) annotation (
Line(points = {{40, -50}, {20, -50}, {20, -50}, {20, -50}}, color = {159,
159, 223}));
connect(Superheater.gasOut, Evaporator.gasIn) annotation (
Line(points = {{40, 50}, {20, 50}, {20, 30}, {80, 30}, {80, 0}, {60, 0}},
color = {159, 159, 223}));
connect(Evaporator.gasOut, Economizer.gasIn) annotation (
Line(points = {{40, 0}, {20, 0}, {20, -26}, {20, -26}, {20, -30}, {80,
-30}, {80, -50}, {60, -50}, {60, -50}}, color = {159, 159, 223}));
connect(FlueGasSource.flange, Superheater.gasIn) annotation (
Line(points = {{84, 50}, {60, 50}, {60, 50}, {60, 50}}, color = {159, 159,
223}));
annotation (
uses(ThermoPower(version = "3.1"), Modelica(version = "3.2.2")));
end Rankine_HRSG;
这篇关于为什么 q_nom &head_nom 总是为从 ThermoPower 库构建的模型提出问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!