# Ausschaltverzögerung



## MisterDude (17 April 2008)

Tag zusammen,

ich bin absoluter SPS-Neuling, deshalb brauche ich etwas Hilfe. 
Wie kann ich folgende Aufgabe am besten lösen: 
Mit dem Taster S1 kann man den Motor M1 ausschalten und mit dem Taster S2 wieder ausschalten.  Nach der Betätigung  von S2 soll der Motor aber noch 5s nachlaufen


----------



## vierlagig (17 April 2008)

der titel des threads ist die lösung


----------



## Ralle (17 April 2008)

MisterDude schrieb:


> Tag zusammen,
> 
> ich bin absoluter SPS-Neuling, deshalb brauche ich etwas Hilfe.
> Wie kann ich folgende Aufgabe am besten lösen:
> Mit dem Taster S1 kann man den Motor M1 ausschalten und mit dem Taster S2 wieder ausschalten.  Nach der Betätigung  von S2 soll der Motor aber noch 5s nachlaufen



Wozu? Aus ist Aus.


----------



## MisterDude (17 April 2008)

die Aufgabe ist normalerweise auch länger, deshalb erscheint das mit dem aus schon etwas komisch. 

Wie verknüpfe ich den die Auschaltverzögerung am besten?


----------



## vierlagig (17 April 2008)

versteh die aus/aus-bedingung nicht, deswegen mal einfach für ein/verzögert aus...


```
*
      U     #S1_ein
      S     #M1_help_flag

      U     #S2_aus
      R     #M1_help_flag

      U     #M1_help_flag
      L     S5T#5S
      SA    #timer_1

      U     #timer_1
      =     #M1
```
[edit]
und weil der lori geschimpft hat, hier die aus/aus-lösung mit einem fiktiven ein


```
*
      U     #Sfiktiv_ein
      S     #M1_help_flag

      U     #S2_aus
      O     #S1_aus
      R     #M1_help_flag

      U     #M1_help_flag
      L     S5T#5S
      SA    #timer_1

      U     #S1_aus
      R     #timer_1
  
      U     #timer_1
      =     #M1
```
es handelt sich hierbei um eine siemens-lösung, nach IEC61131-3 sieht es anders aus[/edit]


----------



## Speicherzelle (18 April 2008)

*so sieht das in CoDeSys aus verz. Motor aus*

PROGRAM PLC_PRG
VAR
 Motor_ein: BOOL;
 hilf_Motor_ein: BOOL;
 taster_Motor_ein: BOOL;
 ausgang_Motor_ein: BOOL;
 Motor_aus: BOOL;
 t_aus: TON;
 taster_Motor_aus: BOOL;
 taus: TON;
 M_Motor_aus: BOOL;
END_VAR
(*******************************************************) 
 LD  taster_Motor_ein
 ANDN hilf_Motor_ein
 ST  Motor_ein
 LD  taster_Motor_ein
 ST  hilf_Motor_ein
 LD  Motor_ein
 OR  ausgang_Motor_ein
 ANDN M_Motor_aus
 ST  ausgang_Motor_ein
 LD  taster_Motor_aus
 OR  Motor_aus
 ST  Motor_aus
 LD  TRUE
 AND  Motor_aus
 ST  taus.IN
 CAL  taus(PT := T#5000ms)
 LD  taus.Q
 ST  M_Motor_aus
 LD  taster_Motor_ein
 ANDN hilf_Motor_ein
 ST  Motor_ein
 LD  taster_Motor_ein
 ST  hilf_Motor_ein
 LD  Motor_ein
 OR  ausgang_Motor_ein
 ANDN M_Motor_aus
 ST  ausgang_Motor_ein
 LD  taster_Motor_aus
 OR  Motor_aus
 ST  Motor_aus
 LD  TRUE
 AND  Motor_aus
 ST  taus.IN
 CAL  taus(PT := T#5000ms)
 LD  taus.Q
 ST  M_Motor_aus


----------



## zotos (18 April 2008)

So wie ich die Aufgabe verstanden habe, würde ich sie nicht mit einer Ausschaltverzögerung lösen.

Ich habe das so verstanden: S1 und S2 schalten den Motor ab. S1 macht dies direkt und S2 nach 5 Sekunden. 

Wie schon der Kollege Vierlagig bemerkt hat muss ja irgendwer oder irgendwas diesen Motor noch einschalten. Mir wäre dabei wichtig das das Einschaltsignal eine Flanke sein muss.

Beim Ausschalten würde ich das eine Signal (S1) direkt verwenden und das zu verzögernde Signal (von S2) mit einer Einschaltverzögerung realisieren.

Meine Lösung in CoDeSys ST:

```
IF S_EIN AND NOT S_EIN_alt THEN (* Flanke an S_EIN Startet den Motor *)
  MOTOR := TRUE;
END_IF;
S_EIN_alt := S_EIN; (* Flanken Bildung *)

myTimer(IN:=S_AUSverz, PT:=t#5s); (* Verzögertes Signal zum Ausschalten *)

IF S_AUS OR myTimer.Q THEN (* AUS oder verzögertes AUS schalten den Motor wieder ab *)
  MOTOR := FALSE;
END_IF;
```
Und hier noch in IL:

```
CAL    myR_Trig(CLK := S_EIN) (* Flanke *)
    CAL    myTimer(IN := S_AUSverz, PT := T#5000ms) (* Timer *)

    LD    myR_Trig.Q (* Flanke schaltet den Motor ein *)
    S        MOTOR

    LD    S_AUS (* Aus oder verzögertes Aus schaltet den Motor aus *)
    OR    myTimer.Q
    R        MOTOR
```


----------

