Beschreibung
Ein I-Device kann vom übergeordneten Controller einen Datensatz empfangen. Der Empfang erfolgt im Anwendungsprogramm mit der Anweisung "RCVREC" (receive record).
Die Anweisung hat folgende Betriebsarten:
-
Überprüfung, ob dem I-Device eine Anforderung für einen Datensatzempfang vorliegt.
-
Bereitstellen des Datensatzes an den Ausgangsparametern.
-
Verschicken einer Antwort am den übergeordneten Controller.
Welche dieser Betriebsarten die Anweisung ausführt, legen Sie über den Eingangsparameter MODE fest (siehe unten).
Das I-Device muss sich im Betriebszustand RUN oder im Betriebszustand ANLAUF befinden.
Mit MLEN geben Sie vor, wie viele Bytes Sie maximal empfangen möchten. Den Zielbereich RECORD sollten Sie daher mindestens MLEN Bytes lang wählen.
Wenn ein Datensatz empfangen wurde (MODE=1 oder MODE=2), wird im Ausgangsparameter NEW angezeigt, dass der Datensatz in RECORD gespeichert wurde. Achten Sie dabei auf eine ausreichende Länge von RECORD. Der Ausgangsparameter LEN enthält die tatsächliche Länge des empfangenen Datensatzes in Bytes.
Für die positive Antwort an den übergeordneten Controller beschreiben Sie CODE1 und CODE2 mit Null. Wenn der empfangene Datensatz abgelehnt werden soll, geben Sie in CODE1 den Error Code 1 und in CODE2 den Error Code 2 der negativen Antwort an den übergeordneten Controller an.
|
Hinweis Wenn das I-Device eine Anforderung für einen Datensatzempfang erhalten hat, müssen Sie die Zustellung dieser Anforderung innerhalb einer bestimmten Zeitdauer erkannt haben. Nach dem Erkennen müssen Sie dem übergeordneten Controller innerhalb derselben Zeitdauer eine Antwort geschickt haben. Andernfalls tritt beim I-Device ein Timeout-Fehler auf, der zur Folge hat, dass das Betriebssystem des I-Device eine negative Antwort an den übergeordneten Controller schickt. Den Wert für die Zeitdauer entnehmen Sie den Technischen Daten Ihrer CPU. |
Nach Auftreten eines Fehlers enthält der Ausgangsparameter STATUS die Fehlerinformation.
Betriebsarten
Die Betriebsart der Anweisung "RCVREC" legen Sie über den Eingangsparameter MODE fest. Dieser wird in der folgenden Tabelle erläutert.
|
MODE |
Bedeutung |
|---|---|
|
0 |
Überprüfen, ob eine Anforderung für einen Datensatzempfang vorliegt Falls auf dem I-Device ein Datensatz vom übergeordneten Controller vorliegt, beschreibt die Anweisung nur die Ausgangsparameter NEW, SLOT, INDEX und LEN. Wenn Sie die Anweisung mehrmals hintereinander mit MODE=0 aufrufen, beziehen sich die Ausgangsparameter stets auf ein und dieselbe Anforderung. |
|
1 |
Empfangen eines Datensatzes für irgendeinen Subslot des I-Device Falls auf dem I-Device ein Datensatz vom übergeordneten Controller für irgendeinen Subslot des I-Device vorliegt, beschreibt die Anweisung die Ausgangsparameter und überträgt den Datensatz in den Parameter RECORD. |
|
2 |
Empfangen eines Datensatzes für einen bestimmten Subslot des I-Device Falls auf dem I-Device ein Datensatz vom übergeordneten Controller für einen bestimmten Subslot des I-Device vorliegt, beschreibt die Anweisung die Ausgangsparameter und überträgt den Datensatz in den Parameter RECORD. |
|
3 |
Positive Antwort an den übergeordneten Controller schicken Die Anweisung überprüft die Anforderung des übergeordneten Controllers, einen Datensatz zu empfangen, akzeptiert den vorliegenden Datensatz und schickt eine positive Quittung an den übergeordneten Controller. |
|
4 |
Negative Antwort an den übergeordneten Controller schicken Die Anweisung überprüft die Anforderung des übergeordneten Controllers, einen Datensatz zu empfangen, lehnt den vorliegenden Datensatz ab und schickt eine negative Quittung an den übergeordneten Controller. Den Grund für die Ablehnung geben Sie in den Eingangsparametern CODE1 und CODE2 an. |
|
Hinweis Nach dem Eintreffen eines Datensatzes (NEW=1) müssen Sie "RCVREC" noch zweimal aufrufen, um seine vollständige Abarbeitung zu gewährleisten. Dabei müssen Sie die folgende Reihenfolge einhalten:
|
Parameter
Die folgende Tabelle zeigt die Parameter der Anweisung "RCVREC":
|
Parameter |
Deklaration |
Datentyp |
Speicherbereich |
Beschreibung |
|---|---|---|---|---|
|
MODE |
Input |
INT |
E, A, M, D, L oder Konstante |
Betriebsart |
|
F_ID |
Input |
DWORD |
E, A, M, D, L oder Konstante |
Subslot im Transferbereich des I-Device für den zu erhaltenden Datensatz (nur relevant für MODE=2). Das high word ist stets auf Null zu setzen. |
|
MLEN |
Input |
INT |
E, A, M, D, L oder Konstante |
Maximale Länge des zu empfangenden Datensatzes in Bytes. |
|
CODE1 |
Input |
BYTE |
E, A, M, D, L oder Konstante |
Null (bei MODE=3) bzw. Error Code 1 (bei MODE=4) |
|
CODE2 |
Input |
BYTE |
E, A, M, D, L oder Konstante |
Null (bei MODE=3) bzw. Error Code 2 (bei MODE=4) |
|
NEW |
Output |
BOOL |
E, A, M, D, L |
|
|
STATUS |
Output |
DWORD |
E, A, M, D, L |
Fehlerinformation |
|
SLOT |
Output |
INT |
E, A, M, D, L |
identisch zu F_ID |
|
SUBSLOT |
Output |
INT |
E, A, M, D, L |
identisch zu F_ID |
|
INDEX |
Output |
INT |
E, A, M, D, L |
Nummer des empfangenen Datensatzes |
|
LEN |
Output |
INT |
E, A, M, D, L |
Länge des empfangenen Datensatzes |
|
RECORD |
InOut |
ANY |
E, A, M, D, L |
Zielbereich für den empfangenen 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".
Parameter STATUS
Zur Interpretation des Parameters STATUS siehe Abschnitt: Parameter STATUS