Step 7 Datenbaustein

robomann2011

Level-1
Beiträge
30
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,


ich will mich ein bisschen mehr mit dem Thema Datenbausteine und Programmierung beschäftigen, bisher lief das leider nur so nebenher.

Ich habe mir eine Aufgabe ausgedacht und versuche diese möglichst sinnvoll umzusetzen.

Ausgangssituation:

Ich habe einen Wert X für eine C-Korrektur, dieser ändert sich alle paar Zyklen und muss dann mit dem vorherigen verglichen werden. Wenn beide Werte unterschiedlich sind, darf eine Weiterschaltbedingung stattfinden, wenn nicht, soll eine neue Anforderung der C-Korrektur ausgelöst werden.

Ich muss also die beiden Werte auf Ungleichheit prüfen.

Zudem möchte ich, das die Werte in einem extra Datenbaustein gespeichert werden um die Änderung der Werte zu verfolgen. Der neuste Wert steht ganz oben und wird mit jedem neuen Wert eine Zeile weiter nach unten verschoben. nach ca. 10 Zeilen verfällt der Wert dann endgültig.

Wie könnte ich das am geschicktesten umsetzen?

Ich habe bisher mit MOVE und CMP <>I ein Vergleichsprogramm erstellt, allerdings ohne DB Speicher.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
okay, aber wie verschiebe ich zum Beispiel Daten in einem DB?

Dateneinheits-, also z.B. WORD-weise
günstig ist, mit dem ältesten Wert anzufangen ;-)

Wert aus vorletztem Speicher in letzten Speicher - (xn-1 MOVE xn)
Wert aus vorvorletztem Speicher in vorletzten Speicher - (xn-2 MOVE xn-1)

das ganze nur in einem Zyklus auf Anforderrung durchführen, dazu z.B. die Freigabe der MOVE-Blöcke mit einem Impuls (FP ... ) freigeben.
 
ich probiere jetzt nebenher am PC mit um das nachzuvollziehen.
Ich müsste also mehrere MOVE Befehle ausführen um den ersten und ältesten Wert von der ersten auf die letzte Zeile in dem DB zu bekommen?

Ich kann die Werte jetzt über einen Taktmerker Impulsweise weiter schieben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke! aber ganz stimmt es noch nicht. Ich schreibe den ersten Wert in die erste Zeile des DB, aber sobald der Takt kommt, schreibt er den Wert in alle Zeilen. Nicht nach und nach.
Muss ich das verriegeln oder anders beschalten?
 
Danke! aber ganz stimmt es noch nicht. Ich schreibe den ersten Wert in die erste Zeile des DB, aber sobald der Takt kommt, schreibt er den Wert in alle Zeilen. Nicht nach und nach.
Muss ich das verriegeln oder anders beschalten?

Ja.

Beitrag #6: "das ganze nur in einem Zyklus auf Anforderrung durchführen, dazu z.B. die Freigabe der MOVE-Blöcke mit einem Impuls (FP ... ) freigeben."
 

Die Operation Flanke 0 -> 1 abfragen erkennt einen Wechsel im angegeben Operanden von "0" auf "1" (steigende Flanke) und zeigt dies nach der Operation durch VKE = 1 an. Der aktuelle Signalzustand im VKE wird mit dem Signalzustand des Operanden, dem Flankenmerker verglichen. Ist der Signalzustand des Operanden "0" und das VKE vor der Operation "1", so ist das VKE nach der Operation "1" (Impuls), in allen anderen Fällen "0". Das VKE vor der Operation wird im Operanden gespeichert

wenn die Flanke nicht vorhanden ist JMPN zu LABEL nach Anweisungen
 
Zurück
Oben