DPNRM_DG: Diagnosedaten eines DP-Slaves 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
DPNRM_DG: Diagnosedaten eines DP-Slaves lesen

Beschreibung

Mit der Anweisung "DPNRM_DG" lesen Sie die aktuellen Diagnosedaten eines DP-Slaves in der Form, wie sie durch EN 50 170 Volume 2, PROFIBUS festgelegt sind. Die gelesenen Daten werden nach fehlerfreier Datenübertragung in den durch RECORD aufgespannten Zielbereich eingetragen.

Den prinzipiellen Aufbau der Slave-Diagnose entnehmen Sie folgender Tabelle, weitergehende Informationen den Handbüchern zu den DP-Slaves.

Byte

Bedeutung

0

Stationsstatus 1

1

Stationsstatus 2

2

Stationsstatus 3

3

Master-Stationsnummer

4

Herstellerkennung (high byte)

5

Herstellerkennung (low byte)

6 ...

Weitere slavespezifische Diagnose

Arbeitsweise

Der Lesevorgang wird asynchron ausgeführt, d. h. er kann sich über mehrere Aufrufe erstrecken. Über die Ausgangsparameter RET_VAL und BUSY wird der Zustand des Auftrags angezeigt.

Siehe auch: Unterschied zwischen synchron und asynchron arbeitenden Anweisungen.

Aufruf

Sie starten den Lesevorgang, indem Sie beim Aufruf der Anweisung den Eingangsparameter REQ mit "1" belegen.

Parameter

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

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

REQ

Input

BOOL

E, A, M, D, L

REQ = 1: Anforderung zum Lesen

LADDR

Input

WORD

E, A, M, D, L oder Konstante

Projektierte Diagnoseadresse des DP-Slaves

Hinweis: Adresse muss hexadezimal angegeben werden. Z. B. Diagnoseadresse 1022 bedeutet: LADDR:=W#16#3FE.

RET_VAL

Return

INT

E, A, M, D, L

Tritt während der Bearbeitung der Anweisung ein Fehler auf, enthält der Rückgabewert einen Fehlercode. Falls kein Fehler auftrat, steht in RET_VAL die Länge der tatsächlich übertragenen Daten.

RECORD

Output

ANY

E, A, M, D, L

Zielbereich für die gelesenen Diagnosedaten. Es ist nur der Datentyp BYTE zulässig. Die Mindestlänge des zu lesenden Datensatzes bzw. des Zielbereichs beträgt 6. Die Maximallänge des zu lesenden Datensatzes beträgt 240; bei Normslaves, bei denen die Anzahl der Normdiagnosedaten größer als 240 Bytes ist und maximal 244 Bytes beträgt, werden die ersten 240 Bytes in den Zielbereich übertragen und das entsprechende Overflow-Bit in den Daten gesetzt.

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.

BUSY

Output

BOOL

E, A, M, D, L

BUSY=1:

Der Lesevorgang ist noch nicht beendet.

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

Informationen zur Datentypkonvertierung in den einzelnen Programmiersprachen finden Sie unter "Übersicht über die Datentypkonvertierung".

Parameter RECORD

Die CPU bewertet die tatsächliche Länge der gelesenen Diagnosedaten:

Falls die Längenangabe von RECORD

  • kleiner als die Anzahl der gelieferten Daten ist, werden die Daten verworfen, und in RET_VAL wird die zugehörige Fehlerinformation eingetragen.

  • größer oder gleich der Anzahl der gelieferten Daten ist, werden die Daten in den Zielbereich übernommen, und in RET_VAL wird die tatsächliche Länge als positiver Wert eingetragen.

    Hinweis

    Sie müssen darauf achten, dass die Aktualparameter von RECORD bei allen Aufrufen, die zu einem Auftrag gehören, übereinstimmen.

    Ein Auftrag ist eindeutig festgelegt durch den Eingangsparameter LADDR.

Parameter RET_VAL

  • Trat während der Bearbeitung der Funktion ein Fehler auf, enthält der Rückgabewert einen Fehlercode,

  • Falls bei der Übertragung kein Fehler auftrat, enthält RET_VAL die Länge der gelesenen Daten in Bytes als positive Zahl.

    Hinweis

    Die Anzahl der gelesenen Daten ist bei einem DP-Slave von seinem Diagnosezustand abhängig.

Zur Auswertung der Fehlerinformationen des Parameters RET_VAL siehe Fehlerauswertung mit dem Ausgangsparameter RET_VAL. Dort finden Sie auch die allgemeinen Fehlerinformationen der Anweisungen. Die spezifischen Fehlerinformationen von "DPNRM_DG" sind eine Teilmenge der Fehlerinformationen von "RD_REC".

Normslaves mit mehr als 240 Bytes Diagnosedaten

Bei Normslaves, bei denen die Anzahl der Normdiagnosedaten zwischen 241 und 244 Bytes liegt, müssen Sie folgendes beachten:

Falls die Längenangabe von RECORD

  • kleiner als 240 Bytes ist, werden die Daten verworfen, und in RET_VAL wird die zugehörige Fehlerinformation eingetragen.

  • größer oder gleich 240 Bytes ist, werden die ersten 240 Bytes der Normdiagnosedaten in den Zielbereich übertragen und das entsprechende Overflow-Bit in den Daten gesetzt.

Systemressourcen bei S7-400

Beim Aufruf von "DPNRM_DG" zu einem derzeit nicht bearbeiteten Auftrag werden bei S7-400 Ressourcen der CPU (Speicherplatz) belegt. Sie können "DPNRM_DG" für mehrere DP-Slaves kurz nacheinander aufrufen, wenn Sie die für Ihre CPU maximale Anzahl "gleichzeitig" aktiver "DPNRM_DG"-Aufträge nicht überschreiten.

Bei mehreren "gleichzeitig" aktiven Aufträgen wird gewährleistet, dass alle Aufträge durchgeführt werden und keine gegenseitige Beeinflussung stattfindet.

Wenn Sie die Begrenzung der Systemressourcen erreichen, so erhalten Sie dies in RET_VAL mitgeteilt. In diesem Fall wiederholen Sie den Auftrag.