CREA_DBL: Datenbaustein im Ladespeicher erzeugen (S7-300, S7-400) - STEP 7

Erweiterte Anweisungen (S7-300, S7-400)

ft:publication_title
Erweiterte Anweisungen (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
de-DE
CREA_DBL: Datenbaustein im Ladespeicher erzeugen

Beschreibung

Mit der Anweisung erzeugen Sie im Ladespeicher (Micro Memory Card) einen neuen Datenbaustein. Die Anweisung erzeugt einen Datenbaustein mit einer Nummer aus einem angegebenen Bereich sowie mit vorgegebener Größe. Aus dem angegebenen Bereich vergibt die Anweisung die kleinste mögliche Nummer an den DB. Einen DB mit einer bestimmten Nummer erzeugen Sie, in dem Sie der Ober- und Untergrenze des anzugebenden Bereichs die gleiche Nummer geben. Die Nummer der im Anwenderprogramm bereits enthaltenen DBs können Sie nicht mehr vergeben. Ist bereits ein DB mit gleicher Nummer im Arbeitsspeicher und/oder im Ladespeicher vorhanden oder liegt der DB als kopierte Variante vor, wird die Anweisung beendet und eine Fehlerinformation erzeugt.

Hinweis

Ob bereits ein DB mit gleicher Nummer existiert, können Sie mit der Anweisung "TEST_DB" ermitteln.

Der DB wird mit dem Inhalt des Datenbereichs beschrieben, auf den der Parameter SRCBLK (source block) zeigt. Dieser Datenbereich muss ein DB oder ein Bereich aus einem DB sein. Um Datenkonsistenz zu gewährleisten, dürfen Sie diesen Datenbereich während der Bearbeitung von "CREA_DBL" (d. h. solange der Parameter BUSY den Wert TRUE hat) nicht verändern.

Ein DB mit den Attribut READ_ONLY kann nur per "CREA_DBL" erzeugt und initialisiert werden.

"CREA_DBL" verändert nicht die Prüfsumme des Anwenderprogramms.

Arbeitsweise

Die Anweisung "CREA_DBL" ist eine asynchron arbeitende Anweisung, d. h. die Bearbeitung erstreckt sich über mehrere Aufrufe. Sie starten den Auftrag, indem Sie "CREA_DBL" mit REQ = 1 aufrufen.

Über die Ausgangsparameter RET_VAL und BUSY wird der Zustand des Auftrags angezeigt.

Siehe auch: Unterschied zwischen synchron und asynchron arbeitenden Anweisungen 

Parameter

Die folgende Tabelle zeigt die Parameter der Anweisung "CREA_DBL":

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

REQ

Input

BOOL

E, A, M, D, L

REQ = 1: Anforderung zum Erzeugen des DB

LOW_LIMIT

Input

WORD

E, A, M, D, L

Untergrenze des Bereichs, aus dem "CREA_DBL" Ihrem DB eine Nummer vergibt

UP_LIMIT

Input

WORD

E, A, M, D, L

Obergrenze des Bereichs, aus dem "CREA_DBL" Ihrem DB eine Nummer vergibt

COUNT

Input

WORD

E, A, M, D, L

Der Zählwert gibt die Anzahl der Datenbytes an, die Sie für Ihren DB reservieren wollen. Sie müssen hier eine gerade Anzahl von Bytes angeben.

ATTRIB

Input

BYTE

E, A, M, D, L

DB-Eigenschaften:

Bit 0 = 1:

UNLINKED:
Der DB ist nur im Ladespeicher.

Bit 1 = 1:

READ_ONLY:
Der DB ist schreibgeschützt.

Bit 2 = 1:

NON_RETAIN:
Der DB ist nicht remanent.

Bit 3 bis 7:

reserviert

SRCBLK

Input

ANY

D

Zeiger auf den Datenbaustein, mit dessen Werten der zu erzeugende Datenbaustein ini­tialisiert wird

RET_VAL

Return

INT

E, A, M, D, L

Fehlerinformation

BUSY

Output

BOOL

E, A, M, D, L

BUSY = 1: Der Vorgang ist noch nicht beendet.

DB_NUM

Output

WORD

E, A, M, D, L

Nummer des erzeugten DB

Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".

Parameter RET_VAL

Fehlercode

(W#16#...)

Beschreibung

0000

kein Fehler

0081

Der Zielbereich ist größer als der Quellbereich.

Der Quellbereich wird komplett in den Zielbereich geschrieben, die restlichen Bytes des Zielbereichs werden mit 0 aufgefüllt.

7000

Erstaufruf mit REQ=0: keine Datenübertragung aktiv; BUSY hat den Wert "0".

7001

Erstaufruf mit REQ=1: Datenübertragung angestoßen; BUSY hat den Wert "1".

7002

Zwischenaufruf (REQ irrelevant): Datenübertragung bereits aktiv; BUSY hat den Wert "1"

8081

Der Quellbereich ist größer als der Zielbereich.

Der Zielbereich wird komplett beschrieben, die restlichen Bytes des Quellbereichs werden ignoriert.

8091

Sie haben "CREA_DBL" geschachtelt aufgerufen.

8092

Die Funktion "Erzeugen eines DB" ist momentan nicht durchführbar, weil

  • die Funktion "Komprimieren des Anwenderspeichers" gerade aktiv ist

  • die maximale Anzahl an Bausteinen auf Ihrer CPU bereits erreicht ist

8093

Beim Parameter SRCBLK ist kein Datenbaustein angegeben oder ein Datenbaustein, der nicht im Arbeitsspeicher steht.

8094

Beim Parameter ATTRIB wurde ein noch nicht unterstütztes Attribut angegeben.

80A1

Fehler bei der DB-Nummer:

  • die Nummer ist 0 oder liegt nicht im gültigen Bereich der CPU (CPU15xx: 60001 ... 60999)

  • die Nummer überschreitet die CPU-spezifische DB-Anzahl

  • Untergrenze > Obergrenze

80A2

Fehler bei der DB-Länge:

  • die Länge ist "0"

  • die Länge ist eine ungerade Zahl

  • die Länge ist größer, als die CPU zulässt

80B1

es ist keine DB-Nummer frei

80B2

zu wenig Arbeitsspeicher

80BB

nicht genügend Ladespeicher

80C0

Das Ziel wird gerade durch eine andere Anweisung oder eine Kommunikationsfunktion bearbeitet.

80C3

Die maximale Anzahl gleichzeitig aktiver "CREA_DBL"-Anweisungen ist momentan bereits erreicht.

8xyy

allgemeine Fehlercodes, z. B.:

  • Quell-DB nicht oder nur als kopierte Variante vorhanden

  • Quellbereich in DB nicht vorhanden

Siehe auch: Fehlerauswertung mit dem Ausgangsparameter RET_VAL