PUT: Daten in eine remote CPU schreiben (S7-300, S7-400) - STEP 7

S7-Kommunikation (S7-300, S7-400)

ft:publication_title
S7-Kommunikation (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
de-DE
PUT: Daten in eine remote CPU schreiben

Beschreibung

Mit Hilfe der Anweisung können Sie Daten in eine remote CPU schreiben, falls die Verbindung nicht über einen CP erfolgt.

  • S7-300: Der Sendevorgang erfolgt nach einer positiven Flanke an REQ. Mit jeder positiven Flanke an REQ werden die Parameter ID, ADDR_1 und SD_1 übernommen. Nach Abschluss eines Auftrags können Sie den Parametern ID, ADDR_1 und SD_1 neue Werte zuweisen.

  • S7-400: Bei einer positiven Flanke am Steuereingang REQ wird die Anweisung gestartet. Dabei werden die Zeiger auf die zu schreibenden Bereiche (ADDR_i) und die Daten (SD_i) an die Partner-CPU gesendet.

Der remote Partner legt die gesendeten Daten unter den mitgeführten Adressen ab und sendet eine Ausführungsquittung zurück. Sie müssen darauf achten, dass die über die Parameter ADDR_i und SD_i definierten Bereiche in der Anzahl, in der Länge und im Datentyp zueinander passen.

Falls keine Fehler auftraten, wird dies beim nächsten Aufruf am Zustandsparameter DONE mit "1" angezeigt. Eine erneute Aktivierung eines Schreibvorgangs ist erst nach dem Abschluss des letzten möglich.

Die remote CPU kann sich im Betriebszustand RUN oder STOP befinden. Wenn beim Schreiben der Daten Zugriffsprobleme auftraten, oder die Prüfung der Ausführungsquittung einen Fehler ergab, werden Fehler und Warnungen über ERROR und STATUS ausgegeben.

Parameter

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

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

REQ

Input

BOOL

E, A, M, D, L

Steuerparameter request, aktiviert den Datenaustausch bei steigender Flanke.

ID

Input

WORD

M, D oder Konstante

Adressierungsparameter ID

Siehe auch: Gemeinsame Parameter der Anweisungen zur S7-Kommunikation

DONE

Output

BOOL

E, A, M, D, L

Zustandsparameter DONE:

  • 0: Auftrag wurde noch nicht gestartet oder wird noch ausgeführt

  • 1: Auftrag wurde fehlerfrei ausgeführt.

ERROR

STATUS

Output

Output

BOOL

WORD

E, A, M, D, L

E, A, M, D, L

Zustandsparameter ERROR und STATUS, Fehleranzeige:

  • ERROR=0

    STATUS hat den Wert:

    0000H: weder Warnung noch Fehler

    <> 0000H: Warnung, STATUS liefert detaillierte Auskunft.

  • ERROR=1

    Es liegt ein Fehler vor. STATUS liefert detaillierte Auskunft über die Art des Fehlers.

S7-300: ADDR_1

S7-400: ADDR_i
(1≤ i ≤4)

InOut

ANY

S7-300: M, D


S7-400:
E, A, M, D, T, Z

Zeiger auf diejenigen Bereiche in der Partner-CPU, in die geschrieben werden soll.

Hinweis: Wenn der ANY-Pointer auf einen DB zugreift, ist der DB immer zu spezifizieren (z. B.: P#DB10.DBX5.0 Byte 10).

Bei der Übertragung von Datenstrukturen (z.B. Struct, Array) muss an dem Parameter ADDR der Datentyp CHAR, BYTE, WORD oder DWORD verwendet werden.

S7-300: SD_1

S7-400: SD_i
(1≤ i ≤4)

InOut

ANY

S7-300: M, D

S7-400:
E, A, M, D, T, Z

Zeiger auf diejenigen Bereiche in der eigenen CPU, die die zu versendenden Daten enthalten.

Zulässig sind nur die Datentypen BOOL (nicht erlaubt: Bitfeld), BYTE, CHAR, WORD, INT, DWORD, DINT, REAL, COUNTER, TIMER.

Hinweis: Wenn der ANY-Pointer auf einen DB zugreift, ist der DB immer zu spezifizieren (z. B.: P#DB10.DBX5.0 Byte 10).

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

Parameter ERROR und STATUS

Die folgende Tabelle enthält alle für PUT spezifischen Fehlerinformationen, die über die Parameter ERROR und STATUS ausgegeben werden können.

ERROR

STATUS (dezimal)

Erläuterung

0

11

Warnung:

  • Neuer Auftrag ist unwirksam, da vorangegangener Auftrag noch nicht abgeschlossen ist.

  • Der Auftrag wird bereits in einer Prioritätsklasse mit niedrigerer Priorität bearbeitet.

0

25

Die Kommunikation wurde angestoßen. Der Auftrag ist in Bearbeitung.

1

1

Kommunikationsprobleme, z. B.

  • Verbindungsbeschreibung nicht geladen (lokal oder remote)

  • Verbindung unterbrochen (z. B. Kabel, CPU ausgeschaltet, CP in STOP)

  • Verbindung zum Partner noch nicht aufgebaut

  • zusätzlich S7-300:

    • Maximale Anzahl paralleler Aufträge/Instanzen ist überschritten.

1

2

Negative Quittung vom Partnergerät. Die Funktion ist nicht ausführbar.

1

4

Fehler in den Sendebereichszeigern SD_i bezüglich der Datenlänge oder des Datentyps

1

8

Zugriffsfehler bei der Partner-CPU

1

10

Zugriff auf lokalen Anwenderspeicher nicht möglich (z. B. Zugriff auf gelöschten DB)

1

12

Beim Aufruf der Anweisung wurde

  • ein Instanz-DB, der nicht zu "PUT" gehört, angegeben

  • kein Instanz-DB, sondern ein Global-DB angegeben

  • kein Instanz-DB gefunden (Abhilfe: Laden Sie den zugehörigen Instanz-DB erneut)

1

20

  • S7-400

    Zu wenig Arbeitsspeicher vorhanden. Abhilfe: Laden Sie den zugehörigen Instanz-DB erneut.

  • S7-300

    • Maximale Anzahl paralleler Aufträge/Instanzen ist überschritten

    • Die Instanzen wurden bei CPU-RUN überladen (STOP-RUN-Übergang der CPU oder des CP ist erforderlich)

    • Ist beim Erstaufruf möglich

1

27

Nur bei S7-300: Für diese Anweisung existiert in der CPU kein Funktionscode.

Datenkonsistenz bei S7-300:

Um Datenkonsistenz zu gewährleisten, dürfen Sie den Sendebereich SD_1 erst dann wieder beschreiben, wenn der aktuelle Sendevorgang abgeschlossen ist. Dies ist der Fall, wenn der Zustandsparameter DONE den Wert "1" annimmt.

Datenkonsistenz bei S7-400 und S7-300 über eine integrierte Schnittstelle:

Mit dem Aktivieren eines Sendevorgangs (steigende Flanke an REQ) sind die zu sendenden Daten der Sendebereiche SD_i aus dem Anwenderprogramm kopiert. Sie können diese Bereiche nach dem Aufruf der Anweisung neu beschreiben, ohne die aktuellen Sendedaten zu verfälschen.

Hinweis

Der gesamte Sendevorgang ist erst dann abgeschlossen, wenn der Zustandsparameter DONE den Wert "1" annimmt.