Pos / Neg Flanken Byteweise Auswerten ?? (S7)

Selbst ist der Mann!

Ein mögliches Beispiel könnte so aussehen:

Code:
L MB 1  // hier steht der Wert, vom letzten Zyklus (siehe unten)
L MB 0  // hier steht der Wert drin, der die Flanke erzeugen soll
<>I      // Vergleich auf ungleich (der Wert hat sich seit dem letzen Zyklus geändert)
= M 200.0 // hier wird eingfach mal der Merker 200.0 auf True gesetzt, wenn sich der Wert im MB 0 seit dem letzen Zyklus geändert hat (Achtung nur für ein Zyklus!)
T MB 1  // sichert den Accu (Wert von MB 0) im MB 1 (für Vergleich im nächsten Zyklus)

Wichtig ist, das in dem Beispiel die Speichervarible (MB1) keine temporäre Variable sein darf (was ja beim MB 1 nicht der Fall ist), sie darf natürlich auch nur 1x je Zyklus beschrieben werden- damit Alles richtig funktioniert!
 
Zuletzt bearbeitet:
Bei Bytes kann man wohl nicht von steigender oder fallender Flanke reden, es gibt ja in dem Beispiel oben eine Auswertung bei jeder Änderung (es muss ja nicht 0 zuvor im MB 0 gestanden haben).

Von fallender oder steigender Flanke kann man da wohl nur reden, wenn man einen Wert 0 im Merkerbyte als Grundzustand nimmt und den Wechsel von 0 auf einen anderen Zustand (steigende Flanke), bzw. von einem beliebigen Wert nach 0 (fallende Flanke) dedektieren möchte.
 
Danke erstmal, ging aber fix !!:)

...die Auswertung sollte für steigende und fallende Flanken funktionieren.
Als "Ausgang" soll ein MB für die steigenden und ein MB für die fallenden Flanken zur Verfügung stehen.

@HeizDuese, die Information soll für jedes Bit im MB zur Verfügung stehen!!

Gruß,
Jupp
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine Möglichkeit für steigende Flanken (in Anlehnung an das Beispiel von HeizDuese) ist wie folgt:
Code:
L MB 1  // hier steht der Wert, vom letzten Zyklus (siehe unten)
L MB 0  // hier steht der Wert drin, der die Flanke erzeugen soll
XOW     // Nur die Unterschiede stehen lassen
L MB 0  // Aktuelle Werte holen
UW      // Jetzt sind nur die Bits gesetzt, die neu dazu gekommen sind
// Hier erfolgt die Ausertung / Bearbeitung
L MB 0  // Aktuellen Zustand laden 
T MB 1  // sichert den Accu (Wert von MB 0) im MB 1 (für Vergleich im nächsten Z
Für fallende Flanken:
Code:
L MB 1  // hier steht der Wert, vom letzten Zyklus (siehe unten)
L MB 0  // hier steht der Wert drin, der die Flanke erzeugen soll
XOW     // Nur die Unterschiede stehen lassen
L MB 1  // Alte Werte holen
UW      // Jetzt sind nur die Bits gesetzt, die im vorigen Zyklus gesetzt waren
// Hier erfolgt die Ausertung / Bearbeitung
L MB 0  // Aktuellen Zustand laden 
T MB 1  // sichert den Accu (Wert von MB 0) im MB 1 (für Vergleich im nächsten Z
 
jupp schrieb:
Danke erstmal, ging aber fix !!:)

@HeizDuese, die Information soll für jedes Bit im MB zur Verfügung stehen!!

ok, jetzt habe ich's verstanden, es soll jedes Bit einzeln betrachtet werden (8x Flankenauswertung).

Dann passt das Beispiel, oberhalb, von Rainer schon.
 
Hallo,

Danke erstmal!!!

PS:
Müste auch so Funktionieren (Bsp. für Pos Flanke)....

Code:
[LEFT]L MB 0  // hier steht der Wert, der die Flanke erzeugen soll
L MB 1  // hier steht der Wert drin, vom letzten Zyklus (siehe unten)
INVI    // 1er Komplement bilden
UW
// Hier erfolgt die Ausertung / Bearbeitung
L MB 0  // Aktuellen Zustand laden 
T MB 1  // sichert den Accu (Wert von MB 0) im MB 1 (für Vergleich im nächsten Z[/LEFT]

Gruß,
Jupp
 
Zurück
Oben