Dies ist die Web-Ausgabe der Originalfassung des ⮫ AC500-S Sicherheitshandbuchs, Version 1.3.2. Diese Web-Ausgabe dient lediglich zur schnellen Orientierung. Für die Einhaltung der Anforderungen in Bezug auf Anwendungen der funktionalen Sicherheit muss das Original-Sicherheitshandbuch verwendet werden. |

Schreiben von Nutzerdaten in den Flash-Speicher
Der Funktionsbaustein schreibt einen Datensatz in ein Datensegment im Flash-Speicher. Dazu stehen in der Sicherheits-CPU zwei Datensegmente zur Verfügung. Ein Löschvorgang (Funktionsbaustein SF_FLASH_DEL) löscht immer ein komplettes Datensegment. Ein Datensegment besteht aus 1724 Bausteinen (0 … 1723). Jeder Baustein besteht aus 38 Bytes. Die Anzahl der Schreibzyklen auf den Flash-Speicher ist begrenzt. Das Löschen vom Flash-Speicher ist auch ein „Schreiben“-Vorgang.
Nach einem Löschvorgang kann jeder dieser 1724 Bausteine eines Datensegments nur einmal Daten aufnehmen. Soll ein Baustein, der Daten enthält, mit neuen Daten überschrieben werden, muss das gesamte Datensegment vorher gelöscht werden. Dadurch gehen alle Daten in diesem Datensegment verloren.
Es werden NB-Bausteine ab der Adresse SM gelesen und im Segment SEG ab Baustein BNR abgelegt.
Pro Baustein werden 32 Binär-Daten oder 16 Wort-Daten oder 8 Doppelwort-Daten gelesen.
Ein Baustein enthält 38 Bytes:
-
32 Bytes Daten
-
4 Bytes für CRC-Prüfsumme
-
1 Byte als „beschrieben“-Kennung
-
1 Byte für Ausrichtung
⮫ Tab. 1094 „Struktur eines Segments mit Nutzerdaten im Flash-Speicher“
Wird der Schreibvorgang eines Datensatzes gestartet (FALSE/TRUE-Flanke am Eingang EN), dann dürfen die Daten des Datensatzes bis zur Beendigung des Schreibvorgangs (DONE = TRUE) nicht mehr verändert werden. Die Ablage des Datensatzes im Flash-Speicher kann mehrere Zyklen der Sicherheits-CPU dauern.
Mit einer FALSE/TRUE-Flanke am Eingang EN wird der einmalige Schreibvorgang des Datensatzes ausgelöst. Bis zur Beendigung der Ablage (DONE = TRUE) wird der Eingang EN nicht mehr ausgewertet.
Nach Beendigung des Schreibvorgangs werden die Funktionsbaustein-Ausgänge DONE, ERR und ERNO aktualisiert. Bei DONE = TRUE und ERR = FALSE war die Sicherung erfolgreich. Sind DONE = TRUE und ERR = TRUE, ist ein Fehler aufgetreten. Die Art des Fehlers wird am Ausgang ERNO signalisiert.
Eine erneute FALSE/TRUE-Flanke am Eingang EN startet einen neuen Schreibvorgang. Da ohne vorheriges Löschen des Datensegments keine neuen Daten in Bausteine, die bereits Daten enthalten, geschrieben werden können, muss beim nächsten Schreibvorgang der Eingang BNR auf den nächsten freien Baustein zeigen.




HINWEIS

Dieser Funktionsbaustein wird durch eine positive Flanke der Eingangsvariable EN aktiviert. Während des Zyklus, in dem der Funktionsbaustein feststellt, dass die Operation abgeschlossen ist (Ausgang DONE = TRUE), setzt er die Ausgangsvariablen nur für einen Zyklus. Wenn der Funktionsbaustein erneut aufgerufen wird, setzt er die Ausgangsvariablen sofort zurück.
Name |
Datentyp |
Initialwert |
Beschreibung, Parameterwerte |
---|---|---|---|
VAR_INPUT |
|||
EN |
BOOL |
FALSE |
Aktivierung des Funktionsbausteins mit positiver Flanke Es gilt:
|
NB |
WORD |
16#0000 |
Anzahl der Datensatz-Bausteine (Dezimal 1 … 1724) Am Eingang NB wird die Anzahl der Bausteine des Datensatzes angegeben. Pro Baustein werden 32 Byte-Daten oder 16 Wort-Daten oder 8 Doppelwort-Daten gelesen. Gültige Werte: 1 … 1724 Beispiel: – SM = ADR(%MW0.0) und NB = 1: Ablage der Daten von %MW0.0 bis %MW0.15 (1 Baustein = 16 Wort-Daten) – SM = ADR(%MW0.0) und NB = 2: Ablage der Daten von %MW0.0 bis %MW0.31 (2 Bausteine = 32 Wort-Daten) |
SEG |
BYTE |
16#00 |
ID-Nummer des Datensegments (16#01 oder 16#02) |
BNR |
WORD |
16#0000 |
Nummer des Startbausteins im Datensegment im Flash-Speicher (Dezimal 0 … 1723) |
SM |
DWORD |
16#00000000 |
Startadresse (Adresse der ersten Variable, ab der die Daten in den Flash-Speicher geschrieben werden) Am Eingang SM wird mittels ADR-Operator die Adresse der ersten Variable des Datensatzes angegeben. Wird der Schreibvorgang eines Datensatzes gestartet (FALSE/TRUE-Flanke am Eingang EN), dann dürfen die Daten des Datensatzes bis zur Beendigung des Schreibvorgangs (DONE = TRUE) nicht mehr verändert werden. |
VAR_OUTPUT |
|||
DONE |
BOOL |
FALSE |
Der Schreibvorgang ist abgeschlossen (DONE = TRUE) Der Ausgang muss immer im Zusammenhang mit dem Ausgang ERR betrachtet werden. Es gilt:
|
ERR |
BOOL |
FALSE |
Fehler aufgetreten (Datensegment konnte nicht geschrieben werden) Am Ausgang ERR wird angezeigt, ob beim Schreibvorgang ein Fehler aufgetreten ist. Dieser Ausgang muss immer zusammen mit dem Ausgang DONE ausgewertet werden. Ist ein Fehler aufgetreten, so gilt: DONE = TRUE und ERR = TRUE. Der Ausgang ERNO signalisiert die Fehlernummer. |
ERNO |
WORD |
16#0000 |
Fehlernummer⮫ [3] Am Ausgang ERNO wird eine Fehlernummer ausgegeben. Dieser Ausgang muss immer im Zusammenhang mit den Ausgängen DONE und ERR betrachtet werden. Da das Anwenderprogramm der Sicherheitssteuerung mit höherer Priorität ausgeführt wird, kann der Vorgang SF_FLASH_WRITE relativ viel Zeit beanspruchen. Am Ausgang ERNO wird dann angezeigt, dass der Funktionsbaustein die Verarbeitung angestoßen hat (0x0FFF = BUSY). Während dieser Phase sind ERR=FALSE und DONE=FALSE. |
Aufruf in ST
WRITE_FLASH(EN := EN_FLASH_WRITE, NB := NB_FLASH_WRITE, SEG := SEG_FLASH_WRITE, BNR := BNR_FLASH_WRITE, SM := SM_FLASH_WRITE, DONE => DONE_FLASH_WRITE, ERR => ERR_FLASH_WRITE, ERNO => ERNO_FLASH_WRITE);