-
GEBIET DER OFFENBARUNG
-
Die
vorliegende Offenbarung betrifft im Allgemeinen ein Prozesssteuerungssystem
und insbesondere dynamische Modifikationsfunktionsblöcke zur Verwendung
in einem Prozesssteuerungssystem.
-
HINTERGRUND
-
Prozesssteuerungssysteme,
wie beispielsweise jene, die in chemischen, Erdöl- oder anderen Prozessen verwendet
werden, umfassen normalerweise eine oder mehr zentrale Prozesssteuereinrichtungen,
die über
analoge, digitale oder kombinierte Analog/Digitalbusse mit wenigstens
einem Host- oder Bediener-Arbeitsplatz und mit einer oder mehr Feldvorrichtungen
kommunikativ verbunden sind. Feldvorrichtungen, die zum Beispiel
Gerätesteuerungen,
Ventile, Ventilstellungsregler, Schalter und Sender (z.B. Temperatur-,
Druck- und Durchflussfühler) sein
können,
führen
Funktionen innerhalb des Prozesssteuerungssystems aus, wie beispielsweise Öffnen oder
Schließen
von Ventilen und Messen von Prozessparametern. Eine zentrale Prozesssteuereinrichtung
empfängt
Signale, die Prozessmessungen darstellen, die von den Feldvorrichtungen
durchgeführt
wurden, und/oder andere Informationen in Bezug auf die Feldvorrichtungen,
verwendet diese Informationen, um eine Steuerroutine zu implementieren, und
erzeugt Steuersignale, die über
die Busse oder andere Übertragungsleitungen
an die Feldvorrichtungen übermittelt
werden, um den Betrieb des Prozesssteuerungssystems zu steuern.
-
In
letzter Zeit gibt es in der Prozesssteuerungsindustrie die Tendenz
zur Verwendung von digitaler Steuerung und Kommunikation zwischen
Feldvorrichtungen, Steuereinrichtungen und anderen Einheiten, die
ein Prozesssteuerungssystem bilden. Als Teil dieser Tendenz zur
digitalen Steuerung und Kommunikation wurde eine Anzahl von digitalen,
sowie kombinierten analogen und digitalen offenen Standardübertragungsprotokollen
entwickelt, um die Zusammenarbeit zwischen Feldvorrichtungen und Steuereinrichtungen
zu ermöglichen.
Zum Beispiel werden solche Übertragungsprotokolle,
wie etwa HART®,
PROFIBUS, WORLDFIP, Device-Net, CANTM und
FOUNDATION Fieldbus (im Folgenden „Fieldbus"), heutzutage sehr häufig verwendet, um schnellere
und informationsreichere Übertragungen zwischen
Feldvorrichtungen und Steuereinrichtungen zu ermöglichen. Insbesondere können die
zuvor erwähnten Übertragungsprotokolle
es ermöglichen, dass
neben Steuerparametern und anderen steuerungsbezogenen Informationen
oder Daten zum Beispiel Konfigurationsinformationen, sowie andere
Typen von Informationen zwischen Feldvorrichtungen und zwischen
Feldvorrichtungen und Steuereinrichtungen übertragen werden. Außerdem ermöglichen die
Standardisierung und die offene Beschaffenheit (d.h. nicht urheberrechtlich
geschützte
Beschaffenheit) der mit diesen Übertragungsprotokollen
assoziierten Standards eine problemlose Integration von Vorrichtungen
verschiedener Hersteller in ein einzelnes Prozesssteuerungssystem,
wodurch der Austausch von Vorrichtungen vereinfacht wird, eine bessere
Auswahl von Feldvorrichtungen zur Implementierung einer bestimmten
Anwendung ermöglicht
wird usw.
-
Viele
der zuvor erwähnten
digitalen oder kombinierten analogen und digitalen Übertragungsprotokolle
ermöglichen
die Implementierung von verteilten Steuerschemas. Insbesondere stellen
diese Übertragungsprotokolle
häufig
einen Rahmen oder eine Architektur bereit, die Feldvorrichtungen
befähigt,
direkt miteinander zusammenzuarbeiten, um eine Prozesssteuerungsanwendung
oder einen Teil einer Prozesssteuerungsanwendung ohne das erforderliche
Eingreifen einer zentralen Prozesssteuereinrichtung auszuführen. Solch
eine Dezentralisierung der Ausführung
der Steuerung kann die Entwicklung von Prozesssteuerroutinen vereinfachen,
den mit einer zentralen Steuereinrichtung verbundenen Kommunikations-
und Verarbeitungsaufwand verringern, die Geschwindigkeit erhöhen, mit
der Informationen durch Vorrichtungen, welche die Informationen
benötigen,
empfangen werden, und demnach die Fähigkeit der empfangenden Vorrichtungen,
schneller geeignete Maßnahmen
auf der Basis der empfangenen Informationen zu ergreifen, verbessern
usw.
-
Einige
der digitalen oder kombinierten analogen und digitalen Übertragungsprotokolle,
die verteilte Steuerung ermöglichen,
verwenden einen Basisbaustein oder ein Softwarekonstrukt, das allgemein als
Funktionsblock bezeichnet wird. Im Allgemeinen können Funktionsblöcke (müssen aber
nicht) unter Verwendung einer höheren
Maschinensprache (z.B. C, C++ usw.) erzeugt werden, die, wenn (z.B. über einen
Prozessor) ausgeführt,
einen oder mehr Algorithmen oder Folgen von Operationen ausführen. Es
gibt mehrere Typen von Funktionsblöcken, wobei jeder Funktionsblocktyp
normalerweise einen spezifischen Teil oder Abschnitt einer Prozesssteuerroutine
implementiert. Im Allgemeinen implementieren Funktionsblöcke Eingabe-,
Steuer-, Ausgabe-, sowie andere Funktionen innerhalb eines Prozesssteuerungssystems
und können
in Steuereinrichtungen und/oder Feldvorrichtungen, die über das
ganze Prozesssteuerungssystem verteilt sind, heruntergeladen und
instantiiert werden. Zum Beispiel kann ein Analogeingang- oder AI-Funktionsblock
in einem Fühler
oder einem Sender instantiiert werden, der so konfiguriert ist,
dass er einen Prozessparameter (z.B. eine Temperatur, einen Durchfluss
usw.) misst, ein Proportional-Integral-Derivativ- oder PID-Funktionsblock
kann in einer Steuereinrichtung instantiiert werden, die mit dem
Fühler
oder Sender, der den AI-Funktionsblock ausführt, in Verbindung stehen kann,
ein Analogausgang- oder AO-Funktionsblock kann in einer anderen Feldvorrichtung,
wie beispielsweise einem Ventil, instantiiert werden, die auf die
Steuereinrichtung anspricht und die einen oder mehr vom AI-Funktionsblock
gemessene Parameter beeinflusst. Demnach können auf diese Weise Funktionsblöcke verschiedenen
Typs in Feldvorrichtungen und Steuereinrichtungen instantiiert und über Übertragungswege
entlang eines Datenbusses, -netzes oder anderer Kommunikationsmedien
miteinander verbunden werden, um Regelkreisfunktionen und/oder alle
anderen gewünschten
Funktionen eines Prozesssteuerungsschemas auszuführen.
-
In
der Vergangenheit waren Funktionsblöcke im Allgemeinen von statischer
Beschaffenheit, weshalb das Verhalten der Blöcke oder die von den Blöcken durchgeführten Operationen
nicht leicht geändert
werden konnten, sobald sie in einer Steuereinrichtung oder einer
anderen Prozesssteuervorrichtung konfiguriert und instantiiert waren.
Folglich musste bei einer Aufrüstung,
Erweiterung oder sonstigen Änderung
des Betriebs eines Funktionsblocks normalerweise ein neuer Funktionsblock
erzeugt werden. Um einen neuen Funktionsblock in einem Prozesssteuerungssystem
zu installieren und zu verwenden, musste das Prozesssteuerungssystem
oder wenigstens ein Teil davon normalerweise außer Betrieb gesetzt und neu
konfiguriert werden (z.B. der neue Funktionsblock musste kompiliert
und auf eine Steuereinrichtung, Feldvorrichtung(en) usw. heruntergeladen
werden). Außerdem
ist es in Fällen,
in welchen Funktionsblöcke
Erweiterungen oder Fähigkeiten
umfassen können,
die in einer Prozesssteuerungsanwendung nicht gebraucht, selten
verwendet oder nur vorübergehend
benötigt
werden, im Allgemeinen nicht effizient (z.B. hinsichtlich der Systemressourcen,
wie beispielsweise Speicher-, Prozessornutzung usw.), Funktionsblöcke statisch
zu instantiieren, die alle möglichen
Erweiterungen oder Fähigkeiten
enthalten, ungeachtet dessen, ob diese Erweiterungen oder Fähigkeiten
tatsächlich
benötigt werden
oder wie oft diese Erweiterungen oder Fähigkeiten durch die Vorrichtungen
verwendet werden, in welchen die Funktionsblöcken gespeichert und/oder instantiiert
sind und ausgeführt
werden.
-
KURZDARSTELLUNG
-
Gemäß einem
Aspekt umfasst ein Prozesssteuerungssystem, das eine Mehrzahl von
Feldvorrichtungen steuern kann, einen beispielhaften Funktionsblock,
der einen Basisfunktionsblock umfasst, der so ausgelegt ist, dass
er einen dynamischen Modifikationsfunktionsblock instantiiert oder
löscht.
Insbesondere umfasst ein beispielhaftes Verfahren zum Modifizieren
des Betriebs des Funktionsblocks das Ablegen des Funktionsblocks
in einem Speicher, das das Ablegen wenigstens eines modifizierbaren
Attributs, das mit dem Basisfunktionsblock verbunden ist, im Speicher
umfasst. Das beispielhafte Verfahren umfasst auch das Setzen des
modifizierbaren Attributs auf einen ersten Wert, um einen dynamischen Modifikationsfunktionsblock
im Speicher zu instantiieren, oder auf einen zweiten Wert, um einen
dynamischen Modifikationsfunktionsblock aus dem Speicher zu löschen. Außerdem umfasst
das beispielhafte Verfahren das Setzen des modifizierbaren Attributs, nachdem
der Basisfunktionsblock kompiliert und im Speicher abgelegt wurde.
-
Gemäß einem
anderen Aspekt wird ein beispielhafter Funktionsblock auf einem
maschinenlesbaren Medium zur Verwendung in einem Prozesssteuerungssystem
gespeichert. Der beispielhafte Funktionsblock umfasst einen Basisfunktionsblock, der
eine Maschine veranlasst, einen Algorithmus auszuführen, der
mit dem Prozesssteuerungssystem assoziiert ist, und wenigstens ein
Attribut, das sich im Basisfunktionsblock befindet und das die Maschine veranlasst,
wenigstens einen dynamischen Modifikationsfunktionsblock zu instantiieren
oder zu löschen. Der
dynamische Modifikationsfunktionsblock ist so konfiguriert, dass
er einen Algorithmus ausführt,
um die Fähigkeit
des Basisfunktionsblocks zu ändern, aufzurüsten oder
zu erweitern.
-
Gemäß einem
weiteren Aspekt ist ein beispielhafter dynamischer Modifikationsfunktionsblock eines
Funktionsblocks so ausgelegt, dass er eine Maschine veranlasst,
einen Basisfunktionsblock des Funktionsblocks in einer Prozesssteuerroutine
zu modifizieren. Der beispielhafte dynamische Modifikationsfunktionsblock
wird auf der Basis von wenigstens einem Attribut des Basisfunktionsblocks
instantiiert oder gelöscht.
Außerdem
weist der Funktionsblock eine Schnittstelle auf, um Daten zwischen
dem Basisfunktionsblock und dem dynamischen Modifikationsfunktionsblock
zu übermitteln.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm, das ein beispielhaftes Prozesssteuerungssystem
veranschaulicht.
-
2 ist
ein Blockdiagramm eines beispielhaften Systems, das verwendet werden
kann, um die hierin beschriebenen beispielhaften Herstellungsgeräte, -verfahren
und -Produkte zu implementieren.
-
3 ist
ein Blockdiagramm eines beispielhaften Funktionsblocks, der einen
beispielhaften Basisfunktionsblock, einen Modifikationsfunktionsblock und
dynamische Modifikationsfunktionsblöcke umfasst.
-
4 ist
ein Blockdiagramm einer beispielhaften Tabelle zur Abbildung von
dynamischen Modifikationsfunktionsblocken.
-
5 ist
ein Blockdiagramm einer beispielhaften Instantiierung eines Funktionsblocks
mit einem dynamischen Modifikationsfunktionsblock.
-
6 ist
ein Blockdiagramm eines beispielhaften Namensraums und Index eines
Funktionsblocks mit einem dynamischen Modifikationsfunktionsblock.
-
7 ist
ein Ablaufdiagramm eines beispielhaften Prozesses, der verwendet
werden kann, um die hierin beschriebenen dynamischen Modifikationsfunktionsblöcke zu instantiieren
und/oder zu löschen.
-
8 ist
eine schematische Darstellung eines beispielhaften Verarbeitungssystems,
das verwendet werden kann, um die hierin beschriebenen Verfahren
und Geräte
zu implementieren.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Es
ist zu erwähnen,
dass, obwohl im Folgenden beispielhafte Geräte und Systeme beschrieben werden,
die neben anderen Komponenten Software und/oder Firmware umfassen,
die auf Hardware ausgeführt
werden, solche Systeme lediglich der Veranschaulichung dienen und
nicht als beschränkend
anzusehen sind. Zum Beispiel wird in Betracht gezogen, dass irgendeine
oder alle dieser Hardware-, Software- und Firmwarekomponenten ausschließlich in
Hardware, ausschließlich
in Software oder in irgendeiner Kombination von Hardware und Software verwirklicht
werden könnten.
Demgemäß ist für Durchschnittsfachleute
offensichtlich, dass, obwohl im Folgenden beispielhafte Geräte und Systeme
beschrieben werden, die bereitgestellten Beispiele nicht die einzige
Art und Weise darstellen, solche Geräte und Systeme zu implementieren.
-
Ein
Ansatz, um der Art und Weise, in welcher die Fähigkeiten und der Betrieb von
Funktionsblöcken
modifiziert, erweitert, ausgebaut, aufgerüstet oder auf eine andere Weise
geändert
werden können,
mehr Flexibilität
zu verleihen, ist in
US-Patent Nr.
6,510,351 beschrieben, dessen gesamte Offenbarung durch
Bezugnahme hierin aufgenommen wird. Wie in diesem Patent dargelegt,
können
der Betrieb oder die Fähigkeiten
eines Basis- oder Ursprungsfunktionsblocks durch Bereitstellen von
Zeigern (z.B. Speicheradressen) im Basisfunktionsblock derart geändert werden,
dass die Zeiger so gesetzt werden können, dass sie die Steuerung
veranlassen, sich zu einem oder mehr Modifikationsfunktionsblöcke zu verzweigen.
In einigen Fällen
kann ein Basisfunktionsblock mehrere Zeiger enthalten, um eine Verzweigung
zu verschiedenen Abschnitten (z.B. verschiedenen Algorithmen oder
Routinen) eines einzelnen Modifikationsfunktionsblocks zu bewirken und/oder
eine Verzweigung zu mehreren verschiedenen Funktionsblöcken zu
bewirken. Demnach kann die Ausführung
eines Basisfunktionsblocks zur Verzweigung zu einem Modifikationsfunktionsblock,
der Ausführung
von Operationen im Zusammenhang mit diesem Modifikationsfunktionsblock
und der anschließenden
Rückgabe
der Kontrolle an den Basisfunktionsblock durch den Modifikationsfunktionsblock
führen.
Bestimmte Daten und/oder Parameter können zwischen den Basis- und
Modifikationsfunktionsblöcken übermittelt
werden, um den Modifikationsfunktionsblock zu befähigen, seine
Operationen durchzuführen
und/oder die Art und Weise zu ändern,
in welcher der Basisfunktionsblock arbeitet oder Informationen verarbeitet.
-
Der
zuvor erwähnte
Modifikationsfunktionsblock ist jedoch nicht voll dynamisch, da
der Modifikationsfunktionsblock erzeugt und instantiiert wird, wenn
der Funktionsblock erzeugt wird, und demnach wird der lokale Speicher
verbraucht, der zum Speichern des Basisfunktionsblocks und des Modifikationsfunktionsblocks
erforderlich ist. Das heißt,
die Erzeugung des Funktionsblocks erfordert die Erzeugung des Modifikationsfunktionsblocks,
unabhängig davon,
ob die Erweiterungen oder Änderungen,
die durch den Modifikationsfunktionsblock bereitgestellt werden,
verwendet werden oder nicht. Außerdem
begrenzt der Datenaustausch über
die Schnittstelle durch Parameterübergabe die Menge von Daten,
die ausgetauscht werden können,
und erhöht
die Anzahl von Zyklen und infolgedessen die Zeit, die zur Übermittlung
von Daten benötigt
wird. Ferner stellt der Modifikationsfunktionsblock keine Parameter
bereit, die außerhalb
des Modifikationsfunktionsblocks dargestellt werden können, da
die Parameter des Modifikationsfunktionsblocks nicht auf jene des
Basisfunktionsblocks abgebildet werden.
-
Die
hierin beschriebenen dynamischen Modifikationsfunktionsblöcke können verwendet
werden, um die Fähigkeit
eines anderen Funktionsblocks, der hierin als Basisfunktionsblock
bezeichnet wird, zu ändern,
aufzurüsten
oder zu erweitern. Außerdem
besitzt ein Benutzer mit den hierin beschriebenen dynamischen Modifikationsfunktionsblocken die
Fähigkeit,
einen Algorithmus auszuführen,
der mit dem dynamischen Modifikationsfunktionsblock verbunden ist,
und außerdem
einen dynamischen Modifikationsfunktionsblock und Daten, die mit
einem dynamischen Modifikationsfunktionsblock verbunden sind, zu
instantiieren und aus dem lokalen Speicher zu löschen. Demnach können die
hierin beschriebenen dynamischen Modifikationsfunktionsblöcke im Gegensatz
zu bekannten Modifikationsblöcken
während
der Laufzeit (z.B. während
das Prozesssteuerungssystem in Betrieb ist oder läuft) und/oder
zu jedem Zeitpunkt vor der Laufzeit, wie beispielsweise beim Download,
instantiiert werden. Außerdem
können
die dynamischen Modifikationsfunktionsblöcke während der Laufzeit gelöscht oder
vor der Laufzeit nicht instantiiert werden.
-
Bei
Verwendung der hierin beschriebenen dynamischen Modifikationsfunktionsblöcke bleibt
der Basisfunktionsblock normalerweise unverändert, mit Ausnahme des Falls,
wenn er die Fähigkeit
besitzt, es einem Benutzer zu ermöglichen, dynamische Modifikationsfunktionsblöcke über ein
oder mehr Attribute im Basisfunktionsblock zu instantiieren und/oder zu
löschen.
Tatsächlich
befähigen
die hierin beschriebenen Modifikationsfunktionsblöcke einen
Benutzer, die Fähigkeit
oder den Betrieb einer Basisfunktionsblocks zu modifizieren, erweitern
oder auf eine andere Weise zu ändern,
indem ein Attribut des Basisfunktionsblocks geändert wird, das normalerweise
für den
Betrieb der Prozesssteuerroutine erforderlich ist und das oft instantiiert
bleiben muss, um die Ausführung
der Prozesssteuerroutine zu ermöglichen.
Die Fähigkeit,
die hierin beschriebenen dynamischen Modifikationsfunktionsblöcke leicht
hinzuzufügen
und/oder zu löschen,
kann dazu dienen, die Geschwindigkeit erheblich erhöhen, mit
welcher erweiterte Steuerungsfähigkeiten
für Prozesssteuerungssysteme
entwickelt werden können.
Außerdem muss
der Benutzer nur dann den Aufwand für den Basisstationsblock erhöhen und
einen lokalen Gerätespeicher
verwenden, wenn der Benutzer eine bestimmte Anwendung hat, welche
die Merkmale verwendet, die durch den/die dynamischen Modifikationsfunktionsblock
oder -blöcke
bereitgestellt werden. Das heißt,
der Benutzer oder Bediener kann den Aufwand des Systems durch Nichtinstantiieren
oder Löschen
eines bereits instantiierten dynamischen Modifikationsfunktionsblocks
reduzieren, wenn die hinzugefügte
Funktionalität,
die durch den dynamischen Modifikationsfunktionsblock bereitgestellt
wird, nicht gebraucht wird.
-
1 ist
ein Blockdiagramm eines beispielhaften Prozesssteuerungssystems 10,
das die hierin beschriebenen Geräte
und Verfahren mit dynamischen Modifikationsfunktionsblöcken verwendet.
Wie in 1 dargestellt, umfasst das Prozesssteuerungssystem 10 eine
Steuereinrichtung 12, eine Bedienungsstation 14,
eine aktive Anwendungsstation 16 und eine Reserveanwendungsstation 18,
die allesamt über
einen Bus oder ein lokales Netz (LAN) 20, das allgemein
als Anwendungssteuerungsnetz (ACN) bezeichnet wird, kommunikativ
verbunden sein können.
Die Bedienungsstation 14 und die Anwendungsstation 16 können unter
Verwendung einer oder mehr Workstations oder irgendwelcher anderen geeigneten
Computersysteme oder Verarbeitungseinheiten implementiert sein.
Zum Beispiel könnte die
Anwendungsstation 16 unter Verwendung von Personalcomputern
mit nur einem Prozessor, Ein- oder Mehrprozessor-Workstations usw.
implementiert sein. Außerdem
kann das LAN 20 unter Verwendung jedes gewünschten
Kommunikationsmediums und Übertragungsprotokolls
implementiert sein. Zum Beispiel kann das LAN 20 auf einem
fest verdrahteten oder drahtlosen Ethernet-Übertragungsschema basieren,
das allgemein bekannt ist und demnach hierin nicht näher beschrieben
wird. Für
Durchschnittsfachleute ist jedoch offensichtlich, dass jedes andere
geeignete Kommunikationsmedium und Übertragungsprotokoll verwendet
werden könnte. Außerdem,
obwohl nur ein einziges LAN dargestellt ist, können mehr als ein LAN und eine
geeignete Kommunikationshardware in der Anwendungsstation 16 verwendet
werden, um redundante Übertragungswege
zwischen der Anwendungsstation 16 und der Steuereinrichtung 12 bereitzustellen.
-
Die
Steuereinrichtung 12 kann über einen Datenbus 28 und
eine Eingabe/Ausgabe- oder I/O-Vorrichtung 30 mit einer
Vielzahl von intelligenten Feldvorrichtungen 22, 24 und 26 verbunden
sein. Die I/O-Vorrichtung 30 stellt eine oder mehr Schnittstellen
für die
Steuereinrichtung 12 und alle anderen Vorrichtungen bereit,
die an den Datenbus 28 angeschlossen sind (z.B. die intelligenten
Feldvorrichtungen 22 bis 26 usw.), um mittels
Signalen, die durch diese Schnittstellen gesendet und empfangen
werden, miteinander zu kommunizieren. Zum Beispiel kann die I/O-Vorrichtung 30 durch
jeden Typ aktueller oder zukünftiger
Standardschnittstellen, wie beispielsweise eine externe Speicherschnittstelle,
einen seriellen Anschluss, einen Universaleingang/-ausgang oder
jeden Typ aktueller oder zukünftiger
Kommunikationsvorrichtungen, wie beispielsweise ein Modem, eine
Netzwerkkarte usw., implementiert sein. Der Datenbus 28 kann
jede physikalische Anordnung sein, die eine logische Übertragungsfunktionalität bereitstellt,
wie beispielsweise parallele elektrische Busse mit Mehrfachanbindungen,
bitweisen seriellen Verbindungen, sowohl parallelen als auch bitweisen
seriellen Verbindungen, Switched-Hub-Verbindungen, eine Multidrop-Topologie, eine
Liniennetztopologie usw.
-
Die
intelligenten Feldvorrichtungen 22 bis 26 können Fieldbus-konforme
Ventile, Stellglieder, Fühler
usw. sein, in welchem Fall die intelligenten Feldvorrichtungen 22 bis 26 unter
Verwendung des allgemein bekannten Fieldbus-Protokolls über den
Datenbus 28 kommunizieren. Natürlich könnten stattdessen auch andere
Typen von intelligenten Feldvorrichtungen und Übertragungsprotokollen verwendet
werden. Zum Beispiel könnten
die Feldvorrichtungen 22 bis 26 stattdessen Profibus-
oder HART-konforme Vorrichtungen sein, die unter Verwendung der
allgemein bekannten Profibus- und HART-Übertragungsprotokolle kommunizieren.
Zusätzliche
I/O-Vorrichtungen (ähnlich
der I/O-Vorrichtung 30 oder identisch damit) können mit
der Steuereinrichtung 12 verbunden sein, um zusätzlichen
Gruppen von intelligenten Feldvorrichtungen, welche Fieldbus-Vorrichtungen, HART-Vorrichtungen
usw. sein können,
zu ermöglichen,
mit der Steuereinrichtung 12 zu kommunizieren.
-
Die
zentrale Prozesssteuerroutine, die sich in der Steuereinrichtung 12 befindet,
empfängt
Eingaben von den Feldvorrichtungen 22 bis 26,
führt Berechnungen
und andere Aktivitäten,
die mit der Steuerroutine verbunden sind, durch und sendet über die I/O-Vorrichtung 30 Befehle
an die Feldvorrichtungen 22 bis 26, um jegliche
gewünschte
Steuerung des beispielhaften Prozesssteuerungssystems 10 zu
implementieren. Im Allgemeinen führt
die zentrale Prozesssteuerroutine Berechnungen und andere Aktivitäten, die
mit der Steuerroutine assoziiert sind, unter Verwendung von Funktionsblöcken durch.
Der dezentrale Prozesssteuerungsabschnitt des Prozesssteuerungsnetzes 10 (d.h.
der Abschnitt, der dem Bus 28 in 1 zugeordnet
ist) kann in Verbindung mit oder anstelle der Steuerung, die von
der Steuereinrichtung 12 durchgeführt wird, seine eigene Prozesssteuerroutine
auf eine dezentrale Weise implementieren. Obwohl sich die Steuereinrichtung 12 an die
mit dem Bus 28 verbundenen Vorrichtungen 22 bis 26 ankoppeln
und eine gewisse Kontrolle darüber ausüben kann,
können
diese Vorrichtungen demnach auch Steuerfunktionen oder Funktionsblöcke speichern
und ausführen,
um eine verteilte Steuerung zu implementieren.
-
Die
hierin beschriebenen dynamischen Modifikationsfunktionsblöcke können verwendet
werden, um die Fähigkeit
oder den Betrieb jedes Funktionsblocks oder anderen Funktionselements,
das sich in der Steuereinrichtung 12, in der I/O-Vorrichtung 30, in
jeder der Feldvorrichtungen 22 bis 26 in 1 oder in
jeder anderen Vorrichtung innerhalb des Prozesssteuerungssystems 10 befindet,
zu modifizieren, zu erweitern oder auf eine andere Weise zu ändern. Obwohl
die dynamischen Modifikationsfunktionsblöcke hierin als im Fieldbus-Protokoll
implementiert beschrieben werden, können sie demnach stattdessen in
jedem anderen Steuerungs- oder Übertragungsprotokoll
implementiert werden, einschließlich
jener, die mit irgendwelchem Steuereinrichtungs- oder Übertragungsprotokoll
assoziiert sind, die heute verwendet oder in Zukunft entwickelt
werden.
-
Zusätzlich zu
den intelligenten Feldvorrichtungen 22 bis 26 können ein
oder mehr nichtintelligente Feldvorrichtungen 32 und 34 kommunikativ
mit der Steuereinrichtung 12 verbunden sein. Die nichtintelligenten
Feldvorrichtungen 32 und 34 können zum Beispiel herkömmliche
4-20-Milliampere (mA)- oder 0-10-Volt-Gleichstrom (VDC)-Vorrichtungen sein,
die mit der Steuereinrichtung 12 über jeweilige fest verdrahtete
Verbindungen 36 und 38 kommunizieren.
-
Die
Steuereinrichtung 12 kann zum Beispiel eine DeltaVTM-Steuereinrichtung sein, die von Fisher-Rosemount
Systems, Inc. und Emerson Process ManagementTM vertrieben
wird. Es könnte
stattdessen jedoch irgendeine andere Steuereinrichtung verwendet
werden. Außerdem
obwohl in 1 nur eine Steuereinrichtung
dargestellt ist, könnten
zusätzliche Steuereinrichtungen
jedes gewünschten
Typs oder jeder gewünschten
Kombination von Typen an das LAN 20 angeschlossen werden.
In jedem Fall kann die Steuereinrichtung 12 eine oder mehr
Prozesssteuerroutinen durchführen,
die mit dem Prozesssteuerungssystem 10 assoziiert sind
und die durch einen Systemtechniker oder einen anderen Systembediener
unter Verwendung der Bedienungsstation 14 erzeugt wurden
und die in die Steuereinrichtung 12 heruntergeladen und
darin instantiiert wurden.
-
2 veranschaulicht
ein beispielhaftes System 200, das zum Beispiel verwendet
werden kann, um das beispielhafte Prozesssteuerungssystem 10 und
insbesondere durch die beispielhafte Steuereinrichtung 12 mit
der I/O-Vorrichtung 30, dem Datenbus 28 und den
Feldvorrichtungen 22 bis 26 in 1 zu
implementieren. Das beispielhafte System 200 umfasst einen
Steuerungsteilsystemplaner 202, ein Steuermodul 204 und
Funktionsblöcke 206.
Normalerweise ist der Steuerungsteilsystemplaner 202, der
sich in der beispielhaften Steuereinrichtung 12 in 1 befinden
kann, als eine Softwareanwendung implementiert, welche die Operationen
oder Prozesse des Steuermoduls 204 in einer vorbestimmten Reihenfolge
zusammen mit irgendwelchen anderen Steuermodulen, die durch den
Steuerungsteilsystemplaner 202 gesteuert werden können, ausführt. Zum
Beispiel kann der Steuerungsteilsystemplaner 202 das Steuermodul 204 auf
einem Regelkreis ausführen.
Mit anderen Worten steuert oder koordiniert der Steuerungsteilsystemplaner 202 den
Betrieb von mehreren Steuermodulen (nicht dargestellt) zusätzlich zum
Steuermodul 204. Steuermodule enthalten normalerweise Steuerroutinen,
die instantiiert und ausgeführt
werden können,
um Steuerfunktionen oder Aktivitäten
in Verbindung mit den jeweiligen Betriebsbereichen, Geräten usw.
auszuführen.
Genauer gesagt, können
die Steuermodule 204 mit einem oder mehr Einheiten von
physikalischen Geräten oder
Vorrichtungen verbunden sein, und sie können demnach verwendet werden,
um die Geräte
oder Vorrichtungen (z.B. die Feldvorrichtungen 22 bis 26 in 2)
zu überwachen
und/oder zu steuern.
-
Außerdem können die
Steuermodule 204 aus weiteren Objekten und Teilobjekten
zusammengesetzt sein. Für
Erörterungszwecke
werden solche Objekte und Teilobjekte im Folgenden jedoch nur in Verbindung
mit dem Steuermodul 204 beschrieben. Das Steuermodul 204 besteht
aus kommunikativ miteinander verbundenen Funktionsblöcken 206,
welche Objekte in einem objektorientierten Programmierungsprotokoll
sind, die Funktionen innerhalb des Steuerungsschemas auf der Basis
von Eingaben ausführen
und Ausgaben an andere Funktionsblöcke innerhalb des Steuerungsschemas übermitteln.
Das Steuermodul 204 kann mit einer Steuereinrichtung (z.B.
der Steuereinrichtung 12 in 1) verbunden sein,
und in einigen Fällen
kann eine Feldvorrichtung (z.B. die Feldvorrichtungen 22 bis 26 in 1)
das Steuermodul 204 oder einen Abschnitt davon speichern
und ausführen.
-
Das
Steuermodul 204 und seine Funktionsblöcke 206 können mit
einem oder mehr Attributen assoziiert sein, die Parameter sein können, wie
zum Beispiel Eingangsvariable, Ausgangsvariable oder dergleichen,
die mit den physikalischen und/oder Steuerbedingungen innerhalb
eines Prozesssteuerungsteilsystems assoziiert sind. Außerdem kann
jeder der Funktionsblöcke 206 mit
einem oder mehr Attributen assoziiert sein. Die Funktionsblöcke 206,
die im Folgenden ausführlich
beschrieben werden, können
jeweils eine oder mehr mathematische Funktionen (z.B. Summierungsoperationen,
Multiplikationsoperationen, Divisionsoperationen usw.), logische Funktionen,
Ausdrücke
(z.B. logische ODER, UND usw.), Steuerfunktionen, Schnittstellen,
Abgleichfunktionen oder irgendwelche anderen gewünschten Funktionen innerhalb
eines Prozesssteuerungssystems enthalten.
-
Die
Funktionsblöcke 206 bestehen
aus Software und/oder irgendeinem anderen Typ von Logik, um Eingansparameter
gemäß einem
spezifizierten Algorithmus und einem internen Satz von Steuerparametern
zu verarbeiten. Auf diese Weise kann jeder der Steuerblöcke 206 Ausgangsparameter
erzeugen, die zur Verwendung durch das Steuermodul 204 verfügbar sind,
andere Funktionsblöcke
oder irgendeine andere Software, programmierbare Vorrichtung usw., die
mit den Funktionsblöcken 206 kommunikativ
verbunden sind. Insbesondere können
die Eingangsparameter eines der Funktionsblöcke 206 mit den Ausgangsparametern
eines oder mehrerer anderer der Funktionsblöcke 206 oder anderer
Funktionsblöcke außerhalb
des Steuermoduls 204 und des Steuerungsteilsystemplaners 202 verknüpft werden.
Die Parameter, die mit den Funktionsblöcken 206 assoziiert
sind, können
den gesamten Anwendungsprozess (z.B. Herstellungs-ID, Gerätetyp usw.),
betreffen, Steuerfunktionen (z.B. PID-Steuereinrichtung, Analogeingang usw.)
einbeziehen und/oder eine Schnittstelle zu Fühlern, wie beispielsweise Temperaturfühlern, Druckfühlern, Durchflussfühlern usw.
darstellen.
-
Jeder
der Funktionsblöcke 206 wird
durch eine eindeutige Kennzeichnung identifiziert, die durch einen
Benutzer vergeben werden kann. Außerdem werden die Parameter
jedes Funktionsblocks durch Objektbeschreibungen dargestellt, die
definieren, wie die Parameter im ganzen Prozesssteuerungssystem übermittelt
werden. Demnach werden viele Parameter im System durch Bezugnahme
auf ihre Kennzeichnung (d.h. die Kennzeichnung für den Funktionsblock, der mit
dem Parameter assoziiert ist) und den Parameternamen eindeutig identifiziert. Während der
Laufzeit werden, nachdem der Funktionsblock unter Verwendung der
entsprechenden Eingangswerte ausgeführt ist, seine Ausgaben (d.h. Ausgangswerte)
aktualisiert und dann an die anderen Funktionsblöcke 206 und/oder irgendeine
andere Vorrichtung des Prozesssteuerungssystems gesendet, die diese
Ausgaben liest (z.B. sich daran anschließt oder anbindet). Die Funktionsblöcke 206 können sich
in derselben Feldvorrichtung und/oder in verschiedenen Vorrichtungen
des Prozesssteuerungssystems befinden.
-
Normalerweise
kann beim Verwenden bekannter Technologien eine Modifikation oder
eine Änderung
am Algorithmus irgendeines der Funktionsböcke 206 erfordern,
dass das beispielhafte System 200 aktualisiert wird, indem
zum Beispiel der Steuerungsteil systemplaner 202 angehalten
wird, der dann Anrufe an das Steuermodul 204 und alle anderen
Steuermodule, die durch den Steuerungsteilsystemplaner 202 abgerufen
oder angerufen werden, einstellt. Dann kann ein Benutzer einen oder
mehr der Funktionsblöcke 206 modifizieren,
um die jeweiligen Algorithmen des einen oder der mehreren Funktionsböcke 206 zu ändern. Mit
den hierin beschriebenen dynamischen Modifikationsfunktionsblöcken jedoch
kann ein Benutzer einen Algorithmus erzeugen, um die Fähigkeit
oder den Betrieb eines oder mehrerer der Funktionsblöcke 206 zu
modifizieren, zu erweitern oder auf eine andere Weise zu ändern, und den
Algorithmus des dynamischen Modifikationsfunktionsblocks oder der
dynamischen Modifikationsfunktionsblöcke während der Laufzeit instantiieren. Demnach
ermöglichen
es die hierin beschriebenen dynamischen Modifikationsfunktionsblöcke, das
System 200 zu aktualisieren oder zu modifizieren, ohne den
Steuerungsteilsystemplaner 202 anzuhalten. Folglich müssen Anrufe
an das Steuermodul 204 und alle anderen Steuermodule, die
durch den Steuerungsteilsystemplaner 202 angerufen werden,
nicht eingestellt werden. Demgemäß ermöglichen
die hierin beschriebenen dynamischen Modifikationsfunktionsblöcke Modifikationen
am beispielhaften System, die sonst Unterbrechungen oder eine andere
derartige Beendigung der Operationen von Feldvorrichtungen und/oder
Prozesssteuerungssystemen erfordert haben würden. Demgemäß verhindern
die hierin beschriebenen dynamischen Modifikationsfunktionsblöcke solche
Unterbrechungen oder Beendigungen, die erhebliche Herstellungskosten
und -zeit bedingen können,
während
sie Modifikationen, Erweiterungen oder andere Änderungen an der Fähigkeit
oder dem Betrieb eines Prozesssteuerungssystems ermöglichen.
-
3 stellt
einen beispielhaften Funktionsblock 300 dar, der eine beispielhafte
Funktionsblockdefinition 302, einen beispielhaften Basisfunktionsblock 304,
einen beispielhaften Modifikationsfunktionsblock 306 und
beispielhafte dynamische Modifikationsfunktionsblöcke 308 und 309 umfasst.
Die beispielhafte Funktionsblockdefinition 302 stellt Definitionen
und Attribute bereit, um den beispielhaften Funktionsblock 300 zu
erzeugen, und weist die Daten für
den beispielhaften Basisfunktionsblock 304, den beispielhaften
Modifikationsfunktionsblock 306 und die beispielhaften
dynamischen Modifikationsfunktionsblöcke 308 und 309 zu.
-
Wie
im Folgenden in Verbindung mit 4 ausführlich beschrieben,
wird die beispielhafte Funktionsblockdefinition 302 beim
Download (z.B. auf eine Feldvorrichtung heruntergeladen) erzeugt,
um Speicher- und Indexobjekte (z.B. den beispielhaften Basisfunktionsblock 304,
den beispielhaften Modifikationsfunktionsblock 306 und
die beispielhaften dynamischen Modifikationsfunktionsblöcke 308 und 309)
zuzuweisen. Wie gezeigt, wird die beispielhafte Funktionsblockdefinition 302 erzeugt,
um die Definition und die Objektdaten (z.B. Algorithmus und Datenblock)
zu instantiieren, welche die Ausführung des beispielhaften Basisfunktionsblocks 304 und
des beispielhaften Modifikationsfunktionsblocks 306 ermöglichen.
Außerdem
wird die beispielhafte Funktionsblockdefinition 302 beim
Download erzeugt, um die Definitionen für die dynamischen Modifikationsfunktionsblöcke 308 und 309 zu
instantiieren, aber nur die Objektdaten (z.B. Algorithmus und Datenblock),
welche die Ausführung
des beispielhaften dynamischen Modifikationsfunktionsblocks 308 ermöglichen,
und nicht den Datenblock für
den dynamischen Modifikationsfunktionsblock 309.
-
Bekanntlich
kann der Modifikationsfunktionsblock 306 verwendet werden,
um die Fähigkeit
des Basisfunktionsblocks 304 zu ändern, aufzurüsten oder
zu erweitern. Der Basisfunktionsblock 304 enthält eine
Softwareroutine oder einen Algorithmus, der einen oder mehr Sätze von
Anweisungen aufweist, die durch einen Prozessor in einer Feldvorrichtung, Steuereinrichtung
usw. auszuführen
sind. Außerdem enthält der Basisfunktionsblock 304 einen
oder mehr Datenblöcke,
die in einem lokalen Speicher abgelegt sind und die Eingangsdaten
sein können,
die dem Algorithmus zur Verfügung
gestellt werden, oder Ausgangsdaten, die durch den Algorithmus erzeugt
werden, der mit dem Basisfunktionsblock 304 assoziiert ist.
Außerdem
umfasst der Basisfunktionsblock 304 einen Verzweigungspunkt 310,
der verwendet wird, um eine erweiterte Fähigkeit bedingt zu implementieren,
die durch den Modifikationsfunktionsblock 306 bereitgestellt
wird, der einen Algorithmus, der aus einer Reihe von Anweisungen
besteht, und Daten, die im lokalen Speicher abgelegt sind, aufweist.
-
Der
Verzweigungspunkt 310 wird im Allgemeinen im Basisfunktionsblock 304 erzeugt,
wenn der Funktionsblock 300 erzeugt wird, und er kann aktualisiert
werden, nachdem der Funktionsblock 304 kompiliert ist.
Die Inhalte des Verzweigungspunkts 310 sind so gesetzt,
dass sie einen Zeiger auf eine Einsprungstelle 312 des
Algorithmus im Modifikationsfunktionsblock 306 oder auf
die nächste
Codezeile des Algorithmus im Basisfunktionsblock 304 enthalten.
Demnach kann ein Benutzer den Wert des Zeigers ändern, um die Ausführung eines
oder mehrerer Algorithmen, die mit dem Modifikationsfunktionsblock 306 assoziiert
sind, zu aktivieren/deaktivieren, um dadurch die Fähigkeit
des Basisfunktionsblocks 304 zu ändern, aufzurüsten oder
zu erweitern. Der Zeiger am Verzweigungspunkt 310 kann
eine Adresse sein, welche die Adresse des Modifikationsfunktionsblocks 306 im
Speicher, die Adresse irgendeines Teils des Algorithmus des Modifikationsfunktionsblocks 306,
den Namen oder eine andere Kennung des Modifikationsfunktionsblocks 306 angibt,
oder er kann jede andere Bearbeitungs- oder Verzweigungseinrichtung
sein, die verwendet wird, um die Kontrolle an den Modifikationsfunktionsblock 306 zu übergeben.
-
Wenn
die Kontrolle an den Modifikationsfunktionsblock 306 übergeben
wird, werden bestimmte vordefinierte Daten an den Modifikationsfunktionsblock 306 übermittelt
oder ihm zur Verfügung
gestellt, und der Modifikationsfunktionsblock 306 verwendet
oder ändert
diese Daten während
der Ausführung
seines Algorithmus oder seiner Algorithmen. Die Daten können durch
eine feste oder vordefinierte Schnittstelle 314 bereitgestellt
werden, die normalerweise Parameter und/oder Datenwerte zur Verwendung
durch den Modifikationsfunktionsblock 306, wohin die Kontrolle
innerhalb des Basisfunktionsblocks 304 zurückgegeben
werden soll, und/oder jegliche andere Daten oder Informationen enthält, die zur
Ausführung
des Algorithmus des Modifikationsfunktionsblocks 306 benötigt werden,
um die Kontrolle zu übernehmen,
auszuführen
und die Kontrolle an den Basisfunktionsblock 304 zurückzugeben.
-
Die
Schnittstelle 314 kann als ein vordefinierter Abschnitt
eines Speichers innerhalb einer Vorrichtung implementiert sein,
sie kann innerhalb des Basisfunktionsblocks 304 oder des
Modifikationsfunktionsblocks 306 vorgesehen sein, oder
sie kann auf irgendeine andere Weise bereitgestellt sein. Danach implementiert
der Modifikationsfunktionsblock 306 den Algorithmus, der
nach den Daten handelt, die über
die Schnittstelle 314 bereitgestellt werden, eine Rücksprunganweisung 316 gibt
die Kontrolle an einen vorbestimmten Punkt im Algorithmus des Basisfunktionsblocks 304 zurück, der
eine Anweisung unmittelbar nach dem Verzweigungspunkt 310 sein kann
oder der durch die Schnittstelle 314 in irgendeiner Weise
so definiert werden kann, dass er eine andere Position des Algorithmus
im Basisfunktionsblock 304 ist. Die Rücksprunganweisung 316 kann jeder
gewünschte
Typ von Rücksprunganweisung sein,
wie beispielsweise eine GOTO- oder eine END LOOP-Anweisung, und/oder
sie kann in Abhängigkeit
vom Codetyp, der im Modifikationsfunktionsblock 306 verwendet
wird, jede andere Form annehmen. Außerdem gibt der Modifikationsfunktionsblock 306 bestimmte
Daten über
die Schnittstelle 314 zurück, welche dieselbe Schnittstelle
oder eine andere Schnittstelle sein kann als die, die verwendet
wird, um die Kontrolle und/oder Daten an den Modifikationsfunktionsblock 306 zu
senden.
-
Da
der Basisfunktionsblock 304 und der Modifikationsfunktionsblock 306 zusammen
erzeugt werden, wenn der Funktionsblock 300 erzeugt wird, wird
der lokale Speicher verbraucht, der zum Speichern des Modifikationsblocks 306 benötigt wird,
unabhängig
davon ob die Funktionalität
des Modifikationsfunktionsblocks 306 verwendet wird oder
nicht. Mit anderen Worten erfordert die Erzeugung des Funktionsblocks 300 die
Erzeugung des Modifikationsfunktionsblocks 306. Außerdem begrenzt
der Datenaustausch über
die Schnittstelle durch Parameterübergabe die Menge an Daten,
die ausgetauscht werden können,
und erhöht
die Anzahl von Zyklen und infolgedessen die Zeit, die zur Übermittlung
von Daten benötigt
wird. Außerdem
stellt der Modifikationsfunktionsblock 306 keine Parameter
bereit, die außerhalb
des Modifikationsfunktionsblocks 306 dargestellt werden
können,
da die Parameter des Modifikationsfunktionsblocks 306 nicht
auf jene des Basisfunktionsblocks 304 abgebildet werden.
-
Im
Gegensatz zum Modifikationsfunktionsblock 306 können die
dynamischen Modifikationsfunktionsblöcke 308 und 309 verwendet
werden, um die Fähigkeit
des Basisfunktionsblocks 304 dynamisch zu ändern, aufzurüsten oder
zu erweitern. Genauer gesagt, besitzt ein Benutzer beim Verwenden der
dynamischen Modifikationsfunktionsblöcke 308 und 309 die
Fähigkeit,
den Algorithmus oder die Algorithmen von dynamischen Modifikationsfunktionsblöcken und
Datenblöcke,
die mit dem Algorithmus oder den Algorithmen assoziiert sind, vom
lokalen Speicher zu instantiieren/löschen (z.B. den dynamischen
Modifikationsfunktionsblock 308 zu löschen und den dynamischen Modifikationsfunktionsblock 309 zu
instantiieren). Im Gegensatz zum Modifikationsfunktionsblock 306 kann
der dynamische Modifikationsfunktionsblock 309 während der
Laufzeit und/oder zu jedem Zeitpunkt vor der Laufzeit, wie beispielsweise
beim Download, instantiiert werden. Ähnlich kann der dynamische
Modifikationsfunktionsblock 308 während der Laufzeit gelöscht oder
vor der Laufzeit nicht instantiiert werden. Obwohl nur die dynamischen
Modifikationsfunktionsblöcke 308 und 309 dargestellt
sind, kann jede Anzahl von dynamischen Modifikationsfunktionsblocken
im Funktionsblock 300 implementiert werden. Wie gezeigt,
wird der dynamische Modifikationsfunktionsblock 308 außerhalb
der Ausführung
des Basisfunktionsblocks 304 ausgeführt. Konkret kann der dynamische
Modifikationsfunktionsblock 308 vor und/oder nach der Ausführung des
Basisfunktionsblocks 304 ausgeführt werden. Wenn instantiiert,
haben die dynamischen Modifikationsfunktionsblöcke 308 und 309 jeweils
einen Algorithmus, der aus einer Reihe von Anweisungen besteht,
und Datenblöcke
im lokalen Speicher, um die Fähigkeit
des Basisfunktionsblocks 304 zu ändern, aufzurüsten oder
zu erweitern. Wenn instantiiert, kann der dynamische Modifikationsfunktionsblock 309 außerdem vor
und/oder nach der Ausführung
des Basisfunktionsblocks 304 und/oder des dynamischen Modifikationsfunktionsblocks 308 ausgeführt werden.
-
Wie
gezeigt, enthält
der Basisfunktionsblock 304 ein oder mehr Attribute 311,
die so konfiguriert sind, dass sie schreibgeprüft werden, um die dynamischen
Modifikationsfunktionsblöcke 308 und 309 zu instantiieren
und/oder zu löschen.
Wie im Folgenden in Verbindung mit 4 erörtert, werden
das/die Attribut(e) 311 auf die Funktionsblockdefinition 302 und insbesondere
die Definitionen abgebildet, um die dynamischen Modifikationsfunktionsblöcke 308 und 309 zu
instantiieren und/oder zu löschen.
Zum Beispiel kann ein Benutzer den dynamischen Modifikationsfunktionsblock 309 durch Ändern des
Attributs oder der Attribute 311 des Basisfunktionsblocks 304, welche
dann während
der Ausführung
des Basisfunktionsblocks 304 schreibgeprüft werden,
instantiieren. Ähnlich
kann ein Benutzer den dynamischen Modifikationsfunktionsblock 308 durch Ändern des Attributs
oder der Attribute 311, welche dann während der Ausführung des
Basisfunktionsblocks 304 schreibgeprüft werden, löschen. Im
Beispiel in 3 ist der dynamische Modifikationsfunktionsblock 308 durch
das/die Attribut(e) 311 aktiviert, und daher setzt das
Steuermodul (z.B. das Steuermodul 204 in 2)
die Ausführung
des dynamischen Modifikationsfunktionsblocks 308 an. Wenn
keine Änderung
an dem Attribut oder den Attributen 311 vorgenommen werden,
aktiviert die Schreibprüfungsfunktion
des Basisfunktionsblocks 304 die Weiterausführung des Basisfunktionsblocks 304.
-
Der
dynamische Modifikationsblock 308 enthält eine Einsprungstelle 318,
welche nach der Instantiierung des dynamischen Modifikationsfunktionsblocks 308 in
der Funktionsblockdefinition 302 gespeichert wird. Die
Einsprungstelle 318 wird in der Funktionsblockdefinition 302 als
Zeiger gespeichert, der eine Adresse sein kann, welche die Adresse
des dynamischen Modifikationsfunktionsblocks 308 im Speicher,
die Adresse irgendeines Teils des Algorithmus des dynamischen Modifikationsfunktionsblocks 308,
den Namen oder eine andere Kennung des dynamischen Modifikationsfunktionsblocks 308 angibt, oder
der jede beliebige andere Bearbeitungs- oder Verzweigungseinrichtung
sein kann, die verwendet wird, um die Kontrolle an den dynamischen
Modifikationsfunktionsblock 308 zu übergeben. Demnach ruft ein
Planer (z.B. der Steuerungsteilsystemplaner 202 in 2)
die Ausführung
des Algorithmus des dynamischen Modifikationsfunktionsblocks 308 an
der Einsprungstelle 318 auf. Wenn der dynamische Modifikationsfunktionsblock 308 seinen
Algorithmus implementiert, gibt eine Anweisung 320 die
Kontrolle an den Planer zurück.
Die Anweisung 320 kann jeder gewünschte Typ von Anweisung sein,
um einen Block von Anweisungen zu beenden, und/oder sie kann in
Abhängigkeit
vom Codetyp, der in den dynamischen Modifikationsfunktionsblöcken 308 und 309 verwendet
wird, jede andere Form annehmen. Demnach wird der dynamische Modifikationsfunktionsblock 308 durch
den Planer außerhalb
der Ausführung
des Basisfunktionsbocks 304 abgerufen oder angerufen.
-
Wie
außerdem
in 3 dargestellt, weist der Funktionsblock 300 Schnittstelle(n) 322 auf,
die verwendet werden können,
um Daten zwischen dem Basisfunktionsblock 304 und dem dynamischen
Modifikationsfunktionsblock 308 (und/oder dem dynamischen
Modifikationsfunktionsblock 309) auszutauschen. Die Schnittstelle(n) 322 können mehrere Schnittstellen
sein, wie beispielsweise eine Schreibschnittstelle, um Daten in
den Basisfunktionsblock 304 zu schreiben, und eine separate
Leseschnittstelle, um Daten aus dem Basisfunktionsblock 304 auszulesen.
Die Schnittstelle(n) können
als ein registrierter Rückruf
implementiert sein, um Datenobjekte in den Basisfunktionsblock 304 zu
schreiben. Zum Beispiel kann der dynamische Modifikationsfunktionsblock 308 ein
Attribut und/oder einen Datenzeiger an die Schnittstelle(n) 322 übermitteln,
um den registrierten Rückruf
zu veranlassen, in den Basisfunktionsblock 304 zu schreiben. Ähnlich kann
der dynamische Modifikationsfunktionsblock 309, wenn instantiiert,
ein Attribut und/oder einen Datenzeiger an die Schnittstelle(n) 322 übergeben,
um den registrierten Rückruf
6 aufzurufen, in den Basisfunktionsblock 304 zu schreiben.
Die Schnittstelle(n) 322 können auch eine Adresse bereitstellen,
welche die Adresse von Datenobjekten im Speicher des Basisfunktionsblocks 304 angibt,
einen Index zu einer Adresse von Datenobjekten im Speicher des Basisfunktionsblocks 304, oder
sie können
irgendeine andere Implementierung sein, um Datenobjekte zwischen
Funktionsblöcken auszulesen
und/oder einzuschreiben.
-
Obwohl
der dynamische Modifikationsfunktionsblock 308 mit nur
einer Einsprungstelle 318 und nur einer Rücksprunganweisung 320 dargestellt
ist, können
die dynamischen Modifikationsfunktionsblöcke mit der Ausführung und
oder Rückgabe
der Kontrolle an einer Anzahl von Punkten im Algorithmus des dynamischen
Modifikationsfunktionsblocks 308 beginnen. Zum Beispiel
können
die Einsprungstelle 318 und die Rücksprunganweisung 320 so
gesetzt werden, dass sie verschiedene Teile oder Unterroutinen des
Algorithmus im dynamischen Modifikationsfunktionsblock 308 aufrufen,
um dadurch verschiedene Erweiterungen am Algorithmus bereitzustellen, der
mit dem Basisfunktionsblock 304 assoziiert ist.
-
Es
ist offensichtlich, dass die hierin beschriebenen dynamischen Modifikationsfunktionsblöcke 308 und 309 für jeden
Zweck oder in jeder Weise verwendet werden können, um einen Basisfunktionsblock 304 entweder
zu jeder Zeit oder zu ausgewählten
Zeitpunkten zu ändern,
zu modifizieren oder aufzurüsten,
um erweiterte Fähigkeiten
für jeden
Typ von Basisfunktionsblock 304 (z.B. Eingabe-, Ausgabe-
oder Steuerfunktionsblock) bereitzustellen. Demnach kann zum Beispiel
ein dynamischer Modifikationsfunktionsblock (z.B. die dynamische
Modifikationsfunktionsblöcke 308 und 309)
verwendet werden, um eine adaptive Verstärkung, Verstärkungs Planung,
Totzeitausgleich usw. in einem Basisfunktionsblock 304 zu
implementieren, oder einem Basisfunktionsblock 304 jede
andere erweiterte oder modifizierte Fähigkeit zu verleihen. Wenn
außerdem
die dynamischen Modifikationsfunktionsblöcke 308 und 309 mit
einer Benutzerschnittstelle kommunikativ verbunden sind, kann die
Benutzerschnittstelle automatisch ein oder mehr Attribute darstellen,
die mit dem dynamischen Modifikationsfunktionsblock 309 nach
der Instantiierung assoziiert sind. Umgekehrt kann die Benutzerschnittstelle
automatisch ein oder mehr Attribute entfernen, die mit dem dynamischen Modifikationsfunktionsblock 308 nach
der Löschung assoziiert
sind.
-
Ebenso
versteht sich, dass der Basisfunktionsblock 304 und die
dynamischen Modifikationsfunktionsblöcke 308 und 309 in
irgendeinem Speicher oder irgendwelchen Speichern einer Vorrichtung oder
innerhalb irgendeines Speichers oder irgendwelcher Speicher, die
mit einem Prozessor verbunden sind, der diese Funktionsblöcke ausführt, abgelegt
werden können,
wie beispielsweise in einem Direktzugriffspeicher („RAM"), einem Festspeicher („ROM"), einem löschbaren
programmierbaren Festspeicher („EPROM") oder einem elektrisch löschbaren
programmierbaren Festspeicher („EEPROM"), auf einer Festplatte oder einem Plattenlaufwerk
oder in jedem anderen geeigneten Speicher, auf den ein Prozessor
zugreifen kann. Ebenso können
diese Funktionsblöcke,
abgelegt auf jedem gewünschten Typ
von Speicher, wie beispielsweise einer Magnetplatte, einer optischen
Speicherplatte (z.B. einer CD oder einer Laserplatte), einem magnetischen
oder optischen Band oder jedem anderen maschinenlesbaren Speichermedium,
einem Benutzer verkauft oder auf eine andere Weise zur Verfügung gestellt werden.
Außerdem
können
die hierin beschriebenen Basis- und dynamischen Modifikationsfunktionsblöcke einem
Benutzer als einzelne Einheit (z.B. auf demselben Speicher abgelegt)
oder als getrennte Einheiten (z.B. in getrennten Speichern abgelegt)
zur Verfügung
gestellt werden.
-
Funktionsblöcke enthalten
normalerweise Wrapper-Deskriptoren, die einen Satz von Regeln und
Eigenschaften (z.B. Namen, IDs, Schnittstelleneinsprungstellen,
Flags, Standardwerte usw.) bilden, welche zum Beispiel verwendet
werden können,
um die Funktionsblockdefinition 302 in 3 zu
instantiieren. Die Wrapper-Deskriptoren werden zwischen der Laufzeitsteuerung
und dem Basisfunktionsblock gemeinsam genutzt, um dieselben Beziehungen
für die
Interpretation und die Benutzerkonfiguration bereitzustellen. Insbesondere
kann eine Steuereinrichtung diese Wrapper-Deskriptoren verwenden,
um Downloadskripts und Dienststeuerungsobjekte zu analysieren. Außerdem ist
jedes Attribut des Funktionsblocks mit einer eindeutigen Attribut-ID
(z.B. einem ganzzahligen Wert) definiert. Für einen Basisfunktionsblock
mit einem dynamischen Modifikationsfunktionsblock wird der dynamische
Modifikationsfunktionsblock durch ein bestimmtes Attribut (z.B. das/die
Attribut(e) 311 in 3) gesteuert
und ist daher mit einer bestimmten Attribut-ID assoziiert.
-
4 stellt
eine beispielhafte Tabelle 400 zur Abbildung von dynamischen
Modifikationsfunktionsblöcken
dar, um ein Attribut oder Attribute 402 eines Basisfunktionsblocks
mit Zeigern 404 mit dynamischen Modifikationsfunktionsblock-Deskriptoren 406 zu
assoziieren, die sich zum Beispiel in der beispielhaften Funktionsblockdefinition 302 in 2 befinden
können.
Die beispielhafte Tabelle 400 zur Abbildung von dynamischen
Modifikationsfunktionsblöcken
enthält
eine Attributkennung „MOD_ADAPT", die mit einem Zeiger „DYN_MOD_PNTR" mit dem Deskriptor
eines bestimmten dynamischen Modifikationsfunktionsblocks 408 von
dynamischen Modifikationsfunktionsblock-Deskriptoren 406 assoziiert
ist. Obwohl textlich dargestellt, ist für Durchschnittsfachleute offensichtlich,
dass solche Textbeschreibungen alternativ oder zusätzlich durch
Adressen, Codes und/oder anderen Bezeichnungen implementiert werden
können.
Demnach kann eine Schreibprüfungsfunktion
am Attribut „MOD_ADAPT" individuell auf
die jeweiligen dynamischen Modifikationsfunktionsblock-Deskriptoren 408, 410 und 412 abbilden, die
mit einer Vielzahl von dynamischen Modifikationsfunktionsblöcken assoziiert
sind. Zum Beispiel kann ein anderer Zeiger, der mit einem zweiten
dynamischen Modifikationsfunktionsblock assoziiert ist, in der Tabelle 400 zur
Abbildung von dynamischen Modifikationsfunktionsblöcken gespeichert
und mit der Attributkennung „MOD_ADAPT" assoziiert werden, um
den dynamischen Modifikationsfunktionsblock-Deskriptor 410 zu lokalisieren.
-
5 stellt
eine beispielhafte Funktionsblockinstantiierung 500 während eines
Downloads auf eine Vorrichtung (z.B. Erzeugen einer Instanz der Objekte,
die mit dem Funktionsblock im lokalen Speicher assoziiert sind)
dar, wobei das Funktionsblockdefinitionsobjekt 540 (z.B.
die Funktionsblockdefinition 302 in 3) und das
Funktionsblockobjekt (z.B. der Basisfunktionsblock 304,
der Modifikationsfunktionsbock 306 und der dynamische Modifikationsfunktionsblock 308 in 3)
instantiiert werden. In der beispielhaften Funktionsblock-Downloadinstantiierung 500 zeigen
die Pfeile die Bildungsbeziehung der beispielhaften Funktionsblockinstantiierung 500 an (d.h.
der Pfeil zeigt auf das definierende Objekt). Wie in 5 dargestellt,
stellt demnach der Basisfunktionsblock-Wrapper-Deskriptor 512 einen
Satz von Regeln und Eigenschaften für den Basisfunktionsblock bereit,
der Modifikationsfunktionsblock-Wrapper-Deskriptor 514 stellt
einen Satz von Regeln und Eigenschaften für den Modifikationsfunktionsblock bereit,
und der/die Wrapper-Deskriptor(en) 516 des dynamischen
Modifikationsfunktionsblocks stellen einen Satz von Regeln und Eigenschaften
für den
dynamischen Modifikationsfunktionsblock oder die dynamischen Modifikationsfunktionsblöcke (z.B.
der Blöcke 308 und 309 in 3)
bereit. Von den jeweiligen Wrapper-Deskriptoren 512 bis 516 zählt die
beispielhafte Funktionsblockinstantiierung 500 die Attribute
und speichert Eigenschaften lokal zwischen, um die zusammengesetzte
Wrapper-Definition 520 zu erzeugen. Der beispielhafte zusammengesetzte Wrapper 520 stellt
einem Benutzer eine Liste von dynamischen Modifikationsfunktionsblöcken zur
Verfügung,
die mit dem/den zu instantiierenden dynamischen Modifikationsfunktionsblock-Wrapper-Deskriptor(en) 516 assoziiert
sind (z.B. den dynamischen Modifikationsfunktionsblöcken 308 und 309 in 3).
Aus dem zusammengesetzten Wrapper 520 wird die Funktionsblockdefinition 530 gebildet,
welche die Attribute der Funktionsblöcke bereitstellt. Die Funktionsblockdefinition 530 definiert
die Speicherkapazität,
die den Teilblockdaten, wie beispielsweise Basisfunktionsblockdaten 552 und
Modifikationsfunktionsblockdaten 554, zuzuweisen ist. Im
Falle der Modifikationsfunktionsblockdaten 554 definiert die
Funktionsblockdefinition 530 die Speicherkapazität für solche
Teilblockdaten, wie beispielsweise die Modifikationsfunktionsblockdaten 554.
-
Für die beispielhafte
Funktionsblockinstantiierung 500 enthält die Funktionsblockdefinition 530 ein
Attribut mit einem Wert, der durch einen Benutzer vor dem Download
definiert wird und der bestimmt, ob die dynamischen Modifikationsfunktionsblockdaten 556 instantiiert
werden sollen. Demnach wird beim Download nicht unnötigerweise
Speicherkapazität
verbraucht, wenn ein Benutzer die Erweiterungen oder Änderungen
nicht wünscht,
die durch den Algorithmus des dynamischen Modifikationsfunktionsblocks
bereitgestellt werden. Wie bereits erwähnt, wird zwar die Definition
des dynamischen Modifikationsfunktionsblocks instantiiert, aber
nicht der Speicher für
die dynamischen Modifikationsfunktionsblockdaten 556. Demnach
kann der Benutzer den Wert des Attributs in der Funktionsblockdefinition 530 ändern, um
den dynamischen Modifikationsfunktionsblock zur Laufzeit oder zu
jeder Zeit zwischen Download und Laufzeit zu instantiieren.
-
Nach
der Instantiierung eines Funktionsblocks mit einem dynamischen Modifikationsfunktionsblock
speichern Initialisierungsanruf(e) im Funktionsblock Variable mit
spezifischen Anfangswerten, welche aus einem Downloadskript bestimmt
werden können
und/oder von einem oder mehr Attributen, die in den Wrapper-Deskriptoren 512 bis 516 bereitgestellt
sind, kopiert werden können.
Außerdem
kann die Initialisierung direkt für eine Steuereinrichtung (z.B.
die Steuereinrichtung 12 in 1) durchgeführt werden,
die möglicherweise
keine getrennte Konfigurationsdatenbank benötigt. Die Schnittstelle der
Attribute des Funktionsblocks wird ebenfalls ausgelöst (z.B.
Schnittstelle(n) 322 in 3), wobei
die Schnittstelle eine registrierte Rückruffunktion verwenden kann,
um Daten zwischen einem dynamischen Modifikationsfunktionsblock
und einem Basisfunktionsblock auszutauschen, wie zuvor in Verbindung
mit 3 erörtert.
-
6 stellt
einen beispielhaften Namensraum 600 eines Funktionsblocks
mit drei dynamischen Modifikationsfunktionsblöcken dar, die aktiviert sind.
Der beispielhafte Namensraum 600 enthält einen statischen Sektor 610,
der die Attribute hält,
die während
der Instantiierung aktiviert werden (z.B. Attribute, die mit dem
Basisfunktionsblock und dem Modifikationsfunktionsblock assoziiert
sind), und einen dynamischen Sektor 620, der die Attribute
für einen ersten
dynamischen Modifikationsfunktionsblock 622, einen zweiten
dynamischen Modifikationsfunktionsblock 624 und einen dritten
dynamischen Modifikationsfunktionsblock 626 enthält. Wie
bereits erwähnt,
kann ein Benutzer jeden der dynamischen Modifikationsfunktionsblöcke, die
mit den Attributen 622 bis 626 assoziiert sind,
instantiieren oder löschen,
und demnach kann sich der dynamische Attributsektor 620 ändern. Wenn
sich der dynamische Attributsektor 620 ändert, werden die Indizes (d.h.
der Index von einer bestimmten Adresse) im dynamischen Sektor 620 ungültig. Zum
Beispiel kann der Benutzer den ersten und den zweiten Modifikationsfunktionsblöcke löschen, was
die jeweiligen Attribute 622 und 624 des ersten
dynamischen Modifikationsfunktionsblocks und des zweiten Modifikationsblocks 624 entfernt
und die Attribute des dritten dynamischen Modifikationsfunktionsblocks 626 in
dem beispielhaften Namensraum 600 nach oben bewegt.
-
Wenn
sich der Namensraum eines Funktionsblocks bei der Instantiierung
eines dynamischen Modifikationsfunktionsblocks ändert, erzeugt die Ausführung und/oder
Instantiierung eines Funktionsblocks mit einem dynamischen Modifikationsfunktionsblock
einen Schlüsselmechanismus,
um alle Attribute des dynamischen Modifikationsfunktionsblocks abzubilden,
die durch einen Client (z.B. andere Funktionsblöcke) abgebildet werden können. Im
Allgemeinen wird ein Zugriff auf ein Attribut in einem Funktionsblock
von einem Client durch eine. Adresse im Namensraum und einen Index
abgebildet.
-
Wie
zuvor in Verbindung mit 6 beschrieben, ändert sich
der Namensraum eines Funktionsblocks bei der Aktivierung oder Deaktivierung
eines dynamischen Modifikationsfunktionsblocks. Um ungültige Bezugnahmen
auf Attribute zu vermeiden, wird daher ein Schlüsselmechanismus bereitgestellt, der
sich in einem Steuermodul (z.B. dem Steuermodul 204 in 2)
befinden kann. Der Schlüsselmechanismus
speichert einen oder mehr Schlüssel
(z.B. einen Zeigerwert, einen Indexwert, eine Befehlsadresse, einen
eindeutigen Wert oder irgendeine Kombination davon) für einen
entsprechenden dynamischen Modifikationsfunktionsblock oder entsprechende
dynamische Modifikationsfunktionsblöcke, die an einen Client oder
Clients übermittelt
werden, wenn sich der/die Client(s) an ein Attribut im dynamischen
Sektor (z.B. dem dynamischen Sektor 620) des Funktionsblocks
anbinden. Wenn ein dynamischer Modifikationsfunktionsblock instantiiert
oder gelöscht
wird, aktualisiert der Funktionsblock, der mit dem dynamischen Modifikationsfunktionsblock
verbunden ist, den/die Schlüssel
im Schlüsselmechanismus.
-
Wenn
demnach ein Client auf ein Attribut im Funktionsblock und insbesondere
auf ein Attribut, das mit einem dynamischen Modifikationsfunktionsblock
assoziiert ist, zugreift, vergleicht der Client den Schlüssel vom
letzten Zugriff mit dem aktuellen Schlüssel in der Tabelle. Wenn der
Anbindeschlüssel und
der aktuelle Schlüssel übereinstimmen,
wird dem Client Zugang gewährt.
Alternativ muss sich der Client erneut an das Attribut anbinden,
wenn der Anbindeschlüssel
nicht passt.
-
Natürlich können dynamische
Modifikationsfunktionsblöcke
unter Verwendung jedes externen Prozesssteuerungsübertragungsprotokolls
(neben dem Fieldbus-Protokoll) implementiert werden, und sie können verwendet
werden, um mit jedem Typ von Funktionsblock zu kommunizieren, einschließlich jedes
Funktionsblocks, der ähnlich
oder gleich wie irgendeiner der verschiedenen Funktionsblöcke ist, die
durch das Fieldbus-Protokoll ausdrücklich identifiziert und unterstützt werden.
Es ist außerdem
zu erwähnen,
dass, obwohl der dynamische Modifikationsfunktionsblock in einer
Ausführungsform
hiervon ein Fieldbus-„Funktionsblock” ist, die
Verwendung des Ausdrucks „Funktionsblock" hierin nicht darauf beschränkt ist,
was das Fieldbus-Protokoll
als einen Funktionsblock identifiziert, sondern stattdessen jeden
anderen Typ von Block, Programm, Hardware, Firmware usw. umfasst,
der mit irgendeinem Typ von Steuerungssystem und/oder Übertragungsprotokoll verbunden
ist, die verwendet werden können,
um irgendeine Prozesssteuerroutinenfunktion zu implementieren, und
die ein vordefiniertes Setup oder Protokoll aufweisen, um anderen
solchen Funktionsblöcken
Informationen oder Daten zur Verfügung zu stellen. Obwohl Funktionsblöcke normalerweise
die Form von Objekten innerhalb einer objektorientierten Programmierumgebung
annehmen, muss dies demnach nicht der Fall sein, sondern es können stattdessen
auch andere logische Einheiten verwendet werden, um bestimmte Steuerungsfunktionen
(einschließlich
Ein- und Ausgabe) innerhalb einer Prozesssteuerungsumgebung auszuführen.
-
7 ist
ein Ablaufdiagramm, das einen beispielhaften Prozess 700 zum
Löschen
und/oder Instantiieren eines dynamischen Modifikationsfunktionsblocks
während
der Laufzeit, wie beispielsweise der dynamischen Modifikationsfunktionsblocke 308 und 309 in 3,
veranschaulicht. Die Operationen die in Verbindung mit dem Prozess
beschrieben werden, der in 7 veranschaulicht
ist, können
unter Verwendung von maschinenlesbaren Anweisungen, Codes, Software
usw. implementiert werden, die auf einem maschinenlesbaren Medium
gespeichert und zugänglich
sind. Solch ein maschinenlesbares Medium umfasst, ohne darauf beschränkt zu sein,
optische Speichervorrichtungen, magnetische Speichervorrichtungen,
permanente Festkörperspeicher
und nicht-permanente Festkörperspeicher.
Außerdem können einige
oder alle Operationen manuell durchgeführt werden, und/oder es kann
die Reihenfolge der Operationen geändert werden, und/oder es können einige
der Operationen modifiziert oder eliminiert werden. Ähnlich können einige
oder alle der Operationen jedes Blocks iterativ durchgeführt werden.
Die Operationen, die in 7 veranschaulicht sind, können von
der beispielhaften Steuereinrichtung 12 und/oder den Feldvorrichtungen 22 bis 26 in 1 durchgeführt werden.
-
Der
beispielhafte Prozess 700 beginnt durch das Ausführen eines
Algorithmus in einem Basisfunktionsblock (z.B. dem Basisfunktionsblock 304 in 3)
(Block 702). Während
der Ausführung
des Basisfunktionsblocks in Block 702 wird eine Schreibprüfungsfunktion
an einem bestimmten Attribut oder bestimmten Attributen des Basisfunktionsblocks
ausgeführt,
um festzustellen, ob mit dem Instantiieren oder Löschen eines
dynamischen Modifikationsfunktionsblocks weiter gemacht werden soll
(Block 704). Wenn die Schreibprüfungsfunktion bestimmt, dass
keine Änderung
des Attributs oder der Attribute des Basisfunktionsblocks vorliegt
(Block 704), kehrt der beispielhafte Prozess 700 zu
Block 702 zurück
und fährt mit
der Ausführung
des Basisfunktionsblocks fort. Wenn die Schreibprufungsfunktion
eine Änderung des
Attributs oder der Attribute des Basisfunktionsblocks feststellt
(Block 704), bestimmt der beispielhafte Prozess 700,
entweder einen neuen dynamischen Modifikationsfunktionsblock zu
instantiieren oder einen bestehenden zu löschen (Block 706).
-
Wenn
der beispielhafte Prozess 700 (bei Block 706)
durch eine bestimmte Änderung
am Attribut oder an Attributen des Basisfunktionsblocks (z.B. eine
bestimmte Änderung
an einer booleschen Variablen, einem Flagwert oder irgendeinem anderen
auf eine Änderung
des logischen Zustands hinweisenden Attribut) in Block 706 bestimmt,
einen bestehenden dynamischen Modifikationsfunktionsblock zu löschen, identifiziert
der beispielhafte Prozess 700 den zu löschenden dynamischen Modifikationsfunktionsblock
zum Beispiel durch Verwenden einer eindeutigen Attribut-ID und/oder
eines Zeigers auf einen Index (Block 708). Nach dem Identifizieren
des zu löschenden
dynamischen Modifikationsfunktionsblocks löscht der Prozess 700 den
Datenblock, der mit dem identifizierten dynamischen Modifikationsfunktionsblock
assoziiert ist, aus dem Speicher (Block 710). Der beispielhafte
Prozess 700 geht dazu über,
die Attribute im dynamischen Attributraum zu aktualisieren, indem
er die Attribute entfernt, die mit dem gelöschten dynamischen Modifikationsfunktionsblock
assoziiert sind, und die Schlüssel
im Schlüsselmechanismus
aktualisiert, die mit dem Attribut oder den Attributen assoziiert
sind, die ihrerseits mit dem gelöschten
dynamischen Modifikationsfunktionsblock assoziiert sind (Block 712).
Der beispielhafte Prozess 700 entfernt dann die Ausführung des
gelöschten
dynamischen Modifikationsfunktionsblocks aus dem Planer (Block 714)
und beendet die Ausführung
des Prozesses 700 und/oder gibt die Kontrolle an einen
Aufrufprozess zurück.
-
Wenn
der beispielhafte Prozess 700 durch eine bestimmte Änderung
am Attribut oder an Attributen des Basisfunktionsblocks (z.B. eine
bestimmte Änderung
an einer booleschen Variablen, einem Flagwert oder irgendeinem anderen
auf eine Änderung
des logischen Zustands hinweisenden Attribut) bestimmt, einen neuen
dynamischen Modifikationsfunktionsblock zu instantiieren (Block 706),
identifiziert der beispielhafte Prozess 700 den zu instantiierenden
dynamischen Modifikationsfunktionsblock zum Beispiel durch Verwenden
einer eindeutigen Attribut-ID und/oder eines Zeigers auf einen Index (Block 716).
Nach dem Identifizieren des zu instantiierenden dynamischen Modifikationsfunktionsblocks in
Block 716 erzeugt der beispielhafte Prozess 700 den
Datenblock im Speicher, der mit dem identifizierten dynamischen
Modifikationsfunktionsblock assoziiert ist (Block 718).
Der beispielhafte Prozess 700 geht dazu über, die
Attribute im dynamischen Attributraum zu aktualisieren, indem er
die Attribute hinzufügt,
die mit dem instantiierten dynamischen Modifikationsfunktionsblock
assoziiert sind, und die Schlüssel
im Schlüsselmechanismus
aktualisiert, die mit dem Attribut oder den Attributen assoziiert
sind, die mit dem instantiierten dynamischen Modifikationsfunktionsblock
assoziiert sind (Block 720). Der beispielhafte Prozess 700 initialisiert
dann alle Variablen, die mit dem dynamischen Modifikationsfunktionsblock
assoziiert sind (Block 722). Außerdem fügt der Prozess 700 die
Ausführung
des instantiierten dynamischen Modifikationsfunktionsblocks zum
Planer hinzu (Block 724) und beendet die Ausführung des
Prozesses 700 und/oder gibt die Kontrolle an einen Aufrufprozess
zurück.
-
8 ist
eine schematische Darstellung einer beispielhaften Prozessorplattform 800,
die verwendet und/oder programmiert werden kann, um die beispielhafte
Steuereinrichtung 12, die Feldvorrichtungen 22 bis 26 und
die Anwendungsstation 16 in 1 zu implementieren.
Zum Beispiel kann die Prozessorplattform 800 durch einen
oder mehr Ein- und/oder Mehrpfad-Universalprozessoren, -kerne, -mikrokontroller
usw. implementiert sein. Die Prozessorplattform 800 kann
auch durch einen oder mehr Rechengeräte implementiert sein, die
irgendwelche aus einer Vielfalt von gleichzeitig ausführenden
Einpfad- und/oder Mehrpfad-Prozessoren, -kernen, -mikrokontroller
usw. enthalten.
-
Die
Prozessorplattform 800 des Beispiels in 8 umfasst
wenigstens einen programmierbaren Universalprozessor 805.
Der Prozessor 805 führt
codierte Anweisungen 810 aus, die im Hauptspeicher des
Prozessors 805 (z.B. in einem RAM 815) vorhanden
sind. Die codierten Anweisungen 810 können verwendet werden, um die
Operationen auszuführen, die
in den beispielhaften Prozessen dargestellt sind, die in Verbindung
mit 2, 3, 4 und 7 beschrieben
wurden. Der Prozessor 805 kann jeder Typ von Verarbeitungseinheit
sein, wie beispielsweise ein Prozessorkern, ein Prozessor und/oder
ein Mikrokontroller. Der Prozessor 805 steht über einen Bus 825 mit
dem Hauptspeicher (der einen ROM 820 und den RAM 815 umfasst)
in Verbindung. Der RAM 815 kann durch einen dynamischen
Direktzugriffspeicher („DRAM"), einen synchronen
Direktzugriffspeicher („SDRAM") und/oder jeden
anderen Typ von RAM-Vorrichtung
implementiert sein, und der ROM kann durch einen Flash-Speicher
und/oder jeden anderen gewünschten
Typ von Speichervorrichtung implementiert sein.
-
Der
Zugriff auf den Speicher 815 und 820 kann durch
eine Speichersteuereinrichtung (nicht dargestellt) gesteuert werden.
Der Hauptspeicher (der den ROM 820 und den RAM 815 umfasst)
kann verwendet werden, um die beispielhaften Prozesse, Attribute
und andere solche speicherbaren Daten in Verbindung mit 2 bis 7 zu
speichern.
-
Die
Prozessorplattform 800 umfasst auch eine Schnittstellenschaltung 830.
Die Schnittstellenschaltung 830 kann durch jeden Typ von
Schnittstellenstandard implementiert sein, wie beispielsweise eine
Externspeicherschnittstelle, einen seriellen Anschluss, einen Universaleingang/-ausgang
usw. Eine oder mehr Eingabevorrichtungen 835 und eine oder mehr
Ausgabevorrichtungen 840 können an die Schnittstelleschaltung 830 angeschlossen
sein.
-
Wenigstens
einige der zuvor beschriebenen beispielhaften Verfahren und/oder
Geräte
sind durch ein oder mehr Software- und/oder Firmwareprogramme implementiert,
die auf einem Prozessor laufen. Es können jedoch auch zweckbestimmte
Hardwareimplementierungen, die, ohne darauf beschränkt zu sei, anwendungsspezifische
integrierte Schaltungen, programmierbare Logikanordnungen und andere Hardwarevorrichtungen
umfassen, aufgebaut werden, um einige oder alle der hierin beschriebenen beispielhaften
Verfahren und/oder Geräte
entweder ganz oder teilweise zu implementieren. Außerdem können auch
alternative Softwareimplementierungen, die, ohne darauf beschränkt zu sein,
eine verteilte Verarbeitung oder eine komponenten-/objektverteilte
Verarbeitung, eine parallele Verarbeitung oder eine Verarbeitung
mit virtueller Maschine umfassen, verwendet werden, um die hierin
beschriebenen beispielhaften Verfahren und/oder Geräte zu implementieren.
-
Es
ist auch zu erwähnen,
dass die hierin beschriebenen beispielhaften Software- und/oder Firmwareimplementierungen
auf einem materiellen Speichermedium abgelegt werden können, wie
beispielsweise einem magnetischen Medium (z.B. einer Magnetplatte
oder einem Magnetband); einem magnetooptischen oder optischen Medium,
wie beispielsweise einer optischen Speicherplatte; oder einem Festkörpermedium,
wie beispielsweise einer Speicherkarte oder einer anderen Baueinheit,
die eine oder mehr (permanente) Festspeicher, Direktzugriffspeicher
oder andere (nicht-permanente) wiederbeschreibbare Speicher beherbergt;
oder einem Signal, das Maschinenbefehle enthält. Eine digitale Datei, die
an eine E-Mail angehängt
wird, oder ein anderes Informationsarchiv oder ein Satz von Archiven
wird als ein Verteilungsmedium angesehen, das einem materiellen
Speichermedium entspricht. Demgemäß können die hierin beschriebene
beispielhafte Software und/oder Firmware auf einem materiellen Speichermedium
oder einem Verteilungsmedium, wie beispielsweise den zuvor beschriebenen
oder Nachfolge-Speichermedien abgelegt werden.
-
Es
versteht sich von selbst, dass, soweit die zuvor dargelegte Spezifikation
beispielhafte Komponenten und Funktionen unter Bezugnahme auf bestimmte
Standards und Protokolle beschreibt, der Rahmen dieses Patents nicht
auf solche Standards und Protokolle beschränkt ist. Solche Standards werden
periodisch durch schnellere oder wirksamere Entsprechungen mit derselben
allgemeinen Funktionalität
ersetzt. Demgemäß sind Nachfolgestandards und
-protokolle mit denselben Funktionen Entsprechungen, die durch dieses
Patent berücksichtigt
sind und in den Rahmen der beiliegenden Ansprüche aufgenommen werden.
-
Es
ist außerdem
zu erwähnen,
dass, obwohl dieses Patent beispielhafte Systeme offenbart, die auf
Hardware ausgeführte
Software oder Firmware umfassen, solche Systeme nur der Veranschaulichung
dienen und nicht als einschränkend
anzusehen sind. Zum Beispiel wird in Betracht gezogen, dass einige
oder alle dieser Hardware- und Softwarekomponenten ausschließlich in
Hardware, ausschließlich
in Software, ausschließlich
in Firmware oder irgendeiner Kombination von Hardware, Firmware
und/oder Software verwirklicht werden könnten. Obwohl die zuvor dargelegte
Spezifikation beispielhafte Herstellungssysteme, -verfahren und
-produkte beschrieb, ist demgemäß für Durchschnittsfachleute offensichtlich,
dass die Beispiele nicht die einzige Art und Weise zur Implementierung
solcher Herstellungssysteme, -verfahren und -produkte darstellen. Obwohl
hierin bestimmte beispielhafte Herstellungsverfahren, -geräte und -produkte
beschrieben wurden, ist der Schutzumfang dieses Patents nicht darauf
beschränkt.
Im Gegenteil erstreckt sich dieses Patent auf alle Herstellungsverfahren,
-geräte
und -produkte, die entweder wörtlich
oder gemäß dem Entsprechungsprinzip
auf angemessene Weise in den Rahmen der angehängten Ansprüche fallen.