# Ventil öffnen - Pumpe starten und umgekehrt



## Digger2010 (19 September 2019)

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


----------



## volker (19 September 2019)

stichwort ton, toff

start->ventil auf->ton->pumpe_start
start_ende->vent_zu->toff->pumpe_stop


----------



## MasterOhh (19 September 2019)

Für die Verzögerungen gibt die Timerbausteine Ton (Einschaltverzögerung) und Tof (Ausschaltverzögerung).

Eine Lösung wäre z.B.


```
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
```


----------



## roboticBeet (20 September 2019)

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.


----------



## hucki (20 September 2019)

MasterOhh schrieb:


> ```
> tonEin.PT := t#2s;
> tofAus.PT := t#2s;
> IF bEin THEN
> ...



Echt jetzt?

2 Zeilen:

```
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?


----------



## Heinileini (20 September 2019)

hucki schrieb:


> Warum macht man da freiwillig soviel Gedöns drum herum?


Wenn man schon strukturiert programmieren kann, dann will man das auch richtig auskosten. 
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.


----------



## MasterOhh (20 September 2019)

Das ist mir ja schon fast peinlich  :sb15:


----------

