Ventil öffnen - Pumpe starten und umgekehrt

Digger2010

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

ich muss zu einer bestimmten Uhrzeit ein Ventil öffnen, 2 Sekunden später eine Pumpe starten und zu einer späteren Uhrzeit die Pumpe stoppen und das Ventil wieder schließen (also umgekehrte Reihenfolge). Also in etwa so:

Einschaltzeipunkt (Uhrzeit) erreicht -> Ventil öffnen -> 2s warten -> Pumpe einschalten
und später dann
Ausschaltzeitpunkt (Uhrzeit) erreicht -> Pumpe ausschalten -> 2s warten -> Ventil schließen

Das Ganze sollte in ST geschrieben sein. Die Abfrage der Uhrzeit bekomme ich hin. Zum Einschaltmoment setze ich ein FlipFlop und zum Ausschaltzeitpukt setze ich das FF zurück. Wäre nur das Ventil zu schalten, würde meine Lösung perfekt funktionieren.
Nun habe ich aber Schwierigkeiten mit dem verzögerten Einschalten der Pumpe und beim Abschalten die Verzögerung des Ventils und bräuchte einmal einen Tritt.
Kann mir jemand etwas weiterhelfen?

Ich habe bisher viel in C und Visual Basic programmiert. Mit SPSn habe ich manchmal so meine Schwierigkeiten (wie man lesen kann). Die Profis unter Euch werden sich sicher schlapplachen.

Für Literaturempfehlungen wäre ich auch dankbar (ST, IEC 61131, evtl. auch Codesys).

Danke und Grüße

Digger
 
stichwort ton, toff

start->ventil auf->ton->pumpe_start
start_ende->vent_zu->toff->pumpe_stop
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für die Verzögerungen gibt die Timerbausteine Ton (Einschaltverzögerung) und Tof (Ausschaltverzögerung).

Eine Lösung wäre z.B.

Code:
tonEin.PT := t#2s;
tofAus.PT := t#2s;
IF bEin THEN
  bVentil := true;
  tonEin (IN := true, Q=> bPumpe);
  tofAus (IN := true);
ELSE
  bPumpe := false;
  tofAus (IN := false, Q=> bVentil);
  tonEin (IN := false);
END_IF
 
Oder du nutzt die Gelegenheit und beschäftigst dich mit Schrittketten, da dies ein sehr einfaches Beispiel dafür sein kann. Einfach mal CASE OF ein wenig anschauen.
 
Code:
tonEin.PT := t#2s;
tofAus.PT := t#2s;
IF bEin THEN
  bVentil := true;
  tonEin (IN := true, Q=> bPumpe);
  tofAus (IN := true);
ELSE
  bPumpe := false;
  tofAus (IN := false, Q=> bVentil);
  tonEin (IN := false);
END_IF
:confused:
Echt jetzt?

2 Zeilen:
Code:
tonEin (IN := bEin, PT := t#2s, Q=> bPumpe);
tofAus (IN := bEin, PT := t#2s, Q=> bVentil);
Warum macht man da freiwillig soviel Gedöns drum herum?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum macht man da freiwillig soviel Gedöns drum herum?
Wenn man schon strukturiert programmieren kann, dann will man das auch richtig auskosten. :ROFLMAO:
Dies ist ein wunderbares Beispiel dafür, warum SPS-Programmierer sooo viele Jahre ohne strukturierte Programmierung auskommen konnten ... und die Möglichkeiten, auf die sie verzichten mussten, nicht einmal vermisst haben. ;)
 
Zurück
Oben