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 |
|
||
|
STOP oder interner Fehler der F‑CPU/Partner-F‑CPU |
|
||
|
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 |
— |
— |