Herunterladen Inhalt Inhalt Diese Seite drucken

Allgemeine Programmierrichtlinien; Sicherheitsgerichtete Und Nicht Sicherheitsgerichtete Teile Der Anwendung - ABB AC500-S Sicherheitshandbuch

Vorschau ausblenden Andere Handbücher für AC500-S:
Inhaltsverzeichnis

Werbung

Konfiguration und Programmierung
CODESYS Safety-Programmierrichtlinien > Sicherheitsgerichtete und nicht sicherheitsgerichtete Teile der Anwendung

4.4.4 Allgemeine Programmierrichtlinien

Zusätzlich zu sprachenspezifischen Richtlinien sollten Fehler durch die Beachtung allgemeiner
Richtlinien vermieden werden. Diese Richtlinien sind hier in keiner besonderen Reihenfolge auf-
geführt:
Wenige Zustände
Zustände in der Form von Variablen, die ihren Wert über einen Steuerungszyklus hinaus
behalten, erschweren die Prüffreundlichkeit einer Anwendung. Das kann mit den folgenden
Maßnahmen verhindert werden:
Keine Warnungen
Eine Sicherheitsanwendung darf keine Compiler-Warnungen generieren!
Begrenzte Anzahl von Zeilen pro Baustein (500)
Für eine bessere Transparenz sollte ein Baustein nicht mehr als 500 Zeilen haben.
Begrenzte Anzahl von Zeichen pro Zeile (150)
Für eine bessere Transparenz sollte eine Zeile nicht mehr als 150 Zeichen haben.
Keine Wiederverwendung von Variablen
Jede Variable sollte nur für einen Zweck eingesetzt werden. Eine Verwendung in einem
anderen Kontext, auch wenn der vorherige Zweck nicht länger wichtig ist, enthält ein bedeu-
tendes Fehlerpotenzial, insbesondere im Rahmen von Änderungen.
Variablen so lokal wie nötig
Variablen, die nur in einem Baustein beschrieben sind, müssen lokal deklariert werden. Die
einzige Ausnahme betrifft Variablen, die mit Adressen verknüpft sind. Diese sollten zur Ver-
meidung mehrfacher Zuweisungen global deklariert werden.
Nur ein Zugriff auf Ausgang
Für Zustände sollten Ausgänge nur an einer Stelle im Programm beschrieben werden.
Kein Zugriff auf globale Variablen aus Funktionen und Funktionsbausteinen
Eine Funktion sollte keine Nebeneffekte haben und ein Funktionsbaustein sollte nur den
Zustand seiner eigenen Instanz ändern. Funktionen und Funktionsbausteine sollten deshalb
keinen Zugriff auf globale Variablen haben.

4.4.5 Sicherheitsgerichtete und nicht sicherheitsgerichtete Teile der Anwendung

Für sehr komplexe Anwendungen wird empfohlen, alle Teile der Sicherheitsanwendung auf ein
separates Steuerungssystem zu übertragen. Wenn das nicht möglich ist, sollten diese Teile der
Anwendung durch die folgenden Maßnahmen getrennt werden:
Bausteine (Programme, Funktionsbausteine und Funktionen) sind entweder sicherheitsge-
richtet oder nicht. Sämtliche sicherheitsgerichteten Bausteine sollten ein bestimmtes Präfix
aufweisen (z. B. „S_").
Das Aufrufen von nicht sicherheitsgerichteten Bausteinen in Sicherheitsbausteinen ist nicht
erlaubt. Dies muss mit der Funktion „Aufrufbaum ausgeben" überprüft werden.
Das Aufrufen von Sicherheitsbausteinen in nicht sicherheitsgerichteten Bausteinen ist in
begrenztem Maße erlaubt. Dies muss mit der Funktion „Aufrufbaum ausgeben" überprüft
werden.
Globale Variablen sind sicherheitsgerichtet oder nicht. Sämtliche Sicherheitsvariablen
sollten ein bestimmtes Präfix haben (z. B. „S_"). Sämtliche Sicherheitsvariablen werden in
speziellen Variablenlisten definiert, die auch mit einem Präfix versehen sind.
Schreibzugriff auf Sicherheitsvariablen von nicht sicherheitsgerichteten Bausteinen aus ist
nicht erlaubt. Dies muss mit der Funktion „Querverweisliste ausgeben" überprüft werden.
Schreibzugriff auf nicht sicherheitsgerichtete Variablen von Sicherheitsbausteinen aus ist
nicht erlaubt. Dies muss mit der Funktion „Querverweisliste ausgeben" überprüft werden.
192
Vermeidung von Zuständen, wo immer möglich
Eine Zustandsvariable sollte nur einmal pro Zyklus beschrieben werden. Dies erleichtert
das Finden von Fehlern, wenn ein Zustand einen ungültigen Wert hat.
Wenn ein Zustand aus mehreren Variablen besteht, sollte er in einen Funktionsbaustein
eingebettet werden. Zustandsübergänge sollte nur vom Aufrufen eines Bausteins
betroffen sein.
3ADR025091M0108, 12, de_DE
2021/05/26

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis