Flankenauswertung wortweise

pinolino

Level-1
Beiträge
261
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
es sollen die pos. Flanken der einzelnen Bits eines Wortes (EW1) ausgewertet werden. Hierzu habe ich folgendes Programm geschrieben:

L MW 10 // Hilfsmerkerwort
INVI
L EW 1
UW
T MW 20 // Flankenmerkerwort
L EW 1
T MW 10

Frage:

Wie kann ich nun über das Flankenmerkerwort MW20 jedem seiner Bits einen Merker zuweisen, in der Form, dass bei jedem Bit jeweils ein anderer Merker gesetzt und anschließend wieder rückgesetzt wird, wenn die Flanke nicht mehr ansteht?

Es würde ja z.B. gehen:

U M 10.0 // Bit aus MW20
S M 50.0
UN M 10.0
R M 50.0

usw.

Das ist jedoch sehr aufwendig - gibt es eine elegantere Art und Weise?

Vielen Dank!

pinolino
 
Unterschiede zum vorigen Wert werden am Einfachsten durch XOR erkannt. Wenn nur steigende Flanken interessieren, dann dieses Ergebnis noch mit dem Aktualwert verunden.
Code:
L MW 20  // Alter Wert
L EW 1   // Aktualwert
XOW      // Änderungen ermitteln
L EW 1   // Aktualwert
T MW 20  // Merken nicht vergessen
UW       // Nur steigende Flanken stehen lassen
Jetzt muss mit den Bits natürlich noch etwas getan werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verstehe den Sinn der Frage nicht ganz.

Du hast geschrieben: U M 10.0 // Bit aus MW20 ....
gemeint hast DU wohl: U M 20.0 // Bit aus MW20 ....

aber was soll es bringen mit dem Flankenmerker einen weiteren Merker
zu setzen bzw. zu resetten?

dieser Merker hat doch dann sowieso den gleichen Zustand ??


Hallo,
es sollen die pos. Flanken der einzelnen Bits eines Wortes (EW1) ausgewertet werden. Hierzu habe ich folgendes Programm geschrieben:

L MW 10 // Hilfsmerkerwort
INVI
L EW 1
UW
T MW 20 // Flankenmerkerwort
L EW 1
T MW 10

Frage:

Wie kann ich nun über das Flankenmerkerwort MW20 jedem seiner Bits einen Merker zuweisen, in der Form, dass bei jedem Bit jeweils ein anderer Merker gesetzt und anschließend wieder rückgesetzt wird, wenn die Flanke nicht mehr ansteht?

Es würde ja z.B. gehen:

U M 10.0 // Bit aus MW20
S M 50.0
UN M 10.0
R M 50.0

usw.

Das ist jedoch sehr aufwendig - gibt es eine elegantere Art und Weise?

Vielen Dank!

pinolino
 
Ok,
vermutlich habe ich mich ungut ausgedrückt.

Im Flankenmerkerwort MW20 wird ja für einen Zyklus jede pos. Flanke der einzelnen Bits aus EW1 gespeichert.

Die Aufgabe ist nun, jede pos. Flanke eines Bits im EW1 dauerhaft zu speichern - das MW20 speichert ja nur für einen Zyklus!

Hoffe so ist es etwas verständlicher?

pinolino
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jepp stimmt zotos,
dieser Ansatz führt zu nichts.

Daher ja dann auch meine Frage, wie die einzelnen pos. Flanken aus EW1 dauerhaft gespeichert werden können?

pinolino
 
...
Daher ja dann auch meine Frage, wie die einzelnen pos. Flanken aus EW1 dauerhaft gespeichert werden können?
...

Ich versteh echt nur Bahnhof.

Entspricht das hier Deinen Vorstellungen(?):
Code:
L EW 20  // Flanken
L MW 50  // Speicher
OW
T MW 50  // Speicher
 
Jepp stimmt zotos,
dieser Ansatz führt zu nichts.

Daher ja dann auch meine Frage, wie die einzelnen pos. Flanken aus EW1 dauerhaft gespeichert werden können?

pinolino


Also soll ein Eingang wenn er true wird in einem merker gespeichert werden?

Dann brauchst du keine Flankenauswertung!

bitweise:
Code:
U E 10.0
S M 50.0

wortweise:
Code:
L EW 10
L MW 50
OW
T MW 50
 
Hallo,

die Aufgabe ist ein "Programm" zu schreiben, das die pos. Flanken der einzelnen Bits eines Wortes (EW1) auswertet. Weiterhin soll ein Eingang aus EW1, wenn er den Status 1 annimmt, in einem Merker dauerhaft gespeichert werden.

Insofern könnte ich doch die Flankenauswertung

L MW 10 // Hilfsmerkerwort
INVI
L EW 1
UW
T MW 20 // Flankenmerkerwort
L EW 1
T MW 10

benutzen und über den Code

L MW 20
L MW 50
OW
T MW 50

diejenigen Eingänge, die den Status 1 annehmen, in einem Merker speichern, oder?

Vielen Dank!

pinolino
 
Zuletzt bearbeitet:
Mein Vorschlag:
Code:
L MW 20  // Alter Wert
L EW 1   // Aktualwert
XOW      // Änderungen ermitteln
L EW 1   // Aktualwert
T MW 20  // Merken nicht vergessen
UW       // Nur steigende Flanken stehen lassen (mit den "Neuen" kann jetzt noch was gemacht werden)
L MW 50  // Bereits gesetzte Bits holen
OW       // Neu hinzugekommene Bits auch setzen
T MW 50  // Und wieder merken
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

die Aufgabe ist ein "Programm" zu schreiben, das die pos. Flanken der einzelnen Bits eines Wortes (EW1) auswertet. Weiterhin soll ein Eingang aus EW1, wenn er den Status 1 annimmt, in einem Merker dauerhaft gespeichert werden.

hi,
wozu soll die Auswertung der Flanken denn dienen?
und mit:

L EW1
T MW10

hast du doch schon jedes Bit vom EW1 dauerhaft im MW10 gespeichert. was soll denn passieren, wenn der Status wieder auf "0" geht. diese Info wäre noch hilfreich.
 
Danke für eure Denkanstöße...

... mit

L EW1
T MW10

hast du doch schon jedes Bit vom EW1 dauerhaft im MW10 gespeichert.

Aber doch eigentlich nur solange, bis sich die Bits aus EW1 wieder ändern, oder?

Nimmt ein Bit aus EW1 den Status 1 an, so soll dies, unabhängig von weiteren Änderungen dieses Bits, dauerhaft gespeichert werden.

Erst wenn alle Bits einmal den Status 1 angenommen haben, soll der Speicher händisch gelöscht werden können und das Ganze passiert wieder von vorne...

Der Zeitraum, bis jedes Bit einmal den Status 1 angenommen hat, kann sich über mehrere Wochen ziehen.

pinolino
 
genau das macht dieser Code:

Code:
L EW1
L MW50
OW
T MW50

Du brauchst keine Flankenauswertung oder sonstiges.
Sobald einmal ein Eingang auf "1" war wird dies im MW50
gespeichert, bis Du das MW50 wieder überschreibst



Danke für eure Denkanstöße...



Aber doch eigentlich nur solange, bis sich die Bits aus EW1 wieder ändern, oder?

Nimmt ein Bit aus EW1 den Status 1 an, so soll dies, unabhängig von weiteren Änderungen dieses Bits, dauerhaft gespeichert werden.

Erst wenn alle Bits einmal den Status 1 angenommen haben, soll der Speicher händisch gelöscht werden können und das Ganze passiert wieder von vorne...

Der Zeitraum, bis jedes Bit einmal den Status 1 angenommen hat, kann sich über mehrere Wochen ziehen.

pinolino
 
Zurück
Oben