S7-200 Ablaufsteuerung

simon2mille

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo @ll,

es geht um eine Ablaufsteuerung mit Hilfe einer S7-200.

Gegeben seien 2 Pumpen, welche abwechselnd wasser aus einem Tank pumpen sollen.

Der Tank hat eine größe von 5 m². Zum Tank führt eine passive Zuleitung, also ohne Ventile, die stets Wasser hineinpumpt pumpen/sollte.

Zusätzlich zu diesem gibt es 2 aktive Ventile, welche sich auf und zu Steuern lassen. Eine der beiden Zuleitungen soll nur im äußersten Notfall als Trockenlaufschutz für die Pumpen auf "auf" gestellt werden, da sich darin das kostbarste Wasser befindet. Im anderen aktiven Zulauf ist wasser, welches normal eh weggeschüttet werden würde.

Je nach füllstand des Tankes, welcher analog über einen DruckMessumformer im Bereich von 4 - 20 mA an das SPS Modul E 235 weitergegeben wird, sollen die Ventile geschaltet werden.

Die Pumpen sollen immer abwechselnd im 30 h Takt arbeiten, um sicher zustellen dass beide immer funktionieren und nicht eine verrosten zu lassen.

Im einzelnen komme ich ja auch mit der Programmierung klar (also Pumpen abwechselnd und abhängig vom füllstand über analogwertverarbeitung die ventile schalten). Wenns dann aber größer wird verliere ich irgendwie den ueberblick und die "komische" programmierweise der SPS macht mir zu schaffen.

Probleme macht mir z.B. die Umschaltung von Automatikbetrieb zu Handbetrieb. In C++ und Co wäre das über eine Abfrage und eine Verzweigung kein Problem, aber bei SPS weiß ich leider nicht wie ich tun soll.

Ich dachte mir anfangs ich setze einen SPS Eingang für die Bedienart ein, also High = Automatik, Low = Handbetrieb.

Desweiteren dachte ich mir, ich setze gleich zu Beginn des Programms eine Abfrage auf genau dieses Bit und schlage dann den entsprechenden Weg ein, aber irgendwie macht der immer das komplette Programm und nicht einen separaten durch den Automatik/Handbetrieb gesetzten Weg.

Vielleicht könnte mir einer sagen, wie sowas in "klein" aussieht.

Bsp.: Bedingung 1:

Wenn der Eingang E0.0 = 1 ist, dann
Setze A0.2 bis A0.4.
Lade E0.1 und setze Ausgang A0.5 auf den Wert von E0.1.

Bedingung 2:

Wenn der Eingang E0.0 = 0 ist, dann
Setze A0.3 bis A0.5,
Lade E0.6 und setze Ausgang A0.2 invertiert zu E0.6



Ich weiß nicht wie ich sowas realisieren kann ohne größere Verwendung von Merkern und dem ganzen. Es sollte doch eine Möglichkeit geben bequem ne Bedingung zu setzen, nach der ein ganzer Ast von befehlen abgearbeitet wird, mit einem Befehl nach der Bedingung das ist ja easy.
Pber ein Unterprogramm bekam ichs auch nicht hin :-(.

Über Antworten wäre ich sehr dankbar, am liebsten wäre mir sogar eine ICQ Sitzung, da im Anschluss ein paar kleinere Dinge immernoch unklar wären, aber diese Verzweigung wäre erst einmal das gröbste.
Meine ICQ Nr. lautet 131580876.

Danke, Mfg Maik
 
Bsp.: Bedingung 1:

Wenn der Eingang E0.0 = 1 ist, dann
Setze A0.2 bis A0.4.
Lade E0.1 und setze Ausgang A0.5 auf den Wert von E0.1.

Bedingung 2:

Wenn der Eingang E0.0 = 0 ist, dann
Setze A0.3 bis A0.5,
Lade E0.6 und setze Ausgang A0.2 invertiert zu E0.6

Hallo simon2mille,

folgendes sollte funktionieren:

Bedingung 1:
LD E0.0 //Lade Eingang E0.0
S A0.2,4 //Setze ab Ausgang A0.2 4 Ausgänge (A0.2,A0.3,A0.4,A0.5)
LD E0.0 //Lade Eingang E0.0
U E0.1 // UND Eingang E0.1 auf '1'
= A0.5 //weise VKE dem Ausgang A0.5 zu

Beachte: in diesem Fall wird A0.5 auf '0' gesetzt sobald E0.0 auf '0' ist.

Bedingung 2:
LDN E0.0 //Lade Eingang E0.0 negiert
S A0.3,2 //Setze ab Ausgang A0.3 2 Ausgänge (A0.3,A0.4)
LDN E0.0 //Lade Eingang E0.0 negiert
U E0.6 // UND Eingang E0.1 auf '1'
= A0.2 //weise VKE dem Ausgang A0.5 zu

Beachte: in diesem Fall wird A0.5 auf '0' gesetzt sobald E0.0 auf '0' ist.
 
Zurück
Oben