-
Die Erfindung bezieht sich auf ein Verfahren zur Überwachung eines Programmablaufs eines aus mehreren Funktionsmodulen zusammensetzbaren Programms, welches Programm zum Betreiben eines Feldgerätes der Prozessautomatisierungstechnik verwendet wird, wobei der Programmablauf zyklisch wiederholt wird und von den verwendeten Funktionsmodulen abhängig ist, und jedes Funktionsmodul mindestens einen spezifischen Identifikationswert aufweist.
-
Zudem bezieht sich die Erfindung auf ein entsprechendes Computerprogrammprodukt.
-
Verfahren zur Überwachung der logischen Ausführungsreihenfolge und der Datenübertragung eines in einzelne Funktionsmodule unterteilten Programms werden in der Prozess- und Automatisierungstechnik in den Messumformern von Messgeräten bzw. von Feldgeräten eingesetzt. Von der Anmelderin werden beispielsweise Feldgeräte oder ganze Messsysteme für Füllstand-, Durchfluss-, Druck- und Temperaturmessung sowie Flüssigkeitsanalyse und Messwertregistrierung verkauft und vertrieben. In der Automations- und Prozesssteuerungstechnik bezeichnet man Messgeräte sowie Stellgeräte als Feldgeräte. Diese Feldgeräte messen beispielsweise eine physikalische Größe, z. B. den Druck, die Temperatur, die Durchflussmenge oder den Füllstand an definierten Stellen in einer Prozessanlage und senden ein Messwertsignal zur Weiterverarbeitung an ein Prozessleitsystem.
-
Um Menschen, die Umwelt und industrielle Anlagen bestmöglich zu schützen, werden die Hersteller und Anwender von Feldgeräten mit immer höheren Sicherheitsanforderungen konfrontiert. So sind die Sicherheitsanforderungen in der neuen Beurteilung zur ”Funktionalen Sicherheit” nach IEC/DIN EN 61508 und IEC/DIN EN 61511 festgelegt. Diese europäischen und internationalen Vorgaben sind die Grundlage zur systematischen Beurteilung des Gefahrenpotenzials von mess-, steuer- und regeltechnischen Einrichtungen und können für die sicherheitsbezogene Auslegung von verfahrenstechnischen Anlagen herangezogen werden. Dabei werden die jeweiligen Anforderungsstufen (SIL), in Abhängigkeit der Risikoparameter, über einen Risikographen bestimmt. Diese Funktionale Sicherheit beinhaltet alle Aspekte zur Verhinderung, Vermeidung und Behandlung von fehlerhaftem Verhalten von Steuerungssystemen und Maschinen und Personal, mit dem Ziel die Risiken für Mitarbeiter, die Umwelt und die Prozessanlagen zu verringern. Funktionale Sicherheit findet man in der Energie- und Verfahrenstechnik (KKW), bei Verkehrstechnik (Bahn), Prozessindustrie (Chemie, Öl-Gas) und bei Werkzeugmaschinen.
-
Die Betreiber von Anlagen mit sicherheitsrelevanten Funktionen legen im Rahmen einer Gefährdungsbeurteilung den Sicherheits-Integritätsievel für die jeweilige Sicherheitsfunktion fest. Entsprechend dieser Festlegung werden die dafür geeigneten Geräte ausgewählt und zu einem System zusammengeführt.
-
Im Rahmen dieser Anforderungen an die erhöhte Sicherheit in Feldgeräten und durch den Einsatz von Rechensystemen in diesen Feldgeräten ist es notwendig, eine Programmablaufüberwachung als eine Maßnahme zur Fehlererkennung während der Betriebsphase des Feldgeräts zu integrieren. Das grundlegende Ziel einer Methode zur Programmablaufkontrolle ist es, unerlaubte Programmabläufe bzw. Abweichungen vom geplanten Programmablauf zu erkennen und entsprechende Maßnahmen bei Abweichungen einzuleiten. Die Abweichungen in einem Programmablauf liegen beispielsweise dann vor, falls Funktionen bzw. Befehlsfolgen eines Programms in einer falschen Reihenfolge, in der falschen Zeitdauer oder gar nicht mehr abgearbeitet werden. Die Programmablaufüberwachung bzw. -kontrolle können in zwei grundlegende Überwachungsprinzipien eingeteilt werden, die zeitliche oder die logische Programmablaufkontrolle.
-
Methoden zur Programmablaufüberwachung sind in dem Buch der Bundesanstalt für Arbeitsschutz und Arbeitsmedizin – „Wirksamkeit von zeitlichen und Logischen Programmablaufüberwachungen beim Betrieb von Rechnersystemen" von H. Gall, K. Kemp aufgeführt.
-
Ein fehlersicheres Automatisierungssystem mit einer Standard-CPU ist in der
EP 1 043 641 A2 beschrieben. Ein weiteres Verfahren ist in der noch nicht veröffentlichten Anmeldung
DE 10 2007 015369 A1 beschrieben. In diesem Verfahren werden zur Überwachung von kritischen Funktionen eines Programms entsprechende Überwachungspunkten in das Programm integriert. An diesen Überwachungspunkten wird eine Überwachungsroutine gestartet, die die Kennzahl des Überwachungspunktes mit einer in einer Zuordnungsliste vorgegebenen Reihenfolge des Programmablaufs vergleicht und bei einer Abweichung das Programm unterbricht oder erneut startet.
-
Zudem sind auch aus der
DE 102007062920 A1 und der
DE 102007015369 A1 Verfahren zur Überwachung eines Programmablaufs bekannt geworden. Diese weisen jedoch den Nachteil auf, dass jeweils bereits bei der Erstellung des Programms die Zuordnungsvorschriften der Kennungszeichen kritischer Funktionen in einer nicht flüchtigen Speichereinheit z. B. einem ROM hinterlegt werden müssen.
-
Der Erfindung liegt daher die Aufgabe zugrunde, die Überwachung eines Programmablaufs zu vereinfachen.
-
Hinsichtlich des Verfahrens wird die Aufgabe dadurch gelöst, dass in dem Fall, dass ein neuer Programmablauf festgelegt wird, mittels der Identifikationswerte der verwendeten Funktionsmodule ein eindeutiger, dem neuen Programmablauf zugehöriger erster Prüfwert berechnet wird, wobei der dem neuen Programmablauf zugehörige erste Prüfwert gespeichert wird, und wobei während das Programm ausgeführt wird, zyklisch ein dem ausgeführten Programmablauf zugehöriger zweiter Prüfwert ermittelt wird und wobei der zweite Prüfwert nur mit dem gespeicherten ersten Prüfwert verglichen wird, um den Programmablauf zu überwachen.
-
Feldgeräte der Prozessautomatisierungstechnik weisen oftmals nur eine geringe Anzahl von Betriebsmitteln wie bspw. Speicher und Rechnereinheiten auf. Es wird daher angestrebt, diese vorhandenen Betriebsmittel besonders effizient zu nutzen. Während des Betriebs des Feldgerätes wird das Feldgerät von einem oder mehreren Programmen gesteuert, die u. a. zur Messwertberechnung oder ganz allgemein zur Aufrechterhaltung der verschiedenen Funktionalitäten des Feldgerätes dienen. Ein Benutzer kann jedoch bspw. von einer Warte aus oder vor Ort Einfluss auf das Programm insbesondere den Programmablauf nehmen. Ein Programm kann dabei aus verschiedenen Funktionsmoduln bestehen, die nacheinander ausgeführt werden. Durch die Auswahl der Funktionsmodule kann somit das Verhalten des Feldgerätes festgelegt, d. h. gesteuert werden. Diese Funktionsmodule können von einem Benutzer ausgewählt und in den Programmablauf eingefügt werden. Zudem kann der Benutzer bspw. den Programmablauf ändern, indem er die Reihenfolge der Funktionsmodule ändert oder neue Funktionsmodule einschließt oder andere entfernt. Der Programmablauf ist also von den Funktionsmodulen abhängig. Bei der Ausführung des Programms bspw. zur Berechnung von Messwerten wird der Programmablauf zyklisch wiederholt – solange keine Änderungen am Programmablauf vorgenommen werden. Üblicherweise sind mehrere Funktionsmodule in einem Feldgerät hinterlegt oder können von dem Feldgerät geladen werden. Ein Benutzer kann also Funktionsmodule auswählen, so dass diese bei der Ausführung des Programms verwendet werden.
-
Die Funktionsmodule weisen zu ihrer Identifizierung einen Identifikationswert wie bspw. eine Identifikationsnummer bzw. -zahlen und/oder Buchstaben auf. Anhand dieser Identifikationswerte können bspw. die zu verwendenden Funktionsmodule in den Programmablauf integriert und/oder der erste Prüfwert berechnet werden. Dieser erste Prüfwert gibt an, ob das Programm bzw. der Programmablauf wie bspw. die Reihenfolge der auszuführenden Funktionsmodule korrekt ausgeführt wurde.
-
Durch die vorliegende Erfindung wird vorgeschlagen, nur den Prüfwert, des aktuell vorliegenden Programmablaufs, d. h. der verwendeten Funktionsmodule und deren Reihenfolge als Prüfwert zu hinterlegen, und die Überwachung der nachfolgenden Programmabläufe anhand diese ersten Prüfwerts vorzunehmen. Dadurch kann der Speicherbedarf reduziert werden. Zudem ergibt sich dadurch auch eine Optimierung der Überwachung des Programmablaufs. Durch diese Optimierung ergibt sich eine Zeitersparnis, da nicht mehr -wie aus dem Stand der Technik bekannt- eine ganze Tabelle durchsucht werden muss, sondern direkt nur mit dem hinterlegten ersten Prüfwert verglichen werden kann. Als Ergebnis des Vergleichs kann ein Wahrheitswert ermittelt werden, der bspw. „true” lautet, falls die beiden Prüfwerte gleich und „false” lautet, wenn die beiden Prüfwerte verschieden sind.
-
Wird also ein neuer Programmablauf festgelegt, so wird anhand der Identifikationswerte der in dem Programmablauf vorgesehenen Funktionsmodule ein erster Prüfwert berechnet. Dieser erste Prüfwert wird dann für die nachfolgenden Programmabläufe als Vergleichswert zur Überwachung des Programmablaufs genutzt. Die Überwachung gewährleistet eine korrekte Ausführung des festgelegten neuen Programmablaufs. Der Prüfwert eines auf die Festlegung und die erstmalige, insbesondere vollständige, Ausführung des neuen Programmablaufs nachfolgende Durchführung des neuen Programmablaufs, d. h. der zweite Prüfwert, kann dazu als Vergleichswert verwendet werden.
-
In einer Ausgestaltung des Verfahrens werden zur Berechnung des ersten Prüfwerts, die Funktionsmodule entsprechend dem vorgegebenen neuen Programmablauf ausgeführt und mittels der Identifikationswerte der verwendeten Funktionsmodule der erste Prüfwert berechnet. Insbesondere bietet sich die Berechnung einer Prüfsumme aus den Identifikationswerten an, falls es sich bei den Identifikationswerten um Identifikationsnummern handelt. Als Prüfalgorithmus kann bspw. eine redundante zyklische Prüfsumme verwendet werden.
-
In einer weiteren Ausgestaltung des Verfahrens werden der erste Prüfwert und der zweite Prüfwert anhand desselben Prüfalgorithmus berechnet.
-
In einer weiteren Ausgestaltung des Verfahrens wird der dem neuen Programmablauf zugehörige erste Prüfwert in einer Lernphase ermittelt, wobei die Lernphase im Wesentlichen dem erstmaligen, insbesondere vollständigen, Ausführen des neuen Programmablaufs entspricht In dieser Lernphase kann der erste Prüfwert des neuen Programmablaufs berechnet werden. Dies kann insbesondere während des erstmaligen Ausführens des neuen, d. h. insbesondere geänderten, Programmablaufs, geschehen. Dabei kann es vorgesehen sein, dass die Funktionsmodule entsprechend dem neuen Programmablauf aufgerufen und abgearbeitet werden. Die Funktionsmodule können sich dabei mit ihrem Identifikationswert bei einer Programmablaufkontrolle melden, d. h. die Identifikationswerte werden der Programmablaufkontrolle mitgeteilt. In der Folge kann aus den Identifikationswerten der verwendeten Funktionsmodule und/oder deren Reihenfolge der erste Prüfwert berechnet werden. Die Funktionsmodule des Programms können also selbst bei einer Änderung des Programmablaufs ausgeführt werden, ohne dass bspw. die Messwertberechnung unterbrochen werden muss, um einen neuen Prüfwert zu berechnen. Der so berechnete erste Prüfwert kann dann bspw. in einer Speichereinheit hinterlegt werden.
-
Nachdem der erste Prüfwert berechnet wurde, kann die Lernphase verlassen werden und in einer nachfolgenden Ausführung des Programmablaufs ein zweiter Prüfwert berechnet werden, welcher zweite Prüfwert mit dem ersten Prüfwert zur Überwachung des Programmablaufs verglichen wird.
-
In einer weiteren Ausgestaltung des Verfahrens wird eine Konfiguration des Programms, insbesondere die Bestimmung eines neuen Programmablaufs, vor, während und/oder nach der Inbetriebnahme des Feldgerätes durchgeführt.
-
In einer weiteren Ausgestaltung des Verfahrens wird der neue Programmablauf festgelegt, indem eine neue Reihenfolge von mehreren möglichen. Reihenfolgen der Funktionsmodule festgelegt wird und/oder indem ein neues Funktionsmodul in den Programmablauf aufgenommen wird bzw. ein Funktionsmodul aus dem Programmablauf ausgeschlossen wird.
-
In einer weiteren Ausgestaltung des Verfahrens ist eine Programmablaufkontrolle vorgesehen, die parallel zum Programm ausgeführt wird, und sowohl den ersten als auch den zweiten Prüfwert berechnet. Die Programmablaufkontrolle kann bspw. aus den Identifikationswerten der Funktionsmodule die Prüfwerte berechnen. Dafür werden der Programmablaufkontrolle die erwähnten Identifikationswerte der Funktionsmodule mitgeteilt. Die Ausführung der Programmablaufkontrolle kann dabei synchron oder asynchron zu dem Programm von einer Rechnereinheit erfolgen.
-
In einer weiteren Ausgestaltung des Verfahrens werden der erste und/oder der zweite Prüfwert aus den Identifikationswerten der in einem Zyklus verwendeten Funktionsmodule gebildet, wobei ein Zyklus anhand der Identifikationsnummer eines vorgegebenen Funktionsmoduls bestimmt wird. Ein vollständiger Programmablauf besteht aus der insbesondere sequentiellen Ausführung der einzelnen Funktionsmodule.
-
Hinsichtlich des Computerprogrammprodukts wird die Aufgabe dadurch gelöst, dass Programmcodemittel vorgesehen sind, die auf einem Datenträger gespeichert sind, um alle Schritte des Verfahrens nach einem der vorherigen Ansprüche auszuführen, wenn das Computerprogrammprodukt auf einer Rechnereinheit ausgeführt wird.
-
Die Erfindung wird anhand der nachfolgenden Zeichnungen näher erläutert. Es zeigt:
-
1: eine schematische Darstellung eines Programmablaufs und die Änderung des Programmablaufs bei der Festlegung eines neuen Programmablaufs,
-
2: eine schematische Darstellung des Programmablaufs eines Programms zum Betreiben eines Feldgeräts und den Ablauf einer Prozessablaufkotrolle.
-
1 zeigt eine schematische Darstellung eines Programmablaufs eines Programms zum Betreiben eines Feldgerätes.
-
Ein Programmablauf ist definiert durch die sequentielle Abfolge von Funktionsmodulen M1 bis M4. Diese Funktionsmodule melden sich am Ende Ihrer Abarbeitung bei der logischen Programmlaufkontrolle LPK mit ihren IDs. Im normalen Modus wird immer zum Zeitpunkt des Auftauchens des ersten Identifikationswerts von M1 (hier: ID0) der Prüfsummenwert mit dem gespeicherten Erwartungswert verglichen, der zuvor ermittelt wurde. ID0 fungiert hier als StartID, mit der ein Zyklus eines Programmablaufs beginnt.
-
Zum Zeitpunkt t0 wird das Programm um das Funktionsmodul M5 ergänzt, d. h. der Programmablauf ändert sich entsprechend. Zum gleichen Zeitpunkt wird der interne Modus der logischen Programmablaufkontrolle von „Normalmodus” in den „Lernmodus” umgeschaltet. Der in 1 dargestellte Schalter wird dann auf die Position „neuen Erwartungswert berechnen” gebracht. Gleichzeitig wird die Berechnung des Prüfwertes an dieser Stelle ausgesetzt. Zum Zeitpunkt t1 wird die StartID erkannt. Von diesem Zeitpunkt an wird der Erwartungswert anhand der im Folgenden eingehenden IDs berechnet. Die Berechnung endet sobald wieder die StartID eingeht. Dieser Zustand ist im Diagramm zum Zeitpunkt t2 erreicht. Zu diesem Zeitpunkt wird
- – der neue Erwartungswert intern in der LPK gespeichert
- – die Berechung des Prüfwertes wieder aktiviert.
- – der Vergleich von Prüfwert und Erwartungswert bei Eingang der StartID aktiviert.
-
Die Umkonfigurierung des Ablaufs erfolgt komplett zum Zeitpunkt t0 und ist auch von diesem Zeitpunkt an aktiv. D. h. hier können die Module M1 bis M4 auch anders angeordnet werden. Die einzige Vorraussetzung für das Funktionieren der Methode ist das Vorhandensein der definierten StartID.
-
Von Vorteil ist dabei die automatische Kalibrierung der LPK ohne Konfigurationsphase, d. h. der neue Programmablauf wird sofort in der Arbeitsphase übernommen. Die LPK lernt selbstständig den neuen Programmablauf. Der Erwartungswert wird innerhalb der Arbeitsphase im nächsten Makrozyklus ermittelt nachdem eine Änderung am Makrozyklus vorgenommen wurde. Eine StartID wird als interner Trigger für die Neukalibrierung der LPK verwendet. Die Neukalibrierung wird automatisch wieder beendet und der Normalbetrieb wieder aufgenommen
-
Es ist nur eine korrekte Programmausführung zu einer gegebenen Parametrierung möglich, d. h. es existiert lediglich ein korrekter Erwartungswert für das Ergebnis der Prüfsummenberechnung. Dieser Erwartungswert wird aber nicht für alle korrekten Programmabläufe im Code hinterlegt, sondern wird durch die Firmware nach einer Umparametrierung automatisch berechnet und als neuer Vergleichswert gespeichert. Diese neue Berechnung erfolgt, indem in der Programmablaufkontrolle auf einen definierten Startwert innerhalb der IDs getriggert wird. In der Folge wird dann der Programmablauf sozusagen eingelesen. D. h. auch hier wird ein neuer Prüfwert errechnet, der in der Folge als neuer Erwartungswert abgespeichert wird. Endkriterium für die Neuberechnung des neuen Erwartungswertes ist dann das erneute auftauchen des definierten Startwertes in der Programmablaufkontrolle. Die Firmware kann durch die vorliegende Erfindung flexibel auf die verschiedenen Variationen reagieren.
-
Anhand des Verfahrens kann also der logische und/oder zeitliche Programmablauf von kritischen Funktionen im Programm eines Feldgerätes der Prozess- und Automatisierungstechnik anhand bspw. einer CRC-Prüfsummenberechnung überwacht werden. Dafür müssen keine Tabellen hinterlegt werden. Die Programmablaufkontrolle kann einen bestimmten Ablauf lernen.
-
2 zeigt das Zusammenspiel von Programmablaufkontrolle und Programmablauf. In Feldgeräten, die nach IEC 61508 entwickelt werden, ist für die Erlangung von SIL 2 bzw. SIL 3 eine zeitliche und logische Programmablaufkontrolle zu implementieren. Die üblichen Implementierungen verwenden dabei Tabellen, in welchen der Programmablauf gespeichert wurde. Die Programmablaufkontrolle muss dann jedes Mal, wenn sich eine Funktion meldet überprüfen, ob sowohl der zeitliche als auch der logische Programmablauf noch gegeben ist.
-
In der in 2 gezeigten Ausgestaltung der Erfindung melden sich die Funktionen, sobald diese ausgeführt werden, auch mit einer ID bei der Ablaufkontrolle an. Dabei wird mit den IDs eine CRC-Prüfsummenberechnung angestoßen. D. h. es muss lediglich eine CRC-Prüfsumme in der Programmablaufkontrolle zwischengespeichert werden. Am Ende des Programmablaufs kann die während des Programmablaufs berechnete Prüfsumme mit einer zuvor gespeicherten Prüfsumme verglichen werden und eine Aussage darüber getroffen werden, ob der Programmablauf in Ordnung war. Für den Fall einer Embedded Software kann dann z. B. in diesem Fall ein Watchdog der den Programmablauf überwacht getriggert werden. Sollte der Vergleich der Prüfsummen fehlschlagen, dann wird der Watchdog nicht getriggert und es wird anschließend ein Watchdogreset durchgeführt.
-
Die zwischengespeicherte „Soll”-Prüfsumme muss nach einer Konfigurationsänderung, d. h. Änderung des Programmablaufs, neu berechnet werden. Dazu ist es notwendig, dass eine definierte StartID im Ablauf vorkommt. Diese kann bspw. von einem Benutzer festgelegt oder anderweitig vorgegeben sein bzw. eingestellt werden. Nach einer Konfigurationsänderung, die einen Einfluss auf den logischen Programmablauf hat, wird in der Programmablaufkontrolle ein Flag gesetzt, welches anzeigt, dass die Programmablaufkontrolle im Lernmodus ist. In diesem Zustand wartet die Programmablaufkontrolle solange, bis sich das Funktionsmodul mit der StartID meldet. Anschließend werden über alle FunktionsIDs, die sich bei der Ablaufkontrolle melden die CRC-Prüfsumme berechnet. Die Prüfsumme, die sich nach dem letzten Funktionsmodul errechnet (erkennbar am erneuten Auftreten der StartID in der LPK) wird dann in der Programmablaufkontrolle gespeichert und dient im Folgenden für den Vergleich der im Betrieb ermittelten Prüfsummen. Sobald das Modul mit der StartID sich wieder bei der LPK meldet, ist der Lernzyklus abgeschlossen und die LPK geht wieder in den normalen Überwachungsmodus.
-
Bezugszeichenliste
-
-
- M1
- Erster Funktionsblock
- M2
- Zweiter Funktionsblock
- M3
- Dritter Funktionsblock
- M4
- Vierter Funktionsblock
- M5
- Fünfter Funktionsblock
- ID1
- Erster Identifikationswert
- ID2
- Zweiter Identifikationswert
- ID3
- Dritter Identifikationswert
- ID4
- Vierter Identifikationswert
- ID5
- Fünfter Identifikationswert
- t
- Zeit
- t0
- Programmablauf wird geändert
- t1
- ID0 wird erkannt
- t2
- Ende der Prüfwertberechnung
- ENV
- Programm („Environment”)
- LPK
- Logische Prozessablaufkontrolle
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- EP 1043641 A2 [0008]
- DE 102007015369 A1 [0008, 0009]
- DE 102007062920 A1 [0009]
-
Zitierte Nicht-Patentliteratur
-
- IEC/DIN EN 61508 [0004]
- IEC/DIN EN 61511 [0004]
- „Wirksamkeit von zeitlichen und Logischen Programmablaufüberwachungen beim Betrieb von Rechnersystemen” von H. Gall, K. Kemp [0007]
- IEC 61508 [0035]