Hallo Benni,
da hast Du wirklich in ein Wespennest gestochen und eine sehr spezielle Problematik aufgedeckt. Ich hab mir das mal angesehen und kann folgende Erläuterungen und Hinweise dazu geben:
1. Bei einem remanenten Funktionsbaustein wird nur der aktuelle Ausgangswert gespeichert, bei einem remanenten Timer noch zusätzlich der aktuelle Zustand der internen State Machine.
2. Beim Restart eines remanenten Timers wird jetzt der remanente Istwert wiederhergestellt und für den Fall, das der Timer in einem aktiven Zustand war (Einschalt- oder Ausschaltzeit läuft), wird der jeweils aktuelle Istwert I1 oder I2 erneut geladen, d.h. die Sollwerte sind nicht remanent! Mit Konstanten funktioniert das, bei einer Beschaltung mit einer Variablen sind einige Randbedingungen zu beachten:
3. Beim Übergang von HALT nach RUN werden zuerst die Strompfade initialisiert, danach wird der Funktionsbausteinplan vorbereitet. Dazu gehört das Rücklesen der remanenten Merker, danach werden die Datenfelder der einzelnen Funktionsbausteine initialisiert, und zwar in der Reihenfolge, in der sie im Bausteinplan angeordnet sind. Bei diesem Vorgang werden auch remanente Istwerte wiederhergestellt. Beim Timer erfolgt an dieser Stelle auch die Neuermittlung des eventuell benötigten Sollwertes I1 oder I2.
4. Daraus kann man ersehen, dass man keine Chance hat, mit irgendeiner Massnahme diesen Ablauf zu beeinflussen, die erst mit der Bearbeitung von Schalt- oder Bausteinplan wirksam wird. Zu diesem Zeitpunkt wäre schon ein aktiver Sollwert von "0" ermittelt worden, weshalb der Ausgang Q1 des Timers aktiv wird, obwohl die später sichtbare Sollzeit noch nicht abgelaufen ist. Ein geänderter Sollwert wird aber erst mit einer erneuten Flanke am Enable-Eingang übernommen.
5. Möglich ist also nur die Beschaltung entweder mit einem remanent deklarierten Merker MW bzw. MD an I1 und/oder I2, oder die Beschaltung mit dem Ausgang QV eines remanenten Funktionsbausteines DB, wobei dieser Datenbaustein DB dann im Bausteinplan vor dem remanenten Timer angeordnet werden muss.
Leider ist bei der Implementierung dieser Vorgänge wohl nicht an alle möglichen Programmier-Varianten gedacht worden, von den Vorgängertypen her war nur eine Beschaltung mit einer Konstanten vorgesehen. Außerdem ist wegen der begrenzten Pufferzeit beim Ausschalten die Anzahl der speicherbaren Werte begrenzt, deshalb die Beschränkung auf die Istwerte eines remanenten Funktionsbausteins.
Ich hoffe, diese Erläuterungen klären einiges und Du kannst damit Dein geplantes Projekt doch noch realisieren.
Freundliche Grüße
Bernhard