-
QUERVERWEIS
AUF ZUGEHÖRIGE
ANMELDUNGEN
-
Die
vorliegende Anmeldung steht im Zusammenhang mit der US-Patentanmeldung
Nr. 10/655,929 mit dem Titel "STATE
MACHINE FUNCTION BLOCK WITH A USER MODIFIABLE OUTPUT CONFIGURATION
DATABASE", die gemeinsames Eigentum
ist und hiermit ausdrücklich
durch Referenz für
alle Zwecke vollständig
in diese Anmeldung einbezogen wird.
-
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.
-
ZUSAMMENFASSUNG
-
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 Uberwachung 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.
-
KURBESCHREIBUNG
DER ZEICHNUNGEN
-
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 Uberwachung
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 VTM 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 DeltaVTM 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 Sichexheitssystemfeldgerä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 Axt
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 TRI_IN_D und einen Eingang TRK_VAL. Wird der Eingang
TRK_IN_D aktiviert, kann der SMFB in einen vom Eingang TRI_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 TRI_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 TRI_VAL gesetzt
wird.
-
Wird
in Block 612 festgestellt, dass der Eingang TRI_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 0 × 44.
-
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 0 × 06
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.