BSEND: Daten in Segmenten senden (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
BSEND: Daten in Segmenten senden

Beschreibung

Die Anweisung "BSEND" sendet Daten an eine remote Partner-Anweisung vom Typ "BRCV". Bei diesem Datentransfer kann eine größere Datenmenge zwischen den Kommunikationspartnern transportiert werden, als dies mit allen anderen Kommunikations-Anweisungen für projektierte S7-Verbindungen möglich ist. Folgende Datenmengen können übertragen werden:

  • 32768 Byte bei S7-300 über SIMATIC-Net-CPs

  • 65534 Byte bei S7-400 und S7-300 über eine integrierte Schnittstelle

Arbeitsweise

Der zu sendende Datenbereich wird segmentiert. Jedes Segment wird einzeln an den Partner gesendet. Das letzte Segment wird vom Partner bereits bei seiner Ankunft quittiert, unabhängig vom zugehörigen Aufruf der Anweisung "BRCV".

  • S7-300: Der Sendevorgang erfolgt nach einer positiven Flanke an REQ. Mit jeder positiven Flanke an REQ werden die Parameter R_ID, ID, SD_1 und LEN übernommen. Nach Abschluss eines Auftrags können Sie den Parametern R_ID, ID, SD_1 und LEN neue Werte zuweisen. Zur Übertragung von segmentierten Daten muss die Anweisung zyklisch im Anwenderprogramm aufgerufen werden.
    Die Anfangsadresse und die maximale Länge der zu sendenden Daten werden durch SD_1 vorgegeben. Die Länge des Datenblocks legen Sie auftragsbezogen durch LEN fest.

  • S7-400 und S7-300 über eine integrierte Schnittstelle: Die Aktivierung des Sendevorgangs erfolgt nach Aufruf der Anweisung und positiver Flanke am Steuereingang REQ. Das Senden der Daten aus dem Anwenderspeicher erfolgt asynchron zur Bearbeitung des Anwenderprogramms.
    Die Anfangsadresse der zu sendenden Daten wird durch SD_1 vorgegeben. Die Länge der Sendedaten legen Sie auftragsbezogen durch LEN fest. LEN ersetzt damit den Längenanteil von SD_1.

Der Parameter R_ID muss bei den zusammengehörenden Anweisungen identisch sein. Bei einer positiven Flanke am Steuereingang R wird ein laufender Sendevorgang abgebrochen. Der erfolgreiche Abschluss des Sendevorgangs wird am Zustandsparameter DONE mit "1" angezeigt.

Nach Abschluss eines Sendevorganges, kann erst wieder ein neuer Sendeauftrag bearbeitet werden, wenn die Zustandsparameter DONE oder ERROR den Wert "1" angenommen haben.

Aufgrund der asynchronen Datenübertragung kann ein erneutes Senden von Daten erst gestartet werden, wenn die vorhergehenden Daten durch Aufruf der Partner-Anweisung abgeholt wurden. Bis die Daten abgeholt wurden, wird beim Aufruf von "BSEND" der Statuswert "7" (s. u.) ausgegeben.

Parameter

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

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

REQ

Input

BOOL

E, A, M, D, L

Steuerparameter request, aktiviert den Datenaustausch bei steigender Flanke

R

Input

BOOL

E, A, M, D, L

Steuerparameter reset, aktiviert Abbruch eines noch laufenden Datenaustauschs bei steigender Flanke

ID

Input

WORD

M, D oder Konstante

Adressierungsparameter ID

Siehe auch: Gemeinsame Parameter der Anweisungen zur S7-Kommunikation 

R_ID

Input

DWORD

E, A, M, D, L oder Konstante

Adressierungsparameter R_ID

Siehe auch: Gemeinsame Parameter der Anweisungen zur S7-Kommunikation 

Bei Kopplung über CP441 zu S5- oder Fremdgeräten enthält R_ID die Adressinformation des remoten Geräts. Näheres siehe CP441-Beschreibung.

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

Output

BOOL

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

STATUS

Output

WORD

E, A, M, D, L

SD_1

InOut

ANY

S7-300: M, D

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

Zeiger auf Sendebereich.

Zulässig sind nur die Datentypen BOOL (nicht erlaubt: Bitfeld), BYTE, CHAR, WORD, INT, DWORD, DINT, REAL, DATE, TOD, TIME, S5TIME, DATE_AND_TIME, 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)

LEN

InOut

WORD

E, A, M, D, L

Länge des zu sendenden Datenblocks in Byte

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 "BSEND" 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 von Partner-Anweisung. Die Funktion ist nicht ausführbar.

1

3

R_ID ist auf der durch ID vorgegebenen Kommunikationsverbindung nicht bekannt, oder der Empfangsbaustein wurde noch nie aufgerufen.

1

4

Fehler im Sendebereichszeiger SD_1 bezüglich der Datenlänge oder des Datentyps, oder am Parameter LEN wurde der Wert "0" übergeben.

1

5

Resetanforderung wurde ausgeführt.

1

6

Partner-Anweisung befindet sich im Zustand DISABLED (EN_R hat den Wert "0"). Überprüfen Sie zusätzlich die Eingangsparameter von BRCV auf Konsistenz zu BSEND.

1

7

Partner-Anweisung befindet sich in falschem Zustand

Die Empfangs-Anweisungen wurde nach der letzten Datenübertragung nicht mehr aufgerufen.

1

8

Zugriff auf remotes Objekt im Anwenderspeicher wurde abgelehnt: Der Zielbereich beim zugehörigen "BRCV" ist zu klein.

Beim zugehörigen BRCV wird ERROR = 1, STATUS = 4 oder ERROR = 1, STATUS = 10 gemeldet.

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 "BSEND" 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

18

  • R_ID existiert bereits in der Verbindung.

  • zusätzlich S7-300:

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

1

20

  • S7-400

    Zu wenig Arbeitsspeicher vorhanden. Abhilfe: Reduzieren Sie den im Speicher befindlichen Programmcode.

  • 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

    • Speicherengpass des CP

1

27

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

Datenkonsistenz

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