HSL 2.0-Framework
1.9
Beschreibung des Frameworks
|
Informationen zur Verhaltensweise von HSL2.0-Bausteinen während der Initialisierung und die richtige Vorgehensweise
Während der Initialisierung werden die Bausteine abgearbeitet. Die genaue Vorgehensweise dabei ist in der HTML-Online-Hilfe des HS/FS Experte unter "Startverhalten der Logik" (logikstart.html) beschrieben.
Bei einem HSL 2.0-Baustein sind dabei folgende Punkte/Ereignisse zu beachten, die in dieser Reihenfolge stattfinden:
Daraus folgt, dass es Situationen gibt, in denen sich HSL2.0 und HSL1.0 Bausteine unterschiedlich verhalten.
Das Schaubild zeigt vereinfacht dargestellt zwei Bausteine, die miteinander und mit mehreren KO verbunden sind:
Fall 1: Baustein B1 ist ein HSL1.0-Baustein
In diesem Fall bilden die Bausteine B1 und B2 eine "Berechnungs-Kette", die bei der Initialisierung von rechts nach links abgearbeitet wird. (siehe bereits eingangs erwähnte Doku "Startverhalten der Logik")
Dabei werden die Werte der KO, die mit den Eingängen von Baustein B1 verbunden sind, berücksichtigt und der Eingang von B2 erhält während der Initialisierung den Wert, der durch Berechnung von Baustein B1 an dessen Ausgang anliegt.
Fazit: Baustein B2 feuert nach Ende der gesamten Logik-Initialisierung genau ein einziges Mal, und zwar den Wert, der durch Berechnung der gesamten "Kette" entstanden ist.
Fall 2: Baustein B1 ist ein HSL2.0-Baustein
Baustein B1 wird während der Initialisierung der Logik instanziert. An dieser Stelle ist es nicht möglich, einen Ausgang zu beschreiben, womit die "Berechnungs-Kette" unterbrochen ist.
In diesem Fall erhält der Eingang von B2 bei dessen Initialisierung den Init-Wert des Ausgangs von B1 und nach Abschluss der Logik-Initialisierung feuert der Baustein. Dies alles findet im Logik-Kontext statt.
Baustein B1 wird parallel dazu im Baustein-Kontext berechnet, die Methode on_init() wird angestoßen und er feuert. Dieser Wert wird in die Queue des Logik-Kontexts eingereiht.
Fazit: Baustein B2 feuert nach Ende der Logik-Initialisierung einmal, und zwar den Wert, der unter Verwendung des Init-Werts vom Ausgang von Baustein B1 entstanden ist. Bei Abarbeitung der Logik-Queue kommt es dann zum zweiten Feuern von Baustein B2, diesmal mit dem Wert, der durch die Berechnung von Baustein B1 entstanden ist.