Funktion 100%-50%-0% mit einem Taster in der Simatic programmieren

Moach

Member
Beiträge
5
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo!
Ich bin hier NEU und bin schon über ein paar nützliche Tipps gefallen :) !

Ich habe folgendes Problem - möchte mit einem Taster folgende Funktion realisieren:
100% - entspricht 2 Ausgänge sind geschalten
50% - entspricht 1 Ausgang ist geschalten
0% - kein Ausgang ist geschalten

1)
Taster einmal drücken - 100%
Taster nochmal drücken - 0%

2)
Taster einmal drücken - 100%
Taster 2mal innerhalb von 400ms drücken - 50%
Taster nochmal drücken - 0%

3)
Taster einmal drücken - 100%
Taster 2mal innerhalb von 400ms drücken - 50%
Taster 2mal innerhalb von 400ms drücken - wieder 100%
Taster nochmal drücken - 0%

Das wäre die Aufgabenstellung.

Vielleicht kann mir kemand weiterhelfen?!

Würd mich freuen!
SG
Chris
 

borromeus

Well-known member
Beiträge
2.270
Punkte Reaktionen
329
Gerne...
1. was soll passieren in der Zeit zwischen einmal und zweimal drücken? Ausgangspunkt 0% Stufe: soll zuerst für 400ms der 100% Wert aktiv sein und dann auf 50% gehen? (Dein Fall 2)
2. Was passiert in der 50% Stufe wenn einmal gedrückt wird? 0%?
3. was soll passieren in der Zeit zwischen einmal und zweimal drücken? Ausgangspunkt 100% Stufe: soll zuerst für 400ms der 0% Wert aktiv sein und dann auf 50% gehen? (Dein Fall 3)
4. was soll passieren in der Zeit zwischen einmal und zweimal drücken? Ausgangspunkt 50% Stufe: soll zuerst für 400ms der 0% Wert aktiv sein und dann auf 100% gehen? (ebenfalls Dein Fall 3)
 

borromeus

Well-known member
Beiträge
2.270
Punkte Reaktionen
329
Zuviel Werbung?
->Hier kostenlos registrieren
Code:
      U     E      0.0
      FP    M      1.0
      =     M      1.1                  //Flanke Eingang

      U     T      1
      FN    M      1.7
      =     M      2.0                  //400ms abgelaufen

      U     M      2.0                  //400ms abgelaufen
      UN    M      1.2                  //und nicht 2x gedrückt
      S     M      2.1                  //Taste wurde in 400ms 1x gedrückt

      U     M      1.1                  //Flanke Taste
      U     T      1                    //und 400ms Fenster aktiv
      S     M      1.2                  //Taste wurde in 400ms 2x gedrückt

//1x gedrückt
      U     M      2.1                  //1x gedrückt
      U     M      1.5                  //aktuell 0%
      S     M      1.3                  //->100% ein
      R     M      2.1                  //reset Taste 1x gedrückt
      R     M      1.5                  //-0% aus
      SPB   M001
      U     M      2.1                  //1x gedrückt
      U     M      1.3                  //aktuell 100%
      R     M      1.3                  //->100% aus
      R     M      2.1                  //reset Taste 1x gedrückt
      SPB   M001
      U     M      2.1                  //1x gedrückt
      U     M      1.4                  //aktuell 50%
      S     M      1.5                  //->0% ein
      R     M      1.4                  //->100% aus
      R     M      2.1                  //reset Taste 1x gedrückt
      SPB   M001

//2x gedrückt
      U     M      2.0                  //400ms Zeit abgelaufen
      U     M      1.2                  //2x gedrückt
      U     M      1.5                  //aktuell 0%
      S     M      1.4                  //->50% ein
      R     M      1.2                  //reset Taste 2x gedrückt
      R     M      1.5                  //-0% aus
      SPB   M001
      U     M      2.0                  //400ms Zeit abgelaufen
      U     M      1.2                  //2x gedrückt
      U     M      1.3                  //aktuell 100%
      S     M      1.4                  //->50% ein
      R     M      1.3                  //->100% aus
      R     M      1.2                  //reset Taste 2x gedrückt
      SPB   M001
      U     M      2.0                  //400ms Zeit abgelaufen
      U     M      1.2                  //2x gedrückt
      U     M      1.4                  //aktuell 50%
      S     M      1.3                  //->100% ein
      R     M      1.4                  //->50% aus
      R     M      1.2                  //reset Taste 2x gedrückt
      SPB   M001

M001: UN    M      1.3                  //nicht 100%
      UN    M      1.4                  //nicht 50%
      FP    M      2.2
      S     M      1.5                  //muss 0% sein (damit man nach Neustart mal einen Zustand hat

      U     M      1.1
      L     S5T#400MS
      SV    T      1

//M1.3= 100%
//M1.4=50%
//M1.5=0%

Also "der" wartet jetzt mal 400ms ab was passiert und schaltet dann um.
 

KingHelmer

Well-known member
Beiträge
1.064
Punkte Reaktionen
137
Also für mich gibt es hier eine Logik auszuwerten und das ist :

--> Wird der Taster innerhalb von 400ms einmal oder zweimal betätigt.

Mit dieser Logik und einer kleinen Schrittkette kannst du dein Vorhaben dann ganz einfach realisieren.

Ich bin zwar kein Siemens-Simatic-Mensch, aber auch hier müsstest du dann einen Baustein für die oben beschriebene Logik machen mit 1 boolschen Eingang für den Taster, eventuell einem TIME-EIngang, falls du die Zeit später noch umstellen willst und 2 boolschen Ausgängen für die Logikantwort "ja" oder "nein".

Dann einen weiteren Baustein, in welchem die Schritte definiert sind.

Einen letzten Baustein, der die Bedingungen festlegt und die Schritte freigibt.

So in der Art...

Man, macht sowas spaß :)

Grüße,

Flo
 
OP
M

Moach

Member
Beiträge
5
Punkte Reaktionen
0
Hallo!
WOW - super schnelle Antwort!

Ich erklärs nochmal genauer:

Die Ausgänge Q1 bzw. Q2 liegen ewig an - nur durch bewußtes handeln werden diese ein- bzw. ausgeschalten.

Die Zeit von 400ms ist dass Zeitfenster, in denen der USER die Möglichkeit hat einmal oder eben zweimal zu drücken. (So hab ichs schon mal gemacht wenn ich mehrere Befehle mit einem Taster abfragen möchte). Innerhalb dieser Zeit wird mitgezählt wieoft gedrückt wurde und dannach wird die Schalthandlung ausgeführt. So war mein Ansatz. Wenns anders geht bin ich auch offen! :)

Ums weiter zu konkretisieren - es handelt sich um eine Lichtsteuerung.

Wir starten bei 0%
User drückt einmal - 100% Licht
User drückt bei eingeschaltenem Licht nochmal (z.B. nach 5 Stunden) - nur einmal! - 0% Licht

Wir starten bei 0%
User drückt einmal - 100% Licht
User drückt dannach (irgendwann mal nach z.B. 2 Stunden) - 2mal in Folge - 50% Licht
User drückt dannach (irgendwann mal wieder nach z.B. weiteren 3 Stunden) - 2mal in Folge - 100% Licht
User drückt bei eingeschaltenem Licht nochmal (nur einmal nach z.B. weiteren 10 Stunden) -nur einmal! - 0% Licht

Wir starten bei 0%
User drückt einmal - 100% Licht
User drückt dannach (irgendwann mal nach z.B. 4 Stunden) - 2mal in Folge - 50% Licht
User drückt bei eingeschaltenem Licht nochmal (z.B. nach 30 Minuten) - nur einmal! - 0% Licht

Ich hoffe die Funktionsweise ist nun besser erklärt - Sorry hab ich im ersten Versuch verwirrend geschrieben.
Danke und SG Chris
 

KingHelmer

Well-known member
Beiträge
1.064
Punkte Reaktionen
137
Hi,

Wieso machst du dies nicht mit einem kurzen und einem langen Tastendruck?
Würde meiner Meinung nach den User und den Taster schonen :)

also negative Flanke unter T500ms = kurzer Tastendruck => Einschalten/Ausschalten
positive Flanke eines TON-Bausteins + nach T#500ms = langer Tastendruck => "Dimmen"/Umschalten 50% bzw. 100%"

Fände ich sinnvoller :)

Aber jedem das seine!

Grüße!
 
OP
M

Moach

Member
Beiträge
5
Punkte Reaktionen
0
Hallo!
Danke für deine Anmerkung.
Die lange Funktion soll noch dazu kommen - soll dann so aussehen, dass z.B. in einem Bereich (Wohn-, Esszimmer und Küche) die Beleuchtung eingeschalten wird, wenn man 2 Sekunden den Taster drückt.
SG
Chris
 
Oben