Persistente Daten

Hinweis

Applikationsbeispiel

In dem folgenden Beispiel kann das Verändern der Verbraucher, der Spannungsversorgung oder nur das Altern der Bauteile dazu führen, dass die Applikation nicht mehr die gewünschte Funktion erfüllt. Beckhoff übernimmt keine Verantwortung für die Umsetzung des Beispiels in einer Applikation.

Normalerweise werden persistente Daten nur beim TwinCAT-Stopp oder durch einen Baustein gespeichert. In diesem Kapitel wird gezeigt, wie Sie persistente Daten ohne USV auf einem CX7080 speichern können.

Bei einem Embedded-PC mit USV ist der Baustein in der Regel mit der USV verknüpft. Der Baustein wird aktiv, sobald ein Spannungsausfall erkannt wird, schreibt die persistenten Daten und fährt dann den Embedded-PC herunter. Bei einer 1-Sekunden-USV entfällt das Herunterfahren des Embedded-PCs, da dafür zu wenig Zeit bleibt.

Bei einer Kleinsteuerung wie dem CX7080, der ohne 1-Sekunden-USV ausgeliefert wird, kann man diese Funktionalität trotzdem nutzen. Es muss lediglich ein Netzteil verwenden werden, welches genug Restenergie hat, um den CX7080 eine gewisse Zeit mit dieser Restenergie mit Spannung zu versorgen. Ein kleiner Test kann ihnen zeigen, ob das mit ihrem Netzteil möglich ist:

Netzteil testen

Wenn der CX7080 läuft, schalten Sie die AC-Spannung ihres Netzteils ab und messen Sie, wie lange der CX7080 noch weiterläuft. Wenn es mehr als drei Sekunden sind, können Sie das Netzteil unter Umständen als Ersatz für eine 1-Sekunden-USV verwenden. Beachten Sie, dass auch Netzteile altern und Kapazität verlieren. Sie sollten daher einen Sicherheitsfaktor einrechnen, beispielsweise einen Faktor von drei, sodass sie genug Reserve haben, um über eine längere Zeit das Netzteil als Ersatz für eine 1-Sekunden-USV betreiben zu können.

Bestimmen Sie nun, wie lange das Netzteil die Spannungsversorgung aufrechterhält. Dafür brauchen Sie eine EL1722, die Sie an die AC-Seite des Netzteils anschließen. Dann schreiben Sie ein kleines Programm:

VAR
    bPower230V AT %I* : BOOL; (*link to the EL1722*)
END_VAR

VAR RETAIN
    Counter : INT;
END_VAR

Program:
IF NOT bPower230V THEN (*bPower230V is linked to the EL1722*)
    Counter:=counter+1; (*the counter is a retain value*)
END_IF

Erzeugen Sie ein Bootprojekt und schalten Sie die AC-Spannung des Netzteils ab. Sobald die EL1722 keinen Wert mehr anzeigt, wird der Counter hochgezählt und die Daten in das interne NOVRAM kopiert. Schalten Sie die AC-Spannung wieder ein und loggen Sie sich ein. Den Wert, den der Counter hat, müssen Sie nun mit der Taskzeit multiplizieren. Wiederholen Sie das ein paar Mal, damit Sie sicher sind, dass sich das Netzteil immer gleich verhält. Als Nächstes müssen Sie den Baustein FB_WritePersistentData einfügen. Dieser ist in der Tc2_Utilities Library enthalten (unter dem Ordner „TwinCAT PLC“).

Bestimmen Sie anschließend, wie lange das Speichern der persistenten Daten dauert. Wiederholen Sie auch diesen Vorgang ein paar Mal, damit Sie einen konstanten Wert erhalten und bei Schwankungen einen Maximalwert bestimmen können. Die benötigte Zeit können Sie über das Busy-Flag bestimmen. Der Baustein wird bearbeitet, solange das Busy-Flag gesetzt ist. Den ermittelten Wert multiplizieren Sie noch mit zwei, um einen weiteren Sicherheitsfaktor einzubauen.

Beispiel:

Sie messen, dass das Netzteil drei Sekunden die Spannungsversorgung aufrechterhält und die persistenten Daten in ca. 400 ms geschrieben werden. Mit den empfohlenen Sicherheitsfaktoren hält das Netzteil eine Sekunde und die persistenten Daten werden in ca. 800 ms geschrieben.

Die Spannungsversorgung wird also für einen längeren Zeitraum aufrechterhalten, als für das Speichern der persistenten Daten benötigt wird. Damit können Sie das Beispiel-Netzteil als Ersatz für die 1-Skunden-USV nutzen.