Beschreibung
Die Anweisung "BRCV" empfängt Daten von einer remoten Partner-Anweisung vom Typ "BSEND". Nach jedem empfangenen Datensegment wird eine Quittung an die Partner-Anweisung geschickt, und der Parameter LEN wird aktualisiert.
Die Anweisung ist nach Aufruf mit dem Wert "1" am Steuereingang EN_R empfangsbereit. Mit EN_R=0 kann ein laufender Auftrag abgebrochen werden.
Die Anfangsadresse und die maximale Länge des Empfangsbereichs werden durch RD_1 vorgegeben. Die Länge des empfangenen Datenblocks wird in LEN angezeigt.
-
S7-300: Mit jeder positiven Flanke an EN_R werden die Parameter R_ID, ID und RD_1 übernommen. Nach Abschluss eines Auftrags können Sie den Parametern R_ID, ID und RD_1 neue Werte zuweisen. Zur Übertragung von segmentierten Daten muss die Anweisung zyklisch im Anwenderprogramm aufgerufen werden.
-
S7-400 und S7-300 über eine integrierte Schnittstelle: Der Empfang der Daten aus dem Anwenderspeicher erfolgt asynchron zur Bearbeitung des Anwenderprogramms.
Der Parameter R_ID muss bei den zusammengehörenden Anweisungen identisch sein.
Der fehlerfreie Empfang sämtlicher Datensegmente wird am Zustandsparameter NDR mit dem Wert "1" angezeigt. Die empfangenen Daten bleiben unverändert bis zum nächsten Aufruf mit EN_R=1.
Wird die Anweisung während eines asynchronen Empfangs erneut aufgerufen, führt dies zur Ausgabe einer Warnung im Zustandsparameter STATUS; erfolgt der Aufruf mit EN_R=0, wird der Empfangsvorgang abgebrochen, und die Anweisung geht in seinen Grundzustand.
Parameter
Die folgende Tabelle zeigt die Parameter der Anweisung "BRCV":
|
Parameter |
Deklaration |
Datentyp |
Speicherbereich |
Beschreibung |
|---|---|---|---|---|
|
EN_R |
Input |
BOOL |
E, A, M, D, L |
Steuerparameter enabled to receive, signalisiert Empfangsbereitschaft, wenn der Eingang gesetzt ist. |
|
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. |
|
NDR |
Output |
BOOL |
E, A, M, D, L |
Zustandsparameter NDR:
|
|
ERROR |
Output |
BOOL |
E, A, M, D, L |
Zustandsparameter ERROR und STATUS, Fehleranzeige:
|
|
STATUS |
Output |
WORD |
E, A, M, D, L |
|
|
RD_1 |
InOut |
ANY |
S7-300: M, D S7-400: |
Zeiger auf Empfangsbereich. Die Längenangabe gibt die maximale Länge des zu empfangenden Blocks vor. 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. |
|
LEN |
InOut |
WORD |
E, A, M, D, L |
Länge der bisher empfangenen Daten 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 "BRCV" spezifischen Fehlerinformationen, die über die Parameter ERROR und STATUS ausgegeben werden können.
|
ERROR |
STATUS (dezimal) |
Erläuterung |
|---|---|---|
|
0 |
11 |
Warnung: Die Empfangsdaten werden bereits in einer Prioritätsklasse mit niedrigerer Priorität bearbeitet. |
|
0 |
17 |
Warnung: Anweisung empfängt asynchron Daten. Der Parameter LEN zeigt die Anzahl der bisher empfangenen Daten in Byte an. |
|
0 |
25 |
Die Kommunikation wurde angestoßen. Der Auftrag ist in Bearbeitung. |
|
1 |
1 |
Kommunikationsprobleme, z. B.
|
|
1 |
2 |
Funktion nicht ausführbar (Protokollfehler) |
|
1 |
4 |
Fehler im Empfangsbereichszeiger RD_1 bezüglich der Datenlänge oder des Datentyps. Der gesendete Datenblock ist länger als der Empfangsbereich. |
|
1 |
5 |
Resetanforderung eingetroffen, unvollständige Übertragung. |
|
1 |
8 |
Zugriffsfehler beim zugehörigen "BSEND": Nach dem Versenden des letzten gültigen Datensegments wird ERROR = 1 und STATUS = 4 oder ERROR = 1 und 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
|
|
1 |
18 |
|
|
1 |
20 |
|
|
1 |
27 |
Nur bei S7-300: Für diese Anweisung existiert in der CPU kein Funktionscode. |
Datenkonsistenz
Die Daten werden konsistent empfangen, wenn Sie Folgendes beachten: Werten Sie den aktuell benutzten Teil des Empfangsbereichs RD_1 vollständig aus, bevor Sie den Baustein wieder mit dem Wert 1 am Steuereingang EN_R aufrufen.
Sonderfall eines Datenempfangs (nur S7-400)
Falls die Empfänger-CPU mit einer empfangsbereiten "BRCV"-Anweisung (d. h. ein Aufruf mit EN_R =1 ist bereits erfolgt) in STOP geht, bevor die zugehörige Sende-Anweisung das erste Datensegment eines Auftrags abgeschickt hat, geschieht Folgendes:
-
Die Daten des ersten Auftrags nach Übergang der Empfänger-CPU in STOP werden vollständig in den Empfangsbereich eingetragen.
-
Die Partner-Anweisung "BSEND" erhält darüber eine positive Quittung.
-
Weitere "BSEND"-Aufträge können von der Empfänger-CPU im STOP-Zustand nicht mehr angenommen werden.
-
Solange sie sich im STOP-Zustand befindet, haben NDR und LEN den Wert "0".
Damit Ihnen die Information über die empfangenen Daten nicht verloren geht, müssen Sie bei der Empfänger-CPU einen Wiederanlauf durchführen und "BRCV" mit EN_R=1 aufrufen.