RDREC: Datensatz lesen (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
RDREC: Datensatz lesen

Beschreibung

Mit der Anweisung lesen Sie den Datensatz mit der Nummer INDEX von der mittels ID adressierten Komponente. Es kann sich dabei um eine zentral steckende Baugruppe oder eine dezentrale Komponente (PROFIBUS DP oder PROFINET IO) handeln.

Mit MLEN geben Sie vor, wie viele Bytes Sie maximal lesen möchten. Den Zielbereich RECORD sollten Sie daher mindestens MLEN Bytes lang wählen.

Der Wert TRUE des Ausgangsparameters VALID zeigt an, dass der Datensatz erfolgreich in den Zielbereich RECORD übertragen wurde. In diesem Fall enthält der Ausgangsparameter LEN die Länge der gelesenen Daten in Bytes.

Falls bei der Datensatzübertragung ein Fehler auftrat, wird dies über den Ausgangsparameter ERROR angezeigt. Der Ausgangsparameter STATUS enthält in diesem Fall die Fehlerinformation.

Hinweis

Wenn ein DPV1-Slave über GSD-Datei projektiert ist (GSD ab Rev. 3) und die DP-Schnittstelle des DP-Masters auf "S7-kompatibel" eingestellt ist, dürfen im Anwenderprogramm keine Datensätze mit "RDREC" von den E/A-Baugruppen gelesen werden. Der DP-Master adressiert in diesem Fall den falschen Steckplatz (projektierter Steckplatz + 3).

Abhilfe: Schnittstelle des DP-Masters auf "DPV1" umstellen.

Hinweis

Die Schnittstelle der Anweisung "RDREC" ist identisch mit der des in der Norm "PROFIBUS and PROFINET Guideline Communication Function Blocks on PROFIBUS DP and PROFINET IO" definierten FB "RDREC".

Arbeitsweise

"RDREC" ist eine asynchron arbeitende Anweisung, d. h. die Bearbeitung erstreckt sich über mehrere Aufrufe. Sie starten die Datensatzübertragung, indem Sie RDREC mit REQ = 1 aufrufen.

Über den Ausgangsparameter BUSY und die mittleren zwei Bytes des Ausgangsparameters STATUS wird der Zustand des Auftrags angezeigt. Dabei entsprechen die mittleren zwei Bytes von STATUS dem Ausgangsparameter RET_VAL der asynchron arbeitenden Anweisungen.

Siehe auch: Unterschied zwischen synchron und asynchron arbeitenden Anweisungen.

Die Datensatzübertragung ist abgeschlossen, wenn der Ausgangsparameter BUSY den Wert FALSE angenommen hat.

Solange die Datensatzübertragung läuft, darf der Zielbereich nicht verändert werden, und zwar weder dessen Länge noch dessen Inhalt.

Parameter

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

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

REQ

Input

BOOL

E, A, M, D, L

REQ = 1: Datensatzübertragung durchführen

ID

Input

DWORD

E, A, M, D, L oder Konstante

logische Adresse der DP-Slave/PROFINET IO-Komponente (Baugruppe bzw. Modul)

  • Bei einer Ausgabebaugruppe muss Bit 15 gesetzt werden (Bsp. für Adresse 5: ID:=DW#16#8005).

  • Bei einer Mischbaugruppe ist die kleinere der beiden Adressen anzugeben.

INDEX

Input

INT

E, A, M, D, L oder Konstante

Datensatznummer

MLEN

Input

INT

E, A, M, D, L oder Konstante

maximale Länge der zu lesenden Datensatzinformation in Bytes

VALID

Output

BOOL

E, A, M, D, L

Neuer Datensatz wurde empfangen und ist gültig

BUSY

Output

BOOL

E, A, M, D, L

BUSY = 1: Der Lesevorgang ist noch nicht beendet.

ERROR

Output

BOOL

E, A, M, D, L

ERROR = 1: Beim Lesevorgang trat ein Fehler auf.

STATUS

Output

DWORD

E, A, M, D, L

Bausteinstatus bzw. Fehlerinformation

Zur Interpretation des Parameters STATUS siehe Parameter STATUS.

LEN

Output

INT

E, A, M, D, L

Länge der gelesenen Datensatzinformation

RECORD

InOut

ANY

E, A, M, D, L

Zielbereich für den gelesenen Datensatz

Hinweis: Beachten Sie, dass der Parameter RECORD bei S7-300-CPUs immer die vollständige Angabe der DB-Parameter erfordert (Bsp.: P#DB13.DBX0.0 Byte 100). Das Weglassen einer expliziten DB-Nr. ist für S7-300-CPUs unzulässig und führt zu einer Fehlermeldung im Anwenderprogramm.

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

Hinweis

Falls Sie die Anweisung für das Lesen eines Datensatzes bei PROFINET IO einsetzen, werden negative Werte in den Parametern INDEX, MLEN und LEN als 16-Bit vorzeichenlose ganze Zahl interpretiert.