Die Fehlererkennungsmechanismen

Das am häufigsten verwendete Verfahren ist die Verwendung von Prüfsummen. Dabei wird von dem Sender durch einen vordefinierten Algorithmus aus dem zu übertragenden Datenblock eine Prüfsumme berechnet, die er im Anschluss ebenso an den Empfänger überträgt. Durch diese kann der Empfänger erkennen, ob alle Daten korrekt übertragen worden sind. Je ausgeklügelter der Algorithmus zur Erstellung der Prüfsummen, je kürzer der zu sendende Datenblock und je länger die Prüfsumme ist, umso besser ist die Fähigkeit, eventuelle Fehler zu erkennen. Jedoch muss beachtet werden, dass innerhalb des Busses nur eine bestimmte Bandbreite zur Übertragung zur Verfügung steht, sodass ein Kompromiss zwischen der Fehlererkennungsfähigkeit und der Übertragungseffizienz geschlossen werden muss.

Die Fehlerkorrektur

Wird ein Fehler innerhalb der Übertragung erkannt, so muss dieser korrigiert werden. In der Automobilindustrie verwendet man dabei aus Effizienzgründen keine fehlerkorrigierenden Prüfsummen, wie es in anderen Systemen der Fall ist. Stattdessen findet eine Botschaftswiederholung statt. Diese wird entweder durch den Busknoten hervorgerufen, der den Fehler erkannt hat, oder automatisch durch eine zyklische Botschaftsübertragung.

Die Auswirkungen der Echtzeit-Übertragung und der Fehlerkorrektur

Nur wenn sämtliche Daten rechtzeitig und fehlerfrei vom Sender zum Empfänger übertragen werden, wird ein serieller Bus seiner Bestimmung gerecht. Durch das Ausmaß, wie zuverlässig er Störungen vermeiden, abwehren, erkennen und korrigieren kann, wird auch seine Leistungsfähigkeit und sein Einsatzgebiet bestimmt. Des Weiteren nimmt die Garantie der rechtzeitigen Datenübertragung innerhalb eines festgelegten Zeitfensters ebenso Einfluss auf diese zwei Faktoren.

Fehlererkennung

Die erste Stelle, an welcher sich in einem System Funktionsblöcke verwenden lassen, ist die zentral gelegene Steuerungseinheit. Denn diese Position ist dank der Norm IEC 61131 im Bezug auf die SPS, also die Speicherprogrammierbaren Steuerungen, klar definiert. Allerdings wird innerhalb der Norm nicht genau festgelegt, wann ein Funktionsblock exakt ausgeführt werden muss. Dies variiert je nachdem, wie der Hersteller innerhalb der eigenen Steuerung die Funktionsblöcke anordnen möchte.

Die Norm IEC 61499 im Allgemeinen

Hinter der Norm IEC 61499 stecken Festlegungen, die sich auf die Aufgaben innerhalb der Automatisierungstechnik bezogen, sodass hier alle Geräte einbezogen werden, welche über ein einheitliches Netzwerk verbunden werden können, sodass sich Aufgaben gemeinsam erfüllen lassen. Die Kontrolle der Funktionsblöcke geschieht auf der Basis einer Unterscheidung zwischen dem Datenfluss und dem Fluss der Ereignisse, der auch in der Fachsprache als „Event“ bezeichnet wird.

Ist die Verarbeitung durch einen Funktionsblock abgeschlossen, so lässt sich an dieser Stelle ein Ereignis erzeugen, welches durch Anlagenprogrammierer dann so verwendet werden kann, dass die Ausführungen der anderen Funktionsblöcke angeregt werden. Somit findet sich bei der Norm IEC 61499 eine explizite Planung des Datenflusses und die Ausführungskontrolle der Funktionsblöcke, indem die Verbindungen zwischen den Ereignis-Ein-und Ausgaben bestimmt werden.

Kurze Einführung in die Norm IEC 61131

Hinter dieser Abkürzung versteckt sich eine Norm, die als Einzige einen internationalen Standard für die Programmiersprachen von speicherprogrammierbaren Steuerungen darstellt. In ihr sind fünf verschiedene Sprachen definiert:

  • Anweisungsliste
  • Kontaktplan – lässt sich mit einem elektronischen Schaltplan vergleichen
  • Funktionsbausteinsprache (auch Funktionsplan genannt) – gleicht den Logikschaltflächen
  • Ablaufsprache – ist ähnlich einem Zustandsdiagramm konzipiert
  • Strukturierter Text – wurde in der Form an Hochsprachen angelehnt

Die ersten beiden Programmiersprachen sind dabei textbasiert, wobei die restlichen Sprachen als grafisch gelten. Die Gemeinsamkeit besteht in der Verwendungsmöglichkeit von Funktionen und ihrer Blöcke, auch wenn diese in einer anderen Sprache geschrieben wurden oder ohne Quelltext zur Verfügung stehen. Allerdings ist die Umwandlung der Sprachen wieder vom Hersteller abhängig.

Der Proxy-Funktionsblock

Kommt es dazu, dass ein Hersteller die Funktionsblöcke definiert, so treten mit einer Steuerung nach IEC 61131 Probleme auf, da das Programm nicht durchgehend geschrieben werden kann. Als Lösung für dieses Hindernis gibt es einen Kunstgriff, den sogenannten Proxy-Funktionsblock. So wird bei jedem Funktionsblock, der sich nicht in der Steuerung befindet, ein Stellvertreter erstellt, den man dann als Proxy bezeichnet. Dieser befasst sich in seinen Funktionen mit vier wesentlichen Bereichen innerhalb des Systems:

  • Übernahme aller Schnittstellen
  • Eingangsdaten und Ausgangsdaten, die an andere Funktionsblöcke gesendet werden
  • Sicherung einer richtig verlaufenden Übertragung, die als komplett ausgeführt angesehen werden kann und über ein industrielles Netzwerk
  • Übernahme der Engineering-Aufgaben
  • Der Funktionsblock nach den Vorgaben der Norm IEC 61499

Ein Funktionsblock, der sich in seinen Ausführungen an der Norm IEC 61499 orientiert, besteht aus internen Daten, einem Algorithmus und einer Ausführungskontrolle. Zudem lässt er sich in seiner Funktionsweise in acht Phasen unterteilen

  1. Festsetzung der Eingangswerte
  2. Eintreffen der Ereignisse für die Ausführung
  3. Aktivierung der Ausführungskontrolle
  4. Gleichzeitige Initialisierung des Algorithmus
  5. Anhand der Eingangsdaten und internen Daten legen die Algorithmen die neuen Ausgangsdaten fest
  6. Durch die Ausführungskontrolle wird das Ende des Algorithmus aufgezeigt
  7. Die Daten werden an die Ausgänge weitergegeben
  8. Erzeugung des Ausgangsereignisses

Diese verschiedenen Teilzeiten lassen sich klar bestimmen, sodass auch die gesamte Zeit, die für die Ausführung des Funktionsblocks gebraucht wird, im Voraus exakt berechnet werden kann. Dies ist besonders bei der anschließenden Berechnung von Reaktionszeiten in einem verteilten Automationssystem von großem Vorteil.

Ladevorgänge für Funktionsblöcke

Funktionsblöcke müssen innerhalb von Geräten die Möglichkeit haben, geladen zu werden. Darüber hinaus ist es auch unerlässlich, dass die einzelnen Verschaltungsinformationen zwischen den Eingängen und Ausgängen geladen werden können. Hierfür müssen verschiedene Regeln eingehalten werden, zu denen die Folgenden u.a. dazugehören:

  • Eingänge müssen definiert sein
  • Eingänge müssen verschaltet oder mit Werten vorbelegt sein
  • Ein Eingang darf jeweils nur an einem Ausgang hängen
  • Ein Eingang mit mehreren Ausgängen brauch einen eigenen Funktionsblock zur Realisierung

Entgegengesetzt zu diesen Regeln, gibt es bei den Ausgängen keine strikten Festlegungen, da diese dazu befähigt sind, an mehrere Eingänge gleichzeitig gekoppelt zu sein. Damit die Ladevorgänge für Funktionsblöcke jedoch zunächst einmal überhaupt beherrscht werden können, existieren unterschiedliche Betriebszustände:

  • Stopped – hier wird der Funktionsblock nicht ausgeführt
  • Loaded – bei diesem Schritt wird die Funktion in ein Zielsystem geladen
  • Configurable – an diesem Punkt ist die Funktion fertig geladen, jedoch stehen die Verbindungsinformationen noch nicht zur Verfügung
  • Operational – an dieser Stelle im Ladevorgang gilt der Funktionsblock als betriebsbereit
  • Running – der Funktionsblock befindet sich im p