Step 7 Zähle einmalig +1 wenn Eingang positive Flanke

Ivan91

Level-1
Beiträge
21
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

ich brauche Hilfe bei nem Zähler der >999 zählen soll.
Ich möchte sofern ein Bit gesetzt ist mein DInt um 1 erhöhen. Allerdings soll die nur einmalig geschehen wenn Eingang von 0 auf 1 wechselt.
Das Zählbit ist länger gesetzt und mein aktuelles Problem ist, dass er dauerhaft aufsummiert während das Bit "1" ist.
Ich möchte das ganze in KOP programmieren.

Zur Verdeutlichung:

Wenn M100.0 von "0" auf "1" springt ->addiere einmalig (und nicht dauerhaft!)1 zu DB1.DBD0

Habe bereits AWL Listen gefunden aber kann mit den Sprungmarken nicht anfangen, da er diese im Manager, warum auch immer, rot markiert und die Sprungmarke fehlt.
 
Zuletzt bearbeitet:
Du hast doch schon die richtige Eingebung mit positive Flanke.
Jetzt noch in der Hilfe zu KOP nach Positive Flanke suchen und schon bist du auf dem richtigen Weg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, allerdings möchte ich nur einmal positiv zählen nach der Flanke. Bei mir bleibt die positive Flanke ja dauerhaft 1. Ich brauche aber nur einen einmaligen Impuls.
Im Anhang seht ihr, dass er Zähler bei 999 ist. Ich möchte aber "unendlich" haben
zähler.jpg
 
Zuletzt bearbeitet:
Du brauchst erstmal ein DBD(0), was ein DB0 ist, weiss ich nicht.

Code:
U M10.0
FP M10.1
SPBN WEI1 //wenn keine Flanke springe drüber
L DB1.DBD0
L L#1
+D
T DB1.DBD0
WEI1: NOP 0
 
Ich glaube, dass du das Prinzip einer Flanke nicht verstanden hast. Eine positiove Flanke läßt nur einen Puls durch, bis ein Signalwechsel stattgefunden hat. Füge doch mal zwischen deinen Merker und den Baustein eine positive Flanke ein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Unendlich gibt es nicht, aber mit einem DINT kommst du schon recht (2.147.483.647).

Du musst musst in meinen Vorschlag nur deine entsprechenden Operanden einsetzen.
 

Anhänge

  • DINT_Zähler.jpg
    DINT_Zähler.jpg
    18,2 KB · Aufrufe: 39
Du brauchst erstmal ein DBD(0), was ein DB0 ist, weiss ich nicht.

Code:
U M10.0
FP M10.1
SPBN WEI1 //wenn keine Flanke springe drüber
L DB1.DBD0
L L#1
+D
T DB1.DBD0
WEI1: NOP 0


Natürlich habe ich DBD0. Habe auch die AWL genutzt. Problem war, dass Sprunmarken maximal 4 Zeichen als Länge haben dürfen. Das erklärte die rote Schrift. Funktioniert nun einwandfrei. Danke.

Unendlich gibt es nicht, aber mit einem DINT kommst du schon recht (2.147.483.647).

Du musst musst in meinen Vorschlag nur deine entsprechenden Operanden einsetzen.

Deswegen schreib ich "unendlich" ;-) Dein Vorschlag hatte ich vorher bereits probiert, allerdings hat er, warum auch immer, pro Impuls 200 addiert. Komisch. Nun belasse ich es bei der AWL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann hast du keine Flanke definiert. Und wenn du auch AWL nimmst, dann schreibe doch erst gar nicht, dass du KOP willst.

Vollkommen richtig. Habe deins nochmal nachgebaut. Vielen herzlichen Dank. Funktioniert. Fehler war tatsächlich mein Unweissen über Flankenmerker. Brauche dazu Hilfsmerker und nicht direkt den "Takteingang"
 
Zurück
Oben