Ab Version 2.3.56 kann die Kompilierung alter Projekte zu folgenden Problemen führen: Ein Zeitgeber, der vom Compiler in einer älteren Version in einem Selbsthaltebereich platziert wurde, wird ab Version 2.3.56 in den Nichthaltebereich gelegt.
Der Grund dafür ist, dass Sie ab Version 2.3.56 Funktionsbausteininstanzen in den Selbsthalte- oder Nichtselbsthaltebereich legen können. Dabei vergibt der Compiler für jede VAR_RETAIN-Instanz des Funktionsbausteins 'TM_xxxs_FB' jeweils einen System-Zeitgeber ab dem Ende des Bereichs für Zeitgeber (Systemregister 5 - 1) bis zum Beginn des Selbsthaltebereichs (Systemregister 6). Für jede Instanz der Klasse VAR vergibt der Compiler jeweils einen System-Zeitgeber vom Ende des Nichtselbsthaltebereiches (Wert der Systemregister 6 -1) bis zu 0.
Wenn die Systemregister 5 und 6 wie in unten stehendem Beispiel gesetzt werden, treten die oben beschriebenen Probleme auf. Es müssen die Systemregister 5 oder 6 entsprechend angepasst werden oder die Klasse der FB-Instanz geändert werden.
In einer früheren Version als Version 2.3.56 wurde der Zeitgeber der Adresse 2999 zugewiesen, die im Selbsthaltebereich liegt. Ab Version 2.3.56 versucht der Compiler, den Zeitgeber in den Nichtselbsthaltebereich zu legen. Der Compiler weist die Adresse 2499 zu.
Lösung: Die Klasse im Programmkopf ändern, um die Instanz in den Selbsthaltebereich zu legen.