Lichtsteuerung mittels Taster und Schalter

martin-001

Level-1
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich bin am Verzweifeln versuche schon seid 3 Tagen folgendes Problem zu lösen.:confused:
Vorraussetzungen:
CPU 315 2DP
ET 200s
An der ET 200s hängt der Taster und ein Koppelrelais als Ausgang.
Der "Schalter" ist ein Bit in einem DB.
Step 7 v.5.2


ich möchte die angehängte <<Lichtsteuerung FC4>>; um 2 Funktionen erweitern.
Bis dato schaltet der Taster mit einer Ausschaltverzögerung den Ausgang.
Zusätzlich ist ein Schalter für <on off> verknüpft.


ich habe nun folgende Aufgabenstellung:
1x Taster drücken = Ausgang <1> für 5min
1x Taster für >3sek. = Ausgang dauer <1> (dabei soll es egal sein ob der Ausgang schon <1> ist oder nicht)
ist Ausgang = <1>; 1x Taster drücken = Ausgang <0> und der Timer soll Rückgesetzt werden

Schalter <1> = Ausgang <1>
Schalter <0> = Ausgang <0> und der Timer soll Rückgesetzt werden


... ich bin mal über eure Lösungsansätze gespannt.

Gruß Martin
 

Anhänge

  • FC4.pdf
    52,5 KB · Aufrufe: 70
Zuletzt bearbeitet:
Hi Martin,

naja kniffelig aber lösbar.
Schau mal im Anhang Seite 2. Ist getestet und funktioniert auch, wenn ich die Aufgabe verstanden habe. Falls nicht, nochmal melden.
Habe hier mit festen Merkern gearbeitet, die müsstest du noch ggfs. gegen deine stat Variablen im FB tauschen. Im Beispiel ist dein Schalter mein Merker M30.0, dein Ausgang ist bei mir der Merker M40.0. Der Rest ist intern genutzt. Viel Spaß.
Gruß
@Move
 

Anhänge

  • Licht.pdf
    19 KB · Aufrufe: 45
gut, dann ein vorschlag von mir:

Code:
//Jemand drückt den Knopf
      SET   
      U     E      0.0
      UN    DB1.DBX    0.0              //Merker Messung läuft in irgndnem remanenten Speicherbereich
      FP    DB1.DBX    0.1              //Flankenmerker steigende Flanke
      SPBN  nw1a
      CALL  "TIME_TCK"                  //TIME-Temp (Millisekunden seit dem letzten Neustart der Maschine)
       RET_VAL:=#Startzeit1
      S     DB1.DBX    0.0              //Merker Messung läuft in irgndnem remanenten Speicherbereich
//Und lässt ihn nach einer gewissen Zeit wieder los
nw1a: SET   
      U     E      0.0
      U     DB1.DBX    0.0              //Merker Messung läuft in irgndnem remanenten Speicherbereich
      FN    DB1.DBX    0.2              //Flankenmerker fallende Flanke
      SPBN  End1
      CALL  "TIME_TCK"                  //TIME-Temp (Millisekunden seit dem letzten Neustart der Maschine)
       RET_VAL:=#Endzeit1
      R     DB1.DBX    0.0              //Merker Messung läuft in irgndnem remanenten Speicherbereich
//Ermitteln der Zeidifferenz zwischen Knopf drücken und Knopf loslassen
      L     #Endzeit1
      L     #Startzeit1
      -D    
      T     #Drueckdauer                //Millisekunden, die der Taster gedrueckt wurde
//Auswerten der Zeidifferenz zwischen Knopf drücken und Knopf loslassen
//Wert verwerfen, wenn negativ (wenn SPS dauerhaft am Netz, dann alle 50 Tage Registerüberlauf)
      L     #Drueckdauer
      L     0
      <=D   
      SPB   End1
//Wenn weniger als 1 sekunde gedrückt
      L     #Drueckdauer
      L     1000
      <=D   
      SPBN  nw1b
//Behandlung A
 
//Wenn zwischen 1 sek und 3 sekunden gedrückt
nw1b: SET   
      U(    
      L     #Drueckdauer
      L     1000
      >=D   
      )     
      U(    
      L     #Drueckdauer
      L     3000
      <=D   
      )     
      SPBN  nw1c
//Behandlung B
 
//Wenn zwischen 3 sek und 5 sekunden gedrückt
nw1c: SET   
      U(    
      L     #Drueckdauer
      L     3000
      >=D   
      )     
      U(    
      L     #Drueckdauer
      L     5000
      <=D   
      )     
      SPBN  nw1d
//Behandlung C
 
nw1d: NOP   0                           //und so weiter
 
 
//ende der Behandlung des ersten Tasters. ggf. folgt hier die Behandlung von Taster 2 o.ä.
End1: BEA
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
@move

...Dein Programm kann so nicht laufen:

1. T21wird nicht zurückgesetzt (ok die Lösung Taster M30.0 negiert auf R)
2. Rücksetzen von T20 würde nur funktionieren wenn t21 schaltet und das soll er nur wenn ich Dauerlicht haben möchte.
3. M30.2 setzt sich selbst zurück ich drücke den Taster M30.0 länger als 3sek. habe dann gleich zeitig eine S und R Befehl an M30.2

jau das war leider nichts
Ich weiß es ist knifflig -->>aber lösbar.

Gruß Martin
 
Hallo
@move

...Dein Programm kann so nicht laufen:

1. T21wird nicht zurückgesetzt (ok die Lösung Taster M30.0 negiert auf R)
2. Rücksetzen von T20 würde nur funktionieren wenn t21 schaltet und das soll er nur wenn ich Dauerlicht haben möchte.
3. M30.2 setzt sich selbst zurück ich drücke den Taster M30.0 länger als 3sek. habe dann gleich zeitig eine S und R Befehl an M30.2

jau das war leider nichts
Ich weiß es ist knifflig -->>aber lösbar.

Gruß Martin

Erwartest du hier eine vollständige Lösung oder was? Dieses Forum versteht sich i.A. nicht als Qizzveranstaltung. Wenn du so genau weißt, was falsch ist, dann verbesser das und gut ist es! Dann hast du doch eine funktionierende Lösung.
 
Hallo Ralle,
mich verwundert so eine Aussage von einem <Super-Moderator>!
Ich habe das Forum als Plattform für Problemlösungen und Programmierstrategien verstanden!?
Natürlich habe ich gehofft Vorschläge oder Teillösungen zu bekommen.
Wenn aber Lösungsvorschläge kommen die nicht funktionieren können und ich das anspreche wird das zu einer Quizveranstaltung?? ... kann ich leider nicht nachvollziehen!
Aber vielleicht kannst Du ja mal selbst einen konstruktiven Vorschlag bringen?
... wie wär das

Gruß Martin


@mangokind
über Sprungmarken //Taster und Schalterauswertung// bin ich auch schon dran gewesen. Ich bekomm aber nur den ersten Teil also nur Taster oder nur mit schalter hin. In der kombination wird es dann zu kompliziert.
Beim Taster habe ich die Flanke ausgewertet und bei dem Schalter die Änderung von false auf true oder von true auf false. Den Ausgang habe ich versucht ähnlich zu schreiben: der Ausgangswert Bool soll einfach invertiert werden.
Gruß Martin


PS.
@move und @mangokind nochmals vielen dank für eure Antworten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich zitiere mal aus deinen ersten Beitrag:
... ich bin mal über eure Lösungsansätze gespannt.

Natürlich kann dir hier jeder antworten, der meint, sich an Programmierwettbewerb beteiligen zu wollen. Normal wäre gewesen, du stellst mal deinen Lösungsansatz vor und dann kommt die Kritik und Berichtigung von der Seite der Helfer im Forum. Daß sich dann jemand so dämlich

jau das war leider nichts
Ich weiß es ist knifflig -->>aber lösbar.

kommen lassen muß, rief doch schon mal meinen Widerspruchsgeist wach!
 
Natürlich habe ich gehofft Vorschläge oder Teillösungen zu bekommen.
Wenn aber Lösungsvorschläge kommen die nicht funktionieren können und ich das anspreche wird das zu einer Quizveranstaltung?? ... kann ich leider nicht nachvollziehen!
waren die von dir kritisierten sachen nicht eher Details statt ausschlusskriterien? ausgänge, die sich nict selbst zurücksetzen etc...?

Aber vielleicht kannst Du ja mal selbst einen konstruktiven Vorschlag bringen?
Ich glaub, an konstruktiven vorschlägen seitens Ralles mangelts im forum ganz sicher nicht

und irgendwas hat mir mene mutti früher immer erzählt von ton und musik machen... leider bin ich so unmusikalisch

@mangokind

Beim Taster habe ich die Flanke ausgewertet und bei dem Schalter die Änderung von false auf true oder von true auf false.

das ist doch das gleiche... also die änderung von false auf true ist ne positive flanke und von true auf false ne negative flanke


Den Ausgang habe ich versucht ähnlich zu schreiben: der Ausgangswert Bool soll einfach invertiert werden.

invertieren ist eigentlich nicht weiter tragisch
Code:
SET
U M0.0 //Bedingung fuers invertieren
SPBN M001
//invertieren
[COLOR=red]UN A0.0[/COLOR]
[COLOR=red]= A0.0[/COLOR]
M001: nop 0
 
@all
Ich wollte hier niemanden zu nahe treten oder dämlich kommen.
Sorry wenn hier der Eindruck entstanden ist.

Ich habe erhofft das es hier Mitglieder gibt die sich einer (für mich kniffligen Aufgabe) oder wie Ralle es beschreibt: Programmierwettbewerb stellen/beteiligen.
Frei nach dem Motto: Wissen ist das einzige Gut das sich vermehrt wenn man es teilt!


Aus diesem Grund belassen wir dieses Thema an dieser Stelle!
Ich werd mir die Lösung wie immer selbst erarbeiten. Ist halt nur ein Zeitfaktor.

@Ralle bitte diesen Tread und meinen Account löschen

danke

Gruß Martin
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@all
Ich wollte hier niemanden zu nahe treten oder dämlich kommen.
Sorry wenn hier der Eindruck entstanden ist.

Ich habe erhofft das es hier Mitglieder gibt die sich einer (für mich kniffligen Aufgabe) oder wie Ralle es beschreibt: Programmierwettbewerb stellen/beteiligen.
Frei nach dem Motto: Wissen ist das einzige Gut das sich vermehrt wenn man es teilt!


Aus diesem Grund belassen wir dieses Thema an dieser Stelle!
Ich werd mir die Lösung wie immer selbst erarbeiten. Ist halt nur ein Zeitfaktor.

@Ralle bitte diesen Tread und meinen Account löschen

danke

Gruß Martin

Hi hier ist ja richtig Stimmung :ROFLMAO:,

@Martin
Dafür das du nach drei Tagen nix aufm Papier bekommen hast und ich den ersten Lösungsansatz nach 10min hier gepostet habe, finde ich das ganz ok.
Zumal ich noch nicht ganz verstanden habe was an meinem Ansatz nicht funktioniert.
Warum willst du zb. nichtspeichernde einschaltverzögerte Timer (T21)rücksetzten, dat machen die schon selber wenn man sie neu triggert.
Ich seh auch nicht das M30.2 gleichzeitig S und R hat, wo?
Naja egal.
Gruß
 
@Martin
Das ist ein typischen Beispiel für gnadenlose Kritikfähigkeit. Und ich halt gleich noch für den rumrüffelnden durchgeknallten Programierer her.

PS: Soviel ich weiß nimmt der Admin für das Löschen eines Account zwischen 100 und 1000 Euro, je nach Anzahl und Sinnhaftigkeit der Posts. :cool: Ich kann und darf das eh nicht.

PS2: Du hast das Motto leider ein wenig fehlerhaft interpretiert. Vor dem Erfolg kommt nun mal der Schweiß, das gilt auch hier. Aber helfen tun wir eigentlich alle gerne.
 
@ Move

T21
Wechselt der Signalzustand an Eingang S von "1" auf "0", während die Zeit läuft, wird sie angehalten.
d.h. von den 3sek bleibt nur ein teil stehen.
Sobald nun wieder an Eingang S von "0" auf "1" wechselt läuft die restzeit ab.
Ich benötige aber 3sek..

Funktion M30.2

Taster + Einschaltverzögerung = S M30.2
Taster und M30.2 = R M30.2
d.h. nach Ablauf der Einschaltverzögerung liegt eine 1 an S+R von M30.2

sorry aber das funktioniert so nicht.


Gruß Martin
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ Move

T21
Wechselt der Signalzustand an Eingang S von "1" auf "0", während die Zeit läuft, wird sie angehalten.
d.h. von den 3sek bleibt nur ein teil stehen.
Sobald nun wieder an Eingang S von "0" auf "1" wechselt läuft die restzeit ab.
Ich benötige aber 3sek..

Funktion M30.2

Taster + Einschaltverzögerung = S M30.2
Taster und M30.2 = R M30.2
d.h. nach Ablauf der Einschaltverzögerung liegt eine 1 an S+R von M30.2

sorry aber das funktioniert so nicht.


Gruß Martin

Hast du das Programm (siehe Licht.pdf) von Move mal ausprobiert? Denn deine Aussagen stimmen nicht.
 
@ralle
ja ich habe das auch ausprobiert!

wir können ja die einzelnnen Singnalzustände genau abarbeiten...
... dann wirst auch Du sehen das das so nicht funktioniert.


Gruß
 
@ Move

T21
Wechselt der Signalzustand an Eingang S von "1" auf "0", während die Zeit läuft, wird sie angehalten.
d.h. von den 3sek bleibt nur ein teil stehen.
Sobald nun wieder an Eingang S von "0" auf "1" wechselt läuft die restzeit ab.
Ich benötige aber 3sek..


Funktion M30.2

Taster + Einschaltverzögerung = S M30.2
Taster und M30.2 = R M30.2
d.h. nach Ablauf der Einschaltverzögerung liegt eine 1 an S+R von M30.2


sorry aber das funktioniert so nicht.



Gruß Martin
@T21
Das stimmt nicht! Teste doch mal online
Die Zeit bleibt zwar stehen, aber wenn der wechsel von 0 auf 1 geht, dann wird der Timer neu getriggert, die Zeit läuft von vorne ab und nicht die Restzeit, wäre schlimm wenns anders wäre

@M30.2
Stimmt auch nicht, ist doch alles flankengesteuert
S+R gleichzeitig 1 geht garnicht, gibt die Funktion so nicht her
Wenn ich mein Programm mit PLCSIM teste funktioniert vom feinsten?:rolleyes:

Hast du mal online getestet oder machst du das ganze hier per Aktenlage?

Gruß
 
@ralle
ja ich habe das auch ausprobiert!

wir können ja die einzelnnen Singnalzustände genau abarbeiten...
... dann wirst auch Du sehen das das so nicht funktioniert.


Gruß

Bitte kein Problem.

Dann teste mal eine einfache popelige nichtspeichernde Einschaltverzögerung und wechsel während die Zeit läuft den Signalzustand von 1 -> 0 ->1. Die Zeit bleibt stehen bei Signal 0, ok.
Signal wechsel wieder auf 1, die Zeit läuft von neuem an, nicht die Restzeit, oder nicht:sm17:
 
.... so im Anhang Singnalzustand bei Betätigung Taster(M30.0) länger als 3sek.

... ich bin mal gespannt
 

Anhänge

  • Licht-Singnale.pdf
    8,3 KB · Aufrufe: 20
Zurück
Oben