Dieses Diagramm bezieht sich auf einen typischen Signalablauf, in der die Anforderung einer Sicherheitsfunktion unterstützt wird.
Die eingehende Anforderung einer Sicherheitsfunktion durch ein SAFEFALSE-Signal an Eingang S_OpMode steuert direkt und ohne weitere Abhängigkeiten den Ausgang S_SafetyRequest für eine Anforderung der Sicherheitsfunktion an die angeschlossene sicherheitsbezogene Peripherie. Im gezeigten Beispielverlauf treten zwei Anforderungen der Sicherheitsfunktion auf. Folglich wird zweimal die Zeitüberwachung zwischen der Anforderung einer Sicherheitsfunktion und der Bestätigungsmeldung aus der sicherheitsbezogenen Peripherie gestartet.
Während der ersten Zeitüberwachung erfolgt die Rückmeldung durch S_Acknowledge = SAFETRUE innerhalb der an MonitoringTime parametrierten Zeit und der Freigabeausgang S_SafetyActive steuert auf SAFETRUE (Phasen 5 und 6 im Diagramm).
Im zweiten Fall wird der parametrierte Zeitwert überschritten. Der Funktionsbaustein erkennt dann einen Fehler (Error = TRUE) und durch S_SafetyActive = SAFEFALSE wird signalisiert, dass die sicherheitsbezogene Peripherie die angeforderte Sicherheitsfunktion nicht umsetzt (Phasen 9 bis 11 im Diagramm).
Dieses Beispiel zeigt den exemplarischen Einsatz des sicherheitsbezogenen Funktionsbausteins SF_SafetyRequest bei der Anforderung und Rückmeldung der Sicherheitsfunktion "sichere reduzierte Geschwindigkeit" (SLS, Safely Limited Speed) eines sicherheitsbezogenen Antriebs.
Durch die TRUE-Konstante an Eingang Activate ist der Funktionsbaustein dauerhaft aktiviert. An Eingang 1.1 des Standard-Eingangsgerätes DI 1 ist der Reset-Taster S1 angeschlossen.
Die relevanten Ein- und Ausgänge sind wie folgt beschaltet:
- Eingang S_OpMode des Funktionsbausteins SF_SafetyRequest ist direkt mit dem Freigabesignal S_Mode0Sel des vorgeschalteten Funktionsbausteins SF_ModeSelector verschaltet. Die Anforderung der Sicherheitsfunktion (vom ausgewerteten Betriebsartenwahlschalter) ist folglich die Anwahl der Betriebsart 0. In unserem Beispiel ist dies der Inbetriebnahme- oder Wartungsmodus, in dem der Antrieb mit sicherer reduzierter Geschwindigkeit betrieben wird. (Siehe Ziffer (1) in der Abbildung unten.)
- Ausgang S_SafetyRequest ist mit der globalen I/O-Variablen SReq_SafePerph verschaltet, die wiederum mit Ausgang 1.1 des sicherheitsbezogenen Ausgangsgeräts PSDO 1 verknüpft ist (siehe (2) in der Abbildung unten). Das sicherheitsbezogene Antriebsmodul ist dort zweikanalig an die Ausgangsklemmen 1.1 und 2.1 angeschlossen.
- Das Rückmeldesignal zur Bestätigung der angewählten Betriebsart vom sicherheitsbezogenen Antrieb ist zweikanalig an die Eingänge 1.1 und 2.1 des sicherheitsbezogenen Eingangsgeräts PSDI 1 angeschlossen. Das vom sicherheitsbezogenen Eingangsgerät auf Äquivalenz geprüfte Signal ist mit der globalen I/O-Variablen SafePerph_Feedb verknüpft und zur Auswertung an Eingang S_Acknowledge des Funktionsbausteins SF_SafetyRequest angeschlossen ((3) in der Abbildung).
- Freigabeausgang S_SafetyActive ist mit Eingang S_SafetyActive des Funktionsbausteins SF_EnableSwitch verschaltet (siehe (4)). Wird die angeforderte sichere reduzierte Geschwindigkeit vom sicherheitsbezogenen Antrieb innerhalb der an MonitoringTime vorgegebenen Überwachungszeit an Eingang S_Acknowledge bestätigt, steuert Freigabeausgang S_SafetyActive auf SAFETRUE und signalisiert so dem nachgeschalteten Funktionsbaustein SF_EnableSwitch die definierte sichere Betriebsart.
Die IEC 61131-3 definiert die Instanziierung von Funktionsbausteinen. Instanziieren bedeutet, dass ein Funktionsbaustein einmal definiert wird und dann mehrfach verwendet (instanziiert) werden kann. Dies gilt für alle Standard-FBs und sicherheitsbezogene FBs (sowohl lokale als auch FBs aus Firmware- und Anwenderbibliotheken).
Warum Instanziierung?
Ein Funktionsbaustein besitzt einen internen Speicher, in dem dieser die Arbeitsdaten (lokale Variablen) ablegt. Das bedeutet, die Ausgangswerte, die ein FB berechnet, hängen von den aktuellen intern gespeicherten Werten ab. Die gleichen Eingangswerte liefern deshalb bei verschiedenen FB-Instanzen nicht zwingend die gleichen Ausgangswerte.
Die internen Daten des Funktionsbausteins müssen daher für jeden Aufruf, d.h. für jede FB-Instanz, in einem getrennten Speicherbereich gehalten werden. Um jede FB-Instanz eindeutig identifizieren und ihren Speicherbereich separat halten zu können, werden Instanznamen verwendet. Der Instanzname eines FB muss in der 'Variablen'-Tabelle der POE deklariert werden, in welcher der FB verwendet werden soll.
Dabei gilt Folgendes:
- Funktionsbausteine können in anderen Funktionsbausteinen und in Programm-POEs instanziiert werden. Der Aufruf eines FB in einer Funktion-POE ist nicht möglich.
- Funktionen werden ohne Instanznamen aufgerufen, da sie keinen internen Speicher besitzen.
In PLCnext Engineer wird strikt zwischen sicherheitsbezogenem Code und (nicht-sicherheitsbezogenem) Standard-Code unterschieden. Wenn Ihr Projekt eine sicherheitsbezogene SPS enthält, gilt Folgendes:
- Sicherheitsbezogene FBs können nur in sicherheitsbezogenen POEs instanziiert werden, aber nicht in (nicht-sicherheitsbezogenen) Standard-POEs.
- Anwenderdefinierte Standard-FBs können nur in Standard-POEs instanziiert werden. Sie können nicht in sicherheitsbezogenen POEs aufgerufen werden.
- Bestimmte Standard-Firmware-FBs können sowohl in sicherheitsbezogenen, als auch in Standard-POEs instanziiert werden.
Hinweis
Beim Einfügen eines Standard-FBs in ein sicherheitsbezogenes SNOLD-Netzwerk gelten die Regeln für die implizite Typumwandlung (von sicherheitsbezogen nach Standard). |
Beispiel für die Instanziierung eines sicherheitsbezogenen PLCopen-Funktionsbausteins
Der sicherheitsbezogene PLCopen-Funktionsbaustein 'SF_EmergencyStop_V2_00' wurde über eine Bibliothek in das Projekt eingefügt. Er ist dann in der Kategorie 'Programmierung' des KOMPONENTEN-Bereichs verfügbar. Dort befindet sich ein Ordner mit demselben Namen wie die Bibliothek, aus dem sich die FBs in den sicherheitsbezogenen Code einfügen lassen.
Der FB soll im Code des sicherheitsbezogenen Programms 'S_Main' zweimal aufgerufen werden, um den Status zweier sicherheitsbezogener Not-Halt-Befehlsgeräte auszuwerten. Für jede FB-Instanz wurde in der Variablentabelle des aufrufenden Programms ein Instanzname deklariert: EStop_M1 und EStop_M2. Die zwei FB-Instanzen wurden in das Code-Arbeitsblatt eingefügt, wobei unterschiedliche Variablen an die Eingangs- und Ausgangs-Formalparameter der Instanzen angeschlossen sind.