Codesys - Pumpen Zuschaltung über Betriebszeit

IndraMagic

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich suche eine Codesys Lösung für eine Zuschaltung von 4 Pumpen, die über 4 Schaltschwellen (Durchfluss) zugeschaltet werden.
Das hat man ja gleich über eine Case Anweisung gelöst.
z.B.
VAR
Durchfluss : int;
END_VAR

CASE Durchfluss OF
0 : (* Zuschaltung Pumpe 1 *)

160 : (* Zuschaltung Pumpe 2 *)

320 : (* Zuschaltung Pumpe 3 *)

480 : (* Zuschaltung Pumpe 4 *)
END_CASE


Mein Problem liegt aber jetzt darin, denn ich muss diese 4 Pumpen je nach Betriebszeit d.h. Betriebsstundenzähler (habe ich schon gelöst) über einen Vergleich welche Pumpe die niedrigste Zeit in Betrieb war nacheinander über die Schaltschwellen vom Durchfluss zuzuschalten und wer die höchste Betriebsstunden hat nach dem Druchfluss wieder abzuschalten.

Hätte hier jemand eine Lösung Parat, und im Strukturierten Text (ST) wenn es geht!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
nichts!

1 Pumpe ist zwischen 0-160 aktiv
2 Pumpe ist zwischen 161-320 aktiv
3 Pumpe ist zwischen 321-480 aktiv
4 Pumpe ist zwischen 480-unendlich aktiv


Es geht rein um die Zuschaltung und Abschaltung über die Betriebszeit über einen Vergleich. Alle vier Pumpen werden wiederum an einen Regler übergeben der auf einen gewissen Druck regelt. Das tut aber noch nichts zur Sache ich brauche die Lösung erst auf meine Frage. :confused:
 
Nun, Du hast aber, meiner Ansicht nach, mit der CASE-Anweisung noch nicht mal die Lösung für die Schwellwert-Umschaltung.
Oder ICH habe die CASE-Anweisung nicht begriffen, auch möglich.....
 
Hi,

Nun, Du hast aber, meiner Ansicht nach, mit der CASE-Anweisung noch nicht mal die Lösung für die Schwellwert-Umschaltung.
Oder ICH habe die CASE-Anweisung nicht begriffen, auch möglich.....

da hast Du vollkommen recht. ;) Das geht so nicht.

Richtig wäre:
Code:
CASE Durchfluss OF
  0..159 :  (* Zuschaltung Pumpe 1 *)

160..319 :  (* Zuschaltung Pumpe 2 *)

320..479 :  (* Zuschaltung Pumpe 3 *)

480..600 :  (* Zuschaltung Pumpe 4 *)
END_CASE

Gruss Daniel
 
Hallo!

Vielleicht folgender Denkanstoß:
Nenne die Schwellen nicht Pumpe 1, Pumpe 2 usw., sondern Zuschaltung 1. Pumpe, Zuschaltung 2. Pumpe, ....usw.
Welche von deinen vier Pumpen nun die 1.,2.,3. und 4. ist, erledigst Du über Vergleicher mit den Betriebsstunden untereinander. Das heißt für jede Pumpe gibt es vier boolsche Variablen (Pumpe 1=1.Pumpe, Pumpe1=2.Pumpe,....) Der Vergleich über die Betriebsstunden sollte evtl. nur bei Anforderung einer weiteren Pumpe durchgeführt werden. Da es sonst zu Umschaltungen der Pumpen während des Betriebes kommen kann.

[Klugscheissmodus ON]
In ST könnte ich sowas übrigens auch nicht programmieren. In FUP relativ einfach und für jeden nachvollziehbar.
[Klugscheissmodus OFF]

Viel Spaß!
 
Zuletzt bearbeitet:
Hallo

Sowas nennt man Aggregate Umschaltung und in Prozessleitsystemen gibt es fertige Bausteine dafür. Allerdings ist man mittlerweile auf den Trichter gekommen dass der gleichmäßige Verschleiß von Aggregaten unvorteilhaft ist da beim Ausfall eines Aggregats das Reserveaggregat sich in einem genauso bescheidenen Zustand befindet. Also überlege Dir das mit den Betriebsstunden ganz genau.
Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo indramagic,
würde es auch nicht mit "case" usw. machen.
Zum ansteuern der Pumpen einfach den Baustein "Hysteresis" oder "Limitalarm" nehmen.
Für die Umschaltung der Pumpen zunächst einmal einen Betriebsstundenzähler bauen .
Wie schon geschrieben , sehe ich das auch so, dass gleichmäßige Pumpenbetriebsstunden in einer Anlage unvorteilhaft sind.
Vielleicht hauptsächlich nur eine Pumpe benutzen, alle anderen nur hin und wieder anlaufen lassen (sitzen sonst fest - Wasserstein).
Hoffe ich konnte dir helfen.
 
Hallo,
ich würde folgendes machen:

Die Sollwerte müssen eine gewisse Zeit zum Starten überschritten sein.
Beim Ausschalten müssen die Sollwerte eine Zeit unterschritten sein. Das ganze mit Hysterese.

Aus Ausbaustufe je nach Schaltspiele, eine feste Pumpenfolge, die sich im Zeitraster ändert oder die Pumpen werden Laufzeitabhängig ein oder ausgeschaltet werden.
 
Die Anlage des TEs wird nicht umsonst 4 Pumpen (Leistungsstufen) enthalten - da diese wohl im Aussetzbetrieb betrieben werden, macht es durchaus Sinn, die Pumpen im Rotationsbetrieb und FIFO vor Überlastung zu bewahren.

Sowas nennt man Aggregate Umschaltung und in Prozessleitsystemen gibt es fertige Bausteine dafür. Allerdings ist man mittlerweile auf den Trichter gekommen dass der gleichmäßige Verschleiß von Aggregaten unvorteilhaft ist da beim Ausfall eines Aggregats das Reserveaggregat sich in einem genauso bescheidenen Zustand befindet. Also überlege Dir das mit den Betriebsstunden ganz genau.

Anlagen(teile) wurden für den Betrieb konstruiert - nicht dafür, dass sie sich "totstehen" - davon werden sie keinesfalls besser.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Problem liegt aber jetzt darin, denn ich muss diese 4 Pumpen je nach Betriebszeit d.h. Betriebsstundenzähler (habe ich schon gelöst) über einen Vergleich welche Pumpe die niedrigste Zeit in Betrieb war nacheinander über die Schaltschwellen vom Durchfluss zuzuschalten und wer die höchste Betriebsstunden hat nach dem Druchfluss wieder abzuschalten.
Hallo IndraMagic,

ich habe mal ein ähnliches Projekt realisiert. Dabei ging es um die lastabhängige Zuschaltung von Wärmepumpen. Die sollten auch je nach Betriebsstunden angesteuert werden.

Da du schon einen Beriebsstundenzähler hast und auch die lastabhängige zuschaltung der Pumpen, versuch ich dir mal zu erklären wie ich das gelöst habe.

Ich habe mir einfach eine Datenstruktur erstellt (z.B. Name_Pumpe:String, Betriebsstunden:INT, aktuelle_Betriebszeit:TIME, Pumpe_an:BOOL) und diese in einem Array1[1..4] deklariert.

Dann habe ich eine zweite Datenstruktur erstellt (z.B. Pumpennr:INT, Betriebsstunden:INT) und dies ebenfalls als Array2[1..4] deklariert. Die Startwerte für die Pumpennr sollten wie der Index 1-4 sein.

Ich nehme mal an, dass du vier boolische Ausgänge für deine vier Pumpen(zum ansteuern) hast.

Wenn du jetzt die aktuelle_Betriebszeit in das erste Array speicherst und
und jedesmal wenn die Pumpe ausgeht addierst du die Zeit zu den Betriebsstunden(auch im ersten Array) dazu.

Jetzt überträgst du einfach (jedesmal wenn eine Pumpe ausgeht) die Daten(Betriebsstunden) vom ersten Array in das zweite Array und sortierst dieses dann mit einer Bubblesort-Funktion(die Pumpennr immer mit umschreiben beim sortieren). Jetzt hast du die Pumpe mit der niedrigsten/höchsten Betriebszeit in der ersten Spalte deines zweiten Arrays.

Wenn du jetzt bei deinen Boolischen Ausgängen das erste Array (Array1[Array2.Pumpennr].Pumpe_an ) mit dem zweiten Array als Index benutzt, hast du immer die Pumpe mit der niedrigsten/höchsten Betriebszeit als erstes.

Ich hoffe das du einigermaßen verstanden hast was ich damit meine :confused:.
(Bin leider nicht so gut im Erklären)

Gruß Pepper
 
Die Anlage des TEs wird nicht umsonst 4 Pumpen (Leistungsstufen) enthalten - da diese wohl im Aussetzbetrieb betrieben werden, macht es durchaus Sinn, die Pumpen im Rotationsbetrieb und FIFO vor Überlastung zu bewahren.



Anlagen(teile) wurden für den Betrieb konstruiert - nicht dafür, dass sie sich "totstehen" - davon werden sie keinesfalls besser.

Die Frage war, laufen die Pumpen in der Regel 10 min oder 10 Tage.
Bei 10 Minuten würde ich eine feste Pumpenfolge wählen, bei 10 Tagen eine dynamische.
 
Zurück
Oben