SENDS7 und RCVS7: Kommunikation über S7-Verbindungen (STEP 7 Safety Advanced V20) (S7-300, S7-400) - Safety

Anweisungen STEP 7 Safety V20

ft:publication_title
Anweisungen STEP 7 Safety V20
Product
Safety
Version
V20
Publication date
10/2024
Language
de-DE
SENDS7 und RCVS7: Kommunikation über S7-Verbindungen (STEP 7 Safety Advanced V20) (S7-300, S7-400)

Einleitung

Die Anweisungen SENDS7 und RCVS7 setzen Sie ein für das fehlersichere Senden und Empfangen von Daten über S7-Verbindungen.

Hinweis

In STEP 7 Safety Advanced sind S7-Verbindungen generell nur über Industrial Ethernet zulässig.

Sicherheitsgerichtete Kommunikation über S7-Verbindungen ist von und zu F-CPUs mit PROFINET-Schnittstelle bzw. F-CPUs S7-400 mit PROFINET-fähigen CPs möglich. Siehe auch Sicherheitsgerichtete Kommunikation über S7-Verbindungen.

Beschreibung

Die Anweisung SENDS7 sendet die in einem F‑Kommunikations-DB stehenden Sendedaten fehlersicher über eine S7-Verbindung an den F‑Kommunikations-DB der zugehörigen Anweisung RCVS7 einer anderen F-CPU.

Jedem Aufruf dieser Anweisungen muss ein Datenbereich zugeordnet werden, in dem die Anweisungsdaten gespeichert werden. Dazu wird beim Einfügen der Anweisung im Programm automatisch der Dialog "Aufrufoptionen" geöffnet, in dem Sie einen Datenbaustein (Einzelinstanz) (z. B. SENDS7_DB_1) oder eine Multiinstanz (z. B. SENDS7_Instance_1) für diese Anweisungen erstellen können. Nach dem Erstellen finden Sie den neuen Datenbaustein in der Projektnavigation im Ordner "STEP 7 Safety" unter "Programmbausteine > Systembausteine" oder die Multiinstanz als lokale Variable im Abschnitt "Static" der Schnittstelle des Bausteins. Weitere Informationen dazu finden Sie in der Hilfe zu STEP 7.

Die Beschaltung des Freigabeeingangs "EN" bzw. des Freigabeausgangs "ENO" ist nicht möglich. Somit wird die Anweisung (unabhängig vom Signalzustand am Freigabeeingang "EN") immer ausgeführt.

Informationen zum F-Kommunikations-DB erhalten Sie unter "Sicherheitsgerichtete Kommunikation über S7-Verbindungen programmieren".

Ein F‑Kommunikations-DB ist ein F‑DB für die sicherheitsgerichtete CPU-CPU-Kommunikation mit speziellen Eigenschaften. Die Nummern der F-Kommunikations-DBs müssen Sie am Eingang SEND_DB und RCV_DB der Anweisungen SENDS7 und RCVS7 angeben.

Am Ausgang SENDMODE der Anweisung RCVS7 wird die Betriebsart der F‑CPU mit der Anweisung SENDS7 bereitgestellt. Befindet sich die F‑CPU mit der Anweisung SENDS7 im deaktivierten Sicherheitsbetrieb, wird der Ausgang SENDMODE = 1.

Am Eingang EN_SEND der Anweisung SENDS7 können Sie die Kommunikation zwischen den F‑CPUs zur Reduzierung der Busbelastung zeitweise abschalten, indem Sie den Eingang EN_SEND (Vorbesetzung = "1") mit "0" versorgen. Dann werden keine Sendedaten mehr an den F‑Kommunikations-DB der zugehörigen Anweisung RCVS7 gesendet und der Empfänger stellt für diesen Zeitraum die Ersatzwerte (Startwerte in seinem F‑Kommunikations-DB) zur Verfügung. War die Kommunikation zwischen den Verbindungspartnern schon aufgebaut, wird ein Kommunikationsfehler erkannt.

Am Eingang ID der Anweisung SENDS7 müssen Sie die - aus Sicht der F‑CPU - lokale ID der S7-Verbindung (aus Verbindungstabelle in der Netzsicht) angeben (siehe auch Projektieren).

Die Kommunikation zwischen den F‑CPUs erfolgt verdeckt im Hintergrund über ein spezielles Sicherheitsprotokoll. Dazu müssen Sie die Kommunikationsbeziehung zwischen einer SENDS7-Anweisung in einer F‑CPU mit einer RCVS7-Anweisung in der anderen F‑CPU durch die Vorgabe einer ungeraden Zahl am Eingang R_ID (der Anweisung SENDS7 und RCVS7) festlegen. Zusammengehörige Anweisungen SENDS7 und RCVS7 erhalten denselben Wert für R_ID.

Warnung

Der Wert für die jeweilige F-Kommunikations-ID (Eingang R_ID; Datentyp: DWORD) ist frei wählbar, muss jedoch ungerade, netzweit* und CPU-weit für alle sicherheitsgerichteten Kommunikationsverbindungen eindeutig sein. Der Wert R_ID + 1 wird intern belegt und darf nicht verwendet werden.

Sie müssen die Eingänge ID und R_ID beim Aufruf der Anweisung mit konstanten Werten versorgen. Direkte Zugriffe auf ID und R_ID im zugehörigen Instanz-DB sind im Sicherheitsprogramm weder lesend noch schreibend zulässig. (S020)

* Ein Netz besteht aus einem oder mehreren Subnetzen. "Netzweit" bedeutet, über Subnetz-Grenzen hinweg. Bei PROFIBUS umfasst ein Netz alle über PROFIBUS DP erreichbaren Teilnehmer. Bei PROFINET IO umfasst ein Netz alle über RT_Class_1/2/3 (Ethernet/WLAN/Bluetooth, Layer 2) und ggf. RT_Class_UDP (IP, Layer 3) erreichbaren Teilnehmer.

Hinweis

Innerhalb eines Sicherheitsprogramms müssen Sie für jeden Aufruf der Anweisungen SENDS7 und RCVS7 einen separaten Instanz-DB verwenden. Sie dürfen diese Anweisungen nicht als Multiinstanzen deklarieren und aufrufen.

Die Eingänge der Anweisung RCVS7 dürfen nicht über vollqualifizierte DB-Zugriffe mit Ausgängen einer in einem vorherigen Netzwerk aufgerufenen RCVS7- oder RCVDP-Anweisung versorgt werden.

Für einen Ausgang einer RCVS7-Anweisung darf kein Aktualparameter verwendet werden, der bereits für einen Eingang derselben oder einer anderen RCVS7- oder RCVDP-Anweisung verwendet wird.

Bei Nichtbeachtung kann die F‑CPU in STOP gehen. Im Diagnosepuffer der F‑CPU wird ein Diagnoseereignis eingetragen.

Hinweis

Zwischen einer Anweisung JMP bzw. JMPN und dem zugehörigen Zielnetzwerk der Anweisung JMP bzw. JMPN dürfen Sie keine Anweisung SENDS7/RCVS7 programmieren.

Vor einer Anweisung SENDS7 dürfen Sie keine Anweisung RET programmieren.

Parameter SENDS7

Die folgende Tabelle zeigt die Parameter der Anweisung SENDS7:

Parameter

Deklaration

Datentyp

Beschreibung

SEND_DB

Input

BLOCK_DB

Nummer des F‑Kommunikations-DBs

TIMEOUT

Input

TIME

Überwachungszeit in ms für sicherheitsgerichtete Kommunikation (siehe auch Überwachungs- und Reaktionszeiten)

EN_SEND

Input

BOOL

1=Sendefreigabe

ID

Input

WORD

lokale ID der S7-Verbindung

R_ID

Input

DWORD

Netzweit eindeutiger Wert für eine F-Kommunikations-ID zwischen einer SENDS7 und einer RCVS7-Anweisung

ERROR

Output

BOOL

1=Kommunikationsfehler

SUBS_ON

Output

BOOL

1=Empfänger gibt Ersatzwerte aus

STAT_RCV

Output

WORD

Nicht fehlersicherer Zustandsparameter STATUS der Anweisung URCV (Die Beschreibung der Fehlercodes finden Sie in der Hilfe zur Anweisung URCV ("Kommunikation > S7-Kommunikation"))

STAT_SND

Output

WORD

Nicht fehlersicherer Zustandsparameter STATUS der Anweisung USEND (Die Beschreibung der Fehlercodes finden Sie in der Hilfe zur Anweisung USEND ("Kommunikation > S7-Kommunikation"))

DIAG

Output

BYTE

Nicht fehlersichere Serviceinformation

Parameter RCVS7

Die folgende Tabelle zeigt die Parameter der Anweisung RCVS7

Parameter

Deklaration

Datentyp

Beschreibung

ACK_REI

Input

BOOL

Quittierung für Wiedereingliederung der Sendedaten nach Kommunikationsfehler

RCV_DB

Input

BLOCK_DB

Nummer des F‑Kommunikations-DBs

TIMEOUT

Input

TIME

Überwachungszeit in ms für sicherheitsgerichtete Kommunikation (siehe auch Überwachungs- und Reaktionszeiten)

ID

Input

WORD

lokale ID der S7-Verbindung

R_ID

Input

DWORD

Netzweit eindeutiger Wert für eine F-Kommunikations-ID zwischen einer SENDS7 und einer RCVS7-Anweisung

ERROR

Output

BOOL

1=Kommunikationsfehler

SUBS_ON

Output

BOOL

1=Ersatzwerte werden ausgegeben

ACK_REQ

Output

BOOL

1=Quittierung für Wiedereingliederung der Sendedaten erforderlich

SENDMODE

Output

BOOL

1=F‑CPU mit der Anweisung SENDS7 im deaktiviertem Sicherheitsbetrieb

STAT_RCV

Output

WORD

Nicht fehlersicherer Zustandsparameter STATUS der Anweisung URCV (Die Beschreibung der Fehlercodes finden Sie in der Hilfe zur Anweisung URCV ("Kommunikation > S7-Kommunikation"))

STAT_SND

Output

WORD

Nicht fehlersicherer Zustandsparameter STATUS der Anweisung USEND (Die Beschreibung der Fehlercodes finden Sie in der Hilfe zur Anweisung USEND ("Kommunikation > S7-Kommunikation"))

DIAG

Output

BYTE

Nicht fehlersichere Serviceinformation

Anweisungsversionen

Für diese Anweisungen stehen mehrere Versionen zur Verfügung:

Version

S7-300/400

S7-1500

Funktion

1.0

x

1.1

x

Diese Version ist funktional identisch zur Version 1.0.

Sie unterstützt jedoch neuere Versionen intern aufgerufener Anweisungen.

Bei der Migration von Projekten, die mit S7 Distributed Safety V5.4 SP5 erstellt wurden, wird automatisch die Version 1.1 der Anweisung verwendet.

Wenn Sie ein migriertes Sicherheitsprogramm mit STEP 7 Safety Advanced erstmalig übersetzen wollen, empfehlen wir Ihnen, zuvor die Version der Anweisung auf die höchste verfügbare Version umzustellen.

1.2

x

Diese Version ist funktional identisch zur Version 1.0/1.1.

Sie unterstützt jedoch neuere Versionen intern aufgerufener Anweisungen.

Beim Anlegen einer neuen F-CPU mit STEP 7 Safety Advanced ist automatisch die höchste für die angelegte F-CPU verfügbare Version voreingestellt.

Weitere Informationen zur Verwendung von Anweisungsversionen erhalten Sie in der Hilfe zu STEP 7 unter "Anweisungsversionen verwenden".

Platzierung

Sie müssen die Anweisung RCVS7 am Anfang des Main-Safety-Blocks einfügen. Im Main-Safety-Block dürfen sich davor keine anderen Anweisungen befinden.

Sie müssen die Anweisung SENDS7 am Ende des Main-Safety-Blocks einfügen. Im Main-Safety-Block dürfen sich danach keine anderen Anweisungen befinden.

Anlaufverhalten

Nach einem Anlauf des sendenden und des empfangenden F‑Systems muss die Kommunikation zwischen den Verbindungspartnern (Anweisungen SENDS7 und RCVS7) erstmalig aufgebaut werden. Der Empfänger (Anweisung RCVS7) stellt für diesen Zeitraum die Ersatzwerte (Startwerte in seinem F‑Kommunikations-DB) zur Verfügung.

Die Anweisungen SENDS7 und RCVS7 signalisieren dies am Ausgang SUBS_ON mit 1. Der Ausgang SENDMODE (Anweisung RCVS7) hat die Vorbesetzung 0 und wird nicht aktualisiert, solange der Ausgang SUBS_ON = 1 ist.

Verhalten bei Kommunikationsfehlern

Tritt ein Kommunikationsfehler auf, z. B. durch Prüfwert-Fehler (CRC) oder nach Ablauf der Überwachungszeit TIMEOUT, werden die Ausgänge ERROR und SUBS_ON = 1 gesetzt. Der Empfänger (Anweisung RCVS7) stellt dann die Ersatzwerte (Startwerte in seinem F‑Kommunikations-DB) zur Verfügung. Während der Ausgang SUBS_ON = 1 ist, wird der Ausgang SENDMODE nicht aktualisiert.

Die im F‑Kommunikations-DB (Anweisung SENDS7) liegenden Sendedaten werden erst wieder ausgegeben, wenn kein Kommunikationsfehler mehr festgestellt wird (ACK_REQ = 1) und Sie am Eingang ACK_REI der Anweisung RCVS7 mit einer positiven Flanke quittieren.

Warnung

Eine Anwenderquittierung muss immer mit einem durch eine manuelle Bedienung generierten Signal erfolgen. Eine Durchführung mit einem automatisch generierten Signal ist nicht zulässig. (S011)

Beachten Sie, dass der Ausgang ERROR (1=Kommunikationsfehler) bei einem Kommunikationsfehler erstmalig gesetzt wird, wenn die Kommunikation zwischen den Verbindungspartnern (Anweisungen SENDS7 und RCVS7) bereits einmal aufgebaut worden ist. Kann die Kommunikation nach erfolgtem Anlauf des sendenden und des empfangenden F-Systems nicht aufgebaut werden, überprüfen Sie die Projektierung der sicherheitsgerichteten CPU-CPU-Kommunikation, die Parametrierung der Anweisungen SENDS7 und RCVS7 und die Busverbindung. Informationen zu möglichen Fehlerursachen können Sie auch durch Auswertung der Ausgänge STAT_RCV bzw. STAT_SND erhalten.

Werten Sie generell immer STAT_RCV und STAT_SND aus, da evtl. nur einer der beiden Ausgänge eine Fehlerinformation enthalten kann.

Wenn eines der DIAG-Bits am Ausgang DIAG gesetzt ist, prüfen Sie zusätzlich, ob Länge und Struktur des zugehörigen F-Kommunikations-DBs auf der Sender- und Empfängerseite übereinstimmen.

Zeitdiagramme SENDS7 und RCVS7

Ausgang DIAG

Am Ausgang DIAG wird eine nicht fehlersichere Information über die Art der aufgetretenen Kommunikationsfehler für Servicezwecke zur Verfügung gestellt. Sie können diese über Bedien- und Beobachtungssysteme auslesen oder ggf. in Ihrem Standard-Anwenderprogramm auswerten. Die DIAG-Bits bleiben gespeichert, bis Sie am Eingang ACK_REI der zugehörigen RCVS7-Anweisung quittieren.

Aufbau von DIAG

Bit Nr.

Belegung SENDS7 und RCVS7

Mögliche Fehlerursachen

Abhilfemaßnahmen

Bit 0

Reserve

Bit 1

Reserve

Bit 2

Reserve

Bit 3

Reserve

Bit 4

Timeout von SENDS7 und RCVS7 erkannt

Busverbindung zur Partner-F‑CPU ist gestört

Busverbindung überprüfen und sicherstellen, dass keine externen Störquellen vorhanden sind.

Überwachungszeit der F‑CPU und der Partner-F‑CPU zu niedrig eingestellt

Parametrierte Überwachungszeit TIMEOUT an SENDS7 und RCVS7 beider F‑CPUs überprüfen. Ggf. höheren Wert einstellen. Sicherheitsprogramm erneut übersetzen

STOP oder interner Fehler der CPs

  • CPs in RUN schalten

  • Diagnosepuffer der CPs überprüfen

  • Ggf. die CPs austauschen

STOP oder interner Fehler der F‑CPU/Partner-F‑CPU

  • F‑CPUs in RUN schalten

  • Diagnosepuffer der F‑CPUs überprüfen

  • Ggf. F‑CPUs austauschen

Die Kommunikation wurde mit EN_SEND = 0 abgeschaltet.

Kommunikation am zugehörigen SENDS7 mit EN_SEND = 1 wieder einschalten

S7-Verbindung hat sich geändert, z. B. wurde die IP-Adresse des CPs geändert

Sicherheitsprogramme erneut übersetzen und in die F‑CPUs laden

Bit 5

Sequenznummern-Fehler, von SENDS7 und RCVS7 erkannt

siehe Beschreibung für Bit 4

siehe Beschreibung für Bit 4

Bit 6

CRC-Fehler, von SENDS7 und RCVS7 erkannt

siehe Beschreibung für Bit 4

siehe Beschreibung für Bit 4

Bit 7

RCVS7:

Kommunikation kann nicht aufgebaut werden

Projektierung der sicherheitsgerichteten CPU-CPU-Kommunikation fehlerhaft, Parametrierung der Anweisungen SENDS7 und RCVS7 fehlerhaft

siehe auch Beschreibung für Bit 4

Projektierung der sicherheitsgerichteten CPU-CPU-Kommunikation überprüfen, Parametrierung der Anweisungen SENDS7 und RCVS7 überprüfen

siehe auch Beschreibung für Bit 4

SENDS7:

Reserve