Step 7 sich Ändernde Werte finden

SPS_NEU

Level-2
Beiträge
567
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

wer hat auf die schnelle eine schlaue Lösung....

ich habe viele DB´s (über 30) mit je 24 INT-Werten. Sobald sich einer der 720 Werte ändert, soll dieser angezeigt werden. Also ein FC der am Ausgang diesen Wert ausgibt. Es ist defininitv immer nur ein Wert, der sich ändert.

Jemand eine Spontane Idee? Ich dachte an Pointer bzw. einen Vergleicher, aber dazu müsste ich zu jedem der 720 Werte eine weitere Variable erstellen. Gibt es etwas einfacheres?
 
Spontane Idee: Eine Prüfsumme (CRC, Hash) über alle Werte vergleichen. Da gibt es Verfahren zur Fehlerkorrektur, die ausgeben können, welcher Wert falsch/geändert ist.
Bei "nur" 720 Werten ist es aber wohl einfacher, mit 720 Kopien (bzw. 30 extra DBs) zu vergleichen - es sei denn Du nutzt TIA mit "optimierten" DB und die Werte sind nicht in Arrays.

Harald
 
Zuletzt bearbeitet:
Die CRC mit Fehlerkorrektur war eine spontane Idee ;) Falls Dich das Thema näher interessiert, dann kannst Du ja mal den Gockel nach "Fehlerkorrektur CRC" befragen, doch für Deine Aufgabe etwas anpassen wird vermutlich vieeel zu aufwendig. Eine fertige Lösung kann ich Dir nicht präsentieren.

Weil Du die Besonderheit hast, daß sich höchstens 1 Wert ändert, kannst Du ein einfacheres Verfahren anwenden:

Du denkst Dir Deine 720 Werte als Tabelle mit 30 Spalten (je DB eine) und 24 Zeilen (je Wert im DB eine). Nun kannst Du für alle 30 Spalten alle 24 Werte einer Spalte zusammenaddieren und in eine zusätzliche Summenzeile (darunter) schreiben. Das gleiche machst Du mit den Zeilen: 24 mal alle 30 Werte einer Zeile addieren und in eine zusätzliche Spalte (rechts daneben) schreiben. (beim Addieren alle INT-Überläufe einfach ignorieren)
Nun brauchst Du nur die 30 + 24 = 54 Summen zu speichern (anstatt 720 Werten). Im nächsten Zyklus machst Du die Berechnungen wieder und vergleichst mit den gespeicherten Summen. Da wo die Summe nicht übereinstimmt ist ein geänderter Wert. Je nachdem welche Summen nicht übereinstimmen, hast Du eine Info, in welchem DB (Index der Spaltensumme) welcher Wert (Index der Zeilensumme) sich geändert hat.

Damit die Berechnungen einfach in Schleifen gemacht werden können, müssen die Werte in den DB indizierbar angeordnet sein (Array oder die Adressen DBW.. indizieren). Falls Du TIA und "optimierte" DB verwendest, kann es sein, daß Dir TIA die Aufgabe der indizierten Ansprache der DB gehörig erschwert (habe ich keine Erfahrung).

Harald
 
Zurück
Oben