Flankenerkennung

knubbl

Level-2
Beiträge
38
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hi,

ich habe folgendes Problem.
Ich möchte bei einer Änderung eindes Signals(DWORD) auf <>0 eine Aktion ausführen, allerdings nur einmal. D.h. ich muss die steigende Flanke auswerten.

Im moment Versuche ich es so:

L #OBJ
L 0
<>D
FP #FM

UN #FM
BEA
...




Aber irgendwie funktionierts nicht so wie ich mir das vorstelle
 
hi,

ich habe folgendes Problem.
Ich möchte bei einer Änderung eindes Signals(DWORD) auf <>0 eine Aktion ausführen, allerdings nur einmal. D.h. ich muss die steigende Flanke auswerten.

Im moment Versuche ich es so:

L #OBJ
L 0
<>D
FP #FM

UN #FM
BEA
...




Aber irgendwie funktionierts nicht so wie ich mir das vorstelle


Probiers mal so

Code:
L #OBJ
L L#0
<>D
FP #FM
= FM2
 
UN #FM2
BEA
...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
geht leider auch nicht.


aber ich glaub ich hab das Problem gefunden.

Wenn ich die Lokalvariable durch einen Merker ersetze geht alles, was auch Sinn macht weil ja der Zustand in 2 Zyklen verglichen wird bei FP und das wird mit einer Lokalvariable etwas schwierig sein.
 
sorry, das hab ich übersehen.
mit Lokalvariablen als Merker geht es nicht.

fm und fm2 sind normale Merker (oder in/out variablen).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Knubbl,

so wie Du es geschrieben hast, bekommst Du nur mit, wenn das DWord ungleich 0 ist.
Ändert sich innerhalb des DWords etwas wird keine neue Flanke erzeugt.
Probier mal folgendes aus:
Code:
  L     MD    20                    // Neuwerte 
  L     MD    24                    // Altwerte 
  UD    
  XOD   
  L     0
  <>D   
  S     M      1.0                  // Änderung im DWord

  L     MD    20                    // Neuwerte 
  T     MD    24                    // Als Altwert ablegen

Grüße
Gebs
 
Hallo Knubbl,

so wie Du es geschrieben hast, bekommst Du nur mit, wenn das DWord ungleich 0 ist.
...
Mehr wollte er ja auch nicht:
...
Ich möchte bei einer Änderung eindes Signals(DWORD) auf <>0 eine Aktion ausführen, allerdings nur einmal.
...
Allerdings wird mit obigen Code von BiBi die Flanke wieder erzeugt, wenn das DWORD zurück auf 0 und dann wieder auf <>0 geht und knubbl hat geschrieben nur einmal.
Wenn's wirklich nur einmal sein soll, dann S anstatt = verwenden:
Code:
L #OBJ
L L#0
<>D
S "OBJ<>0"
 
U "OBJ<>0"
FP "FM"
[I]einmalige Aktion[/I]
 
...
 
Zurück
Oben