Hallo zusammen,
hier ein paar weiterführende Details:
1.Was sind die Unterschiede zwischen persistenten und retain Variablen?
1.1 Retain:
- Retain Variablen werden durch das Schlüsselwort RETAIN gekennzeichnet.
- Retain Variablen liegen in einem speziellen Speichersegment
- Beim Shutdown von TwinCAT wird der Inhalt des Speichersegments binäre 1:1 auf die
Festplatte geschrieben (TwinCAT\Boot\TCPLC_R_x.wbp, x=1..4 Nummer LZS)
Vorteil
- Laden und Speichern geht sehr schnell.
Nachteile
- Wenn Bootprojekt und Retain-Datei nicht 100% zusammenpassen, dann kann das
TwinCAT System nicht starten!
Hinweis:
!! Wegen der Nachteile wird die Verwendung nicht empfohlen!!
1.2 Persistent:
-Persistente Variablen werden durch das Schlüsselwort PERSISTENT gekennzeichnet.
- Persistente Variablen liegen an ganz unterschiedlichen Stellen im Speicher.
- Beim Shutdown von TwinCAT werden die markierten Variablen gesammelt und in eine
strukturierte binäre Datei geschrieben (TwinCAT\Boot\TCPLC_T_x.wbp, x=1..4). Name
und Pfad, Größe und Wert der Variablen werden gespeichert .
Vorteil
- Beim Aufstarten werden alle Variablen geprüft. Wenn die Variablen entsprechende
Pendants im Projekt haben werden die Werte geladen. Wenn nicht, dann nicht.
Nachteile
- Laden und Speichern dauert etwas länger.
- Die persistent Variablendatei ist etwas größer.
Hinweis:
-Soll eine Variable einer Instanz eines FB oder einer Struktur gespeichert werden,
so wird die gesamte Struktur gespeichert.
- Bei XP/Win7 embedded : Der Ordner für die remanenten Daten darf nicht
von einem EWF oder FBWF geschützt sein!
2. Persistente Variablen können aus der Applikation geschrieben werden.
- Baustein FB_WritePersistentData
Hinweis:
- Es werden nicht automatisch auch Backups der Dateien angelegt!
3. Speicherung der Dateien: TwinCAT\Boot
- Retain: TCPLC_R_n.wbp (
Backup mit ~)
- Persistent: TCPLC_T_n.wbp (Backup mit ~)
Aufstart-Sequenz:
- System Service startet PLC Server
- PLC startet mit Initialwerten
- PLC lädt persistente Variablen
- Wenn eine persistente Variable zu einer Variablen des Bootprojektes passt, dann
wird der Wert der Variablen geladen. Initialwert wird überschrieben.
- Wenn eine persistente Variable nicht zu einer Variablen aus dem Bootprojekt passt,
passiert gar nichts.
- Wenn das Laden beendet ist, werden die Daten als Backup kopiert.
Das erfolgreiche Laden der remanten Daten kann aus der Applikation geprüft werden.
Dazu gibt es in der System Info Struktur die Variable bootdata:
Bit Nummer Beschreibung
0 RETAIN variables: LOADED (without error)
1 RETAIN variables: INVALID (the back-up copy was loaded, since no valid
data was present)
2 RETAIN variables: REQUESTED (RETAIN variables should be loaded, a
setting in TwinCAT System Control)
3 reserved
4 PERSISTENT variables: LOADED (without error)
5 PERSISTENT variables: INVALID (the back-up copy was loaded, since
no valid data was present)
6 reserved
7 reserved
Was ist zu tun bzw. Was macht TwinCAT automatisch, wenn die remanenten Variablen
nicht geladen werden können?
- Default-Reaktion: Die Backup-Dateien werden geladen!
- Sollte das nicht die richtige Reaktion für die Applikation sein, dann kann in der Registry
umgestellt werden:
[HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT\Plc]
"ClearInvalidRetainData"=dword:00000000
"ClearInvalidPersistentData"=dword:00000000
Hinweis:
- Der Wert von "ClearInvalidRetainData" oder von "ClearInvalidPersistentData" muss
dann auf 1 gesetzt werden. Die Standardeinstellung ist 0 für XP und 1 für CE.
- Sollte die Einstellung bei einem CE System im System Manager oder in der
Registry geändert werden ? Shutdown notwendig (ansonsten werden die Daten
nicht gespeichert)
4. NOVRAM
Variablen können auch im sogenannten non-volatile-RAM (Novram) gespeichert werden
Novram ist verfügbar auf verschiedenen CPUs:
- Standard PC: mit optionalem Novram auf einer Feldbuskarte (z.B. FC31xx), oder
einer optionalen Mini-PCI-Karte mit Novram
- CX10xx: 8kB
- CX90xx: 128kB
- EL6080: 128kB
Novram als Standard-I/O:
- Bedeutet: in jedem Zyklus werden die verknüpften Variablen in das Novram kopiert
- Hinweis: Beim Stopp der Task (BP oder Stop der SPS) werden die Variablen auf
Null gesetzt!
- Flag „Auto Init linked PLC Variables“ sollte im System Manager gesetzt werden.
- Novram direkt aus der Applikation genutzt:
- FB_NovRamReadWriteEx aus der TcIoFunctions.lib zum Lesen und Schreiben von
Variablen ins Novram
Hinweis:
- Beim Spannungsausfall während des Kopiervorgangs muss der Speicher in
Bereiche geteilt werden und auf Konsistenz geprüft werden.
5. Was passiert beim Spannungsausfall?
5.1 Ohne USV
- Kein TwinCAT Shutdown.
- Bedeutet: Kein Speichern von Retain und/oder Persistent Daten.
- Nach Neustart werden die Variablen entweder initialisiert oder das letzte Backup
wird geladen. Das Verhalten ist einstellbar!
5.2 Mit Standard-USV
- Im Falle einer Spannungsunterbrechung wird von der USV wird ein Signal an den
TwinCAT System Service gesendet.
- Der TwinCAT System Service leitet den Shutdown von TwinCAT ein (Stoppen aller
Tasks usw.) und speichert die remanenten Variablen..
- Wenn alle Daten geschrieben sind, leitet der TwinCAT System Service den
Betriebssystem Shutdown ein.
6. Unterschied zwischen einer Standard-USV und einer 1-s-USV?
6.1 Standard UPS
- Erstens: TwinCAT Shutdown mit Speichern der remanenten Variablen
- Zweitens: Betriebssystem Shutdown
- Konfiguration über das Betriebssystem Power Management im Control Panel
6.2 CX1190-USV (CX1100-0900..-0930)
- Erstens: TwinCAT Shutdown mit Speichern der remanenten Variablen
- Zweitens: Betriebssystem Shutdown
- Konfiguration via System Manager, aus der Applikation via FB_CxSimpleUPS
6.3 1-s-UPS CX80x0 und CX50x0
- Erstens: FB_S_UPS / FB_S_UPS_EX (BIOS-API) schreiben die persistenten
variablen (kein TwinCAT Shutdown, keine Retain Daten)
- Zweitens: FB_S_UPS / FB_S_UPS_EX leitet einen Stopp des IPC ein
- Keine Konfiguration nötig, S-UPS muss allerdings im BIOS aktiv sein
Grüße
Thomas