Ankündigung

Einklappen
Keine Ankündigung bisher.

Aktualisierung von KOs nach Abarbeitung einer Logik

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS Aktualisierung von KOs nach Abarbeitung einer Logik

    Hallo alle!

    Ich habe beim Homeserver bei der Abarbeitungsreihenfolge innerhalb einer Logik eine Beobachtung gemacht, wo ich mir nicht sicher bin, ob das vielleicht ein Fehlverhalten des HS ist:

    Nehmen wir an, in einer Logik gibt es einen Telegrammgenerator, der jede Minute ein Telegramm erzeugt. An den Ausgang des Telegrammgeneratórs kommt ein Baustein, der eine Berechnung ausführt, z. B. eine Multiplikation mit 2. An den Ausgang der Multiplkation kommt wieder eine Berechnung usw., das ganze z.B. 5x. Damit entsteht eine Kette, die von links nach rechts abgearbeitet wird und am Ende ein Ergebnis liefert. Soweit funktioniert das auch, das Endergebnis ist immer richtig.

    Ich habe nun bei einer solchen Konstrution auch die Zwischenergebnisse auf interne KOs herausgeführt, d.h. bei 5 Bausteinen in einer Kette gibt es 4 Zwischen- und ein Endergebnis. Und diese 5 KOs schreibe ich in ein Archiv, getriggert vom Endergebnis. Ich bin davon ausgegangen, wenn das Endergebnis von dem letzten Berechnungsbaustein ausgegeben wird, sind auch alle anderen Ergebnisse schon vorhanden. Dem ist aber nicht so, denn im Archiv gibt es war exakt jede Minute einen Eintrag, aber ca. 10% der Einträge sind veraltet und enthalten die Werte des vorigen Durchlaufes! Wenn ich vor dem Schreiben ins Archiv eine kleine Zeitverzögerung einbaue, z.B. 1s, dann stimmen alle Archiveinträge.

    Daraus schliesse ich: Es gibt eine Zeitspanne, in der die Berechnung eines Bausteins in einer Logik bereits abgeschlossen ist und die Berechnung des nächsten Bausteines angestossen wird, wo aber die mit dem Ausgang verbundenen KOs noch nicht mit den neuen Werten zur Verfügung stehen! Das ist recht unschön, weil damit kann man in dem oben beschriebenen Fall nie sicher sein, dass auch wirklich die Werte des aktuellen Durchlaufes der Logik ins Archiv geschrieben werden. Die offensichtlich notwendige Zeitverzögerung ist programmiertechnisch unsauber, da man die maximal notwendige Verzögerungszeit nicht kennt!

    Wie macht ihr das in so einem Fall? Mit Zeitverögerung wie oben beschrieben? Oder gibt es einen eleganteren Weg?

    fragt mit Grüßen
    GKap
Lädt...
X