Pumpenvertauschung mit 3 Pumpen nach Betriebsminuten

norman

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

ich brauch mal eure Hilfe.
Ich soll einen FB für eine S7 300 erstellen der mit Hilfe von 3 Pegeln (Digitale Eingänge)

- Pegel 1 (Grundlast)
- Pegel 2 (Mittellast)
- Pegel 3 (Spitzenlast)

3 Pumpen ansteuert.

Alle 3 Pumpen haben die Selbe Leistung und melden über eine Rückmeldung vom Dreieckschütz, das sie Arbeiten.
Mit dieser Rückmeldung sollen die Betriebstunden erfasst werden (Minuten genau).

Mit diesen 3 Pumpen soll ein Wasserstand in einem Becken auf gleichem Niveau gehalten werden.

Wenn der Wasserstand im Becken steigt wird als erstes der Grundlastpegel erreicht.
Steigt der Wasserstand weiter wird der Mittellastpegel erreicht und letzt endlich dann der Spitzenlastpegel, so das der Pegel 3 nur erreicht werden kann wenn Pegel 2 ansteht und Pegel 2 wenn Pegel 1 ansteht.


Pegel 1 erreicht:

Die Pumpe mit den wenigsten Betriebsminuten startet.

Pegel 2 erreicht:

Die stehende Pumpe mit den wenigsten Betriebsminuten startet.

Pegel 3 erreicht:

Alle 3 Pumpen laufen.



Pegel 3 wechselt auf VKE0:

Die Pumpe mit den meisten Betriebsminuten stoppt.

Pegel 2 wechselt auf VKE0:

Die Pumpe der beiden laufenden Pumpen mit den meisten Betriebsminuten stoppt.

Pegel 1 wechselt auf VKE0:

Alle Pumpen stehen.


Um unnötige anläufe zu verhindern soll nur bei kommenden Pegel eine Pumpe zugeschaltet werden und bei gehenden Pegel die laufenden Pumpen abgeschaltet werden.
Es soll jedoch keine Pumpe abgeschaltet werden und dafür eine andere gestartet werden.


Ausfall einer Pumpe:

Um sicherzustellen das die angesteuerte Pumpe läuft, wird der Rückmeldeeingang überwacht. Steht am Rückmeldeeingang nach 5s keine Läuftmeldung an, gilt die Pumpe als gestört, genauso wenn am Eingang P1_Auto,P2_Auto, P3_Auto, keine 1 ansteht. Dann soll die Pumpe mit den 2 bzw. 3 höchsten Betriebsminuten gestartet werden. Die Pumpe soll beim nächsten Pegelwechsel wieder gestartet werden, ohne Quittierung.


Währe klasse wenn mir jemand eine AWL Quelle schreiben könnte.
Ich hab jetzt schon Stunden damit verbracht und brauch den Baustein
relative schnell.

Danke


FUNCTION_BLOCK FB 102
TITLE =
{ S7_pdiag := 'true' }
AUTHOR : N
VERSION : 1.0


VAR_INPUT
Parameter : WORD ;
Grund : BOOL ;
Mittel : BOOL ;
Spitzen : BOOL ;
P1_Auto : BOOL ;
P2_Auto : BOOL ;
P3_Auto : BOOL ;
P1_RM : BOOL ;
P2_RM : BOOL ;
P3_RM : BOOL ;
END_VAR
VAR_OUTPUT
P1_Start : BOOL ;
P2_Start : BOOL ;
P3_Start : BOOL ;
END_VAR
BEGIN
END_FUNCTION_BLOCK
 
Zuletzt bearbeitet:
natürlich komm ich damit klar,
habe nur mal eine Pumpensteuerung (Schaltschema) erdacht, das mit minimalen Schalthandlungen alle Pumpen gleichmäßig belastet....... egal ob geschaltet oder drehzahlgeregelt.......

Was machst Du wenn eine Pumpe überholt worden ist, die Betriebsstunden auf 0 setzten ? Dann würde ja ja errstmal endlos laufen und die anderen festgehen wenn keine Anforderung da sein sollte....
Auch "alte" Pumpen müssen immer wieder laufen...

Eine Pumpe die läuft geht nicht kaput........
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallöchen

Die frage ist, wieso sollten alle Pumpen die gleiche laufzeit haben
die wahrscheinlichkeit das beide gleichzeitig einen defekt haben ist somit auch gegeben
 
Das hilft mir jetzt alles nicht weiter.
Das die Funktionsbeschreibung vielleicht nicht sinnvoll ist,
mag sein.
Aber daran kann ich leider nichts ändern.

Nur ich weiß nicht wie ich das umsetzten kann.
Wenn man die Beschreibung liest klingt das gar nicht schwierig.
Nur wenn man beim Programm schreiben ist, sieht das alles ganz anderst aus, zumindest für mich,

Wenn ein Pumpe gewechselt wird, werden alle Betriebsstunden auf 0 gesetzt.
 
Habe das ganze mal als FC in SCL geschrieben ( allerdings für 10 Pumpen) da ich in AWl mit dieser aufgabe gescheitert bin. Ich hab über 2 Wochen daran rumgeschraubt also kann ich deine Verzweiflung bestens verstehen.
Ist jedoch mit mehreren FOR Schleifen zu lösen !!! Und du musst Merker aussen Anlegen die dir den Zustand des Vorherigen Zyklusses speichern (Nur wenn du dir nen FC schreibst ). Beim FB ist es egal !!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@norman

Wie du an den Antworten siehst, wirst du keine Komplettlösung bekommen,
es dauert seine Zeit, ein ordentliches Programm zu schreiben und die Zeit
haben die meisten nicht. Aber helfen wollen wir dir ja schon. ;)

Den Anfang kannst du eigentlich selbst machen, ich schreib mal, wie ich
vorgehen würde.

1. Einen FB anlegen, da kann man mit statischen Variablen im FB arbeiten,
die brauchst du für die Betriebsminuten, Einschaltlogik usw. (Ich sehe
gerade, FB102 erfüllt ja schon mal Punkt 1 :-D )
2. Für jede Pumpe erstmal einen Block, mit Einschaltung,
Überwachung und Betriebsminutenzählung, so daß du danach nur noch
ein einfaches Startsignal für jede Pumpe benötigst und ein Laufsignal
für jede laufende Pumpe hast.
3. Die Pegelauswertung. Abhängig, von den Pegeleingängen ermittelst du,
ob eine, zwei oder drei Pumpen laufen sollen. Wenn die
Pegelauswertung nicht mit dem Istzustand übereinstimmt dann 4.
4. Abhängig von den Beriebsminuten die entsprechende Pumpe zuschalten
bzw. abschalten.
 
Zurück
Oben