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. |

Lesen der Nutzerdaten aus dem Flash-Speicher
Der Funktionsbaustein liest einen Datensatz aus einem Datensegment im Flash-Speicher und legt diesen Datensatz ab dem am Eingang SM projektierten Anfangsmerker ab. Die Daten des Datensatzes wurden durch den Funktionsbaustein SF_FLASH_WRITE im Flash-Speicher abgelegt.




HINWEIS

Der Zugriff auf den Flash-Speicher ist nur mit den Funktionsbausteinen SF_FLASH_WRITE, SF_FLASH_DEL und SF_FLASH_READ möglich.
Es werden NB-Bausteine ab dem Baustein BNR im Segment SEG gelesen und ab der Adresse SM 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“
Mit einer FALSE/TRUE-Flanke am Eingang EN wird der einmalige Lesevorgang eines Datensatzes ausgelöst. Wenn beim Lesen der Daten kein Fehler aufgetreten ist, wird der Ausgang DONE auf TRUE und die Ausgänge ERR und ERNO auf FALSE gesetzt. Der Datensatz wird ab dem projektierten Anfangsmerker SM abgelegt.
Die Ablage des Datensatzes kann mehrere CPU-Zyklen dauern.
Tritt beim Lesen ein Fehler auf, werden DONE und ERR auf TRUE gesetzt und die Daten ab SM sind gleich 0. Die Art des Fehlers wird am Ausgang ERNO signalisiert.




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:
|
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 |
Zieladresse für den gelesenen Datensatz (Adresse der ersten Variable, ab der die Daten abgelegt sind) |
VAR_OUTPUT |
|||
DONE |
BOOL |
FALSE |
Der Lesevorgang 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 gelesen werden) 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 Sicherheits-CPU mit höherer Priorität ausgeführt wird, kann SF_FLASH_READ relativ viel Zeit beanspruchen. Am Ausgang ERNO wird angezeigt, dass der Funktionsbaustein die Verarbeitung angestoßen hat (0x0FFF = BUSY). Während dieser Phase sind ERR=FALSE und DONE=FALSE. |
Byte: |
1 | 2 |
3 | 4 |
5 | 6 |
… |
29 | 30 |
31 | 32 |
33 … 36 |
37 |
38 |
|
---|---|---|---|---|---|---|---|---|---|---|
Byteoffset |
Baustein-Nr. |
Wort 1 |
Wort 2 |
Wort 3 |
… |
Wort 15 |
Wort 16 |
CRC |
Beschrieben-Kennung |
Ausrichtung |
0 |
0 |
|||||||||
38 |
1 |
|||||||||
76 |
2 |
|||||||||
… |
… |
|||||||||
65436 |
1722 |
|||||||||
65474 |
1723 |
Aufruf in ST
READ_FLASH(EN := EN_FLASH_READ, NB := NB_FLASH_READ, SEG := SEG_FLASH_READ, BNR := BNR_FLASH_READ, SM := SM_FLASH_READ, DONE => DONE_FLASH_READ, ERR => ERR_FLASH_READ, ERNO => ERNO_FLASH_READ);