Ausschaltverzögerung

MisterDude

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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:ROFLMAO:.
 
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?
 
versteh die aus/aus-bedingung nicht, deswegen mal einfach für ein/verzögert aus...

Code:
*
      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

Code:
*
      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]
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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:
Code:
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:
Code:
    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
 
Zurück
Oben