Merker am effektiv setzen und rücksetzen

linuxluder

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

ich bin ein blutiger Anfänger in Sachen SPS und habe folgende Frage:

Ich möchte mit einem Eingang E1.0 einen Merker M1.0 setzen und zurücksetzen, aber nur dann, wenn der Eingang mindestens 5 sek steht.



U E 1.0
UN M 1.0
L S5T#5S
SE T 60
U T 60

S M 1.0


U E 1.0
U M 50.0
L S5T#5S
SE T 60
U T 60

R M 1.0


Also das nur setzen geht, wenn ich den unteren Code-Teil weglasse. Der ganze Code funktioniert so leider nicht. Was mache ich da falsch?

Gruß Jo
 
Zuletzt bearbeitet:
Hallo Jo,
welchem Verknüpfungeblock soll der T60 gehorchen ? Dem ersten oder dem zweiten ? Was würdest du denn machen, wenn dein Chef1 sagt "arbeite" und dein Chef2 sagt "arbeite nicht" ?

Also ... versuch es doch mal mit 2 Timern ...
Was macht der M50.0 ?

Gruß
Larry
 
Hallo nochmal:

Ich habe einen Fehler drin gehabt:

Der Timer bezieht sich nur auf den Eingang 1.0. Wenn der länger als 5 sec. steht soll der Merker gesetzt werden, falls noch nicht gesetzt. Falls er jedoch gesetzt ist, soll er zurückgesetzt werden.
Der Merker dient übrigens nur zum Ansteuern eines Ausgangs.

Wie programmiere ich das am "effektivsten"?

Code:
 U     E 1.0
      L     S5T#5S
      SE    T     60
      U     T     60
      UN    M1.0
      S     M1.0


      U     ME.0
      L     S5T#5S
      SE    T     60
      U     T     60
      U     M1.0
      R     M1.0

So gehts ja leider nicht. Warum eigentlich nicht?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Larry,

ja, habe ich verstanden, aber ich dachte, es geht auch "einfacher".

So gehts aber leider auch nicht, mit zwei Merkern:

Code:
U     E     1.0
      L     S5T#5S
      SE    T     60
      U     T     60
      UN    M     1.0
      S     M     1.0


      U     E     1.0
      L     S5T#5S
      SE    T     61
      U     T     61
      U     M     1.0
      R     M     1.0
 
Zuletzt bearbeitet:
Dein Code wird von oben nach unten abgearbeitet.

Lese ihn dir selbst mal laut vor und du wirst hoffentlich verstehen.
Und Larry hat recht. Lese seinen Beitrag nochmals aufmerksam.

Kleiner Tipp: Da steht was von 2 TIMERN!!!!
 
Hi Helmut,

ich konnte diese Resistenz gegenüber guten Ratschlägen nicht mehr ertragen.
Entschuldige, dass ich schwach geworden bin.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit Resistenz hat das nicht zu tun. Wie sollte ich denn auf die Schnelle auf sowas wie x ... kommen?!?

Trotzdem Danke.


Mit Resistenz meinte ich:
Larry sagt, nutze 2 Timer.
Du benutzt weiter einen Timer und sagst dann auch noch du hättest Larry verstanden.

Die Sache mit dem X ist hier im Forum schon eine Million mal diskutiert worden. Siehe FAQ Stromstoßschalter.
 
Man braucht dafür kein "X" (genausowenig ein "FP" oder "FN").
Das kann man mit ein bisschen Denkarbeit auch mit ganz banalen "U" und "O" machen. Dann dauert's halt ein bisschen länger, aber dafür gibt's einen gratis Lerneffekt dazu!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, dachte nicht, dass meine einfache Frage so viel "Resonanz" hervorruft. :D

(Wenn mich jemand etwas fragt, noch dazu höflich und freundlich, und ich es weiß, dann sage ich es demjenigen einfach, ohne danach noch hinzuzufügen: "Hättest Du eine Lexikon benutzt, dann wärst Du selbst drauf gekommen."
 
:confused: ... das meinte ich nun gerade nicht ... Aber es liest scheinbar in letzter Zeit jeder das, was er gerne lesen möchte, aber eben nicht das, was da steht ...
 
Hallo Linux,
wie eine Zeit Programmiert wird, bekommst
du ja schon hin. Für deine Aufgabe reicht
erstmal eine Zeit, wie dotzi schon gezeigt hat.
Jetzt solltest du mit Hilfe von einfachen
Operationen wie "UND"; "ODER"; "S/R-GLIEDER"
einen einfachen Binäruntersetzer oder auch
Stromstoßschalter basteln, als Eingang von
diesen wird dann das Zeitglied genutzt.

Als erstes solltest du lernen was eine Flanken-
Auswertung ist. D.h. ein Signal bzw. ein Taster
wird nur für 1-SPS-Zyklus ausgewertet, gleich
wie lange er betätigt wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hätte noch eine Frage zu dem Code von Dotzi

Code:
u   e1.0
l   s5t#5s
se  t60
 
u   t60
fp  m1.1
x   m1.0
=   m1.0

Ich habe mir das mit dem x, also die XOR-Schaltung, durchgelesen und verstanden. Auch die Flankenauswertung begreife ich.
Was ich leider nicht ganz verstehe ist, warum es nicht "konsequenterweise" so lautet:

Code:
u   e1.0
l   s5t#5s
se  t60
 
[COLOR=Red]x[/COLOR]   t60     <-
fp  m1.1
x   m1.0
=   m1.0

Ich habe doch eine XOR-Verknüpfung von T60 und M1.0, oder nicht?

Gruß Jo
 
Ok, das verstehe ich einigermaßen.

Dazu aber noch eine Frage zu diesem korrekten Code:
Code:
u   e1.0
l   s5t#5s
se  t60
 
u   t60
fp  m1.1
x   m1.0
=   m1.0

Ist der Eingang E1.0 ist länger als 5s auf 1, dann wird Merker M1.0 auf 1 gesetzt. Schön. E1.0 ist wieder auf 0. Merker M1.0 bleibt 1. Wird der Eingang E1.0 ein zweites mal länger als 5s auf 1 gesetzt, dann sollte M1.0 wieder auf 0 gehen, was aber nicht der Fall ist. Erst wenn ich E1.0 sozusagen ein drittes mal länger als 5s auf 1 habe springt der Merker M1.0 auf 0.
Kurzum: JEDES mal wenn E1.0 länger als 5s auf 1 steht sollte der Zustand des Merkers 1.0 einfach wechseln.
Ist der Code für diesen Zweck richtig?

Vielen Dank, Jo
 
Zurück
Oben