Skip to main content

Allgemeine Regeln für sicherheitsgerichtete Funktionsbausteine

Diese Programmierregeln entsprechen den „General Rules for Safety-Related Function Blocks“ der PLCopen. Sie gelten für PLCopen-konforme Funktionsbausteine.

Funktionsbausteinspezifische Regeln

Wichtig

Bei der Verwendung der PLCopen-Funktionsbausteine muss der Anwender in seiner Applikation sicherstellen, dass der Funktionsbaustein in jedem Zyklus mindestens einmal aufgerufen wird.

Default-Signal

Alle sicherheitsgerichteten booleschen E/A-Signale haben den voreingestellten sicheren Wert FALSE

Signallevel

Der Wert SAFEBOOL ist nur wie folgt anwendbar:

  • 0: Entspricht der Sicherheit, wie bei Systemausgängen definiert

  • 1: Bedeutet, dass die Sicherheitsaspekte des Systems korrekt arbeiten, so dass beispielsweise normaler Betrieb möglich ist

Dies reflektiert die Funktionalität der IEC 61131-Umgebungen, wie beispielsweise die Regeln für den Defaultwert und dass alle Ausgänge bei einem Fehlerfall auf 0 gesetzt werden.

Fehlende E/A-Parameter

Fehlende Parameter sind zulässig. Defaultwerte gelten. Diese Defaultwerte sollen unter keinen Umständen in einen nicht sicheren Zustand führen. Die Defaultwerte einschließlich ihrer Attribute (Variable oder Constant) werden in den entsprechenden Funktionsbausteinen spezifiziert.

Anlaufverhalten

Anfangs werden die Ausgänge auf die Defaultwerte gesetzt. Nach dem ersten Aufruf des Funktionsbausteins sind die Ausgänge gültig. Es gibt ein konsistentes Anlaufverhalten (Kaltstart).

Zeitdiagramme

Zeitdiagramme, wie sie bei den Funktionsbausteinen gezeigt werden, dienen nur zur Erklärung. Sie stellen nicht das exakte Zeitverhalten dar. Das exakte Zeitverhalten hängt von der Implementierung ab.

Fehlerbehandlung und Diagnose

Alle sicherheitsgerichteten Funktionsbausteine haben zwei fehlerbezogene Ausgänge: Error und DiagCode. Sie dienen Diagnosezwecken auf Benutzeranwendungsebene, nicht zur Diagnose auf System- oder Hardwareebene.

Die Vorschrift für sicherheitsgerichtete Umgebungen ist, dass die Schaltung der sicherheitsgerichteten Funktion die höchste Priorität hat. Weiterhin muss die Folgeschaltung genügend Zeit zur Diagnose haben, entweder im funktionalen Programm oder in der Bedienschnittstelle.

Allgemeine Eingangsparameter

Name

Datentyp

Beschreibung

Activate

BOOL

Variable oder Konstante für die Aktivierung eines Bausteins.

Initialwert ist FALSE

Dieser Parameter kann mit der Variablen verbunden werden, die den Zustand (aktiv oder nicht aktiv) des relevanten Sicherheitsgeräts darstellt. Dies gewährleistet, dass keine irrelevanten Diagnosedaten erzeugt werden, wenn das Gerät deaktiviert wird.

FALSE: Alle Ausgangsvariablen werden auf den Initialwert gesetzt.

Wenn kein Gerät verbunden ist, muss ein statisches TRUE-Signal zugewiesen werden.

S_<sicherheitsgerichteter Eingangsname>

SAFExxxx

Jeder Name eines Eingangs eines SAFExxxx-Typs beginnt mit S_.

Es dürfen nur Variablen zugewiesen werden.

S_StartReset

SAFEBOOL

Variable oder Konstante

FALSE (Initialwert): Automatischer Anlauf deaktiviert; manueller Anlauf über den Eingang Reset

TRUE: Automatischer Anlauf, wenn die Sicherheitssteuerung gestartet ist (warm oder kalt)

Beachten Sie die Sicherheitshinweise für S_StartReset

S_AutoReset

SAFEBOOL

Variable oder Konstante

FALSE (Initialwert): Automatischer Wiederanlauf deaktiviert; manueller Anlauf über den Eingang Reset, wenn der NOTAUS-Schalter entriegelt ist.

TRUE: Automatischer Wiederanlauf, wenn der NOTAUS-Schalter entriegelt ist.

Beachten Sie die Sicherheitsheinweise für S_AutoReset.

Reset

BOOL

Variable. Initialwert ist FALSE

Abhängig von der Funktion kann dieser Eingang für unterschiedliche Zwecke verwendet werden.

  • Reset der Zustandsmaschine und gekoppelter Fehler- und Zustandsmeldungen wie über DiagCode angezeigt, wenn die Fehlerursache behoben wurde. Dieses Reset-Verhalten ist als Fehler-Reset konzipiert.

  • Manueller Reset einer Wiederanlaufsperre durch den Operator. Dieser Reset ist als funktionaler Reset konzipiert.

  • Zusätzliche bausteinspezifische Reset-Funktionen

Diese Funktion ist nur bei einem Signalwechsel von FALSE nach TRUE aktiv. Ein statisches TRUE-Signal erzeugt keine weiteren Aktionen, kann aber in einigen Bausteinen als Fehler entdeckt werden.

Beachten Sie die Sicherheitshinweis für Reset.

Die angemessene Bedeutung ist bei jedem Baustein beschrieben.

Sicherheitshinweise für S_StartReset

S_StartReset

Dieser automatische Anlauf soll nur aktiviert werden, wenn gewährleistet ist, dass keine Gefährdung beim Start der Sicherheitssteuerung entstehen kann. Die Verwendung des Features "Automatischer Anlauf" in Funktionsbausteinen erfordert deshalb die Implementierung anderer System- oder Applikationsmaßnahmen. Dabei muss sichergestellt werden, dass kein unerwartetes (oder unbeabsichtigtes) Starten auftritt.

Achtung

Wird der Eingang mit einer Variablen (und nicht mit FALSE) verknüpft, so müssen zusätzliche Validierungsmaßnahmen definiert werden.

Sicherheitsheinweise für S_AutoReset

Achtung

Der automatische Wiederanlauf soll nur aktiviert werden, wenn gewährleistet ist, dass es zu keinem Wiederingangsetzen der Maschine nach der Freigabe des NOT-HALT kommen kann. Die Verwendung des Features "Automatischer Wiederanlauf" in Funktionsbausteinen erfordert deshalb die Implementierung anderer System- oder Applikationsmaßnahmen. Dabei muss sichergestellt werden, dass sich die Maschine nicht wieder unerwartet (oder unbeabsichtigt) in Gang setzt.

Achtung

Wird der Eingang mit einer Variablen (und nicht mit FALSE) verknüpft, so müssen zusätzliche Validierungsmaßnahmen definiert werden.

Sicherheitshinweis für Reset

Achtung

Abhängig von den Sicherheitsanforderungen, muss anstelle von BOOL mit SAFEBOOL verbunden werden. Siehe auch Funktionsbaustein SF_ResetButton.

Allgemeine Ausgangsparameter

Name

Datentyp

Beschreibung

Ready

BOOL

TRUE: Zeigt an, dass der Funktionsbaustein aktiviert und die Ausgangsergebnisse gültig sind (gleich wie die „POWER“-LED eines Sicherheits-Relais).

FALSE: Der Baustein ist nicht aktiv und das Programm wird nicht ausgeführt. Nützlich im Debugbetrieb oder um zusätzliche Funktionsbausteine zu aktivieren/deaktivieren. Ebenso für die Weiterverarbeitung im funktionalen Programm.

S_<sicherheitsgerichteter Ausgangs-Name>

SAFExxxx

Jeder Name eines SAFExxxx-Typ-Ausgangs beginnt mit S_.

SafetyDemand

BOOL

Ausgang, der anzeigt, dass der Funktionsbaustein aktiv ist und die primäre Sicherheitsfunktion angefordert wird (beispielsweise im Zusammenhang mit der Sicherheitsfunktion). Andere sicherheitsbezogene Eingangsparameter werden nicht berücksichtigt (beispielsweise SafetyActive und EDM). Die Sicherheitsschleife ist nicht geschlossen und der sichere Zustand wird für den zugehörigen Sicherheitsausgang gefordert. Es liegt kein Fehler vor.

TRUE: Sicherheitsanforderung

FALSE: Keine Sicherheitsanforderung

ResetRequest

BOOL

Ausgang, der verwendet werden kann, um dem Bediener zu signalisieren, die Reset-Funktion zu drücken um fortzufahren

TRUE: Bediener-Reset wird angefordert

FALSE: Bediener-Reset wird nicht angefordert

Error

BOOL

Fehler-Flag (gleich wie die „K1/K2“-LED eines Sicherheitsrelais)

TRUE: Zeigt an, dass ein Fehler aufgetreten ist und sich der Funktionsbaustein im Fehlerzustand befindet. Der relevante Fehlerzustand wird am DiagCode-Ausgang angezeigt.

FALSE: Es gibt keinen Fehler und der Baustein befindet sich in einem anderen Zustand. Dies wird wiederum durch den DiagCode angezeigt.

Nützlich im Debugbetrieb ebenso wie für die Weiterverarbeitung im funktionalen Programm.

DiagCode

WORD

Diagnoseregister

Alle Zustände eines Bausteins (Active, Not Active und Error) werden durch dieses Register abgebildet. Diese Informationen werden im hexadezimalen Format kodiert, um mehr als 16 Codes darzustellen. Es wird immer nur ein konsistenter Code zur gleichen Zeit angezeigt. Im Falle von mehreren Fehlern zeigt der DiagCode-Ausgang den zuerst entdeckten Fehler an.

Nützlich im Debugbetrieb, ebenso wie für die Weiterverarbeitung im funktionalen Programm.

Diagnose-Codes

Ein transparentes und einheitliches Diagnosekonzept bildet die Basis für alle Funktionsbausteine. Dadurch wird gewährleistet, dass ohne Rücksicht auf die Implementierung des Anwenders dem Endanwender mit dem DiagCode eine einheitliche Diagnoseinformation zur Verfügung steht. Wenn kein Fehler besteht, wird der interne Zustand des Funktionsbausteins (Zustandsmaschine) dargestellt. Ein Fehler wird über einen binären Ausgang (Error) angezeigt. Detaillierte Informationen über interne oder externe Bausteinfehler erhalten Sie über DiagCode. Der Funktionsbaustein muss über verschiedene Reset-Eingänge zurückgesetzt werden.

Tabelle 4. Generische Diagnose-Codes

DiagCode

Beschreibung

0000_0000_0000_0000 bin

0000 hex

Der Baustein ist nicht aktiviert. Dieser Code stellt den Leerlaufzustand dar. Als allgemeines Beispiel könnte die E/A-Einstellung wie folgt sein:

Activate = FALSE

S_In = FALSE oder TRUE

Ready = FALSE

Error = FALSE

S_Out = FALSE

SafetyDemand = FALSE

ResetRequest = FALSE

1000_0000_0000_0000 bin

8000 hex

Der Baustein ist aktiviert, ohne Fehler oder eine andere Bedingung, die den Sicherheitsausgang auf FALSE setzt. Dies ist der Standardbetriebszustand, in dem der Sicherheitsausgang S_Out bei Normalbetrieb TRUE ist. Als allgemeines Beispiel könnten die Ein- und Ausgänge wie folgt gesetzt sein:

Activate = TRUE

S_In = TRUE

Ready = TRUE

Error = FALSE

S_Out = TRUE

SafetyDemand = FALSE

ResetRequest = FALSE

1000_0100_0000_0001 bin

8401 hex

Eine Aktivierung wurde durch den Baustein entdeckt und der Baustein ist jetzt aktiviert, aber der S_Out-Sicherheitsausgang ist auf FALSE gesetzt. Dieser Code stellt den Init-Zustand des Betriebszustands dar. Als allgemeines Beispiel könnten die Ein- und Ausgänge wie folgt gesetzt sein:

Activate = TRUE

S_In = TRUE

Ready = TRUE

Error = FALSE

S_Out = FALSE

SafetyDemand = FALSE

ResetRequest = TRUE

1000_1000_0000_0010 bin

8802 hex

Der aktivierte Baustein entdeckt eine Sicherheitsanforderung, zum Beispiel S_In = FALSE. Der Sicherheitsausgang ist deaktiviert (S_Out = FALSE). Als allgemeines Beispiel könnten die Ein- und Ausgänge wie folgt gesetzt sein:

Activate = TRUE

S_IN = FALSE

Ready = TRUE

Error = FALSE

S_Out = FALSE

SafetyDemand = TRUE

ResetRequest = FALSE

1000_0100_0000_0011 bin

8403 hex

Der Sicherheitsausgang des aktivierten Bausteins ist durch eine Sicherheitsanforderung deaktiviert worden. Die Sicherheitsanforderung ist jetzt zurückgenommen, aber der Sicherheitsausgang bleibt solange FALSE, bis eine Reset-Bedingung entdeckt wird. Dies ist ein Betriebszustand, wo der Sicherheitsausgang S_Out = FALSE. Als allgemeines Beispiel könnten die Ein- und Ausgänge wie folgt gesetzt sein:

Activate = TRUE

S_In = FALSE => TRUE (mit statischem TRUE fortfahren)

Ready = TRUE

Error = FALSE

S_Out = FALSE

SafetyDemand = TRUE ==> FALSE

ResetRequest = FALSE ==> TRUE



Tabelle 5. System- oder gerätespezifische Codes

DiagCode

Beschreibung

0xxx_xxxx_xxxx_xxxx bin

X = System- oder gerätespezifische Meldung. Diese Informationen enthalten die Diagnoseinformationen für das System oder Gerät und werden direkt auf den DiagCode-Ausgang abgebildet.

Anmerkung: 0000 hex ist reserviert.



Generisches Zustandsübergangsdiagramm

Abbildung 9. Generisches Zustandsübergangsdiagramm von Sicherheits-FBs
Generisches Zustandsübergangsdiagramm von Sicherheits-FBs


. Erklärung des generischen Zustandsübergangsdiagramms:
  • Es wird ein genereller Überblick über die Zustände und Übergänge gezeigt. Einige Übergänge sind nicht benamt. Dies bedeutet, dass sie FB-spezifisch sind und mit dem jeweiligen Funktionsbaustein beschrieben werden müssen.

  • Das Diagramm zeigt drei Bereiche:

    • Im oberen Bereich ist der Funktionsbaustein nicht aktiv. Er ist im sicheren Zustand (sichere Ausgänge sind FALSE).

    • Im mittleren Bereich ist der Funktionsbaustein aktiv. Er ist im sicheren Zustand (sichere Ausgänge sind FALSE).

    • Im unteren Bereich ist der Funktionsbaustein in normalem Zustand. Die sicheren Ausgänge sind TRUE.

  • Die erste horizontale Linie im Zustandsübergangsdiagramm zeigt den Übergang von einem nicht-aktiven Funktionsbaustein zu einem aktiven Funktionsbaustein

  • Die zweite horizontale Linie zeigt den Übergang von einem nicht-sicheren Zustand zu einem sicheren Zustand

  • Die Prioritäten von möglichen parallelen Übergängen werden durch Nummern angegeben (höchste Priorität ist 0)

  • Die Zustände enthalten den Zustandsnamen und den hexadezimalen Diagnosecode

  • Bedingungen OR, AND und XOR werden als logischen Operatoren und NOT als Negation verwendet

  • Innerhalb der Funktionsbausteinbeschreibung ist der Anfangszustand Idle, mit den Übergängen zu den einzelnen Betriebszuständen über den Zustand Init

  • Activate = FALSE schaltet von jedem Zustand direkt in den Idle-Zustand (0 = höchste Priorität ist für Activate = FALSE reserviert). Zur besseren Übersicht werden diese Übergänge nicht in jedem Zustandsübergangsdiagramm eingezeichnet. Dies wird als Fußnote bei jedem Zustandsübergangsdiagramm erwähnt.

  • Aus Gründen der Übersicht wird das Setzen der Ausgänge nicht im Zustandsdiagramm beschrieben. Eine explizite Wahrheitstabelle, die die Zustände der Funktionsbausteinausgänge zeigt, ist Teil jeder Funktionsbausteinbeschreibung. Zusätzlich werden die FB-spezifischen Fehler- und Zustandscodes beschrieben.

  • Hinweis zum Übergang von 8xx0 auf 0000: Bestimmte Anwendungen (beispielsweise Pressen) müssen ihren Zyklus ohne Gefahr irgendwelcher Risiken beenden. In diesem Fall kann der Übergang verzögert werden.

Tabelle 6. Bausteinspezifische Fehlercodes

DiagCode

Zustandsname

Zustandsbeschreibung und Setzen des Ausgangs

Cxxx

Error

Ready = TRUE

S_Out = FALSE

SafetyDemand = FALSE

ResetRequest = FALSE

Error = TRUE



Tabelle 7. Bausteinspezifische Zustandscodes (kein Fehler)

DiagCode

Zustandsname

Zustandsbeschreibung und Setzen des Ausgangs

0000

Idle

Ready = FALSE

S_Out = FALSE

SafetyDemand = FALSE

ResetRequest = FALSE

Error = FALSE

8xxx

Initialer Zustand und alle Zustände des Betriebsmodus, bei denen S_Out = FALSE

Ready = TRUE

S_Out = FALSE

SafetyDemand = Abhängig

ResetRequest = Abhängig

Error = FALSE

8000

Alle Zustände des Betriebsmodus, bei denen S_Out = TRUE

Ready = TRUE

S_Out = TRUE

ResetDemand = FALSE

ResetRequest = FALSE

Error = FALSE