Das folgende Diagramm zeigt den Signalablauf einer typischen Anwendung unter folgenden Annahmen:
S_StartReset = SAFEFALSE: Anlaufsperre nach Bausteinaktivierung und nach Start der Sicherheitssteuerung.
S_AutoReset = SAFEFALSE: Wiederanlaufsperre nach Verriegelung der Zuhaltung der geschlossenen Schutzeinrichtung (d.h. nach Rückkehr des SAFETRUE-Signals an Eingang S_GuardLock).
0 | Der Funktionsbaustein ist noch nicht aktiviert (Activate = FALSE). Folglich sind alle Ausgänge FALSE oder SAFEFALSE. |
1 | Aktivierung des Bausteins durch Activate = TRUE. Obwohl die Schutzeinrichtung geschlossen ist (S_GuardMonitoring = SAFETRUE) und zugehalten wird (S_GuardLock = SAFETRUE) und der Betriebsbereich den definierten sicheren Zustand meldet (S_SafetyActive = SAFETRUE), bleibt der Ausgang S_GuardLocked = SAFEFALSE, weil eine Anlaufsperre vorgegeben ist (S_StartReset = SAFEFALSE). |
2 | Mit der positiven Flanke an Eingang Reset wird die Anlaufsperre aufgehoben, Ausgang S_GuardLocked wird SAFETRUE.Ausgang S_GuardLocked bleibt SAFETRUE, obwohl Eingang S_SafetyActive für einige Zeit SAFEFALSE ist (Betriebsbereich vorübergehend nicht mehr im definierten sicheren Zustand). |
3 | Mit der Anforderung zur Entriegelung der Zuhaltung durch UnlockRequest = TRUE und der Bestätigung, dass der Betriebsbereich wieder im definierten sicheren Zustand ist (S_SafetyActive = SAFETRUE), wird Ausgang S_GuardLocked auf SAFEFALSE und S_UnlockGuard auf SAFETRUE gesteuert.Ausgang S_UnlockGuard bleibt solange SAFETRUE, wie an Eingang UnlockRequest die Anforderung zur Entriegelung anliegt. |
4 | Die Schutzeinrichtung wird geöffnet (S_GuardMonitoring und S_GuardLock werden beide SAFEFALSE) und wieder geschlossen (S_GuardMonitoring wieder SAFETRUE), aber nach dem Schließen nicht verriegelt (S_GuardLock bleibt SAFEFALSE). Ausgang S_GuardLocked bleibt deshalb SAFEFALSE. |
5 | Ausgang S_UnlockGuard wird SAFEFALSE, da Eingang UnlockRequest jetzt FALSE ist. Die Schutzeinrichtung ist noch nicht verriegelt (S_GuardLock immer noch SAFEFALSE). |
Dieses Beispiel beschreibt die Verschaltung einer einkanaligen trennenden Schutzeinrichtung mit verriegelbarer Zuhaltung mit dem sicherheitsbezogenen Funktionsbaustein SF_GuardLocking 2. Es ist eine Anlaufsperre und eine Wiederanlaufsperre vorgegeben.
In diesem Beispiel entspricht die Anordnung des Schalters den Anforderungen der DIN EN ISO 14119, Anhang F.
Der Schutztür-Schalter sowie der Kontakt zur Rückmeldung der Verriegelung sind einkanalig mit den Eingängen der Sicherheitssteuerung verbunden. Die Spule zum Öffnen der Verriegelung ist ebenfalls einkanalig mit einem Ausgang der Sicherheitssteuerung verbunden.
Die Sensoren/Aktoren sind wie folgt an der Sicherheitssteuerung bzw. an den Funktionsbaustein angeschlossen:
- Der mechanisch betätigte Positionsschalter B1 (Schutztür-Schalter) ist an Eingangsklemme 1.1 des sicherheitsbezogenen Eingangsgeräts PSDI 1 angeschlossen. Sein Signal ist mit der globalen I/O-Variablen B1_GMON_In verknüpft und mit Bausteineingang S_GuardMonitoring verschaltet.
- Das Rückmeldesignal der Zuhaltung ist an Eingangsklemme 3.1 des sicherheitsbezogenen Eingangsgeräts PSDI 1 angeschlossen. Das Signal ist mit der globalen I/O-Variablen K1_GLOC_In verknüpft und mit Bausteineingang S_GuardLock verschaltet.
- An Eingangsklemme 1.1 des Standard-Eingangsgeräts DI 1 ist ein Taster S2 angeschlossen, dessen TRUE-Signal die Entriegelung der Tür anfordert. Die verknüpfte globale I/O-Variable S2_UREQ_In ist an Bausteineingang UnlockRequest angeschlossen.
- An Eingangsklemme 3.1 des Standard-Eingangsgeräts DI 1 ist ein Reset-Taster S3 angeschlossen. Sein Signal wird mit der globalen I/O-Variablen S3_Reset_GL verknüpft und mit Bausteineingang Reset verschaltet. Das Signal dieses Tasters dient zum Rücksetzen von Fehlerzuständen des Funktionsbausteins und zum Aufheben der Anlauf-/Wiederanlaufsperre (siehe unten).
- Das Ausgangssignal S_UnlockGuard des Bausteins steuert über die angeschlossene globale I/O-Variable K1_ULOCK_Out die Spule zum Öffnen der Verriegelung an. Diese Spule K1 ist an Ausgangsklemme 1.1 des sicherheitsbezogenen Ausgangsgeräts PSDO angeschlossen, die wiederum mit K1_ULOCK_Out verknüpft ist.
S_StartReset und S_AutoReset sind beide auf SAFEFALSE gesetzt, d.h.
- S_StartReset = SAFEFALSE: Anlaufsperre nach dem Start der Sicherheitssteuerung und nach Bausteinaktivierung.
- S_AutoReset = SAFEFALSE: Wiederanlaufsperre nach Rückkehr des SAFETRUE-Signals an Eingang S_GuardLock.
Hinweis
An Eingang S_SafetyActive des Funktionsbausteins SF_GuardLocking 2 ist das Signal "Maschine steht" angeschlossen, das z.B. von einem Stillstandswächter stammt. Der Freigabeausgang S_GuardLocked des Funktionsbausteins SF_GuardLocking 2 ist direkt mit einer globalen I/O-Variablen oder über weitere sicherheitsbezogene Funktionen/Funktionsbausteine mit einer Ausgangsklemme der Applikation verschaltet. Verschalten Sie den Freigabeausgang S_GuardLocked des Funktionsbausteins SF_GuardLocking 2 beispielsweise mit Eingang S_OutControl des Funktionsbausteins SF_EDM und realisieren Sie auf diese Weise eine zweikanalige Ausgangsverschaltung. |
S1 | Sicherheitsschalter mit Zuhaltung, enthält - Schutztür-Schalter (B1), einkanalig, - Verriegelungsüberwachung der Zuhaltung (Kontakt -K1) und - Spule (K1) zum Öffnen der Verriegelung |
(*1) | Zuhaltung von S1: offen |
(*2) | Zuhaltung von S1: geschlossen |
S2 | Anforderung zur Entriegelung der Tür |
S3 | Reset-Taster zum Rücksetzen von Fehlern und Aufheben einer aktiven Anlauf-/Wiederanlaufsperre |
S4 | Taster zum Stoppen der Maschine. |
S4i | Signal zum Stoppen der Maschine |
 | Siehe Hinweis vor der Abbildung. |
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 gleichermaßen für alle FBs (anwenderdefinierte POEs sowie FBs in Bibliotheken, z.B. IEC-Standard-Funktionsbausteine, Firmware-FBs, FBs aus 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 FB-Instanzname muss in der 'Variablen'-Tabelle der POE deklariert werden, in welcher der FB verwendet werden soll.
Es 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 Standard-POEs (nicht-sicherheitsbezogen).
- 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 (sicherheitsbezogen nach Standard). |
Beispiel für die Instanziierung eines anwenderdefinierten Funktionsbausteins
Der anwenderdefinierte Funktionsbaustein 'TLC' ("Two Level Controller") wird zur Kategorie 'Funktionen & Funktionsbausteine' (im Bereich KOMPONENTEN) hinzugefügt. Der Baustein soll zweimal in der Programm-POE 'Container' aufgerufen werden, um den Füllstand und die Temperatur eines Boilers zu steuern.
Für beide FB-Instanzen wird eine Instanz-Deklaration in die Variablentabelle der aufrufenden Programm-POE 'Container' eingefügt: TLCTemperature und TLCLevel. Der Funktionsbaustein 'TLC' kann dadurch im Code-Arbeitsblatt der aufrufenden POE zweimal über diese Instanznamen aufgerufen werden.
Die zwei FB-Instanzen wurden in das Code-Arbeitsblatt 'Container' eingefügt, wobei unterschiedliche Variablen an die Eingangs- und Ausgangs-Formalparameter der Instanzen angeschlossen sind ('Level...' und 'Temperatur...').