1

我已经在 OpenModelica 的 ThermoPower 库中工作了一段时间,现在尝试通过首先对 Brayton 和 Rankine Power Cycles 进行建模来构建组合的 Power Cycle。

每次我尝试使用泵时,我总是收到如下错误:

[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 Translation Error
[ThermoPower.Examples: 2531:21-2531:69]: Cyclically dependent constants or parameters found in scope : {q_nom}, {head_nom} (ignore with -d=ignoreCycles).

选择的任何泵都将始终为我的模型声明这些错误。我尝试了许多不同类型的解决方案,但都没有成功。

  1. 我尝试使用矢量格式声明泵组件参数的值,即:q_nom = {1,1,1}。尝试模拟时会弹出相同的错误。

  2. 我尝试直接单击错误只是为了重定向到 ThermoPower.PowerPlants。在这里,我指向一行代码:

    函数 flowCharacteristic = ThermoPower.Functions.PumpCharacteristics.quadraticFlow (q_nom= q_nom, head_nom=head_nom);

在这里,我尝试手动输入 q_nom 和 head_nom 的值,但没有成功。我还尝试在模型顶部复制上面的代码行,试图“重新声明”函数flowCharacteristic。这只会导致错误地重新声明不可声明的类。

我尝试了其他解决方案,但没有成功。

如果您对如何解决此问题有任何建议,请随时在下面留下您的意见!

更新:

这是我已经研究了一段时间的模型的代码。

模型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;
4

1 回答 1

1

我设法使用 OMEdit v1.12.0(64 位)重现了该错误。但是,这似乎是我们使用的 OpenModelica-Version 的一个错误。Dymola 中的相同型号,没有错误/警告。此外,在 OpenModelica 中模拟示例对我有用。另外,使用这一行:

  function flowCharacteristic =
      ThermoPower.Functions.PumpCharacteristics.quadraticFlow (q_nom={1,2,3},
        head_nom={1,2,3});

修复了这个翻译错误。也许尝试下载其他版本的 OM。如果您使用最新版本,请降级,如果您使用旧版本,请升级。如果您无法使用我提供的行修复此错误,请提供您正在使用的 ThermoLib 和 OM 的版本。

编辑:查看您的模型,存在一些问题:

  1. 在朗肯循环中使用泵时,您必须为流量特性选择一个函数并给出 和 的q_nomhead_nom
  2. 您提供的循环缺少动力。气体必须通过泵或massFlowSource.
  3. 您声明了一个partialArc_nom = 1未在 ThermoPower 的 SteamTurbine 模型中使用的参数。

修复所有这些错误会导致模型在 OM 和 Dymola 中均无错误地进行转换。模拟不起作用,因为某些初始值和方程式会引起麻烦。通过将每个子模型的初始值传播到顶层来更改气体介质或设置一致的初始值可能会解决此问题。这也可能是由我为参数设置的虚拟值q_nomhead_nom. 为这些参数选择物理值取决于您。在下面找到对我有用的固定代码。

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;
于 2019-02-23T14:53:23.430 回答