Toggle Schalter in AWL

julianpe

Level-1
Beiträge
61
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen zusammen,

ich möchte einen remanenten Umschalter mit lediglich einem Taster in AWL realisieren.

Folgende Grundfunktionalität soll erreicht werden.

Eingang E0.0 muss zwei Sekunden anliegen, dann wird der Ausgang gesetzt.
Sobald E0.0 erneut betätigt wird, ist der Ausgang sofort zurück zu setzen.

Mein bisheriger Code schaut folgendermaßen aus:

Code:
// Taster zwei Sekunden betätigen -> Setzt Ausgang zu Eins
// Taster anschließend wieder betätigen -> Setzt Ausgang zu Null

// Taster aktiviert Timer
A Valve1Button
= T 1.20

// Taster und Timer müssen true sein -> Ausgang wird gesetzt
A Valve1Button
A T1
S Valve1Status

// Ausgang für die ersten 1,5 Sekunden sperren
// Notbehelf für gegenseitiges Blockieren des Tasters
A Valve1Status
= T 2.15

// Ausgang wird zurückgesetzt wenn Taster betätigt ist
A Valve1Button
A T2
R Valve1Status

Das Problem ist, dass ich beim Rücksetzen des Ausgangs 1,5 Sekunden warten muss.
Weiterhin problematisch ist, wenn der Taster zu Anfang 3,5 Sekunden dauerhaft aktiv ist, wird nach zwei Sekunden der Ausgang aktiv und danach wieder inaktiv.

Gibt es eine "schönere" bzw effizientere Möglichkeit dies zu realisieren, anstatt mit dem zweiten Timer-Baustein?

Danke und gruß

//Edit:
Ich habe es über Flankenauswertung (FP) probiert. Leider unterstüzt Movicon diesen Befehl nicht.
Daher muss die Lösung anders lauten.
 
Zuletzt bearbeitet:
Hallo Julianpe,

kannst Du Dir eine Flankenauswertung selber programmieren? Mit
Code:
A Valve1Button
AN M0.1
= M0.2

A Valve1Button
= M0.1
könnte es klappen.
M0.2 entspricht dabei dem "Ausgang" der Flankenauswertung und wird in Deinem Programm weiter verarbeitet. M0.1 muss mit FALSE initialisiert werden.

Das fällt mir jetzt zumindest als erstes ein...

MfG
Exing
 
Mein Problem bei Movicon gegenüber Siemens ist, dass ich nicht weiß, wie man dort die Einschaltverzögerung mit einem Impuls zurücksetzt, obwohl der IN noch auf 1 ist.

Da ich aber auch dort eh' lieber mit den IEC- als mit den S5-Timern arbeite, hab' ich mal noch nach einer Lösung gesucht, die auch damit und somit wohl auch unter Movicon (bzw. anderen SPS-Umgebungen) funktioniert. Ich nehme mal Deinen Timeraufruf von oben, denn der scheint auch kein echter IEC-Timer zu sein. Außerdem hab' ich das Ganze noch um die manuelle Flankenerkennung erweitert.

Somit steht dieser Lösungsvorschlag zu Buche:
Code:
// Taster zwei Sekunden betätigen -> Setzt Ausgang zu Eins
// Taster anschließend wieder betätigen -> Setzt Ausgang zu Null (ohne Zeitverzögerung)


// Positive Flankenerkennung Taster
A  #Valve1Button
AN #FMButton
=  #EdgeButton

// Flankenmerker Taster
A  #Valve1Button
=  #FMButton

// Negative Flankenerkennung Ausgang
AN #Valve1Status
A  #FMValve
=  #EdgeValve

// Flankenmerker Ausgang
A  #Valve1Status
=  #FMValve

// Timer
A  #Valve1Button
=  T 1.20

// Speicher Einschalten
A  #EdgeButton
S  #FlagOn
A  #EdgeValve
R  #FlagOn

// Ausgang
A  #FlagOn
A  T1
S  #Valve1Status
A  #EdgeButton
R  #Valve1Status
FMButton, FMValve und FlagOn müssen statisch/global sein. EdgeButton und EdgeValve können temporär sein.


Das Problem ist, dass ich beim Rücksetzen des Ausgangs 1,5 Sekunden warten muss.
Weiterhin problematisch ist, wenn der Taster zu Anfang 3,5 Sekunden dauerhaft aktiv ist, wird nach zwei Sekunden der Ausgang aktiv und danach wieder inaktiv.
Weder das erste noch das zweite Problem treten damit bei mir auf. Allerdings kann ich das nur mit Siemens PLCSim und nicht mit Movicon testen.
 
Zuletzt bearbeitet:
entschuldigung dann, die AWL ist sehr machinespecific. und nicht 61131 anscheinend.
er ist neu also falsche forum ?
ich sammle PDF manuals von PLC, also wenn es die frei gibt dann hatte ich die gerne.
 
Zurück
Oben