-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung bezieht sich allgemein auf Funktionsblöcke zur Nutzung in Prozessanlagen und im Besonderen auf die Konfigurierung und Implementierung eines mit einer Prozessanlage verbundenen Zustandsautomaten.
-
ERFINDUNGSHINTERGRUND
-
Prozesssteuerungssysteme, wie sie in der chemischen Industrie, der Petrochemie und anderen Prozessen eingesetzt werden, umfassen typischerweise ein oder mehrere, über analoge, digitale oder kombinierte analog/digitale Busse oder Leitungen kommunikativ mit mindestens einer Host- oder Bediener-Workstation und einer oder mehreren Feldgeräten verbundene Prozesssteuerungsgeräte. Die Feldgeräte, bei denen es sich beispielsweise um Ventile, Ventilsteller, Schalter und Messwertumformer (z.B. Temperatur-, Druck- und Durchflusssensoren) handeln kann, führen Funktionen innerhalb der Prozessanlage aus, wie Öffnen und Schließen von Ventilen und das Messen von Prozessparametern. Die Prozesssteuerungsgeräte empfangen Signale von Prozessmessungen, die von den Feldgeräten vorgenommen wurden, und/oder andere, den Feldgeräten zugehörige Informationen, nutzen diese Information, um Steuerungsroutinen zu implementieren und erzeugen dann Steuerungssignale, die über die Busse oder Leitungen an die Feldgeräte abgesetzt werden, um den Prozessbetrieb zu steuern. Information von den Feldgeräten und den Steuerungsgeräten wird typischerweise einer oder mehreren Applikationen zur Verfügung gestellt, die von der Bediener-Workstation ausgeführt werden, um einem Bediener die Ausführung jeder gewünschten Funktion in Bezug auf den Prozess zu ermöglichen, wie beispielsweise die Konfigurierung des Prozesses, die Anzeige des aktuellen Prozesszustands, die Änderung des Prozessbetriebs etc.
-
Darüber hinaus ist in vielen Prozessen ein separates Sicherheitssystem bereitgestellt, um bedeutende sicherheitsrelevante Probleme innerhalb der Prozessanlage zu detektieren, und um automatisch Ventile zu schließen, die Energiezufuhr zu Vorrichtungen zu unterbrechen, Ströme innerhalb der Anlage zu steuern etc., wenn ein Problem auftritt, das ernsthafte Schäden an der Anlage verursachen oder solche nach sich ziehen könnte, etwa ein Austreten toxischer Chemikalien, eine Explosion etc. Diese Sicherheitssysteme verfügen typischerweise über ein oder mehrere, von den normalen Steuerungsgeräten für die Prozesssteuerung getrennte Steuerungsgeräte, die als Logiksolver bezeichnet werden, und die über separate Busse oder Kommunikationsleitungen mit innerhalb der Anlage installierten Sicherheitsfeldgeräten verbunden sind. Die Logiksolver nutzen die Sicherheitsfeldgeräte, um Prozessbedingungen zu detektieren, die mit signifikanten Ereignissen wie z.B. der Position bestimmter Sicherheitsschalter oder Absperrventile, Über- oder Unterschreitung bestimmter Prozessgrößen, der Funktionsweise wichtiger Energieversorgungs- oder Steuerungseinrichtungen, der Funktion von Vorrichtungen zur Detektierung von Fehlersituationen etc. verbunden sind, um „Ereignisse“ innerhalb der Prozessanlage zu detektieren. Wenn ein Ereignis (typischerweise als eine „Ursache“ bezeichnet) detektiert wird, veranlasst das Sicherheitssteuerungsgerät Maßnahmen (typischerweise als „Wirkung“ bezeichnet) zur Begrenzung der schädlichen Auswirkung des Ereignisses, beispielsweise das Schließen von Ventilen, das Abschalten von Geräten, die Unterbrechung der Energiezufuhr zu Teilen der Anlage etc. Ganz allgemein umfassen diese Maßnahmen oder Wirkungen das Steuern von Sicherheitsvorrichtungen in einen abgeschalteten oder „sicheren“ Betriebsmodus, der so gewählt ist, dass eine schwerwiegende oder gefahrenträchtige Bedingung innerhalb der Prozessanlage verhindert wird.
-
Systeme innerhalb einer Prozessanlage, wie z.B. Prozesssteuerungssysteme und Sicherheitssysteme, können typischerweise den Zustand verschiedener Prozesse und/oder der Systeme selbst überwachen. An ein System abgesetzte Eingangssignale können die Änderung des vom System überwachten Zustands auslösen und vom System erzeugte Ausgangssignale können zusätzlich zu den Eingangssignalen zum System vom aktuellen Zustand des Systems abhängen. Gegenwärtig kann der Zustand eines Systems unter Nutzung von in einer Programmiersprache geschriebenen Routinen verfolgt werden. Das Schreiben dieser Routinen kann umständlich, zeitraubend und fehlerträchtig sein. In Sicherheitssystemen können derartige Fehler schwerwiegende Folgen nach sich ziehen, da eine Fehlfunktion des Sicherheitssystems zu schweren Verletzungen oder sogar zum Tod von Anlagenpersonal und möglicherweise zu Schäden in Höhe von mehreren Millionen Dollar bei Ausrüstung und Material an der Anlage führen kann.
-
Der Zustand eines Systems kann auch unter Nutzung einer Programmiertechnik für programmierbare Steuerungsgeräte überwacht werden, die den IEC-Normen entspricht und allgemein als „sequentieller Funktionsplan“ (gemäß der IEC-Norm 61131-3) bezeichnet wird. Wie dem Fachmann jedoch bekannt ist, kann es schwierig sein, einen sequentiellen Funktionsplan zu nutzen, um den Zustand eines Systems zu überwachen. Außerdem kann, wie das Schreiben der Routinen in einer Programmiersprache, das Erzeugen eines sequentiellen Funktionsplans umständlich, zeitraubend und fehlerträchtig sein.
-
Die Druckschrift
WO 1999/09498 A1 offenbart ein computerimplementiertes System und Verfahren zur automatischen Erzeugung von Funktionalität auf Hardwareebene, z.B. programmierbare Hardware oder FPGAs, als Reaktion auf ein von einem Benutzer erstelltes graphisches Programm. Dies ermöglicht dem Benutzer die Entwicklung oder Definition von Gerätefunktionalität unter Verwendung grafischer Programmiertechniken, während das resultierende Programm direkt in der Hardware arbeiten kann.
Die Druckschrift
US 2002/0194218 A1 offenbart ein Verfahren umfassend: die Erzeugung einer Matrixdatenbank mit Daten, die einen Eingangsparameter, eine Ausgangsreaktion und eine Beziehung zwischen dem Eingangsparameter und der Ausgangsreaktion definieren. Die definierenden Daten der Matrixdatenbank werden an eine Matrixfunktionseinheit übertragen, wobei die Matrixfunktionseinheit eine Eingangsparameterfunktionseinheit, eine Ausgangsantwortfunktionseinheit und eine Schnittpunktfunktionseinheit umfasst. Die Eingabeparameter-Funktionseinheit enthält eine vordefinierte, konfigurierbare Logik zur Definition eines bestimmten Eingabeparameters. Die Funktionseinheit für die Ausgangsreaktion umfasst eine vordefinierte, konfigurierbare Logik zum Definieren einer bestimmten Ausgangsreaktion. Die Schnittpunkt-Funktionseinheit enthält eine vordefinierte, konfigurierbare Logik zur Definition der Beziehung zwischen dem Eingangsparameter und der Ausgangsreaktion. Durch die Übertragung der Matrixdatenbank an die Matrixfunktionseinheit werden die vordefinierte Eingangsparameterlogik, die vordefinierte Ausgangsreaktionslogik und die vordefinierte Schnittpunktlogik konfiguriert.
Die Druckschrift
US 5 903 886 A offenbart Analysewerkzeuge, die beim Entwurf der Hardware- und Softwarekomponenten eines integrierten Schaltkreises oder einer gedruckten Schaltung verwendet werden.
Die Druckschrift
DE 199 40 078 A1 offenbart ein System mit einer datenverarbeitenden Vorrichtung für eine Stapelsteuerung, mit: einem Serverprogramm, welches in der datenverarbeitenden Vorrichtung betreibbar ist und in Einklang mit einer ersten Zustandsmaschine zur Verarbeitung eines Stapels (batch) betreibbar ist; einem logischen Phasenmodul, der an das Serverprogramm gekoppelt ist und an die datenverarbeitende Vorrichtung gekoppelt ist und der in Einklang mit einer zweiten Zustandsmaschine betreibbar ist, die im wesentlichen identisch der ersten Zustandsmaschine ist.
-
ZUSAMMENFASSUNG
-
Die vorliegende Erfindung löst die Aufgaben bzw. Nachteile des Stands der Technik mit den Verfahren und dem physikalischen Medium gemäß den unabhängigen Ansprüchen 1, 17 und 33. Vorteilhafte Weiterbildungen sind in den abhängigen angegeben. Ein Steuerungssystem, ein Sicherheitssystem etc. innerhalb einer Prozessanlage kann jeweils einen oder mehrere Zustandsautomaten-Funktionsblöcke nutzen, die in einfacher Weise in eine Programmierumgebung für Funktionsblockdiagramme integriert werden können. Ein derartiger Funktionsblock kann einen oder mehrere Eingänge beinhalten, die genutzt werden können, um einen vom Zustandsautomat-Funktionsblock implementierten Zustandsautomaten zur Veränderung eines Zustands zu veranlassen. Der Zustandsautomat-Funktionsblock kann einen nächsten Zustand bestimmen, in den diese auf Basis von Konfigurierungsdaten für den Zustandsübergang, die den nächsten Zustand, falls vorhanden, anzeigen, übergehen soll. Die Konfigurierungsdaten für den Zustandsübergang können auf Basis des momentanen Zustands des Zustandsautomaten und mindestens einer der Eingänge aus einer Datenbank abgerufen werden. Der Zustandsautomat-Funktionsblock kann außerdem einen oder mehrere Ausgänge beinhalten, die auf Basis des Zustands des Zustandsautomaten erzeugt werden. Die Eingänge des Zustandsautomat-Funktionsblocks können beispielsweise einem Prozesssteuerungssystem oder einem Sicherheitssystem zugeordnet werden, und die Ausgänge können beispielsweise für die Steuerung von Feldgeräten im Prozesssteuerungssystem oder im Sicherheitssystem genutzt werden.
-
Der Zustandsautomat-Funktionsblock kann mindestens teilweise über eine grafische Benutzerführung konfiguriert werden. Die grafische Benutzerführung kann eine Vielzahl von grafischen Elementen umfassen, wobei mindestens einige der grafischen Elemente genutzt werden können, um zu spezifizieren, wie der Übergang des Zustandsautomaten von einem Zustand in einen anderen erfolgen sollte. In einem Ausführungsbeispiel kann eine Vielzahl von Zellen auf dem Bildschirm eines Computers dargestellt werden, wobei jede Zelle der ersten Vielzahl von Zellen einer von mindestens einigen möglichen Paarungen des mindestens einen Eingangs und einigen der Zustände der Vielzahl von Zuständen des Zustandsautomaten entspricht. Die Vielzahl von Zellen kann beispielsweise in einer Matrix angeordnet werden, in der die Spalten der Matrix der Vielzahl von möglichen Zuständen des Zustandsautomaten und die Reihen der Matrix den Eingängen des Zustandsautomaten (oder umgekehrt) entsprechen. In einer Zelle, die einem bestimmten Zustand und einem bestimmten Eingang entspricht, kann ein Programmierer mittels einer Eingabevorrichtung des Computers Konfigurierungsdaten eingeben, die einen nächsten Zustand anzeigen. Diese Konfigurierungsdaten des nächsten Zustands zeigen den nächsten Zustand an, in den der Zustandsautomat übergehen sollte, wenn der Zustandsautomat sich in dem Zustand befindet, der der Zelle entspricht und wenn der der Zelle entsprechende Eingang einen spezifischen Wert annimmt.
-
In einem weiteren Beispiel kann die grafische Nutzerschnittstelle ein Diagramm beinhalten, bei dem Objekte des Diagramms Zustände des Zustandsautomaten repräsentieren. Ein Programmierer kann z.B. einen Pfeil von einem zu einem anderen Zustand einzeichnen und dem Pfeil außerdem einen Eingang zuordnen. Das kann anzeigen, dass der Zustandsautomat von dem einen in den anderen Zustand übergehen sollte, wenn der spezifizierte Eingang um einen spezifischen Wert annimmt.
-
Die Gestaltungen der Zustandsautomat-Funktionsblöcke gemäß den Ansprüchen dieser Anmeldung können im Vergleich zum früheren Stand der Technik für die Überwachung des Zustands eines Steuerungs- oder Sicherheitssystems einfacher konfiguriert werden. So kann beispielsweise ein Teil oder die gesamte Konfigurierung unter Nutzung einer grafischen Benutzerführung wie der vorstehend beschriebenen erfolgen. Weiterhin können Gestaltungen von Zustandsautomat-Funktionsblöcken ohne Schwierigkeit in ein Steuerungsgerät, einen Logiksolver, Feldgeräten etc. integriert werden, die eine Funktionsblocklogik anwenden, da der Zustandsautomat-Funktionsblock auf die gleiche oder eine ähnliche Weise wie andere Funktionsblocktypen integriert werden kann, indem Eingänge und Ausgänge des Zustandsautomat-Funktionsblocks mit anderen Funktionsblöcken, Elementen innerhalb einer Steuerungsstrategie, einer Bedienerschnittstelle etc. verbunden werden. Die Arbeitsweise der Zustandsautomat-Funktion kann außerdem einfach dokumentiert werden, da sie mindestens teilweise grafisch, so wiezum Beispiel in Matrixform, dargestellt werden kann. Verschiedene Ausführungsbeispiele von Zustandsautomat-Funktionsblöcken oder von Mechanismen für die Konfigurierung von Zustandsautomat-Funktionsblöcken können einen oder mehrere oder keinen der vorstehend beschriebenen Vorteile bieten.
-
Figurenliste
-
Die Merkmale und Vorteile der hierin beschriebenen Verfahren, Geräte und Systeme gehen am besten aus der nachstehenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen hervor; dabei zeigen:
- 1 ist ein Blockdiagramm einer beispielhaften Prozessanlage;
- 2 ist ein Blockdiagramm einer beispielhaften, in 1 schematisch dargestellten Workstation;
- 3 ist ein Beispiel eines Displays, das ein Steuerungsmodul zeigt;
- 4 ist ein Beispiel einer Darstellung eines Zustandsautomat-Funktionsblocks;
- 5 ist eine beispielhafte Matrix für die Eingabe von Konfigurierungsdaten des nächsten Zustands für einen Zustandsautomat-Funktionsblock;
- 6 ist die beispielhafte Matrix aus 5, in der die Konfigurierungsdaten des nächsten Zustands in der Matrix zur Anzeige gebracht werden;
- 7 ist ein Flussdiagramm eines beispielhaften Ablaufs innerhalb eines Zustandsautomat-Funktionsblocks;
- 8 ist ein Blockdiagramm eines beispielhaften Zustandsautomat-Funktionsblocks;
- 9 ist ein Flussdiagramm eines weiteren beispielhaften Ablaufs innerhalb eines Zustandsautomat-Funktionsblocks;
- 10 ist ein Flussdiagramm einer beispielhaften Routine für die Verarbeitung von Dateneingängen in einen Zustandsautomat-Funktionsblock;
- 11 ist ein Flussdiagramm einer beispielhaften Routine für die Verarbeitung eines ENABLE-Eingangs (Freigabeeingangs) eines Zustandsautomat-Funktionsblocks;
- 12 ist ein Flussdiagramm einer beispielhaften Routine für die Veränderung eines Zustands und das Setzen von Ausgängen eines Zustandsautomat-Funktionsblocks;
- 13 ist eine beispielhafte Matrix für die Eingabe von Ausgangskonfigurierungsdaten für einen Zustandsautomat-Funktionsblock;
- 14 ist ein Blockdiagramm eines weiteren beispielhaften Zustandsautomat-Funktionsblocks;
- 15 ist ein Flussdiagramm einer weiteren beispielhaften Routine für die Veränderung eines Zustands und das Setzen von Ausgängen eines Zustandsautomat-Funktionsblocks;
- 16 ist ein Flussdiagramm einer beispielhaften Routine für das Setzen geeigneter Ausgangswerte eines Zustandsautomat-Funktionsblocks; und
- 17 ist ein beispielhaftes Zustandsübergangsdiagramm für die Eingabe von Konfigurierungsdaten des nächsten Zustands für einen Zustandsautomat-Funktionsblock.
-
Beispiel einer Prozessanlage
-
1 ist ein Blockdiagramm einer beispielhaften Prozessanlage 10, die einen oder mehrere Knoten 12, 16, 18 und 20 umfasst. In der beispielhaften Prozessanlage 10 der 1 umfasst jeder der Knoten 12 und 16 ein Prozesssteuerungsgerät 12a, 16a, das über Eingangs-/Ausgangs-(I/O)-Vorrichtungen 24, bei denen es sich z.B. um Foundation Feldbus-Schnittstellen, HART-Schnittstellen etc. handeln kann, mit einem oder mehreren Feldgeräten 22 und 23 verbunden ist. Die Steuerungsgeräte 12a und 16a sind außerdem über ein Netzwerk 30, das beispielsweise einen oder mehrere Busse, ein verdrahtetes lokales Netzwerk (LAN) wie ein Ethernet LAN, ein drahtloses LAN, ein Fernnetz (WAN), ein Intranet etc. umfassen kann, mit einer oder mehreren Host- oder Bediener-Workstations 18a und 20a in den Knoten 18 und 20 verbunden. Die Knoten 12, 16 der Steuerungsgeräte und die diesen zugeordneten I/O-Vorrichtungen 24 und Feldgeräte 22, 23 sind typischerweise in der manchmal rauen Werksumgebung angeordnet und über sie verteilt, während die Knoten 18 und 20 der Bediener-Workstations gewöhnlich in Steuerzentralen oder anderen, weniger rauen und für das Steuerungspersonal leicht zugänglichen Umgebungen untergebracht sind.
-
Allgemein gesagt, die Workstations 18a und 20a der Knoten 18 und 20 können genutzt werden, um Applikationen zu speichern und auszuführen, die für die Konfigurierung und Überwachung der Prozessanlage 10 und/oder das Management der Vorrichtungen 22, 23, 24 und der Steuerungsgeräte 12a, 16a in der Prozessanlage 10 genutzt werden. Ferner kann eine Datenbank 32 an das Netzwerk 30 angeschlossen werden und als Datenhistorie und/oder eine Konfigurationsdatenbank fungieren, in der die aktuelle Konfiguration der Prozessanlage 10 abgelegt ist, wie sie in die Knoten 12, 16, 18, 20, 22, 23, 24, 50 und 70 heruntergeladen und/oder dort gespeichert wurde.
-
Jedes der Steuerungsgeräte 12a und 16a, bei denen es sich beispielsweise um das von Emerson Process Management vertriebene Steuerungsgerät Delta V™ handeln kann, kann eine Steuerungsapplikation speichern und ausführen, die unter Verwendung einer Anzahl verschiedener, getrennt ausgeführter Steuerungsmodule oder -blöcke eine Steuerungsstrategie implementiert. Jedes der Steuerungsmodule kann aus Elementen bestehen, die gewöhnlich als Funktionsblöcke bezeichnet werden, wobei jeder Funktionsblock ein Teil oder ein Unterprogramm einer Gesamtsteuerungsroutine ist und (über als Links bezeichnete Kommunikationen) mit anderen Funktionsblöcken zusammenwirkt, um Prozesssteuerungsschleifen innerhalb der Prozessanlage 10 zu implementieren. Bekanntlich führen Funktionsblöcke typischerweise entweder eine Eingangsfunktion (wie sie z.B. einem Messwertumformer, einem Sensor oder einer anderen Messvorrichtung für Prozessparameter zugeordnet ist), eine Steuerungsfunktion (die beispielsweise einer Steuerungsroutine zugeordnet sein kann, die PID-, Fuzzy-Logik- oder andere Steuerungen ausführt), oder eine Ausgangsfunktion aus, die den Betrieb einer Vorrichtung (z.B. eines Ventils) steuert, um eine physikalische Funktion innerhalb der Prozessanlage 10 auszuführen. Selbstverständlich existieren Hybrid- und andere Arten von Funktionsblöcken, die verwendet werden können. Obwohl ein Feldbus-Protokoll und das Systemprotokoll von DeltaV™ Steuerungsmodule und Funktionsblöcke nutzen können, die in einem objektorientierten Programmierprotokoll entwickelt und implementiert wurden, könnten die Steuerungsmodule unter Nutzung jedes gewünschten Steuerungsprogrammierschemas entwickelt werden, wozu u.a. auch sequentielle Funktionsblöcke, Kontaktpläne etc. gehören können, und sind daher bei der Entwicklung nicht auf Funktionsblöcke oder eine andere besondere Programmiertechnik beschränkt. Typischerweise kann die Konfiguration der Steuerungsmodule, wie sie in den Prozesssteuerungsknoten 12 und 16 abgelegt ist, in der Konfigurationsdatenbank 32 gespeichert werden, auf die, die von den Workstations 18a und 20a ausgeführten, Applikationen zugreifen können. Funktionsblöcke können beispielsweise im Steuerungsgerät 12a, 16a gespeichert und von ihm ausgeführt werden, was typischerweise der Fall ist, wenn diese Funktionsblöcke für Standard 4-20 mA-Vorrichtungen und einige Typen intelligenter Feldgeräte wie HART-Vorrichtungen genutzt oder diesen zugeordnet werden, oder sie können in den Feldgeräten selbst gespeichert und von diesen implementiert werden, was bei Feldbus-Vorrichtungen der Fall sein kann.
-
In dem in 1 dargestellten System kann es sich bei den mit den Steuerungsgeräten 12a und 16a verbundenen Feldgeräten 22 und 23 um 4-20 mA-Standard Vorrichtungen oder intelligente Feldgeräte handeln, wie HART-, Profibus- oder Foundation Fieldbus-Feldgeräte, die einen Prozessor und einen Speicher beinhalten. Einige dieser Vorrichtungen, wie die Foundation Fieldbus-Feldgeräte (die in 1 mit der Nummer 23 bezeichnet sind), können Module oder Untermodule, wie z.B. Funktionsblöcke speichern und ausführen, die der in den Steuerungsgeräten 12a und 16a implementierten Steuerungsstrategie zugeordnet sind. Selbstverständlich können die Feldgeräte 22, 23 beliebige Vorrichtungstypen sein, wie Sensoren, Ventile, Messwertumformer, Stellungsregler etc., und die I/O-Vorrichtungen 24 können beliebige I/O-Vorrichtungstypen sein, die jedem gewünschten Kommunikations- oder Steuerungsgeräteprotokoll, wie HART, Foundation Fieldbus, Profibus etc. entsprechen.
-
Jedes der Steuerungsgeräte 12a und 16a umfasst einen Prozessor, der eine oder mehrere in einem Speicher abgelegte Prozesssteuerungsroutinen implementiert oder überwacht, die dort gespeicherte oder anderweitig damit verbundene Steuerungsschleifen beinhalten können. Die Steuerungsgeräte 12a und 16a kommunizieren mit den Feldgeräten 22, 23, den Workstations 18a, 20a und der Datenbank 32, um einen Prozess auf jede gewünschte Art zu steuern. Jedes der Steuerungsgeräte 12a und 16a kann konfiguriert werden, um eine Steuerungsstrategie oder Steuerungsroutine auf jede gewünschte Weise zu implementieren.
-
Die Prozessanlage 10 kann auch ein Sicherheitssystem 14 umfassen (durch punktierte Linien angedeutet), das in die Prozesssteuerungsknoten 12 und 16 integriert ist. Das Sicherheitssystem 14 kann generell als ein sicherheitsgerichtet instrumentiertes System (SIS - Safety Instrumented System) arbeiten, um die von den Prozesssteuerungsknoten 12 und 16 bewirkten Steuerungseingriffe zu überwachen und auszublenden, um so die Wahrscheinlichkeit des sicheren Betriebs der Prozessanlage 10 zu maximieren.
-
Zu jedem der Knoten 12 und 16 können ein oder mehrere Sicherheitssystem-Logiksolver 50 gehören. Jeder der Logiksolver 50 ist eine I/O-Vorrichtung mit einem Prozessor und einem Speicher und ist konfiguriert, um im Speicher abgelegte Sicherheitslogikmodule auszuführen. Jeder Logiksolver 50 ist kommunikativ verbunden, um Steuerungssignale für die Sicherheitssystemfeldgeräte 60 und 62 bereitzustellen und/oder von diesen zu empfangen. Zusätzlich beinhaltet jeder der Knoten 12 und 16 mindestens eine Vorrichtung zur Nachrichtenübertragung (MPD) 70, die über eine Ring- oder Busverbindung 74 (die in 1 nur teilweise abgebildet ist) kommunikativ mit anderen MPDs 70 verbunden ist. Das Sicherheitssystem 14 aus 1 setzt sich generell aus den Sicherheitssystem-Logiksolvern 50, den Sicherheitssystemfeldgeräten 60 und 62, den MPDs 70 und dem Bus 74 zusammen.
-
Bei den Logiksolvern 50 der 1 kann es sich um jeden gewünschten Typ von Sicherheitssystem-Steuerungsvorrichtungen handeln, die einen Prozessor und einen Speicher umfassen, in dem Sicherheitslogikmodule abgelegt sind, die ausgelegt wurden, um im Prozessor ausgeführt zu werden und eine Steuerungsfunktionalität bereitzustellen, die dem Sicherheitssystem 14 zugeordnet ist, das sich der Feldgeräte 60 und 62 bedient. Selbstverständlich kann es sich bei den Sicherheitsfeldgeräten 60 und 62 um jeden gewünschten Typ von Feldgeräten handeln, der allen bekannten oder gewünschten Kommunikationsprotokollen, wie z.B. den bereits aufgeführten entspricht oder diese benutzt. Insbesondere können die Feldgeräte 60 und 62 sicherheitsrelevante Feldgeräte eines Typs sein, die gewöhnlich von einem unabhängigen, zweckgebundenen, sicherheitsrelevanten Steuerungssystem gesteuert werden. In der Prozessanlage 10 in 1 nutzen die Sicherheitsfeldgeräte 60 gemäß der Abbildung ein zweckgebundenes oder Point-to-Point-Kommunikationsprotokoll, wie das HART- oder 4-20 mA-Protokoll, während die Sicherheitsfeldgeräte 62 in der gleichen Abbildung ein Bus-Kommunikationsprotokoll, wie z.B. ein Feldbus-Protokoll nutzen. Die Sicherheitsfeldgeräte 60 können jede gewünschte Funktion ausführen und z.B. als Absperrventil, als Trennschalter etc. fungieren.
-
Eine gemeinsame Backplane (nicht dargestellt) kann in jedem der Knoten 12 und 16 verwendet werden, um die Steuerungsgeräte 12a und 16a kommunikativ mit den Prozesssteuerungs-I/O-Karten 24, den Sicherheitslogiksolvern 50 und den MPDs 70 zu verbinden. Die Steuerungsgeräte 12a und 16a sind ebenfalls kommunikativ mit dem Netzwerk 30 verbunden. Die Steuerungsgeräte 12a und 16a, die I/O-Vorrichtungen 24, die Logiksolver 50 und die MPDs 70 können über das Netzwerk 30 mit den Knoten 18 und 20 kommunizieren.
-
Wie der Fachmann weiß, ermöglicht die (nicht dargestellte) Backplane im Knoten 12, 16 den Logiksolvern 50 die örtliche Kommunikation miteinander, um die von diesen Vorrichtungen implementierten Sicherheitsfunktionen zu koordinieren, einander Daten zu übermitteln und/oder andere integrierte Funktionen auszuführen. In ähnlicher Weise ermöglicht die (nicht dargestellte) Backplane im Knoten 16 den Logiksolvern 50 die örtliche Kommunikation miteinander, um die von diesen Vorrichtungen implementierten Sicherheitsfunktionen zu koordinieren, einander Daten zu übermitteln und/oder andere integrierte Funktionen auszuführen. Andererseits fungieren die MPDs 70, um Teilen des Sicherheitssystems 14, die an verschiedenen Stellen der Anlage 10 angeordnet sind, trotzdem die Kommunikation miteinander zu ermöglichen, nämlich um koordinierte Sicherheitsmaßnahmen in verschiedenen Knoten der Prozessanlage 10 bereitzustellen. Insbesondere ermöglichen die MPDs 70 in Zusammenwirkung mit dem Bus 74 den Logiksolvern 50, die verschiedenen Knoten 12 und 16 der Prozessanlage 10 zugeordnet sind, eine kommunikative Kaskadierung, um die Kaskadierung sicherheitsrelevanter Funktionen innerhalb der Prozessanlage 10 gemäß einer vorgeschriebenen Priorität möglich zu machen. Die MPDs 70 und der Bus 74 stellen für das Sicherheitssystem einen Kommunikationslink bereit, der eine Alternative zum Netzwerk 30 darstellt.
-
Alternativ können zwei oder mehr sicherheitsrelevante Funktionen an verschiedenen Standorten innerhalb der Prozessanlage 10 gegenseitig verriegelt oder miteinander gekoppelt werden, ohne dass eine zweckgebundene Leitung zu einzelnen Sicherheitsfeldgeräten innerhalb der getrennten Bereiche oder Knoten der Anlage 10 vorgesehen werden muss. Anders gesagt, die Verwendung der MPDs 70 und 72 und von Bus 74 ermöglicht einem Sicherheitsingenieur die Entwicklung und Konfigurierung eines Sicherheitssystems 14, das seiner Natur nach über die ganze Prozessanlage 10 verteilt ist, von dem aber verschiedene Komponenten kommunikativ miteinander verbunden sind, damit die anlagenweit installierte sicherheitsrelevante Hardware nach Bedarf miteinander kommunizieren kann. Dieses Merkmal sorgt auch für die größenmäßige Anpassungsfähigkeit des Sicherheitssystems 14, da dadurch das Sicherheitssystem 14 nach Bedarf oder in dem Maß, in dem der Prozessanlage 10 neue Prozesssteuerungsknoten hinzugefügt werden, zusätzliche Sicherheitslogiksolver erhalten kann.
-
2 ist ein Blockdiagramm einer beispielhaften Workstation 18a (Workstation 20a kann die gleiche oder eine ähnliche Vorrichtung umfassen). Die Workstation 18a kann mindestens einen Prozessor 100, einen flüchtigen Speicher 104 und einen nichtflüchtigen Speicher 108 umfassen. Der flüchtige Speicher 104 kann beispielsweise ein RAM beinhalten. In einigen Ausführungen kann das RAM durch eine oder mehrere Batterien gepuffert werden, um den Verlust von Daten bei Stromausfall zu vermeiden. Der nichtflüchtige Speicher 108 kann z.B. eine oder mehrere Festplatten, ein ROM, ein CD-ROM, ein programmierbares ROM (PROM), ein EPROM, ein EEPROM, eine DVD, einen Flash-Speicher etc. umfassen. Zur Workstation 18a kann auch eine Workstation-I/O-Vorrichtung 112 gehören. Der Prozessor 100, der flüchtige Speicher 104, der nichtflüchtige Speicher 108 und die Workstation-I/O-Vorrichtung 112 können über einen Adressen-/Datenbus 116 miteinander verbunden werden. Die Workstation 18a kann außerdem mindestens eine Display-Vorrichtung 120 und mindestens eine Nutzereingabevorrichtung 124 umfassen, bei der es sich beispielsweise um ein oder mehrere Elemente wie eine Tastatur, ein Tastenfeld, eine Maus, einen Trackball, einen Touchscreen einen Lightpen etc. handeln kann. In einigen Ausführungen können der flüchtige Speicher 104, der nichtflüchtige Speicher 108 und die Workstation-I/O-Vorrichtung 112 einzeln oder zu mehreren über einen von dem Adressen-/Datenbus 116 getrennten Bus (nicht dargestellt) oder direkt mit dem Prozessor 100 verbunden werden.
-
Die Display-Vorrichtung 120 und die Nutzereingabevorrichtung 124 sind mit der Workstation-I/O-Vorrichtung 112 verbunden. Ferner ist die Workstation 18a über die Workstation-I/O-Vorrichtung 112 an das Netzwerk 30 angeschlossen. Obwohl die Workstation-I/O-Vorrichtung 112 in 2 als eine Vorrichtung dargestellt ist, kann sie mehrere Vorrichtungen umfassen. In einigen Ausführungen können die Display-Vorrichtung 120 und die Nutzereingabevorrichtung 124 außerdem einzeln oder zu mehreren direkt mit dem Adressen-/Datenbus 116 oder dem Prozessor 100 verbunden werden.
-
In 1 und 2 kann eine Konfigurierungsapplikation für die Prozesssteuerung, die einem oder mehreren der Steuerungsknoten 12, 16 zugeordnet ist, in einer oder mehreren der Workstations 18a und 20a gespeichert und von diesen ausgeführt werden. Die Konfigurierungsapplikation für die Prozesssteuerung könnte beispielsweise in dem nichtflüchtigen Speicher 108 und/oder dem flüchtigen Speicher 104 abgelegt und vom Prozessor 100 ausgeführt werden. Wenn dies gewünscht wird, könnte diese Applikation jedoch in anderen, mit der Prozessanlage 10 verbundenen Computern gespeichert und ausgeführt werden. Allgemein gesagt, die Konfigurierungsapplikation für die Prozesssteuerung ermöglicht einem Programmierer die Erzeugung und Konfigurierung von Steuerungsroutinen, Steuerungsmodulen, Funktionsblöcken, Programmen, Logik etc., die von den Steuerungsgeräten 12a, 16a, den I/O-Vorrichtungen 24 und/oder den Feldgeräten 22, 23 implementiert werden sollen. Diese Steuerungsroutinen, Steuerungsmodule, Funktionsblöcke, Programme, Logik etc. können dann über das Netzwerk 30 in die jeweils entsprechenden Steuerungsgeräte 12a, 16a, I/O-Vorrichtungen 24 und/oder Feldgeräte 22, 23 geladen werden.
-
Auf ähnliche Weise kann eine dem Sicherheitssystem 14 zugeordnete Konfigurierungsapplikation für Sicherheitssysteme in einer oder mehreren der Workstations 18a und 20a gespeichert und von diesen ausgeführt werden. Die Konfigurierungsapplikation für Sicherheitssysteme könnte beispielsweise in dem nichtflüchtigen Speicher 108 und/oder dem flüchtigen Speicher 104 abgelegt und vom Prozessor 100 ausgeführt werden. Wenn gewünscht, könnte diese Applikation jedoch in anderen, mit der Prozessanlage 10 verbundenen Computern gespeichert und ausgeführt werden. Allgemein gesagt, die Konfigurierungsapplikation für Sicherheitssysteme ermöglicht einem Programmierer die Erzeugung und Konfigurierung von Steuerungsroutinen, Steuerungsmodulen, Funktionsblöcken, Programmen, Logik etc., die von den Steuerungsgeräten 12a, 16a, den Logiksolvern 50 und/oder den Vorrichtungen 60, 62 zu implementieren sind. Diese Steuerungsroutinen, Steuerungsmodule, Funktionsblöcke, Programme, Logik etc. können dann über das Netzwerk 30 in die jeweils entsprechenden Steuerungsgeräte 12a, 16a, die Logiksolver 50 und/oder die Vorrichtungen 60, 62 geladen werden.
-
Zustandsautomat-Funktionsblock
-
Mittels einer Konfigurierungsapplikation für Steuerungssysteme oder Sicherheitssysteme können Steuerungsmodule und/oder Steuerungsroutinen unter Nutzung eines Funktionsblock-Programmmusters programmiert werden. 3 zeigt ein Beispiel eines Displays 150 mit der Darstellung eines Steuerungsmoduls 154. Das Display 150 kann Teil einer der Konfigurierungsapplikation zugeordneten Nutzerschnittstelle sein und kann beispielsweise über die Display-Vorrichtung 120 der Workstation 18a für einen Programmierer zur Anzeige gebracht werden. Die Darstellung des Steuerungsmoduls 154 im Display 150 zeigt eine Gruppe kommunikativ miteinander verbundener Funktionsblöcke, die erzeugt und über das Netzwerk 30 zur Implementierung während des Betriebs der Prozessanlage in die jeweils entsprechenden Steuerungsgeräte 12a, 16a, I/O-Vorrichtungen 24, Logiksolver 50 und/oder die Vorrichtungen 22, 23, 60, 62 geladen werden können. Wie in 3 gezeigt, umfasst das Steuerungsmodul 154 einen Zustandsautomat-Funktionsblock (SMFB) 160, eine Vielzahl von analogen Eingangs-(AI) und digitalen Eingangs-(DI)Funktionsblöcken, eine Vielzahl von analogen Ausgangs-(AO) und digitalen Ausgangs-(DO)Funktionsblöcken und andere Funktionsblöcke (FBs). Der SMFB 160 besitzt Eingänge, die kommunikativ mit den Funktionsblöcken 114 verbunden sind, bei denen es sich z.B. um DI-Funktionsblöcke oder andere FBs handeln kann. Der SMFB 160 besitzt außerdem Ausgänge, die mit den Funktionsblöcken 118 verbunden sind, die z.B. DO-Funktionsblöcke oder andere FBs sein können. Das Steuerungsmodul 154 kann als Teil eines Steuerungssystems, eines Sicherheitssystems etc. eigenständig oder als eines einer Vielzahl von Steuerungsmodulen mit diesen gemeinsam Vorrichtungen wie z.B. Schalter, Ventile etc. steuern. Selbstverständlich ist das Steuerungsmodul 154 lediglich ein Beispiel eines Steuerungsmoduls, das SMFBs verwendet. Generell kann ein Steuerungsmodul auf jede gewünschte Weise programmiert werden, um alle Arten von Funktionsblöcken zu umfassen, die auf jede gewünschte Weise kommunikativ mit einer beliebigen Anzahl SMFBs verbunden und auf jede gewünschte oder zweckmäßige Art für die Ausführung einer gewünschten Funktionalität konfiguriert sind. Wenn es beispielsweise in einem Feldbus-Netzwerk verwendet wird, kann ein Steuerungsmodul jeden Typ von Feldbus-Funktionsblöcken beinhalten.
-
In einigen Ausführungsbeispielen können ein oder mehrere Eingänge zum SMFB 160 von einem anderen Element als einem Funktionsblock empfangen werden. Beispielsweise können ein oder mehrere der Eingänge des SMFB 160 kommunikativ verbunden werden, um beispielsweise über eine Bedienerschnittstelle Eingaben von einem Bediener zu empfangen. Ein Bediener, der z.B. eine in einem Knoten wie dem Knoten 18 oder 20 implementierte Bedienerschnittstelle nutzt, könnte Eingaben für den SMFB 160 bereitstellen.
-
Der SMBF kann ein Funktionsblock sein, der einen Zustandsautomaten implementiert. In einigen Ausführungsbeispielen kann der Zustandsautomat eine Entität beinhalten (z.B. eine Vorrichtung, von einem Prozessor implementierte Software etc.), die sich in einem von einer Vielzahl von Zuständen befinden kann. Der Zustandsautomat kann von einem Zustand in einen anderen übergehen, wenn ein spezifischer Eingang in den Zustandsautomaten erfolgt. Der SMFB kann Ausgänge auf Basis des momentanen Zustands des Zustandsautomaten bereitstellen. Als ein Beispiel kann der SMFB eine oder mehrere Ausgaben bereitstellen, die den momentanen Zustand des Zustandsautomaten anzeigen. Ganz allgemein kann ein Zustandsautomat eine Entität beinhalten (z.B. eine Vorrichtung, von einem Prozessor implementierte Software etc.), die einen Zustand der Entität oder einer anderen Entität zu einem gegebenen Zeitpunkt speichert (z.B. einer Prozessanlage, eines Unterabschnitts einer Prozessanlage, einer Komponente einer Prozessanlage etc.) und die den Zustand ändern und/oder auf Basis von Eingaben in den Zustandsautomaten eine Maßnahme oder Ausgabe veranlassen kann.
-
Unter Nutzung der der Konfigurierungsapplikation zugeordneten Bedienerschnittstelle kann der Programmierer ein Steuerungsmodul von der Art des Steuerungsmoduls 154 entwickeln. Als ein Beispiel kann die Benutzerschnittstelle einen Mechanismus für einen Programmierer bereitstellen, um gewünschte Funktionsblöcke beispielsweise aus einer Vorlage oder Palette auszuwählen, die eine Vielzahl von genormten oder speziell angepassten Funktionsblockvorlagen enthält. Außerdem kann die Bedienerschnittstelle ein grafisches Schaubild bereitstellen, in das der Programmierer Darstellungen von Funktionsblöcken einfügen kann. Der Programmierer kann beispielsweise eine Maus, einen Trackball, eine Tastatur, ein Tastenfeld, einen Touchscreen etc. benutzen, um einen Funktionsblock in der Vorlage oder Palette anzuwählen und um den Funktionsblock dann durch „Ziehen und Einsetzen“ (Drag & Drop) in das grafische Schaubild zu bringen. Der Programmierer kann ferner Funktionsblöcke kommunikativ verbinden, indem er beispielsweise mit Hilfe einer Maus, eines Trackballs, einer Tastatur, eines Tastenfelds, eines Touchscreens etc. eine Linie zwischen einem Ausgang eines Funktionsblocks und einem Eingang eines anderen Funktionsblocks zieht.
-
Nach seiner Konfigurierung kann das Steuerungsmodul 154 z.B. durch ein oder mehrere der Steuerungsgeräte 12a, 14a, 16a, I/O-Vorrichtungen 24, Logiksolver 50 und die Vorrichtungen 22, 23, 60, 62 implementiert werden.
-
4 ist ein Beispiel einer Darstellung eines SMFB 200, der beispielsweise im Display einer Nutzerschnittstelle wie dem Display 150 aus 3 angezeigt werden kann. Die Darstellung des SMFB 200 zeigt, dass der SMFB 200 sieben Dateneingänge (IN_D1 bis IN_D7) und sieben Datenausgänge (STATE und OUT_D1 bis OUT_D6) umfasst. Die Dateneingänge zeigen im Allgemeinen die Bedingungen innerhalb der Prozessanlage, Bedieneranweisungen etc. an, wobei diese eine von einem SMFB 200 implementierten Zustandsautomaten zur Veränderung des Zustands veranlassen können. Die Datenausgänge können einen oder mehrere Indikatoren für den Zustand des Zustandsautomaten beinhalten, die dem SMFB 200 entspricht. So kann der STATE-Ausgang beispielsweise ein Indikator des Zustands (z.B. state 1, state 2, state 3 etc.) des Zustandsautomaten sein. Der Ausgang OUT_D1 kann ein Indikator dafür sein, ob sich die Zustandsautomat in dem Zustand „state 1“ befindet. In ähnlicher Weise können die Ausgänge OUT_D2, OUT_D3, ... OUT_D6 Indikatoren dafür sein, ob sich der Zustandsautomat entsprechend in den Zuständen „state 2“, „state 3“ .... „state 6“ befindet. Der SMFB kann außer den Dateneingängen noch weitere Eingänge, wie einen ENABLE-Eingang, einen Eingang TRK_VAL und einen Eingang TRK_IN_D besitzen und kann neben den Ausgängen, die den Zustand anzeigen, andere Ausgänge beinhalten. Die Eingänge ENABLE, TRK_VAL und TRK_IN_D werden nachstehend ausführlicher beschrieben. Obwohl der SMFB 200 in 4 mit sieben Dateneingängen und sieben Datenausgängen gezeigt wird, können andere Ausführungsbeispiele jede gewünschte Anzahl von Dateneingängen und Datenausgängen beinhalten. Die Anzahl von Dateneingängen und Datenausgängen des SMFB 200 kann konfigurierbar oder nicht konfigurierbar sein. In einem Ausführungsbeispiel entspricht die Anzahl von Ausgängen OUT_Dx generell der Anzahl möglicher Zustände der vom SMFB implementierten Zustandsautomat, und die Anzahl möglicher Zustände kann konfigurierbar sein. Die Anzahl der Ausgänge OUT_D1, OUT_D2 etc. muss jedoch nicht der Anzahl der möglichen Zustände der Zustandsautomat entsprechen. Wenn beispielsweise die Anzahl der Zustände geringer ist als die Anzahl der Ausgänge OUT_D1, OUT_D2 etc., können die zusätzlichen Ausgänge ungenutzt bleiben.
-
Mittels der dem Konfigurierungsprogramm zugeordneten Nutzerschnittstelle kann der Programmierer einen oder mehrere Funktionsblöcke wie den SMFB 200 konfigurieren. In Bezug auf die Konfigurierung des SMFB kann der Programmierer eine Anzahl möglicher Zustände und die Art und Weise vorgeben, in der die Eingännge den Zustandsautomaten zum Übergang zwischen den verschiedenen Zuständen veranlassen. Um einem Programmierer die Konfigurierung eines SMFB zu ermöglichen, kann eine Konfigurierungsapplikation auf der Display-Vorrichtung 120 eine Bedienerführung zur Anzeige bringen, wie z.B. ein dem Funktionsblock zugeordnetes Konfigurierungsfenster, einen Bildschirm etc.
-
5 ist ein Beispiel einer Bedienerführung, die für die mindestens teilweise Konfigurierung eines SMFB, wie z.B. des SMFB 200 der 4 genutzt werden kann. Die Bedienerführung umfasst eine Tabelle oder Matrix 300 (im Folgenden als die „Matrix 300“ bezeichnet), die als Teil eines dem SMFB zugeordneten Konfigurierungsfensters, - bildschirms etc. zur Anzeige gebracht werden kann. Die Matrix 300 umfasst eine Vielzahl von in Reihen und Spalten angeordneten Zellen 304. Jede Spalte entspricht einem einer Vielzahl von möglichen Zuständen des Zustandsautomaten und jede Reihe entspricht einem Eingang des Zustandsautomaten, so dass jede Zelle 304 einem Zustand und einem Eingang entspricht. Obwohl die beispielhafte Matrix 300 Reihen für sieben Eingänge und sechs Zustände umfasst, können ähnliche Matrizen mit einer anderen Anzahl von Zuständen und Ausgängen für SMFBs verwendet werden, die unterschiedliche Anzahlen von Eingängen und Zuständen aufweisen. Die Anzahl von Eingängen und Zuständen kann konfigurierbar sein. In anderen Beispielen kann jede Reihe einem einer Vielzahl von möglichen Zuständen des Zustandsautomaten und jede Spalte einem Eingang der Zustandsautomaten entsprechen.
-
In 4 entsprechen die Eingänge „1“ bis „7“ der Matrix 300 jeweils den Eingängen IN_D1 bis IN_D7 des SMFB 200. In gleicher Weise entsprechen die Zustände „1“ bis „6“ der Matrix 300 jeweils den Ausgängen OUT_D1 bis OUT_D6 des SMFB 200. Außerdem kann es in diesem Beispiel einem Programmierer möglich sein, jeden möglichen Zustand und/oder jeden der Eingänge durch ein Etikett zu kennzeichnen. So ist beispielsweise in 5 „state 1“ mit dem Etikett „ABGESCHALTET“ (TRIPPED) versehen, und Eingang 1 hat das Etikett „ANFANG“ (INITIAL). Die Etikettierung von Eingängen und/oder Zuständen kann zum besseren Verständnis der Arbeitsweise der Zustandsautomat beitragen.
-
Ein Programmierer kann den SMFB durch Eingabe von Konfigurierungsinformation in die Zellen 304 konfigurieren. Insbesondere kann der Programmierer für eine bestimmte Zelle 304, die einem der Zustände und einem der Eingänge entspricht, Konfigurierungsdaten in die Zelle eingeben, die den Zustand angeben, in den der SMFB übergehen sollte. 6 ist ein Beispiel der Matrix 300, bei dem Konfigurierungsdaten in einige der Zellen 304 eingegeben wurden. Die Zelle 304A beinhaltet z.B. Konfigurierungsdaten, die den nächsten Zustand anzeigen, in den die Zustandsautomat übergehen sollte, wenn die Zustandsautomat sich im Zustand „ABGESCHALTET“ befindet und der Eingang „ANFANG“ aktiviert wird. Im Besonderen zeigen die Konfigurierungsdaten der Zelle 304A an, dass die Zustandsautomat in den Zustand „WARTEN AUF RESET“ (WAITING FOR RESET) übergehen sollte. In ähnlicher Weise beinhaltet die Zelle 304B Konfigurierungsdaten, die anzeigen, dass, wenn die Zustandsautomat sich im Zustand „WARTEN AUF RESET“ befindet und der Eingang „FREIGABE RESET“ (RESET PERMIT) aktiviert wird, die Zustandsautomat in den Zustand „BEREIT FÜR RESET“ (READY FOR RESET) übergehen sollte. Die Zelle 304C beinhaltet ebenfalls Konfigurierungsdaten, die anzeigen, dass, wenn die Zustandsautomat sich im Zustand „WARTEN AUF RESET“ befindet und der Eingang „ANFORDERUNG ABSCHALTUNG“ (TRIP REQUESTED) aktiviert wird, die Zustandsautomat in den Zustand „ABGESCHALTET“ übergehen sollte.
-
In diesem besonderen Beispiel kann - wenn der Programmierer keine Konfigurierungsdaten in eine Zelle 304 eingibt - angenommen werden, dass für diesen besonderen Zustand und den Eingang kein Zustandsübergang erfolgen sollte. So enthält Zelle 304D z.B. keine Konfigurierungsdaten, was anzeigt, dass, wenn die Zustandsautomat sich im Zustand „ABGESCHALTET“ befindet und der Eingang „START RECOVER“ (START WIEDERANLAUF) aktiviert wird, die Zustandsautomat im Zustand „ABGESCHALTET“ verbleiben sollte. In anderen Ausführungsbeispielen kann der Programmierer Konfigurierungsdaten eingeben, die anzeigen, dass die Zustandsautomat bei dieser speziellen Zustands-/Eingangskombination ihren Zustand nicht verändern sollte.
-
Der Programmierer kann Konfigurierungsdaten in die Matrix 300 unter Verwendung der verschiedensten Techniken eingeben, auch von solchen, wie sie dem Fachmann geläufig sind. Für die Eingabe von Konfigurierungsdaten in eine Zelle 304 kann der Programmierer beispielsweise die Zelle 304 mit einer Maus, einem Trackball, mit Hilfe eines Touchscreens etc. anwählen. Der Nutzer könnte dann die Konfigurierungsdaten direkt, z.B. mittels einer Tastatur in die Zelle 304 eingeben. Alternativ könnte der Programmierer die Zelle 304 anwählen und dann „edit“ (Editieren), „modify“ (Modifizieren) etc. in einem Pull-Down-Menü oder direkt eine Schaltfläche „Edit“, „Modify“ etc. anwählen. Dann kann die Nutzerschnittstelle dem Programmierer über ein Pull-Down-Menü, ein Fenster, einen Bildschirm etc. eine Liste von Zuständen anzeigen. Als Option kann die Liste von Zuständen den Zustand beinhalten, dem die Zelle entspricht, oder eine Wahlmöglichkeit „NO TRANSITION“ (KEIN ÜBERGANG). Anschließend kann der Programmierer mittels einer Tastatur, einer Maus, eines Trackballs, eines Touchscreens etc. einen der Zustände anwählen. Wählt der Programmierer den Zustand an, dem die Zelle entspricht, oder wählt er „NO TRANSITION“, so würden die Konfigurierungsdaten anzeigen, dass für diese Kombination aus Zustand und Eingang kein Übergang erfolgen sollte.
-
Die Konfigurierung des SMFB unter Verwendung einer Nutzerschnittstelle, die eine Matrix wie die Matrix 300 beinhaltet, kann die Implementierung einer Zustandsautomat einfacher gestalten als beispielsweise im Vergleich zur Verwendung eines sequentiellen Funktionsplans oder einer Programmiersprache wie z.B. C++. Die Implementierung eines Zustandsautomaten unter Verwendung eines C++-Programms würde wahrscheinlich zunächst die Erzeugung eines Zustandsübergangsdiagramms und sodann das Schreiben eines Programms zur Implementierung des Diagramms voraussetzen. Das Programm müsste dann getestet und von Fehlern bereinigt werden. Mit einem unter Verwendung einer Matrix wie der Matrix 300 konfigurierten SMFB braucht jedoch kein Programm geschrieben zu werden. Vielmehr müsste für die „Programmierung“ lediglich die Matrix ausgefüllt werden. Da kein Softwarecode geschrieben werden muss, können außerdem die Fehlerbereinigung und das Testen des Codes entfallen. Als Test kann vielmehr lediglich das Überprüfen der verschiedenen Kombinationen aus Zuständen und Eingängen erforderlich sein, um sicherzustellen, dass der SMFB in die jeweils richtigen nächsten Zustände übergeht.
-
Außerdem ist anhand einer Durchsicht der Matrix 300 die Arbeitsweise des SMFB leicht zu verstehen. Die Arbeitsweise eines konfigurierten SMFB könnte z.B. einfach durch das Ausdrucken einer Darstellung der Matrix dokumentiert werden.
-
Ein gemäß einer Matrix wie der Matrix 300 konfigurierter SMFB kann beispielsweise in einem Sicherheitssystem oder einem Prozesssteuerungssystem eingesetzt werden. Als ein Beispiel kann ein gemäß einer Matrix wie der Matrix 300 konfigurierter SMFB als Teil eines Sicherheitssystems für die Überwachung eines Brenners in einer Prozessanlage verwendet werden. Der SMFB könnte beispielsweise Zustände wie „IGNITE“ (ZÜNDEN), „SHUT OFF GAS“ (GASZUFUHR SPERREN), und „VENT“ (ENTLÜFTEN) umfassen. Beim Starten des Brenners sollte der SMFB zunächst in den Zustand VENT wechseln, damit etwa im Brenner vorhandenes Gas entlüftet wird. Anschließend könnte der SMFB in den Zustand IGNITE übergehen, um den Brenner zu zünden. Wenn die Flamme des Brenners erlischt, könnte der SMFB auch in den Zustand SHUT OFF GAS übergehen, um die Gaszufuhr zum Brenner zu sperren. Dann könnte der SMFB in den Zustand VENT wechseln.
-
Ein gemäß einer Matrix wie der Matrix 300 konfigurierter SMFB kann von einem oder mehreren der Steuerungsgeräte 12a, 16a, der I/O-Vorrichtungen 24, der Logiksolver 50, und der Vorrichtungen 22, 23, 60, 62 implementiert werden. In einigen Ausführungsbeispielen kann der SMFB von einem Prozessor implementiert werden, dessen Software durch eine programmierbare Logikschaltung, z.B. eine Vorrichtung, die ein Gate-Array, eine Standardzelle, ein feldprogrammierbares Gate-Array (FPGA), ein PROM, ein EPROM, ein EEPROM, einen programmierbaren Logikbaustein (PAL), eine programmierbares logisches Array (PLA) etc. oder Kombinationen dieser Elemente enthält, konfiguriert wurde.
-
Die einem SMFB zugeordneten Konfigurierungsdaten (z.B. die in eine Matrix wie die Matrix 300 eingegebenen Daten und wahlweise andere Konfigurierungsdaten) können in einem computerlesbaren Medium wie z.B. einer Festplatte, einem RAM, ROM, CD-ROM, EPROM, EEPROM, einer DVD, einem Flash-Speicher etc. und/oder einem mit einem Prozessor verbundenen Speicher abgelegt werden.
-
7 ist ein Flussdiagramm einer beispielhaften Arbeitsweise eines konfigurierten SMFB. Die Arbeitsweise 350 kann periodisch und/oder beispielsweise als Reaktion auf ein auslösendes Ereignis implementiert werden. In einem Block 354 empfängt der SMFB die eingegebenen Daten. In 4 empfängt der SMFB z.B. die Eingänge IN_D1 bis IN_D7. In einem Block 358 ändert der SMFB, wenn erforderlich, einen Zustand seines Zustandsautomaten auf Basis der Dateneingänge, des momentanen Zustands des SMFB und der in einer Konfigurationsdatenbank gespeicherten Konfigurierungsdaten. Die Daten der Konfigurationsdatenbank können Daten beinhalten, die über eine Matrix wie die Matrix 300 eingegeben wurden. Der Zustand kann auch auf Basis anderer Faktoren geändert werden. Wie weiter unten ausführlicher beschrieben, kann der SMFB beispielsweise so konfiguriert werden, dass er einen oder mehrere der Dateneingänge ignoriert. Die Zustandsänderung kann also auch auf Konfigurierungsdaten basieren, die anzeigen, ob und welche der Dateneingänge ignoriert werden sollen. In einem weiteren Beispiel können zwei oder mehrere Dateneingänge anzeigen, dass eine Zustandsänderung von einem momentanen Zustand in zwei oder mehr nächste Zustände erfolgen sollte. Der SMFB kann so auf Basis von Prioritätsdaten, die die Priorität der Dateneingänge festlegen, eine der Dateneingänge auswählen, um zu bestimmen, in welchen der möglichen nächsten Zustände der SMFB übergehen sollte. Als weiteres Beispiel können in einigen Ausführungsbeispielen Eingänge in den SMFB einen Status (z.B. GOOD-Status (GUT-Status) oder BAD-Status(SCHLECHT-Status)) beinhalten. Die Änderung des Zustands kann also beispielsweise auch auf Konfigurierungsdaten basieren, die anzeigen, wie eine Eingang mit einem BAD-Status gehandhabt werden sollte.
-
In einem Block 366 kann der SMFB seine Datenausgänge dann auf Basis des momentanen Zustands des Zustandsautomaten setzen. Sollen die Datenausgänge beispielsweise den momentanen Zustand anzeigen, so können sie entsprechend gesetzt werden.
-
Wie in 4 gezeigt, kann der SMFB wahlweise einen Eingang „ENABLE“ umfassen. In einem Ausführungsbeispiel kann der SMFB zwangsläufig in einen gesperrten Zustand (z.B. Zustand 0) gebracht werden, wenn der Eingang ENABLE deaktiviert ist, und sollte in diesem Zustand verbleiben, bis der Eingang ENABLE aktiviert wird. Wenn der Eingang ENABLE dann aktiviert wird, kann der SMFB in einen Anfangszustand (z.B. Zustand 1) gebracht werden, und anschließend kann der SMFB gemäß den in eine Konfigurierungsmatrix wie die Matrix 300 der 5 eingegebenen Konfigurierungsdaten in andere Zustände übergehen.
-
Der SMFB kann zudem einen Eingang oder Eingänge beinhalten, um den Zustandsautomaten in einen gewünschten Zustand zu bringen. Der SMFB 200 beinhaltet beispielsweise einen Eingang TRK_IN_D und einen Eingang TRK_VAL. Wird der Eingang TRK_IN_D aktiviert, kann der SMFB in einen vom Eingang TRK_VAL vorgegebenen Zustand gebracht werden. Ist der Eingang TRK_VAL beispielsweise „6“ und der Eingang TRK_IN_D wird aktiviert, so kann der SMFB in den Zustand „6“ gebracht werden.
-
Für die Konfigurierung des SMFB gibt es wahlweise zusätzliche Wege. Beispielsweise kann der SMFB eine Eingangs- (oder Übergangs-)Maske beinhalten, die angibt, ob ggf. ein oder mehrere der Eingänge IN_D1, IN_D2 etc. ignoriert werden sollten. Der SMFB kann auch konfiguriert werden, um auf Eingänge zu reagieren, die eine Vielzahl von Zuständen haben können. So können beispielsweise einer oder alle der Eingänge des SMFB einen Status „GOOD“ oder einen Status „BAD“ haben und der SMFB kann konfiguriert werden, um je nach dem Status eines Eingangs unterschiedlich zu reagieren. In einem besonderen Beispiel kann der SMFB konfiguriert werden, um einen Eingang mit Status „BAD“ zu ignorieren, um den Eingang zu nutzen, selbst wenn dessen Status „BAD“ ist, oder um den letzten Wert des Eingangs mit Status „GOOD“ zu nutzen. Außerdem kann der SMFB einen Parameter RESET beinhalten, der im Fall logisch TRUE den SMFB zwangsläufig in den Zustand „1“ bringt.
-
Die verschiedenen vorstehend beschriebenen Konfigurierungsdaten und die Konfigurierungsdaten für den jeweils nächsten Zustand können im gleichen computerlesbaren Medium oder in verschiedenen computerlesbaren Medien gespeichert werden.
-
8 ist ein Blockdiagramm eines Beispiels eines SMFB. Der SMFB 400 beinhaltet die Logik 404, die den nächsten Zustand mindestens teilweise auf Basis der Eingänge IN_D1, IN_D2 etc. und des momentanen Zustands des SMFB 400 bestimmt. Insbesondere greift die Logik 404 auf die Konfigurierungsdaten des nächsten Zustands zu, die in einer Konfigurationsdatenbank 406 für den nächsten Zustand abgelegt sind. Die Datenbank 406 kann in einem computerlesbaren Medium wie vorstehend beschrieben gespeichert werden. Die Konfigurierungsdaten des nächsten Zustands können Konfigurierungsdaten beinhalten, die in eine Matrix wie die Matrix 300 in 5 eingegeben wurden.
-
Der Ausgang der Logik 404 wird für die Schaltlogik 408 bereitgestellt. Die Schaltlogik 408 wählt auf Basis des Eingangs TRK_IN_D zwischen dem Ausgang der Logik 404 und dem Eingang TRK_VAL. Wenn beispielsweise der Eingang TRK_IN_D aktiviert ist, kann die Schaltlogik 408 den Eingang TRK_VAL wählen. Andernfalls kann die Schaltlogik 408 den Ausgang der Logik 404 wählen.
-
Der Ausgang der Schaltlogik 408 wird für die Schaltlogik 412 bereitgestellt, die auf Basis des Ausgangs der Freigabe- und Reset-Logik 416 zwischen dem Ausgang der Schaltlogik 408, dem Wert 0 und dem Wert 1 wählt. Der Ausgang der Freigabe- und Reset-Logik 416 zeigt an, ob der Zustand in einen gesperrten Zustand (Zustand 0) oder einen Anfangszustand (Zustand 1) gebracht werden sollte. Die Freigabe- und Reset-Logik 416 erzeugt diesen Ausgang auf Basis des Eingangs ENABLE. Wenn beispielsweise der Eingang ENABLE deaktiviert ist, kann der Ausgang der Freigabe- und Reset-Logik 416 anzeigen, dass der Zustand in den Zustand 0 gebracht werden sollte. Wechselt der Eingang ENABLE von inaktiv nach aktiv, so kann der Ausgang der Freigabe- und Reset-Logik 416 anzeigen, dass der Zustand in den Zustand 1 gebracht werden sollte. Wenn ENABLE aktiviert wird und schon vorher aktiviert war, so kann der Ausgang der Freigabe- und Reset-Logik 416 anzeigen, dass der Zustand nicht in den Zustand 0 oder 1 gebracht werden sollte.
-
Der Ausgang der Schaltlogik 412 ist der momentane Zustand des SMFB 400 und kann als ein Ausgang von SMFB 400 bereitgestellt werden. Der Ausgang der Schaltlogik 412 kann auch für die Logik 420 bereitgestellt werden, die einen entsprechenden Ausgang OUT_D1, OUT_D2 etc. setzt, der dem momentanen Zustand des SMFB entspricht.
-
Jeder der Blöcke 404, 408, 412, 416 und 420 kann durch Hardware und/oder Software und/oder Firmware implementiert werden. Außerdem können einige der Blöcke kombiniert, neu angeordnet, geändert oder weggelassen werden und zusätzliche Blöcke können hinzugefügt werden. Als ein Beispiel könnten die Blöcke 408 und 412 zu einem einzigen Block kombiniert werden.
-
9 ist ein Flussdiagramm einer Arbeitsweise des beispielhaften SMFB 400. Die Arbeitsweise 450 der 9 kann beispielsweise periodisch und/oder bei einem auslösenden Ereignis implementiert werden. In einem Block 454 werden die Dateneingänge des SMFB 400 verarbeitet. Es kann z.B. festgestellt werden, ob einer der Dateneingänge IN_D1, IN_D2 etc. aktiviert wurde. In einem weiteren Beispiel kann, wenn einer oder mehrere der Dateneingänge einen Status „BAD“ haben, bestimmt werden, wie der oder die Eingänge „BAD“ zu handhaben sind. In einem Block 458 wird der Eingang ENABLE des SMFB 400 verarbeitet. Es kann beispielsweise festgestellt werden, ob der Eingang ENABLE aktiv ist und/oder ob sich sein Zustand seit der vorherigen Verarbeitung verändert hat.
-
In einem Block 462 kann, falls erforderlich, ein Zustand des SMFB 400 geändert werden. Zusätzlich können, falls erforderlich, einer oder mehrere Datenausgänge des SMFB 400 geändert werden. Es kann beispielsweise bestimmt werden, dass eine Änderung der Dateneingänge anzeigt, dass der Zustand des SMFB 400 geändert werden sollte. Wenn sich der Zustand ändert, kann es außerdem sein, dass einer oder mehrere der Datenausgänge des SMFB 400 geändert werden sollten.
-
Nunmehr werden einige beispielhafte Routinen beschrieben, die verwendet werden können, um die Arbeitsweise 450 wenigstens teilweise zu implementieren. 10 ist z.B. ein Flussdiagramm einer beispielhaften Routine 500, die genutzt werden kann, um die Dateneingänge IN_D1, IN_D2 etc. des SMFB zu verarbeiten. In einem Block 504 wird eine Variable z auf Eins gesetzt. In einem Block 508 wird festgestellt, ob der Status des Dateneingangs IN_Dz „BAD“ ist. Ist der Status nicht mit „BAD“ besetzt, so wird das Bit mit der Nummer z einer Variablen TRANSITIONS auf den Wert des Dateneingangs IN_Dz gesetzt. Ist der Status „BAD“, so kann bestimmt werden, wie der Dateneingang zu handhaben ist. In einem Beispiel kann der SMFB Eingänge mit Status „BAD“ auf eine von drei Arten handhaben: der mit „BAD“ belegte Eingang kann trotzdem genutzt werden (ALWAYS_USE), er kann ignoriert werden (IGNORE_IF_BAD) oder es kann der letzte mit „GOOD“ belegte Eingangswert genutzt werden (USE_LAST_GOOD). So kann in Block 516 festgestellt werden, ob der SMFB den letzten mit „GOOD“ belegten Dateneingang nutzen soll. Soll der SMFB den letzten Wert mit „GOOD“ nutzen, so kann der Block 512 übersprungen werden. Andernfalls kann dann in Block 520 bestimmt werden, ob der SMFB den Eingangswert mit „BAD“ ignorieren soll. Soll der SMFB den Wert mit „BAD“ nicht ignorieren, kann die Routine zu Block 512 übergehen. Soll der SMFB den Wert mit „BAD“ ignorieren, kann die Routine mit einem Block 524 fortfahren. In Block 524 wird das Bit Nummer „z“ der Variablen TRANSITIONS auf 0 gesetzt.
-
In einem Block 528 wird die Variable z inkrementiert und in einem Block 532 kann festgestellt werden, ob die Variable z größer ist als die Anzahl von Dateneingängen des SMFB. Ist z nicht größer als die Anzahl der Dateneingänge des SMFB, kann die Routine zu Block 508 zurückkehren, um den nächsten Dateneingang zu verarbeiten. Andernfalls kann die Routine enden.
-
11 ist ein Flussdiagramm einer beispielhaften Routine 545, die für die Verarbeitung des Eingangs ENABLE des SMFB verwendet werden kann. In einem Block 550 kann festgestellt werden, ob ein Wert einer Variablen LASTENABLE der gleiche ist wie der Wert des Eingangs ENABLE. Die Variable LASTENABLE zeigt generell den Wert von ENABLE zu einem früheren Zeitpunkt an (z.B. den Wert der Variablen ENABLE während des vorherigen Ablaufs der Routine 545). Sind die Werte von LASTENABLE und ENABLE gleich, so kann die Routine 545 enden. Andernfalls kann die Routine zu einem Block 554 übergehen, in dem festgestellt werden kann, ob der Eingang ENABLE aktiviert ist. Ist das der Fall, so kann in einem Block 558 eine Variable RESET auf TRUE gesetzt werden.
-
Wird in Block 554 festgestellt, dass der Eingang ENABLE nicht aktiviert ist, so wird in Block 562 derjenige Ausgang OUT_D1, OUT_D2 etc. deaktiviert, der dem momentanen Wert einer Variablen STATE entspricht. Anschließend wird in einem Block 566 die Variable STATE auf 0 gesetzt. Nach den Blöcken 558 und 566 kann die Routine zu einem Block 570 übergehen, in dem die Variable LASTENABLE auf den Wert des Eingangs ENABLE gesetzt wird. Nach Block 570 kann die Routine enden.
-
12 ist ein Flussdiagramm einer beispielhaften Routine 600, die verwendet werden kann, um einen nächsten Zustand des SMFB zu bestimmen und falls erforderlich einen entsprechenden Ausgang OUT_D1, OUT_D2 etc. zu setzen. In einem Block 604 kann festgestellt werden, ob der Eingang ENABLE aktiviert ist. Ist das nicht der Fall, so kann die Routine enden. Ist der Eingang ENABLE aktiviert, so kann die Routine zu einem Block 608 übergehen, in dem eine Variable NEWSTATE auf 0 gesetzt wird. Anschließend kann in einem Block 612 festgestellt werden, ob der Eingang TRK_IN_D aktiv ist. Trifft das zu, so kann die Routine zu einem Block 616 übergehen, in dem die Variable NEWSTATE auf den Wert des Eingangs TRK_VAL gesetzt wird.
-
Wird in Block 612 festgestellt, dass der Eingang TRK_IN_D nicht aktiv ist, kann die Routine zu einem Block 620 übergehen. In Block 620 kann festgestellt werden, ob die Variable RESET auf TRUE gesetzt ist. Ist das der Fall, kann die Routine zu einem Block 624 übergehen, in dem die Variable NEWSTATE auf 1 gesetzt werden kann. Anschließend kann in einem Block 626 die Variable RESET auf FALSE gesetzt werden.
-
Wird in Block 620 festgestellt, dass die Variable RESET nicht auf TRUE gesetzt ist, kann die Routine zu einem Block 632 wechseln. In Block 632 kann eine Variable TEMP bestimmt werden, und zwar durch bitweises logisches Und-Verknüpfen einer Variablen TRANSITION_MASK, der Variablen TRANSITIONS und eines Elements eines Arrays STATECHANGEMASK, auf das die Variable STATE verweist. Die Variable TRANSITION_MASK kann eine konfigurierbare Variable sein, die genutzt werden kann, um zu verhindern, dass bestimmte Eingänge IN_Dx einen Zustandswechsel herbeiführen können. Möchte ein Programmierer z.B. den Eingang IN_D3 daran hindern, einen Zustandswechsel des Zustandsautomat zu veranlassen, so könnte der Programmierer das dritte Bit der Variablen TRANSITION_MASK auf 0 setzen. Möchte der Programmierer zulassen, dass der Eingang IN_D3 einen Zustandswechsel der Zustandsautomat herbeiführen kann, könnte der Programmierer das dritte Bit der Variablen TRANSITION_MASK auf 1 setzen.
-
Jedes Element des Arrays STATECHANGEMASK kann eine Variable sein, die für einen der korrespondierenden Zustände anzeigt, welche Eingänge IN_D1, IN_D2 etc. einen Zustandswechsel veranlassen. Insbesondere kann jedes Element des Arrays einem der Zustände der Zustandsautomat entsprechen. STATECHANGEMASK[1] kann beispielsweise dem Zustand 1, STATECHANGEMASK[2] dem Zustand 2 etc. entsprechen. Außerdem kann jedes Bit eines jeden Elements einem der Eingänge IN_D1, IN_D2 etc. entsprechen. Bit 1 kann z.B. IN_D1, Bit 2 IN_D2 etc. entsprechen. In 6 hätte das Array STATECHANGEMASK für die Matrix 300 sechs Elemente und das Element STATECHANGEMASK[3] wäre 0x44.
-
Nach dem Block 628 kann die Routine zu einem Block 632 übergehen, in dem festgestellt werden kann, ob die Variable TEMP gleich 0 ist. Ist sie nicht gleich 0, kann die Routine zu einem Block 636 wechseln, in dem eine Variable z auf die Nummer des ersten Bits ungleich 0 (beginnend beispielsweise mit dem niederwertigsten Bit) in der Variablen TEMP gesetzt werden kann. Im Endeffekt setzt dies die Prioritäten der Eingänge auf Basis ihrer Reihenfolge, so dass IN_D1 die höchste Priorität, IN_D2 die nächstfolgende Priorität, IN_D3 die wiederum nächstfolgende Priorität usw. hat. In anderen Ausführungsbeispielen können andere Schemata für die Prioritätsordnung angewandt werden. Ein Programmierer könnte z.B. die Möglichkeit haben, den Eingängen Prioritäten zuzuweisen oder es könnte eine andere Prioritätsreihenfolge angewandt werden (in der z.B. IN_D1 die niedrigste Priorität, IN_D2 die nächsthöhere Priorität etc. hat). Die Prioritäten könnten für den SMFB als Ganzes oder für jeden Zustand gesetzt werden.
-
In einem Block 640 kann die Variable NEWSTATE dann auf den Wert der Zustandsübergangsmatrix in Reihe z und Spalte STATE gesetzt werden.
-
Nach den Blöcken 616, 626 und 640 kann die Routine zu einem Block 644 wechseln. Wird in Block 632 festgestellt, dass die Variable TEMP gleich 0 ist, kann die Routine ebenfalls zum Block 644 wechseln. In Block 644 kann festgestellt werden, ob die Variable NEWSTATE gleich 0 ist. Trifft das zu, so kann die Routine enden. Ist sie nicht gleich 0, kann die Routine zu einem Block 648 wechseln, in dem der Ausgang OUT_D1, OUT_D2 etc. der der Variablen STATE entspricht, deaktiviert wird. In einem Block 652 wird die Variable STATE dann auf den Wert der Variablen NEWSTATE gesetzt. In einem Block 656 wird der Ausgang OUT_D1, OUT_D2 etc., der der Variablen STATE entspricht, aktiviert und die Routine kann enden.
-
Selbstverständlich handelt es sich bei der Arbeitsweise 450 der 9 und den Routinen der 10-12 lediglich um Beispiele. In anderen Beispielen können Blöcke geändert, neue Blöcke hinzugefügt, Blöcke neu angeordnet, weggelassen und/oder kombiniert werden. In 10 können, nur als ein Beispiel, die Blöcke 508, 516, 520 und 524 wegfallen, wenn eine spezielle Handhabung der Eingänge mit einem Status „BAD“ nicht erforderlich ist oder nicht gewünscht wird.
-
In einem anderen Beispiel könnte der Block 636 so geändert werden, dass die Variable z auf die Nummer des letzten Bits ungleich 0 in TEMP gesetzt wird. In einem weiteren Beispiel könnte der Block 636 so geändert werden, dass z auf Basis von Prioritätsdaten entsprechend der Nummer eines der Bits ungleich 0 in TEMP besetzt wird.
-
Mit Bezug auf 4 müssen nicht alle der Datenausgänge Indikatoren des Zustands des Zustandsautomaten sein, die dem SMFB 200 entspricht. In einem Ausführungsbeispiel können beispielsweise die Werte für die Ausgänge OUT_D1, OUT_D2 etc., die den verschiedenen Zuständen des Zustandsautomaten entsprechen, konfigurierbar sein. So kann z.B. für bestimmte Zustände eine Vielzahl der Ausgänge OUT_D1, OUT_D2 etc. aktiviert werden. Damit ein Programmierer den SMFB konfigurieren kann, kann eine Konfigurierungsapplikation in der Display-Vorrichtung 120 eine dem Funktionsblock zugeordnete Bedienerführung zur Anzeige bringen, wie z.B. ein Konfigurierungsfenster, einen Bildschirm etc.
-
13 ist ein Beispiel einer Bedienerführung, die für die mindestens teilweise Konfigurierung eines SMFB wie z.B. des SMFB 200 in 4 genutzt werden kann. Die Bedienerführung umfasst eine Tabelle oder Matrix 700 (im Folgenden als die „Matrix 700“ bezeichnet), die als Teil eines dem SMFB zugeordneten Konfigurierungsfensters, -bildschirms etc. angezeigt werden kann. Die Matrix 700 beinhaltet eine Vielzahl von in Reihen und Spalten angeordneten Zellen 704. Jede Spalte entspricht einem von einer Vielzahl von Ausgängen OUT_D1, OUT_D2 etc. des Zustandsautomat-Funktionsblocks und jede Reihe entspricht einem der möglichen Zustände des Zustandsautomaten. Somit entspricht jede Zelle 704 einem Zustand und einem Ausgang. In anderen Beispielen kann jede Spalte einem von einer Vielzahl von Ausgängen entsprechen, und jede Reihe kann einem der möglichen Zustände des Zustandsautomat entsprechen.
-
Die Ausgänge „1“ bis „4“ der Matrix 700 können jeweils den Ausgängen OUT_D1 bis OUT_D4 des SMFB entsprechen. In ähnlicher Weise können die Zustände „1“ bis „6“ der Matrix 700 den möglichen Zuständen des Zustandsautomaten entsprechen. Zusätzlich kann in diesem Beispiel ein Nutzer jeden der Ausgänge mit einem Etikett versehen. In 13 hat „output 1“ beispielsweise das Etikett „ÖFFNEN VENTIL VLV-101“ (OPEN VALVE VLV-101). Die Etikettierung von Ausgängen kann zum besseren Verständnis der Arbeitsweise des Zustandsautomaten und/oder zur einfacheren Kopplung des Zustandsautomaten mit der Prozessanlage beitragen.
-
Ein Programmierer kann den SMFB durch Eingabe von Konfigurierungsinformation in die Zellen 704 konfigurieren. Insbesondere kann der Programmierer für eine bestimmte Zelle 704, die einem der Zustände und einem der Ausgänge entspricht, Konfigurierungsdaten in die Zelle eingeben, die anzeigen, dass, wenn sich der Zustandsautomat in diesem Zustand befindet, der Ausgang aktiviert werden sollte. In der beispielhaften Matrix 700 wurden Konfigurierungsdaten in einige der Zellen 704 eingegeben. Die Zelle 704A beinhaltet beispielsweise Konfigurierungsdaten, die anzeigen, dass, wenn sich der Zustandsautomat im Zustand „ABGESCHALTET“ befindet, der Ausgang OUT_D3 aktiviert werden sollte. In ähnlicher Weise beinhaltet die Zelle 704B Konfigurierungsdaten, die anzeigen, dass, wenn der Zustandsautomat sich im Zustand „ABGESCHALTET“ befindet, der Ausgang OUT_D4 aktiviert werden sollte.
-
In diesem besonderen Beispiel kann, wenn der Programmierer keine Konfigurierungsdaten in eine Zelle 704 eingibt, davon ausgegangen werden, dass für diesen besonderen Zustand der korrespondierende Ausgang nicht aktiviert werden sollte. Die Zellen 704C und 704D beinhalten beispielsweise keine Einträge „X“, womit angezeigt wird, dass, wenn der Zustandsautomat sich im Zustand „ABGESCHALTET“ befindet, die Ausgänge OUT_D1 und OUT_D2 nicht aktiviert werden sollten. In anderen Ausführungsbeispielen kann der Programmierer Konfigurierungsdaten eingeben, die anzeigen, dass der Zustandsautomat bestimmte Ausgänge nicht aktivieren sollte, wenn er sich in einem bestimmten Zustand befindet. In ähnlicher Weise kann es möglich sein anzuzeigen, dass es bei einem bestimmten Zustand und Ausgang nicht wichtig ist, ob der Ausgang aktiviert wird oder nicht.
-
Der Programmierer kann Konfigurierungsdaten in die Matrix 700 unter Verwendung der verschiedensten Techniken eingeben, auch solcher, die dem Fachmann geläufig sind. Für die Eingabe von Konfigurierungsdaten in eine Zelle 704 kann der Programmierer beispielsweise die Zelle 704 mit einer Maus, einem Trackball, mit Hilfe eines Touchscreens etc. anwählen. Der Nutzer könnte dann die Konfigurierungsdaten direkt, z.B. mittels einer Tastatur in die Zelle 704 eingeben. Alternativ könnte der Programmierer die Zelle 704 anwählen und dann „edit“, „modify“ etc. in einem Pull-Down-Menü oder direkt eine Schaltfläche „Edit“, „Modify“ etc. anwählen. Dann kann die Nutzerschnittstelle dem Programmierer über ein Pull-Down-Menü, ein Fenster, einen Bildschirm etc. eine Liste von Auswahlmöglichkeiten anzeigen. Die Liste der Auswahlmöglichkeiten kann beispielsweise eine Wahl „assert output“ (Ausgang aktivieren), eine Wahl „deassert output“ (Ausgang deaktivieren) und als Option eine Wahl „don't care“ (Ausgang unmaßgeblich) beinhalten. Anschließend kann der Programmierer z.B. mittels einer Tastatur, einer Maus, eines Trackballs, eines Touchscreens etc. eine der Wahlmöglichkeiten anwählen. Wählt der Programmierer die Möglichkeit „assert output“, so können die Konfigurierungsdaten anzeigen, dass für den korrespondierenden Zustand der entsprechende Ausgang aktiviert werden sollte. In der Zelle kann z.B. ein „X“, eine „1“, das Wort „TRUE“, das Wort „ASSERT“ etc. angezeigt werden. Trifft der Programmierer die Wahl „deassert output“, so können die Konfigurierungsdaten anzeigen, dass für den korrespondierenden Zustand der entsprechende Ausgang deaktiviert werden sollte. Die Zelle beispielsweise leer belassen werden, es kann eine „0“, das Wort „FALSE“, das Wort „DEASSERT" etc. in der Zelle angezeigt werden.
-
Obwohl die beispielhafte Matrix 700 Reihen für sechs Zustände und vier Ausgänge umfasst, können ähnliche Matrizen mit einer anderen Anzahl von Zuständen und Ausgängen für SMFBs mit einer anderen Anzahl von Zuständen und Ausgängen verwendet werden. Die Anzahl der Zustände und Ausgänge kann konfigurierbar sein.
-
Nachdem der momentane Zustand in Block 362 festgestellt wurde, können, wie in 7 gezeigt und vorstehend beschrieben, die Datenausgänge des SMFB auf Basis des momentanen Zustands gesetzt werden (Block 366). Die Datenausgänge können beispielsweise gemäß den Konfigurierungsdaten gesetzt werden, die in eine Matrix wie die Matrix 700 der 13 eingegeben wurden. 14 ist ein Blockdiagramm eines anderen Beispiels eines SMFB. Der SMFB 750 ähnelt dem SMFB 400 in 8, umfasst jedoch die Logik 754, die auf Basis des momentanen Zustands des Zustandsautomaten die entsprechenden Ausgänge OUT_D1, OUT_D2 etc. setzt. Insbesondere greift die Logik 754 auf Zustands-/Ausgangskonfigurierungsdaten zu, die in einer Ausgangskonfigurationsdatenbank 758 gespeichert sind. Die Datenbank 758 und die Datenbank 406 können in einem gemeinsamen computerlesbaren Medium oder in unterschiedlichen computerlesbaren Medien abgelegt werden. Die Ausgangskonfigurierungsdaten können Konfigurierungsdaten beinhalten, die in eine Matrix wie die Matrix 700 in 13 eingegeben wurden.
-
15 ist ein Flussdiagramm einer beispielhaften Routine 800, die verwendet werden kann, um einen nächsten Zustand eines SMFB festzustellen und ggf. die entsprechenden Ausgänge OUT_D1, OUT_D2 etc. anzusteuern. Die Routine 800 ähnelt der Routine 600 in 12. Nach dem Block 652 wechselt der Ablauf jedoch zu einem Block 804, in dem entsprechende Ausgänge OUT_D1, OUT_D2 etc. aktiviert werden können.
-
16 ist ein Flussdiagramm einer beispielhaften Routine 850, die genutzt werden kann, um die entsprechenden Ausgänge OUT_D1, OUT_D2 etc. anzusteuern. In einem Block 854 wird eine Variable z auf 1 gesetzt. In einem Block 858 wird der Ausgang OUT_Dz auf den Wert des Bits z eines Elements der Arrayvariablen OUTPUT gesetzt, auf das die Variable STATE zeigt. Jedes Element des Arrays OUTPUT kann eine Variable sein, die für einen der korrespondierenden Zustände die Werte der Ausgänge OUT_D1, OUT_D2 etc. angibt. So kann z.B. OUTPUT[1] dem Zustand 1, OUTPUT[2] dem Zustand 2 etc. entsprechen. Außerdem kann jedes Bit eines jeden Elements einem der Ausgänge OUT_D1, OUT_D2 etc. entsprechen. Bit 1 kann beispielsweise OUT_D1, Bit 2 OUT_D2 etc. entsprechen. In 13 würde das Array OUTPUT für die Matrix 700 z.B. 6 Elemente haben und das Element OUTPUT[1] kann 0x06 sein.
-
In einem Block 862 wird die Variable z inkrementiert und in einem Block 866 kann festgestellt werden, ob der Wert von z größer ist als die Anzahl der Ausgänge OUT_D1, OUT_D2 etc. Ist z nicht größer als die Anzahl der Ausgänge OUT_D1, OUT_D2 etc., so kann die Routine zu Block 858 zurückkehren. Andernfalls kann die Routine enden.
-
Konfigurierungsdaten für den SMFB können auch über andere Arten grafischer Nutzerschnittstellen als die vorstehend beschriebenen eingegeben werden. Beispielsweise können Konfigurierungsdaten über eine grafische Nutzerschnittstelle eingegeben werden, die einem Zustandsübergangsdiagramm ähnlich ist. 17 ist ein beispielhaftes Zustandsübergangsdiagramm 900, das für die Konfigurierung eines SMFB genutzt werden könnte. Das Diagramm 900 umfasst eine Vielzahl von grafischen Elementen 904, 908, 912, 916, 920, 924, 928 und 932. Die Elemente 904, 908 und 912 repräsentieren jeweils die Zustände 1, 2, und 3 eines Zustandsautomaten. Element 916 zeigt an, dass der im Zustand 1 befindliche Zustandsautomat in den Zustand 2 übergehen sollte, wenn INPUT 2 aktiviert ist. Element 920 zeigt an, dass der im Zustand 1 befindliche Zustandsautomat in den Zustand 3 übergehen sollte, wenn INPUT 3 aktiviert ist. Element 924 zeigt an, dass der im Zustand 2 befindliche Zustandsautomat in den Zustand 1 übergehen sollte, wenn INPUT 1 aktiviert ist, und Element 928 zeigt an, dass der im Zustand 3 befindliche Zustandsautomat in den Zustand 1 übergehen sollte, wenn INPUT 1 aktiviert ist. In entsprechender Weise zeigt Element 932 an, dass die im Zustand 3 befindliche Zustandsautomat in den Zustand 2 übergehen sollte, wenn INPUT 4 aktiviert ist.
-
Generell kann ein SMFB durch Software, Firmware oder Hardware oder durch eine Kombination aus Software, Firmware und/oder Hardware implementiert werden. Ein SMFB kann z.B. durch ein oder mehrere der Steuerungsgeräte 12a, 16a, I/O-Vorrichtungen 24, Logiksolver 50 und die Vorrichtungen 22, 23, 60, 62 implementiert werden. In einem weiteren Beispiel kann ein SMFB durch eine oder mehrere der Workstations 18a und 20a implementiert werden. Der SMFB kann beispielsweise durch die Workstation 18a und/oder die Workstation 20a als Teil einer Simulation zum Testen des Betriebs der Prozessanlage oder zur Bedienerschulung implementiert werden. In einigen Ausführungsbeispielen kann der SMFB durch einen Prozessor implementiert werden, dessen Software durch eine programmierbare Logikschaltung, z.B. eine Vorrichtung, die ein Gate-Array, eine Standardzelle, ein feldprogrammierbares Gate-Array (FPGA), ein PROM, ein EPROM, ein EEPROM, einen programmierbaren Logikbaustein (PAL), eine programmierbares logisches Array (PLA) etc. enthält, konfiguriert wurde.
-
Jeder der Blöcke 404, 408, 412, 416 und 420 in 8 und Block 754 in 14 kann durch Software, Firmware oder Hardware oder durch eine Kombination aus Software, Firmware und/oder Hardware implementiert werden. Obwohl die Flussdiagramme in 10-12, 15 und 16 als Routinen beschrieben wurden, könnten diese Flussdiagramme außerdem durch Software, Hardware, Firmware oder eine durch Kombination aus Software, Firmware und/oder Hardware implementiert werden.
-
Ausführungsbeispiele einer Nutzerschnittstelle, wie die vorstehend beschriebenen Nutzerschnittstellen, können ganz oder teilweise durch einen beispielsweise mittels eines Softwareprogramms konfigurierten Prozessor implementiert werden. So kann beispielsweise die Workstation 18a oder 20a oder ein anderer Computer die vorstehend beschriebene Nutzerschnittstelle ganz oder teilweise implementieren. Ein Softwareprogramm für die Implementierung von Ausführungsbeispielen einer Nutzerschnittstelle kann als Software verwirklicht werden, die in einem physikalischen Medium abgelegt ist, wie z.B. auf einer Festplatte, in einem RAM, einem batteriegepufferten RAM, ROM, CD-ROM, PROM, EPROM, EEPROM, einer DVD, einem Flash-Speicher etc., oder in einem mit dem Prozessor verbundenen Speicher, wie z.B. einem RAM. Dem Fachmann ist klar, dass das gesamte Programm oder Teile davon auf bekannte Weise alternativ von einer anderen Vorrichtung als einem Prozessor ausgeführt und/oder in Firmware und/oder zweckgebundene Hardware integriert werden könnten.
-
Obwohl verschiedene Modifikationen und andere Ausführungsarten der Erfindung möglich sind, sind bestimmte Ausführungsbeispiele zur Verdeutlichung in den Zeichnungen dargestellt und werden hierin ausführlich beschrieben. Es ist jedoch klar, dass die Offenlegung nicht auf die spezifischen offengelegten Formen beschränkt sein soll, sondern dass im Gegenteil alle Modifikationen sowie andere Ausführungsarten und Äquivalente abgedeckt werden sollen, die dem Geist und Geltungsbereich der Offenlegung gemäß der Definition in den beigefügten Ansprüchen entsprechen.