P
Plan_B
Guest
-> Hier kostenlos registrieren
Warum ändert sich der Widerstand? Fährt n Ventil zu? Und trotzdem soll die gleiche Medienmenge durchgepresst werden? Warum fährt das Ventil dann zu?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
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.... Gerne Lösungsvorschläge...
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.... Wie wäre dein Vorschlag mehr Gesamt-Leistung in die Stränge rein zu bringen ohne die Temperatur anzuheben? ..
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,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
Ja das ist so. Die Anpassungen sind aber alle recht träge und aufeinander abgestimmt.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.
Wenn die Widerstände höher sind, dann kommt doch weniger Energie an. Damit müsste das übergeordnete System das auch kompensieren.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.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.)
Die Differenz zwischen SollWert und IstWert ist sowieso das Mass für die Regler, ihren Dienst zu tun und Abweichungen gering zu halten.Also im Prinzip schaue ich immer auf die MaxDifferenz zwischen SOLL und IST in jedem Strang. Der größte Wert hat Vorrang.
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.Dadurch erreiche ich, dass andere Durchflüsse automatisch mit in die richtige Richtung wandern.
Ich denke auch, dass auch um die grundsätzliche Lösung geht. Was ich in der Aufgabenstellung dieses Thread eher aussergewöhnlich finde: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 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... mein Vorschlag hier vielleicht mal eine Simulation zu erstellen...
Da bin ich schon vor 20 Beiträgen gewesen und absolut Deiner Meinung.Eine Skizze könnte zunächst solch fundamentale Fragen klären, ohne viel Gelaber.
Jetzt, wo du es sagst, ich hatte es gelesen. Das ist aber schon wieder so viele kalte Inbetriebnahme-Stunden her, dass ich es bereits wieder vergessen hatte.Da bin ich schon vor 20 Beiträgen gewesen und absolut Deiner Meinung.
Das ist aber schon wieder so viele kalte Inbetriebnahme-Stunden her, dass ich es bereits wieder vergessen hatte.
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 aufgehobenDank TIA und EPlan ist das Notebook immer ein guter Handwärmer
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
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen