Beschreibung
Vorrichtung und Verfahren zum Steuern einer Maschine mit codiertem und nicht codiertem Programmcode
Die vorliegende Erfindung betrifft eine Vorrichtung zum Steuern einer Maschine mit einer ersten Steuereinrichtung, mit der ein erster Programmcode zum Steuern verarbeitbar ist, einer parallelen zweiten Steuereinrichtung, mit der ein zweiter Programmcode zum Steuern verarbeitbar ist, und einer Synchronisationseinrichtung zum Synchronisieren der ersten Steuereinrichtung mit der zweiten Steuereinrichtung. Darüber hinaus betrifft die vorliegende Erfindung ein entsprechendes Verfahren zum Steuern einer Maschine.
Im Automatisierungsumfeld werden verstärkt hochverfügbare Lösungen gefordert, die eventuell auftretende Stillstandzeiten der Anlage auf ein Minimum reduzieren. Die Entwicklung derartiger hochverfügbarer Lösungen ist sehr kostenintensiv. FIG 1 zeigt den grundlegenden Aufbau eines hochverfügbaren Automatisierungssystems .
Ein im Automatisierungsumfeld übliches hochverfügbares Automatisierungssystem zeichnet sich durch folgende grundlegenden Merkmale aus. Zwei oder mehr Rechnersysteme 1, 2 (nachfolgend auch Steuereinrichtungen, Teilsysteme oder einfach Systeme genannt) sind über eine Synchronisationsverbindung miteinander gekoppelt. Die beiden Rechnersysteme 1, 2 dienen zur Regelung bzw. Steuerung von Peripherieeinheiten. Die Peripherieeinheiten 4, 5 sind hier über ein Bussystem 6 an die Rechnersysteme 1, 2 angeschlossen.
Die von den Rechnersystemen 1, 2 gesteuerten Peripherieeinheiten 4, 5 können prinzipiell von beiden Teilsystemen 1, 2 bedient werden. Eines der beiden Teilsysteme 1, 2 ist jedoch bezüglich der an das Gesamtrechnersystem angeschlossenen Peripherie oder eines Teils davon führend. D.h. dieses führende Rechnersystem stellt den so genannten „Master" dar. Dies wie-
derum bedeutet, dass Ausgaben nur von einem der beiden Teilsysteme durchgeführt werden, im vorliegenden Fall das Rechnersystem 1. Dies ist in FIG 1 durch eine durchgezogene Linie symbolisiert, die das Rechnersystem 1 mit dem Bus 6 verbin- det .
Das zweite Rechnersystem 2 ist bezüglich der Peripherieanbin- dung passiv und stellt das so genannte „Standby-System" dar. Es setzt im Regelfall keine Ausgaben an den Bus 6 ab. Wenn allerdings das führende Rechnersystem 1 ausfällt, übernimmt das zweite Rechnersystem 2 die Steuerung und generiert die entsprechenden Ausgaben an die Peripherieeinheiten 4, 5.
Damit beide Teilsysteme 1, 2 synchron ablaufen können, müssen sie über eine Synchronisationsverbindung 3 in regelmäßigen
Abständen synchronisiert werden. Bezüglich der Häufigkeit der Synchronisation und deren Umfang können verschiedene Ausprägungen unterschieden werden (Warm-Standby, Hot-Standby) . Um bei der Umschaltung im Fehlerfall das fehlerbehaftete System eindeutig zu identifizieren, ist eine entsprechende Systemdiagnose vorzusehen.
Der Aufwand für die Umsetzung eines derartigen Systems ist relativ hoch. Dies liegt nicht zuletzt an den aufwendigen Di- agnoseverfahren, welche zur Umsetzung eines hochverfügbaren Automatisierungssystems erforderlich sind. Besonders aufwendig ist dabei der Umstieg auf eine neue Systemplattform, da in diesem Fall die Systemdiagnose üblicherweise neu entwickelt werden muss.
Da in den bislang bekannten, hochverfügbaren Systemen keine plattformunabhängigen Diagnosekonzepte existieren, besteht die Lösung im Wesentlichen in einer Neuentwicklung der Diagnoseverfahren für die neue Systemplattform.
Aus dem Artikel von Forin, P.: „Vital coded microprocessor principles and application for various transit Systems" in Perrin, J. P.: Control, Computers, Communications in
Transportation; Selected Papers from the IFAC/IFIP/IFORS Symposium, Pergamon, Oxford UK, 1990, Seiten 79 bis 84, ist ein fehlersicheres Systems bekannt. Es besteht aus fehlersicheren Eingangsbaugruppen, die die Eingangssignale codieren. Außer- dem besteht es aus einer Standard-CPU (Coded Microprocessor) , die aus dem codierten Eingangssignalen durch codierte Operationen, codierte Zustands- und Ausgangssignale berechnet. Aus den codierten Ausgangssignalen wird eine Signatur berechnet. Das fehlersichere System verfügt ferner über einen fehlersi- cheren Dynamikcontroller, der die von der Standard-CPU berechnete Signatur überprüft und im Fehlerfall die Ausgangsbaugruppen abschaltet. Bei der Codierung werden verschiedene Verfahren kombiniert, nämlich arithmetische Codierung und Signaturverfahren .
Darüber hinaus beschreibt die Druckschrift DE 102 19 501 B4 ein System und Verfahren zur Verbesserung von Fehlerbeherrschungsmaßnahmen, insbesondere bei Automatisierungssystemen. Ein derartiges Automatisierungssystem besteht aus wenigstens einer Standard-CPU-Baugruppe mit integrierter Software, wenigstens einer fehlersicheren Peripheriebaugruppe und wenigstens einem Kommunikationskanal zur Kommunikation zwischen der Standard-CPU-Baugruppe und der fehlersicheren Peripheriebaugruppe. Die Software der Standard-CPU-Baugruppe besteht aus Betriebssystem und Anwenderprogramm. Bei der Überprüfung auf Fehler in sicherheitskritischen Daten bzw. bei der Überprüfung auf Fehler bei der Verarbeitung von sicherheitskritischen Daten innerhalb der Standard-CPU-Baugruppe wird eine Kombination aus diversitärer und kodierter Verarbeitung von Daten und/oder Operatoren verwendet.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein plattformunabhängiges Diagnosekonzept für hochverfügbare Automatisierungssysteme zu schaffen und eine entsprechende Vor- richtung sowie ein entsprechendes Verfahren vorzuschlagen.
Erfindungsgemäß wird diese Aufgabe gelöst durch eine Vorrichtung zum Steuern einer Maschine mit einer ersten Steuerein-
richtung, mit der ein erster Programmcode zum Steuern verarbeitbar ist, einer parallelen zweiten Steuereinrichtung, mit der ein zweiter Programmcode zum Steuern verarbeitbar ist, und einer Synchronisationseinrichtung zum Synchronisieren der ersten Steuereinrichtung mit der zweiten Steuereinrichtung, wobei der erste Programmcode ein codierter Programmcode ist, bei dem Arbeitsanweisungen und/oder Datenstrukturen gegenüber einem zugrunde liegenden Quellcode codiert sind, der zweite Programmcode ein nicht codierter Programmcode ist, bei dem Arbeitsanweisungen und/oder Datenstrukturen gegenüber dem Quellcode nicht codiert sind, und die Synchronisationseinrichtung eine Codiereinrichtung aufweist, um Daten, die bei der Synchronisation kommuniziert werden, entsprechend der Codierung des ersten Programmcodes in Abhängigkeit von der Kommunikationsrichtung zu codieren oder zu decodieren.
Darüber hinaus wird erfindungsgemäß bereitgestellt ein Verfahren zum Steuern einer Maschine durch Verarbeiten eines ersten Programmcodes zum Steuern mit einer ersten Steuereinrichtung, Verarbeiten eines zweiten Programmcodes zum Steuern mit einer parallelen zweiten Steuereinrichtung, Synchronisieren der ersten Steuereinrichtung mit der zweiten Steuereinrichtung, wobei der erste Programmcode ein codierter Programmcode ist, bei dem Arbeitsanweisungen und/oder Datenstrukturen gegenüber einem zugrunde liegenden Quellcode codiert sind, der zweite Programmcode ein nicht codierter Programmcode ist, bei dem Arbeitsanweisungen und/oder Datenstrukturen gegenüber dem zugrunde liegenden Quellcode nicht codiert sind, und die bei dem Synchronisieren zwischen den Steuereinrichtungen kommunizierten Daten entsprechend der Codierung des ersten Programmcodes abhängig von der Kommunikationsrichtung codiert oder decodiert werden.
In vorteilhafter Weise ist es durch die Codierung in einer der Steuereinrichtungen, d. h. in einem der Systeme bzw.
Rechnersysteme möglich, eine plattformunabhängige Fehlerdiagnose durchzuführen. In der anderen der beiden Steuereinrichtungen bzw. in dem anderen der beiden Systeme erfolgt hinge-
gen eine uncodierte Verarbeitung, wodurch beispielsweise in diesem parallelen System ( Stand-by-System) ein Debugging möglich ist.
Optional ist die erste Steuereinrichtung an eine erste Compilereinrichtung, mit der ein Quellcode in den kodierten ersten Programmcode übersetzbar ist, und die zweite Steuereinrichtung an eine zweite Compilereinrichtung, mit der der Quellcode in den nicht codierten zweiten Programmcode übersetzbar ist, angeschlossen. Damit muss das Gesamtsystem nur mit dem zugrunde liegenden Quellcode gespeist werden, und es kann daraus systemintern sowohl der codierte Programmcode als auch der nicht codierte Programmcode erzeugt werden.
Die erste Steuereinrichtung kann eine Fehlererkennungseinrichtung aufweisen, mit der beim Verarbeiten des codierten ersten Programmcodes anhand der Codierung ein Fehler erkennbar ist. Somit kann in der ersten Steuereinrichtung, die in der Regel als führendes System eingesetzt wird, eine zuverlässige, rechnerbasierte Fehlerdiagnose stattfinden. Dafür ist eine Steuereinrichtung mit hoher Rechenleistung notwendig. Die zweite Steuereinrichtung hingegen kann ohne die Fehlererkennungseinrichtung genutzt werden, da sie als Standby- System im normalen Betriebsfall nur parallel zu dem Master- System läuft und nur im Fehlerfall des Systems in der Regel kurzfristig eingesetzt wird. Die zweite Steuereinrichtung, die ohne codierte Verarbeitung läuft, kann eine entsprechend geringere Rechenleistung aufweisen. Sie ist damit entsprechend günstiger zu realisieren.
Wie bereits angedeutet wurde, kann das Gesamtsystem eine De- bug-Einrichtung aufweisen, bzw. in der Erstellungsphase des Steuerprogramms an einen Debugger angeschlossen werden. Dies ist deswegen problemlos möglich, da in der zweiten Steuereinrichtung eine uncodierte Verarbeitung stattfindet. Der Debugger könnte nicht an die erste Steuereinrichtung angeschlossen werden, in der eine codierte Verarbeitung läuft. Da die beiden Steuereinrichtungen miteinander synchronisiert sind, kann
also über die zweite Steuereinrichtung indirekt ein Debugging der ersten Steuereinrichtung, die ja codiert verarbeitet, stattfinden. Das erfindungsgemäße System besitzt also den doppelten Vorteil, dass zum einen in der Steuereinrichtung mit codierter Verarbeitung eine zuverlässige, automatisierte Fehlererkennung und in der zweiten Einrichtung, in der nicht codiert verarbeitet wird, ein systemübergreifendes Debugging stattfinden kann. Die vorliegende Erfindung ist anhand der beigefügten Zeichnungen näher erläutert, in denen zeigen:
FIG 1 den grundlegenden Aufbau eines hochverfügbaren Systems gemäß dem Stand der Technik und
FIG 2 die Architektur eines hochverfügbaren Systems mit codierter Verarbeitung gemäß der vorliegenden Erfindung . Die nachfolgend näher geschilderten Ausführungsbeispiele stellen bevorzugte Ausführungsformen der vorliegenden Erfindung dar.
Das hochverfügbare System gemäß der vorliegenden Erfindung ist in FIG 2 der Übersicht halber ohne etwaige Peripherieeinheiten bzw. Kommunikationskanäle (z. B. Bus) zwischen Rechnersystemen und Peripherieeinheiten dargestellt. Es sind in FIG 2 im Wesentlichen nur die zwei Rechnersysteme 1 und 2 (hier auch Steuereinrichtungen 1 und 2 bzw. Systeme A und B genannt) dargestellt. Die erste Steuereinrichtung 1 vollführt eine codierte Verarbeitung. Sie besitzt einen entsprechenden codierten Programmcode 7. Beispielsweise handelt es sich um einen codierten Binärcode. Die zweite Steuereinrichtung 2 besitzt hingegen einen nicht codierten Code, z. B. einen Stan- dardprogrammcode 8. Basis für die Programmcodes ist ein
Quellcode 9. Dieser Quellcode 9 wird zum einen mithilfe eines „coded Compiler" 10 in den codierten Programmcode 7 übersetzt. Der gleiche Quellcode 9 wird mit einem Standardcompi-
ler 11 bzw. einem systemspezifischen Compiler in den Standard-Programmcode 8 bzw. einem systemspezifischen Programmcode übersetzt. Zur Realisierung eines hochverfügbaren Automatisierungssystems ist wie in dem Beispiel von FIG 1 eine Synchronisation zwischen den beiden Steuereinrichtungen 1 und 2 (d. h. zwischen den Systemen A und B notwendig) . Dazu ist wie in dem Automatisierungssystem von FIG 1 auch eine Synchronisations- Verbindung 3 vorgesehen, mit der ein bidirektionaler Datenaustausch möglich ist. Da jedoch im vorliegenden Fall ein Datenaustausch zwischen den Steuereinrichtungen 1 und 2 nicht ohne Weiteres möglich ist, da die erste Steuereinrichtung 1 eine codierte Verarbeitung und die zweite Steuereinrichtung 2 eine nicht codierte Verarbeitung vollzieht, ist für die Synchronisation beider Einheiten in der Synchronisationsverbindung 3 eine Codierer/Decodierer-Einheit 12 vorgesehen.
Schickt also der Master (Steuereinrichtung 1) zum Zwecke der Synchronisation Daten an das Standby-System ( Steuereinrich- tung 2), so müssen seine codierten Daten für das Standby- System decodiert werden. Umgekehrt, wenn das Standby-System 2 an den Master 1 Daten zurücksendet bzw. beispielsweise eine Anfrage macht, so sind die entsprechenden Daten zu codieren, denn in dem einfachen Standby-System 2 werden die Daten unco- diert erstellt bzw. verarbeitet.
Dieses uncodierte Verarbeiten der Daten in der zweiten Steuereinrichtung 2 hat den zusätzlichen Vorteil, dass ein Debugger 13 an die zweite Steuereinrichtung 2 zum Zwecke der Sys- temanalyse beim Erstellen des Programms angeschlossen werden kann. Der Debugger 13 kann dann zwar nur die zweite Steuereinrichtung analysieren, da aber diese aufgrund der Synchronisation im Wesentlichen den gleichen Zustand besitzt wie die erste Steuereinrichtung, kann somit auch indirekt auf den Zu- stand der ersten Steuereinrichtung 1 geschlossen werden.
Zusammenfassend zeigt FIG 2 also ein Automatisierungssystem, bei dem eine plattformunabhängige Diagnosestrategie möglich
ist. Insbesondere ermöglicht die codierte Verarbeitung, wie erwähnt, in der einen Steuervorrichtung eine automatische Fehlerdiagnose, und die andere Steuereinrichtung, die in der Regel als Standby-System genutzt wird, kann ohne automatische Fehlerdiagnose einfach ausgelegt sein. Bei dem Gesamtsystem kann es sich, wie ebenfalls bereits erwähnt wurde, um ein Hot-Standby oder ein arm-Standby-System handeln.
Nachfolgend wird die Funktion dieses hochverfügbaren Automatisierungssystems konkreter erläutert. Die beiden Steuereinrichtungen 1, 2 arbeiten das logisch identische Anwenderprogramm (Quellcode 9) ab. Dabei arbeitet eines der beiden Teilsysteme (in FIG 2 die Steuereinrichtung 1) in einer in geeigneter Weise codierten Form. Die zweite Steuereinrichtung 2 arbeitet in uncodierter Arbeitsweise. Eine mögliche codierte Arbeitsweise kann das so genannte „coded processing" gemäß dem eingangs erwähnten Artikel von Forin sein, bei der ein Rechnersystem nicht die ursprünglichen Anweisungen ausführt, sondern codierte Anweisungen bzw. Datenstrukturen bearbeitet. Der Zweck der codierten Verarbeitung liegt in der dadurch auf dem System A bzw. auf der Steuereinrichtung 1 möglichen Fehlererkennung. Die auf der Basis der Codierung realisierbare Fehlererkennung ist plattformunabhängig und kann damit leicht portiert werden. Die Erzeugung des codierten Programms geschieht durch einen speziellen Compiler 10. Als Quelle für den codierten Programmcode 7 sowie den Standard-Programmcode 8 dient, wie erwähnt, der identische Quellcode 9.
Beide Teilsysteme 1, 2 werden über einen Codierer bzw. Deco- dierer 12 synchronisiert. Aufgrund der Tatsache, dass beide Teilsysteme 1, 2 das Anwenderprogramm auf unterschiedliche Art und Weise verarbeiten, muss diese Synchronisation über einen geeigneten Übersetzer erfolgen, der die unterschiedlichen Datenstrukturen ineinander umwandelt. Die Synchronisation des codierten mit dem uncodierten Programm ist prinzipiell möglich, da zu jeder codierten Anweisung auch eine uncodierte Anweisung existiert.
Der für die Synchronisation erforderliche Codierer/Decodierer 12 kann auf der technischen Umsetzung des Compilers 10 für das codierte Teilsystem (hier System A bzw. Steuereinrichtung 1) aufsetzen. Die Übersetzung der Datenstrukturen in codierte Form erfolgt bei der Synchronisation zur Laufzeit (also online), während sie beim Compilerlauf offline abgearbeitet wird. In vorteilhafter Weise wird so ein codiert arbeitendes System mit einem uncodiert arbeitenden System zu einem hochverfügbaren System kombiniert. Dadurch wird zum einen eine plattformunabhängige Diagnose ermöglicht, die keine speziellen Hardware-Anforderungen beinhaltet. Zum anderen wird aber auch ein anderes grundlegendes Problem gelöst, das einen Einsatz codierter Verarbeitung in bekannten Systemen erheblich erschwert. Das codiert ablaufende Anwenderprogramm 7 ist für den Anwender nämlich nicht zu debuggen, da sämtliche Daten und Befehle in codierter Form vorliegen. In dem erfindungsgemäßen, hochverfügbaren System wird dieses Problem umgangen, indem für das Debuggen das Teilsystem (Steuereinrichtung 2) verwendet wird, welches den uncodierten Code abarbeitet (System B) . Da beide Teilsysteme synchron laufen, ist dadurch eine Fehlersuche im Anwenderprogramm möglich, ohne die codierte Verarbeitung aufgeben zu müssen.
Bezugs zeichenliste
1, 2 Steuereinrichtungen
3 SynchronisationsVerbindung
4, 5 Peripherieeinheiten
6 Bussystem
7 codierter Programmcode
8 Standardprogrammcode
9 Quellcode
10 codierender Compiler
11 Standardcompiler
12 Codierer/Decodierer-Einheit 13 Debugger