Regelung von 3 und mehr Durchflüsse (Durchflussteiler)

... Gerne Lösungsvorschläge...
Es ist doch ganz allein von deinen Erfordernissen abhängig, wie du die Sollwerte berechnest. Wenn du die Gesamtmenge als Grundlage verwenden möchtest, denn betragen die Sollwerte in den drei Strängen 25%, 35% und 40% von der vorgegebenen Gesamtmenge.

... Wie wäre dein Vorschlag mehr Gesamt-Leistung in die Stränge rein zu bringen ohne die Temperatur anzuheben? ..
Wenn du jetzt die Leistung oder die Wärmemenge regeln willst, dann musst du diese erst einmal messen. Die Leistung kannst du theoretisch erhöhen durch eine Erhöhung der Temperatur bzw. der Temperaturdifferenz oder durch Erhöhung der Durchflussmenge. Das ist aber nur die Theorie, praktisch ist das nicht so einfach abgehandelt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So wie ich es verstehe, bekommst du von einem übergeordneten System die Sollwerte für die Stränge.
Das Ventil mit dem höchsten Sollwert vom übergeordneten System soll auf 100% fahren.
Also eine Verhältnissteuerung.
Zulauf spielt keine Rolle, Absoluter Durchfluß in den Strängen auch nicht.
Somit bleibt doch eigentlich nur die Ventilstellung.
Alle anderen Eingriffe bringen - meiner Meinung nach - nur das übergeordnete System durcheinander.
Gesamtenergiemenge bestimmt die Zulaufregelung durch Fördermenge und Temperatur.
 
Völlig ungetestet:
Code:
FUNCTION DISTRIB : VOID

VAR_INPUT
    irSkala  : REAL  // >= 0.001 (willkürlich!); MaximalWert für orSollW1, orSollW2 und orSollW3.
    irVorga1 : REAL  // vorgegebener Anteil von SollWert1: = 0.0 oder >= 1.0.
    irVorga2 : REAL  // vorgegebener Anteil von SollWert2: = 0.0 oder >= 1.0.
    irVorga3 : REAL  // vorgegebener Anteil von SollWert3: = 0.0 oder >= 1.0.
END_VAR // Für irVorga1, irVorga2 und irVorga3 gilt:
        // 1. Dieselbe Einheit verwenden! Könnte z.B. Liter/Sekunde sein oder % oder Promille
        // 2. Wenn Wert < 1.0, dann wird er durch 0.0 ersetzt und der entspr. SollWert auch!

VAR_OUTPUT
    orSollW1 : REAL  // SollWert1 skaliert auf irSkala.
    orSollW2 : REAL  // SollWert2 skaliert auf irSkala.
    orSollW3 : REAL  // SollWert3 skaliert auf irSkala.
END_VAR

VAR_TEMP
    trSkala  : REAL  // ggfs korrigierter Wert von irSkala.
    trVorga1 : REAL  // ggfs korrigierter Wert von irVorga1.
    trVorga2 : REAL  // ggfs korrigierter Wert von irVorga2.
    trVorga3 : REAL  // ggfs korrigierter Wert von irVorga3.
    trMaximV : REAL  // Maximum der 3 Werte trVorga1, trVorga2, trVorga3 oder 1.0.
    trFaktor : REAL  // Faktor, mit dem die 3 Werte trVorga1, trVorga2 und trVorga3 ...
END_VAR              // ... multipliziert werden müssen, sodass ...
                     // ... MAX(orSollW1, orSollW2, orSollW3) = trSkala wird.

// InputWerte bei Unterschreitung von 0.001 bzw. 1.0 korrigieren:
trSkala  := MAX(IN1:=0.001, IN2:=irSkala) ;
trVorga1 := irVorga1 ; IF trVorga1 < 1.0 THEN trVorga1 = 0.0 ; END_IF ;
trVorga2 := irVorga2 ; IF trVorga2 < 1.0 THEN trVorga2 = 0.0 ; END_IF ;
trVorga3 := irVorga3 ; IF trVorga3 < 1.0 THEN trVorga3 = 0.0 ; END_IF ;

// Verteilung:
trMaximV := MAX(IN1:=1.0, IN2:=trVorgab1, IN3:=trVorgab2, IN4:=trVorgab3) ;
trFaktor := trSkala  / trMaximV ;
orSollW1 := trVorga1 * trFaktor ;
orSollW2 := trVorga2 * trFaktor ;
orSollW3 := trVorga3 * trFaktor ;

END_FUNCTION
 
Völlig ungetestet:
Code:
FUNCTION DISTRIB : VOID

VAR_INPUT
    irSkala  : REAL  // >= 0.001 (willkürlich!); MaximalWert für orSollW1, orSollW2 und orSollW3.
    irVorga1 : REAL  // vorgegebener Anteil von SollWert1: = 0.0 oder >= 1.0.
    irVorga2 : REAL  // vorgegebener Anteil von SollWert2: = 0.0 oder >= 1.0.
    irVorga3 : REAL  // vorgegebener Anteil von SollWert3: = 0.0 oder >= 1.0.
END_VAR // Für irVorga1, irVorga2 und irVorga3 gilt:
        // 1. Dieselbe Einheit verwenden! Könnte z.B. Liter/Sekunde sein oder % oder Promille
        // 2. Wenn Wert < 1.0, dann wird er durch 0.0 ersetzt und der entspr. SollWert auch!

VAR_OUTPUT
    orSollW1 : REAL  // SollWert1 skaliert auf irSkala.
    orSollW2 : REAL  // SollWert2 skaliert auf irSkala.
    orSollW3 : REAL  // SollWert3 skaliert auf irSkala.
END_VAR

VAR_TEMP
    trSkala  : REAL  // ggfs korrigierter Wert von irSkala.
    trVorga1 : REAL  // ggfs korrigierter Wert von irVorga1.
    trVorga2 : REAL  // ggfs korrigierter Wert von irVorga2.
    trVorga3 : REAL  // ggfs korrigierter Wert von irVorga3.
    trMaximV : REAL  // Maximum der 3 Werte trVorga1, trVorga2, trVorga3 oder 1.0.
    trFaktor : REAL  // Faktor, mit dem die 3 Werte trVorga1, trVorga2 und trVorga3 ...
END_VAR              // ... multipliziert werden müssen, sodass ...
                     // ... MAX(orSollW1, orSollW2, orSollW3) = trSkala wird.

// InputWerte bei Unterschreitung von 0.001 bzw. 1.0 korrigieren:
trSkala  := MAX(IN1:=0.001, IN2:=irSkala) ;
trVorga1 := irVorga1 ; IF trVorga1 < 1.0 THEN trVorga1 = 0.0 ; END_IF ;
trVorga2 := irVorga2 ; IF trVorga2 < 1.0 THEN trVorga2 = 0.0 ; END_IF ;
trVorga3 := irVorga3 ; IF trVorga3 < 1.0 THEN trVorga3 = 0.0 ; END_IF ;

// Verteilung:
trMaximV := MAX(IN1:=1.0, IN2:=trVorgab1, IN3:=trVorgab2, IN4:=trVorgab3) ;
trFaktor := trSkala  / trMaximV ;
orSollW1 := trVorga1 * trFaktor ;
orSollW2 := trVorga2 * trFaktor ;
orSollW3 := trVorga3 * trFaktor ;

END_FUNCTION
Moinsen,
ja das geht schon genau so in die Richtung.
Also Gesamt-Leistung und Leistung in den Strängen wird anders wo berechnet. Ich muss nur die daraus resultierenden Sollwerte ausregeln.

So wie ich es verstehe, bekommst du von einem übergeordneten System die Sollwerte für die Stränge.
Das Ventil mit dem höchsten Sollwert vom übergeordneten System soll auf 100% fahren.
Also eine Verhältnissteuerung.
Zulauf spielt keine Rolle, Absoluter Durchfluß in den Strängen auch nicht.
Somit bleibt doch eigentlich nur die Ventilstellung.
Alle anderen Eingriffe bringen - meiner Meinung nach - nur das übergeordnete System durcheinander.
Gesamtenergiemenge bestimmt die Zulaufregelung durch Fördermenge und Temperatur.
Ja das ist so. Die Anpassungen sind aber alle recht träge und aufeinander abgestimmt.

Die Gesamtleistung und benötigte Leistung in den Strängen bestimme nicht ich. Einfach das Ventil mit dem höchsten Sollwert auf 100% setzen funktioniert leider nicht, da die Widerstände in den Strängen unterschiedlich sind/sein können. (Andere Komponenten, Längen, etc.)

Also im Prinzip schaue ich immer auf die MaxDifferenz zwischen SOLL und IST in jedem Strang. Der größte Wert hat Vorrang. Dadurch erreiche ich, dass andere Durchflüsse automatisch mit in die richtige Richtung wandern.
Damit habe ich auch sichergestellt, dass das mit 2 sowie 20 Strängen funktioniert - dauert halt nur länger.

Ich Danke euch allen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einfach das Ventil mit dem höchsten Sollwert auf 100% setzen funktioniert leider nicht, da die Widerstände in den Strängen unterschiedlich sind/sein können. (Andere Komponenten, Längen, etc.)
Wenn die Widerstände höher sind, dann kommt doch weniger Energie an. Damit müsste das übergeordnete System das auch kompensieren.
Mit deinen Anpassungen bringst du - meiner Meinung nach - eine weitere Störgröße ins übergeordnete System.
 
Einfach das Ventil mit dem höchsten Sollwert auf 100% setzen funktioniert leider nicht, da die Widerstände in den Strängen unterschiedlich sind/sein können. (Andere Komponenten, Längen, etc.)
Nach grossen AnlaufSchwierigkeiten, Dein Anliegen überhaupt annähernd zu verstehen, hatte ich Deinen EnergieSparAnsatz akzeptiert, in demjenigen Zweig das StellGlied auf 100 % festzunageln, für den der LöwenAnteil der Aufteilung angefordert wird.
Nun sagst Du aber, das funktioniert leider nicht. Warum jetzt aus Deiner Sicht doch nicht?
Mir ist durchaus klar, dass die Widerstände in den diversen Strängen unterschiedlich sein werden und auch variieren können, aber was genau meinst Du mit "funktioniert leider nicht"?
Ist das jetzt ein Argument dafür, diesen Ansatz endgültig in die Tonne zu treten? EnergieSparen ist doch angesagt.
Immerhin sollen die Stränge separat und unabhängig von den anderen geregelt werden. Wir müssen "nur" dafür sorgen, dass den Reglern genügend SpielRaum bleibt, um auch regeln zu können. U.a., damit sie wirklich unabhängig voneinander arbeiten können, statt sich gegenseitig die Ressourcen abzugraben.

Also im Prinzip schaue ich immer auf die MaxDifferenz zwischen SOLL und IST in jedem Strang. Der größte Wert hat Vorrang.
Die Differenz zwischen SollWert und IstWert ist sowieso das Mass für die Regler, ihren Dienst zu tun und Abweichungen gering zu halten.
Derjenige Regler, der die grösste Differenz zwischen Soll und Ist feststelt, wird ohnehin am heftigsten reagieren. Du musst nicht eingreifen und irgendwelche VorrangRegeln oder RegulierungsMassnahmen "draufsetzen". Wird irgendeiner der beteiligten Regler künstlich daran gehindert, seine Aufgabe erfüllen zu können, so macht das nur zusätzliche Probleme, insbesondere durch den IntegralAnteil des Reglers.
Dadurch erreiche ich, dass andere Durchflüsse automatisch mit in die richtige Richtung wandern.
Ich fürchte, Du willst den ZeitPunkt, an dem andere Durchflüsse beginnen können, "automatisch in die richtige Richtung zu wandern", nur willkürlich hinauszögern. Das bringt aber keine Beruhigung, sondern sorgt dafür, dass unnötig viel "NachholBedarf" bei den einzelnen, ausgebremsten Reglern aufgestaut wird.

Der Punkt, warum ich nach wie vor Bauchschmerzen bei dem Gedanken bekomme, den StellWert desjenigen Reglers auf 100 % zu setzen, der am meisten "liefern" soll, ist folgender: ein Regler, der weiss, dass er kräftiger auf's GasPedal treten müsste, um eine RegelDifferenz zügig abzubauen, wird zu Beginn einer grossen Abweichung gerne mehr anfordern, als er später benötigen wird, um den erreichten Wert zu halten.
Der Regler weiss wie es geht und was er tun müsste, aber wir lassen ihn nicht. Die nötigen Reserven billigen wir ihm nicht zu. Das behindert und stört die WirkungsWeise des Reglers.

Was tun? Auf gute RegelEigenschaften verzichten zu Gunsten einer EnergieEinsparung? Oder den Aspekt EnergieSparen so hoch hängen, dass die Regler Probleme bekommen?
Wir müssen ein gewisses Mass an EnergieVerschwendung einplanen, um vernünftig regeln zu können. Wir sollten aber versuchen, die EnergieVerschwendung in Grenzen zu halten. Reserve für die Regler vorsehen, aber nicht mehr als nötig. Welches Mass an Reserve nötig ware, können wir aus der Ferne nicht abschätzen.
Wohin mit der zuviel ins System bzw. in die Zuleitung gepumpten Energie? "Ablasen" kommt ja wohl nicht in Frage.
Das "starre" Verhalten der Zuleitung gefällt mir nicht. Könnte man einen DruckSpeicher einbauen?

Um den EnergieSparGedanken wieder aufzugreifen: die Idee, die Werte der StellGlieder (bzw. die ReglerAusgänge) auszuwerten, finde ich gar nicht übel. Sie sind ein Mass dafür, wieviel Reserve für die AufteilungsRegler vorhanden ist.
Man sollte diese aber nicht auswerten, um die AufteilungsRegler zu beeinflussen, also nicht deren SollWerte darüber zu manipulieren, sondern sie müssten auf die Regelung des Zuflusses "korrigierend" einwirken - sofern das überhaupt nötig oder wenigstens hilfreich wäre.

Ich gehe mal davon aus, dass der ProzentWert, der maximal für das am weitesten geöffnete AufteilungsVentil angestrebt werden sollte, schwanken wird. Je nach BetriebsBedingungen, z.B. je nach Art der Änderungen bei den AufteilungsVorgaben. Vielleicht findet man einen Weg, diesen ProzentWert z.B. sachte zu erhöhen, wenn es zweitweise keiner grösseren Reserven für die Regler bedarf. Oder vielleicht findet man ein Kriterium dafür, einen Bedarf für eine höhere Reserve möglichst frühzeitig zu erkennen. Das wirkliche Problem dabei wird es sein, den bevorstehenden Verlauf des Bedarfs "vorauszusehen".
Zur Erinnerung, mit Reserve meine ich den Abstand des ProzentWertes von 100 % "nach unten", kleine Reserve knapp unter 100 % - sagen wir mal 97 % - und grosse Reserve deutlich unter 100 % - sagen wir mal 85 %. Keine Ahnung, die Werte habe ich natürlich aus der Luft gegriffen.
Man müsste mal am "lebenden Objekt" beobachten können, was sich wie verhält. Ein Aufzeichnen der "relevanten" Werte wäre sinnvoll, am besten inkl. dem Verhalten des ZuflussReglers.
 
Da ich grundsätzlich Interesse an einer passenden Lösung hätte, wäre mein Vorschlag hier vielleicht mal eine Simulation zu erstellen. Also Pumpe auswählen von der es möglichst viele Daten gibt, dann meinetwegen 5 Abgänge mit Rohrleitungen und Stellventilen (müsste man sehen was für ein Verschluss). Am besten wäre hier natürlich wenn man auf eine reale Konstruktion aufsetzen könnte. Mit Wasser als Medium kann ich damit aber auch nicht dienen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@xEs1710
Für mich sehen deine Ausführungen so aus, als würdet Ihr versuchen um eine schlechte Regelung "herumbauen" zu wollen.

So wie ich den ganzen Sachverhalt aus der Ferne bewerte, wäre eine ordentliche Differenzdruck-Regelung an der Zuleitung das Beste.
Dann könntest Du deine ganzen Einzelstränge eigens regeln lassen nach Sollwert und wenn die Zuleitung, laut deiner Aussage, so üppig dimensioniert ist, wird diese Regelung alles zur vollsten Zufriedenheit arbeiten und den Differenzdruck konstant halten.

Das ist das System, wie in praktisch jeder Fernwärme oder Zentral-Prozesskälte-Anlage und durch die modernen Heizungspumpen fast in jedem Haushalt hervorragend funktioniert und auch sehr energieeffizient arbeitet.

Ich rede gerade aus Erfahrung als technischer Verantwortlicher einer Fernwärme-Anlage mit maximal-Durchfluss von ca 350 m³/h, Leistung ca 8MW thermisch und schätzungsweise 100 versorgten Abnahme-Einheiten im Bereich von 1/2 Zoll bis DN250.
Das läuft perfekt seit über 15 Jahren mit einer einmaligen Versuchsreihe, wie hoch man den Differenzdruck einstellen muss, damit alle Verbraucher gut versorgt werden.

PS: Wenn Ihr natürlich nichts an der Regelung der Versorgung ändern könnt ist das schlecht. Dann ist dein Ansatz soweit richtig, dass das trotzdem nur die zweitbeste Lösung darstellt. Aber besser die zweitbeste Lösung als gar keine Lösung.

Nur meine persönliche Meinung...
 
Ich dachte es geht hier auch um die grundsätzliche Lösung so einer Verteilungsregelung. Dass das in jeder Heizungsanlage mit Verteiler und mehreren Abgängen funktioniert, dürfte bekannt sein.
 
Ich dachte es geht hier auch um die grundsätzliche Lösung so einer Verteilungsregelung. Dass das in jeder Heizungsanlage mit Verteiler und mehreren Abgängen funktioniert, dürfte bekannt sein.
Ich denke auch, dass auch um die grundsätzliche Lösung geht. Was ich in der Aufgabenstellung dieses Thread eher aussergewöhnlich finde:
1. Die Regelung des Zulaufs findet autark irgendwo ausserhalb des EinflussBereichs des TE statt.
2. Der TE hat vermutlich beobachtet, dass die unter 1. genannte Regelung dazu führt, dass die Verteilung in dem Strang mit dem grössten DurchFluss nicht erwartungsgemäss dazu führt, das StellVentil voll aufzufahren.
Mit "erwartungsgemäss" ist die Erwartung des TE gemeint. Er macht sich Gedanken, dass mit dem VollAuffahren des Ventils Energie einzusparen wäre, weil in diesem Fall nur genau der Druck in der Zuleitung erzeugt werden muss, mit dem die gewünschte Verteilung erzielt werden könnte.
Diesen GedankenGang kann ich nachvollziehen und er dürfte einen Aspekt ansprechen, der bisher vermutlich eher vernachlässigt wurde und wahrscheinlich noch relativ neu, auf jeden Fall aber "zeitgemäss" ist.
Neu ist, dass man einem der Stränge (dem mit dem grössten Durchfluss) die Möglichkeit nehmen würde, "vernünftig" regeln zu können.
Bzw. man müsste in diesem Strang dafür sorgen, dass das Ventil voll aufgefahren wird und der Regler dieses Strangs keinen Einfluss hat. Die Verteilung würde dann über die Regler der anderen Stränge und den Regler des Zulaufs geregelt. Das setzt aber voraus, dass der Regler des Zulaufs beeinflusst werden kann, was aber dem TE anscheinend nicht möglich ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also für mich klingt das Thema für das z. B. Belimo Druckunabhängies Regel typischen RegelVentil.

Die Regelventile nach durchfluss und schaue über die Rückmeldung wie weit die offen sind.sind alle unter ca 90 Prozent offen alles gut

Schau dir mal die Werbevideos dazu an.
 
Das Energiesparen soll, soweit ich das hier nachvollziehen kann, durch Erhöhen des Durchflusses, niedriger Vorlauftemperatur und niedrigen Pumpendruck erreicht werden. Also ein guter Ansatz.
Bei Smarthome-Lösungen basteln auch viele daran. Weg von der wetterabhängigen Vorlauftemperatur, hin zur Bedarfsregelung.
Deshalb die Ventile soweit wie möglich auf. Ob hier die 100%-Lösung passt … schwer zu sagen.
Alternativ eine Verteilung auf eine definierte Summe der Stellgrößen.
Bei der Trägheit braucht es sowieso einen Trace über mehrere Tage.
 
.. mein Vorschlag hier vielleicht mal eine Simulation zu erstellen...
Ich glaube, von diesem Stadium sind wir noch ganz weit entfernt. Aber eine einfache Skizze mit allen Sensoren und Aktoren wäre für den Anfang ganz gut. Ich finde nämlich die bisherigen Angaben zur Aufgabe sehr verwirrend. Möglicherweise fehlt auch ein gewisses Grundverständnis auf dem Gebiet der Regelungstechnik? Mal wird von Leistung gesprochen, mal von Temperatur und dann wieder von Durchfluss oder Strangwiderstand. Möglicherweise erwartet man sogar, die Ventilstellung genügt für eine sensorlose Regelung? Eine Skizze könnte zunächst solch fundamentale Fragen klären, ohne viel Gelaber.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dank TIA und EPlan ist das Notebook immer ein guter Handwärmer
Das kann ich eigentlich nicht bestätigen. Bei manchen Programmständen oder Installationen treibt PLCSim den Lüfter mal zum Dauerlauf, aber ansonsten sind beide Programme eigentlich recht bescheiden. Jedenfalls sind bei 5°C die Hände beim Taschenbilliard besser aufgehoben :giggle:.
 
Okay ich versuche das nochmal zu erklären. Es geht hier nicht um eine Heizungsverteilung oder ähnliches. Ich zitiere mich mal selbst:
Hallo zusammen!
Ich stehe vor einem mittelschwerem Problem. Und zwar soll ich eine Ventilsteuerung programmieren, der die Durchflüsse über 3 und mehr (variabel) Wege korrekt verteilt.

Also: 1 großer Zulauf, der 3 und mehr Abzweigungen hat. In diesen Abzweigungen sind Ventile (0-100%) und Durchflussmesser (neuer Wert alle 3-5 Sekunden!). Der Zulauf ist erstmal konstant. Die Sollwerte in den Abzweigung sind variabel, in Summe aber immer gleich. Alle Abzweigungen haben einen unterschiedlichen Widerstand (=alle Ventile 100% offen ergeben unterschiedliche Durchflüsse) und 1 Ventil von allen Abzweigungen muss immer zu 100% geöffnet sein.

Mehr ist das nicht.. 🙃

Man kann sich jetzt vorstellen, dass wenn man 1 Ventil fährt, sich der Durchfluss in den anderen Abzweigungen unterschiedlich ändert. Regel ich alle Ventile gleichzeitig, so findet das nie ein Ende.

Wie würdet Ihr hier vorgehen? Habt Ihr einen Ansatz?

Software TIA Portal V17, WinCC V17.

Vielen Dank vorab!

Beste Grüße Basti

Meine Frage war gewesen, wie man eine Ventilsteuerung programmieren kann, die 3 und mehr Durchflüsse verteilt. Bedingung: Ein Ventil ist zu 100% geöffnet. Auch hier habe ich erkannt, dass sich die Ventile gegenseitig beeinflussen und deshalb ja die Frage! Ich brauchte zu diesem Zeitpunkt eine Lösung für 3 und mehr (10?, 20?, 30?) Abzweigungen.

Die freie Regelung aller Ventile zur selben Zeit funktionierte für uns nicht und deshalb wollten wir, wie ihr so schön sagt, "einen Regler drum herum bauen". Ebenso war die Bedingung 1 Ventil (und somit Regler) immer auf 100% festzuhalten ein Thema, warum wir das so nicht gelöst haben.
 
Du hast hier nun doch schon einige Vorschläge bekommen.
  • Verhältnisregelung auf Basis Durchfluss der Abgänge
  • Verhältnisregelung auf Basis Ventilstellungen
  • Verhältnisregelung auf Basis Soll-Istwert-Differenz
  • Druckregelung des Zulaufs
  • ...
Was erwartest du?
Ein fertiges Programm oder auch passende Regelparameter kann hier keiner liefern.
Keiner von uns weiß, wie sich das übergeordnete System verhält und keiner weiß, wie die gegenseitige Beeinflussung sich auswirkt.
Um wenigstens irgendwelche Aussagen zu treffen, braucht es ein Fließbild und vernünftige Traces der Daten.
Ansonsten bleibt nur die Glaskugel ... Und die ist halt trüb.
 
Zurück
Oben