Apakah saya menggabungkan Fungsi bersarang ini dengan benar di OpenModelica?

CATATAN: Pertanyaan ini merujuk pada PrescribedSpeedPump.mo yang terletak di ThermoPower.Examples.RankineCycle.Models.PrescribedSpeedPump

Saya mencoba model pompa yang sederhana karena semua model yang saya buat dengan menggunakan pompa ini selalu menghasilkan pesan kesalahan yang sama:

[1] 16:02:01 Kesalahan Terjemahan [ThermoPower.PowerPlants: 2071:95-2071:108]: Variabel q_nom tidak ditemukan dalam cakupan ThermoPower.PowerPlants.HRSG.Components.

[2] 16:02:01 Kesalahan Terjemahan [ThermoPower.PowerPlants: 2076:84-2076:132]: Konstanta atau parameter yang bergantung secara siklis ditemukan dalam cakupan : {q_nom}, {head_nom} (abaikan dengan -d=ignoreCycles).

Setelah memeriksa PrescribedSpeedPump ini, ini terdiri dari dua kelas: A "FluidMedium" & "flowCharacteristic". Ini adalah Fungsi - "FlowCharacteristic" yang menghasilkan kesalahan.

Mengapa saya bingung: Kesalahannya mengatakan bahwa ia tidak dapat menemukan Variabel q_nom di jalur ThermoPower.PowerPlants.HRSG.Components. Nah, disebutkan sebelumnya, saya katakan ini terletak di dalam paket Contoh Perpustakaan ThermoPower.

Alasan lain saya bingung dengan situasi ini adalah karena saya dapat memasukkan nilai parameter secara manual untuk q_nom dan head_nom. Mereka telah diberi nilai dummy {1,2,3} untuk keduanya. Namun, variabel "tidak dapat ditemukan".

Terakhir, saya mencoba mengedit sendiri fungsi "flowCharacteristic" secara manual dan kemudian mencoba memeriksa model saya. Masih muncul kesalahan yang sama. Saya benar-benar tidak tahu cara memecahkan masalah kesalahan ini saat ini dan telah mencoba apa yang dapat saya pikirkan.

Jika Anda memiliki wawasan atau saran, silakan tinggalkan komentar di bawah! Terima kasih telah membaca sejauh ini, saya menghargai waktu dan upaya Anda dalam mencoba membantu orang lain dalam komunitas ini. Di bawah ini saya telah menyalin kode ke model pompa saya.

KODE DIPERBARUI:

model Pump_Verified


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

ThermoPower.PowerPlants.HRSG.Components.PrescribedSpeedPump
prescribedSpeedPump1(
redeclare package WaterMedium = ThermoPower.Water.StandardWater,
Np0 = 1,
V = 20,
head_nom = {1, 2, 3},
hstart = 451024,
n0 = 1200,
nominalFlow = 142.512,
nominalInletPressure=132000,
nominalOutletPressure=8581000,
q_nom = {1, 2, 3},
rho0=1000)
          annotation (
Placement(visible = true, transformation(origin = {2, 0}, extent = {{-10,
-10}, {10, 10}}, rotation = 0)));

ThermoPower.Examples.RankineCycle.Models.PrescribedPressureCondenser
Condenser(
Vtot = 50,
p = 132000)  annotation (
Placement(visible = true, transformation(origin = {-50, 40}, extent = 
{{-10,
-10}, {10, 10}}, rotation = 0)));

ThermoPower.PowerPlants.SteamTurbineGroup.Components.StateReader_water
stateReader_water1 annotation (
Placement(visible = true, transformation(origin = {-50, 70}, extent = 
{{-10,
-10}, {10, 10}}, rotation = -90)));

ThermoPower.PowerPlants.SteamTurbineGroup.Components.StateReader_water
stateReader_water2 annotation (
Placement(visible = true, transformation(origin = {-50, 10}, extent = 
{{-10,
-10}, {10, 10}}, rotation = -90)));

ThermoPower.Water.SourceMassFlow SourceSteamFlow(
T = 380.561 - 273,
h = 931235,
p0 = 1.32e5,
w0 = 142.512)  annotation (
Placement(visible = true, transformation(origin = {-72, 84}, extent = 
{{-10,
-10}, {10, 10}}, rotation = 0)));

ThermoPower.Water.SinkMassFlow SinkWaterFlow annotation (
Placement(visible = true, transformation(origin = {52, 0}, extent = {{-10,
-10}, {10, 10}}, rotation = 0)));

inner ThermoPower.System system annotation (
Placement(visible = true, transformation(origin = {90, 88}, extent = 
{{-10,
-10}, {10, 10}}, rotation = 0)));

ThermoPower.Water.SensP sensP_Inlet annotation(
Placement(visible = true, transformation(origin = {-32, 4}, extent = 
{{-10, -10}, {10, 10}}, rotation = 0)));

ThermoPower.Water.SensP sensP_Outlet annotation(
Placement(visible = true, transformation(origin = {26, 4}, extent = {{-10, 
-10}, {10, 10}}, rotation = 0)));

Modelica.Blocks.Sources.Constant const(k = 1200)  annotation(
Placement(visible = true, transformation(origin = {-10, 66}, extent = 
{{-10, -10}, {10, 10}}, rotation = 0)));

equation
connect(const.y, prescribedSpeedPump1.pumpSpeed_rpm) annotation(
Line(points = {{2, 66}, {10, 66}, {10, 30}, {-18, 30}, {-18, 6}, {-6, 6}, 
{-6, 6}}, color = {0, 0, 127}));
connect(sensP_Outlet.flange, SinkWaterFlow.flange) annotation(
Line(points = {{26, 0}, {42, 0}, {42, 0}, {42, 0}}, color = {0, 0, 255}));
connect(prescribedSpeedPump1.outlet, sensP_Outlet.flange) annotation(
Line(points = {{12, 0}, {26, 0}, {26, 0}, {26, 0}}, color = {0, 0, 255}));
connect(sensP_Inlet.flange, prescribedSpeedPump1.inlet) annotation(
Line(points = {{-32, 0}, {-8, 0}, {-8, 0}, {-8, 0}}, color = {0, 0, 
255}));
connect(stateReader_water2.outlet, sensP_Inlet.flange) annotation(
Line(points = {{-50, 4}, {-50, 4}, {-50, 0}, {-32, 0}, {-32, 0}}, color = 
{0, 0, 255}));
connect(Condenser.waterOut, stateReader_water2.inlet) annotation(
Line(points = {{-50, 30}, {-50, 16}}, color = {0, 0, 255}));
connect(stateReader_water1.outlet, Condenser.steamIn) annotation(
Line(points = {{-50, 64}, {-50, 50}}, color = {0, 0, 255}));
connect(SourceSteamFlow.flange, stateReader_water1.inlet) annotation(
Line(points = {{-62, 84}, {-50, 84}, {-50, 76}, {-50, 76}, {-50, 76}}, 
color = {0, 0, 255}));
annotation (
uses(ThermoPower(version = "3.1"), Modelica(version="3.2.2")));

end Pump_Verified;

person finnahuss    schedule 05.03.2019    source sumber


Jawaban (1)


Anda menggunakan ThermoPower.PowerPlants.HRSG.Components.PrescribedSpeedPump, tetapi sepertinya Anda ingin memodifikasinya, khususnya:

  • Fungsi flowCharacteristic sudah ada dalam model itu - tetapi tidak dapat diganti sehingga Anda tidak dapat mengubahnya, dan Anda tetap tidak dapat menggunakan q_nom dari model dalam deklarasi ulang. Namun karena sudah kuadrat maka tidak perlu diubah.
  • Media tidak ditentukan untuk komponen ini (dengan asumsi saya menggunakan versi ThermoPower yang benar).
  • Pompa kecepatan yang ditentukan memiliki input yang tidak terhubung.

Jika Anda hanya ingin menggunakannya:

  • Hapus fungsi flowCharacteristic
  • Deklarasikan ulang media
  • Hubungkan beberapa sinyal ke pompa

Berikut ini setidaknya berfungsi di Dymola:

model Pump_Check

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

ThermoPower.PowerPlants.HRSG.Components.PrescribedSpeedPump
prescribedSpeedPump1(
    redeclare package WaterMedium = ThermoPower.Water.StandardWater,
Np0 = 1,
V = 20,
head_nom = {1, 2, 3},
hstart = 451024,
n0 = 1200,
nominalFlow = 142.512,
    nominalInletPressure=132000,
    nominalOutletPressure=8581000,
q_nom = {1, 2, 3},
    rho0=1000)
              annotation (
Placement(visible = true, transformation(origin = {2, 0}, extent = {{-10,
-10}, {10, 10}}, rotation = 0)));

ThermoPower.Examples.RankineCycle.Models.PrescribedPressureCondenser
Condenser(
Vtot = 50,
p = 132000)  annotation (
Placement(visible = true, transformation(origin = {-50, 40}, extent = {{-10,
-10}, {10, 10}}, rotation = 0)));

ThermoPower.PowerPlants.SteamTurbineGroup.Components.StateReader_water
stateReader_water1 annotation (
Placement(visible = true, transformation(origin = {-50, 70}, extent = {{-10,
-10}, {10, 10}}, rotation = -90)));

ThermoPower.PowerPlants.SteamTurbineGroup.Components.StateReader_water
stateReader_water2 annotation (
Placement(visible = true, transformation(origin = {-50, 10}, extent = {{-10,
-10}, {10, 10}}, rotation = -90)));

ThermoPower.Water.SourceMassFlow SourceSteamFlow(
T = 380.561 - 273,
h = 931235,
p0 = 1.32e5,
w0 = 142.512)  annotation (
Placement(visible = true, transformation(origin = {-72, 84}, extent = {{-10,
-10}, {10, 10}}, rotation = 0)));

ThermoPower.Water.SinkMassFlow SinkWaterFlow annotation (
Placement(visible = true, transformation(origin = {52, 0}, extent = {{-10,
-10}, {10, 10}}, rotation = 0)));
inner ThermoPower.System system annotation (
Placement(visible = true, transformation(origin = {90, 88}, extent = {{-10,
-10}, {10, 10}}, rotation = 0)));
  Modelica.Blocks.Interfaces.RealInput pumpSpeed_rpm1
    annotation (Placement(transformation(extent={{-46,66},{-6,106}})));
equation 
connect(prescribedSpeedPump1.outlet, SinkWaterFlow.flange) annotation (
Line(points = {{12, 0}, {42, 0}, {42, 0}, {42, 0}}, color = {0, 0, 255}));
connect(stateReader_water2.outlet, prescribedSpeedPump1.inlet) annotation (
Line(points = {{-50, 4}, {-50, 4}, {-50, 0}, {-8, 0}, {-8, 0}}, color = {0,
0, 255}));
connect(Condenser.waterOut, stateReader_water2.inlet) annotation (
Line(points={{-50,30},{-50,16}},                            color = {0, 0,
255}));
connect(stateReader_water1.outlet, Condenser.steamIn) annotation (
Line(points={{-50,64},{-50,50}},                            color = {0, 0,
255}));
connect(SourceSteamFlow.flange, stateReader_water1.inlet) annotation (
Line(points = {{-62, 84}, {-50, 84}, {-50, 76}, {-50, 76}, {-50, 76}}, color=
  {0, 0, 255}));

  connect(prescribedSpeedPump1.pumpSpeed_rpm, pumpSpeed_rpm1) annotation (Line(
        points={{-5.2,6},{-16,6},{-16,86},{-26,86}}, color={0,0,127}));
annotation (
uses(ThermoPower(version = "3.1"), Modelica(version="3.2.2")));
end Pump_Check;
person Hans Olsson    schedule 06.03.2019
comment
Hai @HansOlsson , Hanya ingin memberi tahu Anda bahwa kode yang Anda berikan ternyata menghasilkan model yang dicentang, ini membuat instance dan juga simulasi. Terima kasih! Meskipun saya masih mendapatkan kesalahan yang sama seperti yang disebutkan sebelumnya, akhirnya berhasil dan saya syukuri. Namun, pada simulasi, tekanan keluar tidak berubah ke nilai yang saya tetapkan dan tetap konstan terhadap tekanan masuk. Apakah Anda tahu cara memperbaiki masalah ini? Hal ini ditentukan dengan menambahkan SensP atau sensor tekanan pada inlet dan outlet pompa. Biarkan aku tahu apa yang Anda pikirkan! Terima kasih! - person finnahuss; 06.03.2019
comment
Pertama, yang jelas: Apakah Anda menghubungkan sinyal normal - seperti jalan - ke pompa. Saya yakin nilai 0 digunakan untuk masukan seperti itu, yang tidak berfungsi dengan baik. - person Hans Olsson; 07.03.2019
comment
Awalnya, saya tidak melakukan simulasi dengan koneksi sinyal normal. Saya hanya akan menjalankan simulasi dari kode yang Anda salin sebelumnya di thread ini. - person finnahuss; 07.03.2019
comment
Awalnya, saya tidak melakukan simulasi dengan koneksi sinyal normal. Saya hanya akan menjalankan simulasi dari kode yang Anda salin sebelumnya di thread ini. Simulasi tersebut berjalan meskipun tidak ada masukan sinyal. - person finnahuss; 07.03.2019
comment
Namun saya bingung bagaimana cara menghubungkan sinyal input ke komponen RealInput. Ini karena kode yang Anda posting di atas, memiliki hubungan antara Modelica.Blocks.Interfaces.RealInput dan pumpSpeed_rpm dari yang ditentukanSpeedPump datang dari belakang segitiga dan bukan dari intinya. Naluri pertama saya adalah sumber komponen RealInput dengan masukan tunggal, di mana komponen RealInput kemudian akan dimasukkan ke dalam masukan kecepatanSpeedPump yang ditentukan. Biarkan aku tahu apa yang Anda pikirkan. Terima kasih lagi. - person finnahuss; 07.03.2019
comment
Saya telah memperbarui kode saya di atas dengan apa yang sedang saya kerjakan. - person finnahuss; 07.03.2019