DE69428343T2 - Verbesserter endlicher Zustandsautomat für eine Prozesssteuerung - Google Patents
Verbesserter endlicher Zustandsautomat für eine ProzesssteuerungInfo
- Publication number
- DE69428343T2 DE69428343T2 DE1994628343 DE69428343T DE69428343T2 DE 69428343 T2 DE69428343 T2 DE 69428343T2 DE 1994628343 DE1994628343 DE 1994628343 DE 69428343 T DE69428343 T DE 69428343T DE 69428343 T2 DE69428343 T2 DE 69428343T2
- Authority
- DE
- Germany
- Prior art keywords
- state
- fsm
- selection
- vectors
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000004886 process control Methods 0.000 title 1
- 239000013598 vector Substances 0.000 claims description 178
- 238000000034 method Methods 0.000 claims description 28
- 238000012545 processing Methods 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 18
- 230000009471 action Effects 0.000 description 117
- 230000007704 transition Effects 0.000 description 69
- 230000000875 corresponding effect Effects 0.000 description 44
- 230000008859 change Effects 0.000 description 14
- 238000012360 testing method Methods 0.000 description 11
- 238000003860 storage Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 9
- 230000008901 benefit Effects 0.000 description 5
- 230000001276 controlling effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/045—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using logic state machines, consisting only of a memory or a programmable logic device containing the logic for the controlled machine and in which the state of its outputs is dependent on the state of its inputs or part of its own output states, e.g. binary decision controllers, finite state controllers
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/23—Pc programming
- G05B2219/23289—State logic control, finite state, tasks, machine, fsm
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Complex Calculations (AREA)
- Feedback Control In General (AREA)
Description
- Diese Erfindung betrifft im allgemeinen Maschinen mit begrenzten oder endlichen Zuständen (FSM - Finite State Machine), nachstehend mit FSM bezeichnet, welche in einem einen Speicher aufweisenden Mikrocomputer implementiert sind, in welchem logische Ausdrücke gespeichert werden.
- Wie hierin verwendet, betrifft eine endliche Maschine ein sequentielles System, in welchem Eingangsparameter den Zustand des Betriebs der Maschine bestimmen. Eine Implementation einer FSM ist in US-A-5 301 100 beschrieben. Diese Anmeldung beschreibt eine Logiktabelle für die Implementation der FSM, in welcher eine spezifische feste Organisation von Daten Anwendungslogikbedingungen, ausgedrückt unter Verwendung von logischen AND- und OR- Operatoren, darstellt. Fig. 1 bis 7 in der vorliegenden Anmeldung beschreiben Aspekte einer derartigen Implementation einer herkömmlichen FSM.
- Die vorstehend angesprochene Implementation einer FSM wird mit einer Datenstruktur fester Größer codiert, in welcher logische Vektoren in einem Speicher gespeichert werden, um Veränderungen in Ausgangsaktionen zu definieren und Veränderungen von Zustandsübergängen in der FSM. Die feste Codierungsanordnung erfordert, daß die maximale Anzahl logischer Vektoren, welche für einen gegebenen Satz von Bedingungen verwendet werden, auch für die anderen Sätze gleicher Bedingungen verwendet werden. Diese führt zu individuellen Vektoren, welche leer sind, d. h., keine logischen Daten enthalten, da jede feste Speicherzuordnung die maximale mögliche Anzahl von Vektoren reflektieren muß. Somit besteht ein Bedarf für eine verbesserte Implementation einer FSM, welche den Speicherbedarf minimiert.
- Es ist eine Aufgabe der vorliegenden Erfindung eine verbesserte Maschine mit endlichen Zuständen bereitzustellen, welche zur Implementation als in einem Speicher eines Mikroprozessorsystems gespeicherte Vektoren geeignet ist, in welchem Datenstrukturen nicht festgelegter Größe zugelassen sind.
- Gemäß einer Ausführungsform der vorliegenden Erfindung weist eine FSM mehrere Zustände und entsprechende Selektionsvektorensätze auf, in welchen logische Daten selektiv gespeichert sind, um logische Bedingungen zu definieren. Ein einem Selektionsvektorensatz entsprechender Adressenlokalisierer ist im Speicher für jeden Zustand der FSM gespeichert. Ein dem Mikrocomputer zugeordneter Speicherabschnitt speichert den Selektionsvektorensatz, welche aus Gruppen von Vektoren bestehen, die logische Bedingungen definieren. Ein Zählwert der Anzahl von logischen Bedingungen innerhalb jeder Gruppe ist als ein Teil der Gruppe gespeichert, um die Speicherung unterschiedlicher Zahlen von Vektoren in jeder Gruppe zu ermöglichen. Der Zählwert von Vektoren innerhalb einer Gruppe wird während der Ausführung der FSM verwendet, um die Anzahl von Vektorbedingungen zu bestimmen, die im Bezug auf einen anderen Vektor zu lesen und zu testen sind.
- In einer bevorzugten Ausführungsform wird ein vorbestimmter Null-Wert einem Adressenlokalisierer zugewiesen, um darzustellen, daß ein entsprechender Satz von Selektionsworten nicht existiert. Der Null-Wert wird so interpretiert, dass keine weitere Aktion gefordert wird; der Prozeß geht zu dem nächsten Schritt gemäß Definition in der FSM über.
- Fig. 1 ist ein Blockschaltbild eines Steuerungssystems, welches eine in einem Mikrocomputersystem implementierte FSM verwendet.
- Fig. 2 ist ein Blockschaltbild eines Vorprozessors gemäß Darstellung in Fig. 1.
- Fig. 3 ist ein Blockschaltbild eines Nachprozessors gemäß Darstellung in Fig. 1.
- Fig. 4 ist ein Flußdiagramm, welches den Betrieb einer herkömmlichen FSM darstellt.
- Fig. 5 ist eine Tabelle, welche ein Beispiel einer herkömmlichen Übergangstabelle für eine FSM darstellt.
- Fig. 6 stellt eine Anwendungslogiktabelle auf der Basis des in Fig. 5 beschriebenen Beispiels dar, welche im Speicher gespeichert ist.
- Fig. 7 ist eine bildliche Darstellung der Implementation im Speicher der herkömmlichen FSM.
- Fig. 8 ist ein Flußdiagramm, welches den Betrieb der FSM gemäß der vorliegenden Erfindung darstellt.
- Fig. 9 ist eine bildliche Darstellung der Implementation im Speicher der gemäß Fig. 8 beschriebenen FSM.
- Fig. 10 ist eine bildliche Darstellung, welche einen exemplarischen Satz von Indizes für einen Zustand gemäß Darstellung in Fig. 9 zeigt,
- Fig. 11 ist eine Tabelle, welche eine Speicherablage der Übergangslogik für den nächsten Zustand repräsentiert, auf welche der Index für den nächsten Zustand gemäß Darstellung in Fig. 10 zeigt.
- Fig. 12 ist eine Tabelle, welche eine Speicherablage einer Eingangsaktionslogik zugeordnet zu dem Eingangsaktionsindex von Fig. 10 darstellt.
- Fig. 13 und 14 veranschaulichen herkömmliche AND-Spezifikationsvektoren gemäß Definition in der Anwendungslogiktabelle, welche eine herkömmliche FSM repräsentiert.
- Fig. 15 veranschaulicht einen AND-Indexvektor, welcher gemäß der FSM der vorliegenden Erfindung verwendet wird.
- Es erfolgt nun eine Beschreibung einer herkömmlichen FSM, um eine Grundlage für das Verständnis und die Bewertung der Vorteile der erfindungsgemäßen FSM zu geben. Für eine vollständigere Erläuterung der virtuellen FSM, welche hierin als herkömmliche FSM beschrieben wird, sollte auf US-A-5 301 100 Bezug genommen werden. Fig. 1 stellt eine allgemeine Architektur dar, die sowohl bei der herkömmlichen FSM als auch bei der erfindungsgemäßen FSM angewendet wird. Fig. 2 bis 7, 13 und 14 sind Veranschaulichungen, welche die herkömmliche FSM betreffen.
- Fig. 1 veranschaulicht eine Architektur zur Implementation einer FSM, welche einen Prozeß oder eine Vorrichtung 20 steuert. Die Aktionen einer Maschine, wie sie beispielsweise zur Herstellung oder für einen Prozeß mit steuerbaren Schritten verwendet wird, werden als steuerbares Element 20 betrachtet. Mehrere Sensoren 22 wandeln der Vorrichtung 20 zugeordnete Parameter in herkömmliche elektrische Signale um. Die elektrische Ausgangssignale der Sensoren 22 liefern Eingangssignale für den Vorprozessor 24, welcher detaillierter in Fig. 2 beschrieben ist. Der Vorprozessor 24 liefert mehrere Ausgangssignale, wovon jedes bevorzugt als ein binärer Zustand dargestellt ist, welchem ein eindeutiger Name zugeordnet ist, welcher die von dem Zustand repräsentierte Funktion beschreibt. Die Vorprozeßorausgangssignale werden von einem Eingangsregister aufgenommen, welches in dem dargestellten Beispiel einen N x 1 Vektor aufweist, in welchem jedes Bit den Zustand eines von dem Vorprozessor 24 empfangenen Eingangssignals repräsentiert. Die Verarbeitungseinheit 28 speichert die Zustände der Bits des Eingangsregisters 26 als einen Eingangsvektor und trifft logische Entscheidungen auf der Basis von Vergleichen von "AND"-Vektoren mit dem Eingangsvektor. Die Verarbeitungseinheit arbeitet unter Instruktionen eines gespeicherten Programms und arbeitet gemäß dem in Fig. 4 dargestellten Flußdiagramm. Das Ausgangssignal der Verarbeitungseinheit 28 ist ein Ausgangsvektor welcher aus einer Reihe von Bits besteht, welche jeweils einen Zustand in einem M · 1 Ausgangsvektor repräsentieren, der in dem Ausgangsregister 30 gespeichert ist. Jedes Bit in dem Register stellt ein von einem Ausgangsnamen repräsentiertes Ausgangssignalsteuerelement dar. Jeder Ausgangsname entspricht einer der Vorrichtung 20 zugeordneten Aktion. Ein Nachprozessor 32, welcher weiter in Fig. 3 beschrieben ist, empfängt die binären Ausgangssignale aus dem Ausgangsregister 30. Die allgemeine Funktion des Nachprozessors 33 ist die Umwandlung der binären Zustände in entsprechende elektrische Signale, welche weiter von Treibern 34 umgewandelt werden, welche Steuersignale zum Steuern der Vorrichtung 20 erzeugen. Die Treiber 34 können Relais, Puffer oder andere elektrische Elemente repräsentieren, oder können eine Umwandlung von elektrischen Signalen in mechanische oder andere Arten von von der Vorrichtung 20 benötigten Steuerungsarten repräsentieren. Ein Vorteil bei dieser Art von Zustandsmaschine besteht in der Trennung der Eingangs- und Ausgangsfunktionen von der von der Verarbeitungseinheit 28 durchgeführten Anwendungsprozeßsteuerung. Ferner erleichtert die Zuordnung von Eingangsnamen und Ausgangsnamen im Bezug auf die dem Eingangsregister 26 und dem Ausgangsregister zugeordneten Zustände ein Verständnis der Zustandsmaschinenimplementation, was die Fehlersuche und Modifikationen nach der ursprünglichen Konstruktion erleichtert.
- Die Verarbeitungseinheit 28 in der Beispielausführungform enthält einen Mikroprozessor 36, welcher von einem Nur-Lese-Speicher (ROM) 38, einem Speicher mit wahlfreiem Zugriff (RAM) 40 und einer Plattenspeichervorrichtung 42, wie z. B. einem Festplattenlaufwerk unterstützt wird. Eine Eingangs- /Ausgangs-Peripherie 44 ist mit dem Mikroprozessor 36 verbunden und unterstützt diesen bei dem Empfang von Eingangssignalen aus dem Eingangsregister 26 und bei dem Schreiben von Ausgangssignalen in das Ausgangsregister 30. In der exemplarischen Ausführungsform enthält der ROM 38 eine Startinitialisierungssteuerung für den Mikroprozessor 36, welche die Funktion hat, gespeicherte Programmsteuerinstruktionen, wie sie beispielsweise in dem Plattenspeicher 42 gespeichert sind, zur Ausführung in Speicherstellen des RAM 40 zu implementieren. Der Speicher in dem RAM 40 enthält den Eingangsvektor, den Ausgangsvektor, AND-Vektoren, vorbestimmte Zustandsinformationen für jeden Zustand und Programminstruktionen, welche die Operation der FSM implementieren.
- Fig. 2 stellt eine exemplarische Ausführungsform des Vorprozessors 46 dar, welcher Eingangssignale 48 von Sensoren 22 empfängt und Ausgangssignale 50 zur Eingabe in das Register 26 erzeugt. Es dürfte sich verstehen, daß die spezifische Art des Vorprozessors von der zu steuernden speziellen Vorrichtung 20 abhängt und von der Anzahl von Eingangsnamen oder -zuständen, welche für die Ausführung der Steuerfunktion erforderlich sind. In dem Veranschaulichungsbeispiel empfängt ein Analog/Digital-(A/D)- Wandler 52 ein analoges Eingangssignal und wandelt es in einen Satz digitaler Ausgangssignale um, welche an Logikgatter 54 geliefert werden. Diese Gatter können aus herkömmlichen Logikgattern bestehen, welche für die Erzeugung gewünschter binärer Zustandsausgangssignale 50 konfiguriert sind. Die Auslegung der Logikgatter hängt von der speziellen Anwendung und den erforderlichen Funktionen ab, welche durch Eingangssignale in das Eingangsregister 26 überwacht werden müssen. Ein digitales Eingangssignal 48 mit einem entsprechenden Tätigkeitszustand kann keine Pufferung durch den Vorprozessor 46 erfordern oder kann eine einfache Invertierung, wie z. B. durch ein Invertergatter 56 erfordern. Jedes Ausgangssignal 50 steuert nur eine einzige Stufe (Bit) in dem Eingangsregister 26 und definiert einen binären Zustand, welcher einen der Vorrichtung 20 zugeordneten Parameter repräsentiert.
- Fig. 3 veranschaulicht eine exemplarische Ausführungsform eines Nachprozessors 32, welcher Eingangssignale 58 empfängt, welche binäre Zustände aus dem Ausgangssignalregister 30 repräsentieren, und liefert Ausgangssignale 60, welche mit Treibern 34 verbunden sind. Die allgemeine Aufgabe des Nachprozessors besteht in der Umwandlung der in dem Ausgangssignalregister 30 definierten binären Zustände in entsprechende Befehle, welche von Treibern 34 interpretiert werden, um einen Befehl oder einen Anreiz an die Vorrichtung 20 auszugeben. In dem veranschaulichenden Beispiel repräsentieren Logikgatter 62 eine Reihe von herkömmlichen Logikgattern, welche abhängig von der Anwendung ausgelegt sind. Die Ausgangssignale aus den Logikgattern 62 werden von einem Digital/Analog-(D/A)-Wandler 64 in ein analoges Ausgangssignal umgewandelt, welches als ein Eingangssignal an Treiber 34 geliefert wird. Ein derartiges analoges Signal kann von den Treibern dazu genutzt werden, um eine analoge Eingangsparametersteuerung, wie z. B. die Steuerung der Geschwindigkeit eines Motors, zu erzeugen. Gemäß Darstellung in Fig. 3 kann ein Eingangssignal direkt zur Lieferung eines Ausgangssignals an einen Treiber geschaltet sein. Beispielsweise kann ein EIN/AUS- Befehlssignal über Treiber 34 direkt mit der Vorrichtung 20 verbunden sein, um eine grundlegende EIN/AUS-Funktion zu implementieren. Weitere Eingänge 58 des Nachprozessors 32 sind mit einem Flip-Flop 66 verbunden, welches ein Ausgangssignal 60 an Treiber 34 liefert. Das Flip-Flop kann dazu genutzt werden, um zustandsabhängige Signale oder Zeitsteuersignale an Treiber 34 abhängig von der speziellen Anwendung und der Vorrichtung 20 zu liefern.
- Fig. 4 stellt ein Flußdiagramm der vorstehend erwähnten herkömmlichen FSM dar, in welcher die Verarbeitungseinheit 28 arbeitet, um drei Arten von Aktionen auszuführen: Eingangsaktionen, Aussprungaktionen und Einsprungaktionen. Es werde angenommen, daß sich das veranschaulichende Beispiel der FSM in einer durch den Schritt 68 angezeigten stabilen Zustandsbedingung befindet, welche die Entscheidung trifft, ob ein Zustandsübergang durchzuführen ist. Unter der Annahme, daß ein Zustandsübergang durchzuführen ist, wartet der Schritt 70 auf eine Veränderung des Eingangssignals gemäß Darstellung durch die Veränderung des Zustands eines der Hits in dem aus dem Eingangsregister 26 abgeleiteten Eingangsvektor. Nach dem Erkennen einer Veränderung des Eingangssignals wird der Prozeßeingangsaktionsschritt 72 ausgelöst. Der Eingangsaktionsverarbeitungsschritt besteht aus dem Anlegen mehrerer Eingangsspezifikationsworte (AND- Vektoren), welche mit dem Eingangsvektor AND verknüpft werden, um eine Entscheidung zu treffen, ob der Ausgangsvektor aufgrund der Veränderung des Eingangssignals geändert werden sollte. Diese Eingangsaktion wird ohne Berücksichtigung davon ausgelöst, ob eine Veränderung des Zustands der Zustandsmaschine später ausgelöst wird. Nach der Eingangsaktionsverarbeitung durch den Schritt 72 achtet der Schritt 68 wieder darauf, ob ein Zustandsübergang auftritt. Die Zuständsübergangsbestimmung wird ebenfalls durch eine AND-Verknüpfung eines Satzes von Zustandübergangsworten (AND- Vektoren) mit dem Eingangsvektor durchgeführt. Für die Zwecke dieses Beispiels werde angenommen, daß ein Zustandsübergang angezeigt wird, d. h., daß eine JA-Bestimmung durch den Zustandübergangsschritt 68 erfolgt. Für jeden Zustand gibt eine vordefinierte Aussprungaktion, welche als ein Aussprungvektor gemäß Darstellung durch den Schritt 74 gespeichert ist, welche vor dem Verlassen des derzeitigen Zustandes zu unternehmen ist. Die Aussprungaktion besteht aus dem Schreiben eines entsprechenden Aussprungvektors in das Ausgangsregister 30. Im Schritt 76 erfolgt eine Veränderung des Zustandes von dem aktuellen Betriebszustand auf einen anderen Zustand gemäß Definition durch Nachfolgezustandsvektoren, die in dem aktuellen Zustand für jeden anderen Zustand gespeichert sind, auf welche ein Übergang erlaubt ist. Nach dem Einsprung in den neuen Zustand werden gespeicherte Einsprungaktionen 78 ausgeführt. Die Einsprungaktionen bestehen aus einem Einsprungsvektor, welcher in das Ausgangsregister 30 geschrieben wird und demzufolge die von dem Nachprozessor zu verwendenden Ausgangsbefehle definiert. Die Einsprungaktionen stellen eine Initialisierung der Ausgänge des Ausgangsregisters 30 bei jedem Einsprung in den neuen Zustand bereit. Nach den Einsprungaktionen, falls überhaupt, geht die Steuerung zu dem Zustandübergangs-Ermittlungsschritt 68 über. Der durch AND- Verknüpfung von AND-Vektoren mit dem Eingangsvektor durchgeführte Zustandübergangstest wird wieder durchgeführt, um zu ermitteln, ob ein anderer Zustandsübergang durchzuführen ist. Wenn auf der Basis eines derartigen Tests kein unmittelbarer Übergang durchzuführen ist, geht die Steuerung auf einen Eingangssignal-Abwarteschritt 70 über, bevor irgendeine andere Aktion erfolgen kann. Jeder Zustand enthält vorbestimmte Aussprungaktionen, welche beim Verlassen des Zustandes auszuführen sind und Einsprungszustände, welche beim Einsprung in den Zustand auszuführen sind. Ein Satz von AND-Vektoren definiert, wenn eine Eingangsaktion aktiviert ist, so daß ein zugeordneter Vektor in das Ausgangssignalregister 30 zu schreiben ist; ein weiterer Satz von AND-Vektoren definiert, wann ein Übergang auf einen anderen Übergang zu erfolgen hat.
- Ein Beispiel der Anwendung der herkömmlichen FSM beinhaltet die Steuerung einer Vorrichtung 20, welche aus einem Motor und dem Motor zugeordneten Parametern besteht. Der Motor ist in einem Gehäuse mit einer Tür, welche geöffnet oder geschlossen werden kann, eingeschlossen. Der Motor ist wassergekühlt und weist Sensoren auf, welche erkennen, ob der Zufluß von Wasser aktiviert oder deaktiviert ist und auch Sensoren, welche erkennen, ob der Wasserpegel hoch oder niedrig ist. Ein Temperatursensor mißt, ob die Temperatur innerhalb eines vorbestimmten Betriebsbereiches liegt, hoch oder niedrig ist, d. h., über oder unterhalb des Betriebsbereichs ist. Befehlssignale AUS, EIN und LEERLAUF werden zur Steuerung des Motors verwendet. Ein Zeitgeber ist dem Motor zugeordnet, welcher die verstrichene Betriebszeit für Wartungszwecke mißt, und ein Zeitablaufseingangssignal liefert, welches anzeigt, daß eine vorbestimmte Zeit abgelaufen ist.
- Die nachstehende Tabelle definiert Eingangssignalnamen, welche einen binärem Zustand eines Bits im Eingangssignalregister 26 für entsprechende Eingangsereignisse zugeordnet sind.
- Zeitgeber abgelaufen Timeout
- Tür geschlossen door_closed
- Tür offen door_open
- Wasserstand niedrig wat_low
- Wasserstand nicht niedrig wat_high
- Temperatur im Bereich temp_in
- Temperatur über Bereich temp_high
- Temperatur unter Bereich temp_low
- Motor Ein cmd_on
- Motor Aus cmd_off
- Motor Leerlauf cmd_idle
- Wassersteuerung Ein wat_ena
- Wassersteuerung Aus wat_dis
- Motorbetrieb in Ordnung motor_ok
- Fig. 5 stellt eine Übergangstabelle 80 gemäß der vorstehend definierten Anwendung der herkömmlichen FSM dar. Diese Übergangstabelle 80 definiert Eingangsaktionen, Einsprungaktionen und Aussprungaktionen, die im Bezug auf den Zustand "state_on" auszuführen sind. Die Spalte 82 zeigt den Zustand für diese Tabelle, d. h., den Zustand state_on an. Die Spalte 84 identifiziert drei weitere Zustände, auf welche ein Übergang erfolgen kann, z. B. state_off, state_idle und state_error. Die Spalte 86 definiert Bedingungen, welche aus Eingangsbedingungen oder logischen Kombinationen von Eingangsbedingungen bestehen, welche Übergänge auf entsprechende nächste Zustände bewirken könne, oder das Auftreten von Eingangsaktionen bewirken können. Die Spalte 88 definiert Aktionen, welche für entsprechende Bedingungen auftreten können. Die Zeile 90 definiert die Bedingungen, (cmd_off) welche einen Übergang zu dem state_off bewirken. Die Zeile 92 definiert, daß irgendeiner von den drei Sätzen AND-verknüpfter Bedingungen einen Übergang zu dem state_idle bewirken kann. Die Zeile 94 stellt dar, daß zwei Sätze von AND-verknüpften Bedingungen einen Übergang zu dem state_error bewirken können. Es sei angemerkt, daß für jede von den Zeilen 90, 92 und 94 dieselbe Aussprungaktion bei dem Verlassen des ON-Zustands vorgenommen wird, und das dieselbe Einsprungaktion bei dem Einsprung in den ON-Zustand unternommen würde. Die Zeile 96 besteht aus getrennten Sätzen von AND-verknüpften Bedingungen, welche zu den angezeigten entsprechenden Eingangsaktionen führen. Es sei angemerkt, daß diese "Eingangssignalaktionen" tatsächlich bewirken, daß ein gespeicherter Vektor in das Ausgangsregister 30 geschrieben wird und somit den Ausgang steuert. Die dem Ausgangssignalregister 30 zugeordneten Ausgangsnamen sind selbst erläuternd und entsprechen Ereignissen oder Alarmen, die zu überwachen sind.
- Die Tabelle 80 stellt einen speziellen Satz von Bedingungen für den Zustand von state_on dar, welche auf der Basis der Steuerung eines speziellen Systems erstellt wurden. Der Fachmann auf diesem Gebiet wird natürlich erkennen, daß eine entsprechende Tabelle für jeden der möglichen Zustände existiert, um eine vollständige Betriebsablauffolge der Zustandsmaschinensteuerung für die gesamte Anwendung zu definieren. Diese Zustände hängen von gewünschten Aktionen und Vorkommnissen auf der Basis von Eingangsparametern ab und definieren wie die Tabelle 80 Bedingungen, welche Übergänge zu anderen Zuständen und Bedingungen bewirken, welche zu Ausgangsparameterveränderungen führen, welche durch Einsprungaktionen, Aussprungaktionen oder Eingangsaktionen ausgelöst werden können.
- Fig. 6 stellt eine von der Verarbeitungseinheit 28 gemäß dem in Fig. 5 dargestellten Beispiel implementierte Anwendungslogiktabelle 100 dar. Das Eingangsregister 26 verwendet ein 8 · 1 Bit-Register, in welchem jedes Bit einen TRUE- oder FALSE-Zustand (1- und 0-Zustand der benannten Eingangsparameter darstellt. Ein Satz von Spezifikationen eines nächsten Zustandes (AND-Vektoren) besteht aus getrennten 8 · 1 Bit-Worten, welche mit einem durch das Eingangsregisterwort dargestellten Eingangsvektor mit dem in Spalte 86, in den Zeilen 90, 92 und 94 von Tabelle 80 definierten Bedingungen AND verknüpft werden. Beispielsweise ist ein Übergang zu dem Zustand state_off erfüllt, wenn (Vektor 102, das AND-Eingangsregister 26) ODER (Vektor 104, das AND-Eingangsregister 26) ODER (Vektor 106, das AND- Eingangsregister 26) TRUE ist. Es sei angemerkt, daß die Eingangsvektoren 104 und 106 leer sind, was anzeigt, daß nur eine einzige Bedingung, welche von dem Vektor 102 spezifiziert wird, einen Übergang zu dem state_off bestimmt, d. h., wenn die Bedingung cmd_off erfüllt ist. Die leeren Vektoren 104 und 106 treten auf, da drei ODER-verknüpfte Sätze von AND-verknüpften Bedingungen existieren, um den Übergang nach state_idle zu bestimmen, d. h., Vektoren 108, 110 und 112, welche den Bedingungen in der Zeile 92, Spalte 86 der Tabelle 80 entsprechen. Gemäß der Anwendungstabelle der herkömmlichen FSM wird dieselbe Anzahl von AND- Vektoren für den nächsten Zustand jedem möglichen Übergangszustand zugeordnet. Daher erscheinen einige der Vektoren leer, da nicht alle Übergangsbedingungen drei getrennte Sätze von Bedingungen erfordern, welche getestet werden müssen. Die vierte Spalte in dem Satz von AND-Vektoren zur Spezifikation des nächsten Zustandes ist leer; man glaubt, daß dieses den aktuellen state_on darstellt, welcher in anderen Anwendungslogiktabellen verwendet werden könnte, in welchem ein Übergang auf den state_on durchgeführt werden könnte. Die AND-Verknüpfung der Sätze von Vektoren für den nächsten Zustand mit dem Eingangsregistervektor stellt der Übergangsermittlungsschritt 86 des in Fig. 4 dargestellten Flußdiagramms dar. Somit wird, wenn einer der drei mit dem Eingangsregister AND-verknüpften Vektoren TRUE ist, ein Übergang zu diesem Zustand gemäß dem Flußdiagramm ausgelöst. Zustandsvektoren 114, 116 und 118 definieren Adressenstellen entsprechender Anwendungslogiktabellen im Speicher der Verarbeitungseinheit 28. Ein Einsprungaktionsvektor 120 definiert Aktionen, die an das Ausgangsregister 30 nach dem Einsprung in den state_on übertragen werden, und der Aussprungaktionsvektor 122 definiert Aktionen, die an das Ausgangsregister 30 nach dem Aussprung aus dem state_on zu einem anderen Zustand zu übertragen sind.
- Die Eingangsaktionen-Spezifikationsvektoren gemäß Darstellung in der Anwendungslogiktabelle 100 (2 Zeilen · 3 Spalten) definieren 8 · 1 Bit-Vektoren, welche mit dem Eingangsregistervektor AND verknüpft werden, um zu ermitteln, ob ein entsprechender Eingangsaktionsvektor dargestellt in einer horizontalen Ausrichtung zu dem Ausgangsregister 30 in Fig. 6 auszuführen ist. Beispielsweise testet der Vektor 124, wenn er mit dem Eingangsregistervektor AND verknüpft wird, ob die Zeitablaufsbedingung existiert. Ebenso ermittelt der Eingangsaktionsvektor 126, ob der Wasserstand niedrig ist und die Wassersteuerung eingeschaltet ist, wenn er mit dem Eingangsregistervektor AND verknüpft wird. Wenn entweder der Vektor 124 oder 126 TRUE ist, falls er mit dem Eingangsregister AND verknüpft ist, wird die von dem Vektor 128 definierte Aktion an das Ausgangsregister 30 übertragen, d. h., das Bit alarm_motor_not_ok wird gesetzt. Dieser Zustand stimmt mit dem ersten Satz von in Zeile 96 und Spalte 86 identifizierten Bedingungen und der in Spalte 88 dargestellten entsprechenden Eingangsaktionen überein. Es sei angemerkt, daß ähnlich den Spezifikationen für den nächsten Zustand bestimmte von den Eingangsaktionsvektoren leer sind, welches in ähnlicher Weise darstellt, daß nicht alle Eingangsaktionen zwei Bedingungen benötigen, welche mit dem Eingangsregister AND verknüpft werden müssen, d. h., daß einige Eingangsbedingungen durch einen einzigen Satz von Bedingungen definiert sind, welche durch nur einen 8 · 1 Bit- Vektor dargestellt werden können. Die Ausführung der AND- Verknüpfung der Eingangsaktionsvektoren und des Eingangsregistervektors umfaßt den Prozeßeingangsaktionsschritt 72.
- Die in horizontaler Ausrichtung zu dem Ausgangsregister 30 dargestellten 7 · 1 Bit-Vektoren definieren die Zustände der entsprechenden Ausgangsparameter. Nur einer dieser Sätze von Ausgangsparametern kann als sich in dem state_on befindend reflektiert werden. Um weitere Ausgangsparameter zu erzeugen muß ein Übergang auf einen anderen Zustand durchgeführt werden. Der Fachmann auf diesem Gebiet wird erkennen, daß komplexere Darstellungen von Regelsystemen mehr als nur die Überwachung von 8 Eingangsparametern erfordern. Somit würde die Länge der Vektoren für den nächsten Zustand und der Eingangsaktionsvektoren, welche mit dem Eingangsregister AND verknüpft werden müssen, ebenfalls erhöht, um dieselbe entsprechende Länge zu reflektieren. Jeder von den in der Anwendungslogiktabelle 100 dargestellten Vektoren wird durch ein Wort in einer Speicherstelle in dem RAN 40 der Verarbeitungseinheit 28 repräsentiert. Gemäß dem in dem Flußdiagramm von Fig. 4 dargestellten Operationsinstruktionen werden Sätze dieser Vektoren auf eine TRUE-Bedingung bezüglich des Eingangsregistervektors getestet, um zu ermitteln, ob ein Eingangsaktionsprozeß erforderlich ist (siehe Schritt 72), oder ob ein Zustandübergang erforderlich ist (siehe Schritt 68).
- Fig. 7 zeigt eine bildliche Darstellung der Implementation der herkömmlichen FSM im Speicher eines Mikrocomputers. Für jeden von der Zustandsmaschine definierten Zustand ist ein entsprechender Satz von Definitionen erforderlich, um die erforderliche Systemsteuerung bereitzustellen. Jeder von den Zuständen kann visuell als getrennte Anwendungslogiktabellen 100, wie sie in Fig. 6 dargestellt sind, repräsentierend dargestellt werden. Bei der Darstellung von Zustand 1 gemäß Fig. 7 repräsentieren Einsprungaktionen 152A und Aussprungaktionen 154A entsprechende Vektoren, welche in das Ausgangsregister bei einer Veränderung des Zustands geschrieben werden. Eingangsaktionen 156A bestehen aus einem Satz vorbestimmter AND-Vektoren, welche dazu genutzt werden, um entsprechende Vektoren in den Ausgagnsregistervektor zu schreiben, wenn ein AND-Vektor TRUE ist. Die Übergänge 158A zu dem nächsten Zustand entsprechen AND-Vektoren für den nächsten Zustand in der Anwendungslogiktabelle, welche definieren, ob ein Zustandsübergang durchzuführen ist. Ein Zustand N repräsentiert den letzten definierten Zustand für die herkömmliche Beispiel-FSM, welche ähnliche repräsentative Elemente enthält, welche durch das Suffix "M" bezeichnet sind. Jeder von den Zuständen 1-N nutzt im wesentlichen identische Abschnitte des Speichers, d. h., bezüglich Größe und Organisation.
- Fig. 8 stellt ein Flußdiagramm für eine erfindungsgemäße FSM dar. Der Schritt 200 stellt eine Zustandübergangsbestimmung dar. Unter der Annahme, daß kein Zustandsübergang zu erfolgen hat, geht die Steuerung auf einen Schritt 202, Warten- auf-ein-Eingangssignal, in welchem der Zustand eines Eingangsregisters auf eine Änderung der Bedingung überwacht wird. Im Schritt 204 wird eine Verarbeitung der Eingangsaktion initialisiert, um zu ermitteln, ob ein neuer Ausgangsregistervektor zu initialisieren ist. Nach der Verarbeitung der Eingangsaktion geht die Steuerung zu dem Ermittlungsschritt 200 zur Bestimmung einer Zustandsänderung über. Bei einer JA- Bestimmung im Schritt 200 wird eine Aussprungaktion gemäß Darstellung im Schritt 206 vor dem Verlassen des aktuellen Zustandes initialisiert. Dann wird eine Veränderung des Zustands auf dem von dem Zustandübergangstest im Schritt 200 bestimmten Zustand initialisiert. Nach dem Einsprung in den neuen Zustand wird eine vorbestimmte Einsprungaktion gemäß Bestimmung durch den Schritt 310 ausgeführt. Nach Ausführung der Einsprungaktion in den neuen Zustand erfolgt eine Bestimmung durch den Schritt 212, ob mit der Eingangsaktion fortzufahren ist. Eine JA-Bestimmung führt zu einem direkten Übergang zur Verarbeitung eines Eingangsaktionsschritte 204, in welchem die Eingangsaktionen auf eine mögliche Aktion getestet werden. Eine NEIN-Entscheidung durch den Schritt 212 bewirkt einen Rücksprung des Prozesses auf den Zustandübergangs-Bestimmungsschritt 200, welcher eine Bestimmung ausführt, ob eine Zustandsänderung zu initialisieren ist. Die Bestimmung durch den Schritt 212, ob mit einer Eingangsaktion fortzufahren ist, erfolgt auf der Basis eines Fortfahren-Flag (Flag = Merker), welches für jeden möglichen Zustand gespeichert wird. Wenn das Flag gesetzt ist, bewirkt der Schritt 212 eine JA-Bestimmung, falls NEIN, bewirkt der Schritt 212 eine NEIN-Bestimmung.
- Der Schritt 212 und das entsprechende Fortfahren-Flag, welches den Entscheidungsprozeß des Schrittes steuert, liefern einen verbesserten Steuermechanismus im Bezug auf das in Fig. 4 dargestellte FSM-Modell. In einer Reihe von Anwendungen ist es wünschenswert, daß man in der Lage ist, zu testen, ob eine Eingangsaktion nach einer Veränderung eines Zustandübergangs zu initialisieren ist. In der herkömmlichen Implementation war eine Eingabeveränderung erforderlich bevor eine Überlegung eines Tests für die Eingangsaktion initialisiert wurde. Ein solches Erfordernis könnte in vielen Anwendungen zu der Verwendung eines zusätzlichen, nicht- Prozeßbezogenen Eingabe führen, welche lediglich dazu genutzt wird, den Schritt 200 "anzustoßen", indem eine Veränderung des Eingabezustandes eines Anstoßzustandes bewirkt wird, um den Prozeßeingabeaktionsschritt zu initialisieren. Die verbesserte Anordnung gemäß der vorliegenden Erfindung gemäß Darstellung in Fig. 8 erübrigt eine derartige künstliche Steuerung und gibt dem Konstrukteur die Steuerungsmöglichkeiten, ob ein Test einer Eingangsaktion unmittelbar nach einem Zustandsübergang erwünscht ist. Eine derartige Steuerung gibt in vielen Anwendungen einen effizienteren Betrieb und erübrigt die Notwendigkeit eine nicht funktionale Anstoßeingabe zu implementieren. Die Verwendung eines Flags für jeden Zustand zur Steuerung der Entscheidung des Schrittes 212 ergibt eine vorteilhafte Steuerung der Ablaufverarbeitung gemäß Fig. 8.
- Fig. 9 stellt eine verbesserte Codierungsimplementation einer erfindungsgemäßen FSM dar. Diese Figur zeigt eine visuelle Darstellung eines Codierungsschemas, in welchem die Nutzung des Speichers minimiert wird, um die FSM der vorliegenden Erfindung zu implementieren. Ein codierter Steuerabschnitt 300 repräsentiert die Speicherung von nichtleeren Vektoren in einem im allgemeinen zusammenhängenden Format für alle Zustände der FSM. Dieses unterscheidet sich von der herkömmlichen Implementation, in welcher Einsprungaktionen, Aussprungaktionen und Ausgangsaktionen und Übergangsspezifikationen zum nächsten Zustand ein vorbestimmtes Format verwendeten und einen festen Speicherbetrag für jeden Zustand belegten. Gemäß der vorliegenden Erfindung ist die Größe von Datenstrukturen (Vektoren), welche Aktionen zugeordnet sind, nicht fixiert und erfordert somit nicht die Verwendung von Vektoren, welche leer sind, d. h., welche nutzlose Codierungsinformationen enthalten. Zustandsindizes 302(A)-302 N) liefern einen Index für jeden möglichen Zustand der erfindungsgemäßen FSM. Die Indizes liefern Informationen bezüglich der Bestimmung von Aktionen für jeden Zustand, was ausführlicher unter Bezugnahme auf Fig. 10 beschrieben wird.
- Bei einer Gegenüberstellung der erfindungsgemäßen Implementation mit der herkömmlichen, belegen Vektoren 104 und 106 in Fig. 6 für den nächsten Zustand der herkömmlichen Implementation auch Speicher, wenn sie leer sind, da der Zwang der festgelegten Größe für die Vektoren des nächsten Zustandes erfordert, daß die maximale Anzahl von für einen Zustand zugeordneten Vektoren für jeden Satz von Vektoren für den nächsten Zustand zugeordnet wird. Erfindungsgemäß werden derartige, nicht benutzte Spezifikationsvektoren 104 und 106 nicht verwendet, d. h., es wird kein Speicher für derartige leere Vektoren zugeordnet. Die erfindungsgemäße Implementation eliminiert auch alle leeren Vektoren, welche nach dem Stand der Technik für Eingangsaktionsvektoren aufgetreten wären. Somit würden die leeren Eingangsvektoren, wie in Fig. 6 zu sehen, in Verbindung mit der herkömmlichen Implementation in der erfindungsgemäßen Implementation keinem Speicher zugeordnet werden. Eine Erläuterung der codierten Implementation der vorliegenden Erfindung wird nun detaillierter unter Bezugnahme auf Fig. 10 bis 12 beschrieben.
- Fig. 10 veranschaulicht einen Satz von Indizes 302 (A), welcher für einen Satz von Indizes repräsentativ ist, welcher für jeden Zustand der Zustandsmaschine gespeichert ist. Der Einsprungaktionsindex 304 und der Aussprungaktionsindex 306 sind Adressenzeiger, welche Speicherablagestellen in der codierten Steuerung 300 identifizieren, welche einen entsprechenden Einsprungaktionsvektor und Aussprungaktionsvektor, welche auszuführen sind, enthalten. Der Eingangsaktionsindex 308 und ein Index 310 für den nächsten Zustand bestehen jeweils aus einem Adressenzeiger auf eine Speicherstelle in der codierten Steuerung 300, welcher den Beginn einer Adresseninformation identifiziert, welche für die Eingangsaktionen bzw. die Übergänge auf den nächsten Zustand gespeichert sind. Eine Erläuterung der Speicherung der Information für den nächsten Zustand in Verbindung mit dem Index 310 für den nächsten Zustand und eine Eingangsaktionsinformation in Verbindung mit dem Eingangsaktionsindex 308 wird im Bezug auf Fig. 11 bzw. Fig. 12 gegeben. Auf das Fortfahren-Flag 312 wird durch den Schritt 212 gemäß dem Flußdiagramm von Fig. 8 zugegriffen. Wenn dieses Flag gesetzt ist, initialisiert der Schritt 212 einen JA-Übergang, welcher anzeigt, daß eine Eingangsaktionsverarbeitung unmittelbar erfolgen sollte. Wenn das Flag nicht gesetzt ist, initialisiert der Schritt 212 eine NEIN-Entscheidung, welche die Steuerung an die Zustandübergangsentscheidung des Schrittes 200 zurückgibt. Dieses Fortfahren-Flag wird von dem Anwendungskonstrukteur für jeden Zustand gesetzt, um eine Steuerflexibilität bereitzustellen.
- Erfindungsgemäß wird ein weiterer Vorteil dahingehend bereitgestellt, daß ein vorbestimmter Null-Wert den Indizes 304, 306, 308 oder 310 zugewiesen werden kann, um eine Bedingung zu repräsentieren, in welcher keine weitere Verarbeitung erforderlich ist. Beispielsweise kann der vorbestimmte Null-Wert aus einem Wort bestehen, welches aus der Zahl Null besteht. Der entsprechende Index (302(A) - 302(N)) wird gemäß der in Fig. 8 dargestellten Ablaufsteuerung angesprochen, um einen Stellenbezug in dem codierten Steuerspeicherbereich auf spezifische Vektoren zu erzielen, welche für entsprechende Aktionen zu verwenden sind. Beispielsweise würde der Prozeßeingabeaktionsschritt 204 auf den Eingangsaktionsindex 308 verweisen; der Zustandübergangs-Bestimmungsschritt 200 würde auf den Index 310 für den nächsten Zustand verweisen. Der Aussprungaktionsschritt 206 würde auf den Aussprungaktionsindex 306 verweisen und der Einsprugsaktionsschritt 310 würde auf den Einsprungaktionsindex 304 verweisen. Der Fortfahren-mit dem- Eingangsaktionsschritt 312 verweist auf das Fortfahren-Flag 312. Somit existiert für jeden der Tests und Aktionen, welche gemäß dem in Fig. 8 definierten Ablauf erforderlich sind, ein entsprechender Index, um entsprechende codierte Vektordaten zu lokalisieren, welche in einem codierten Steuerabschnitt 300 in dem Speicher gespeichert sind.
- Nach einer Bezugnahme auf die Indizes 304 bis 310 wird ein Test durchgeführt, um zu ermitteln, ob der entsprechende Index einen vorbestimmten Null-Wert enthält. Wenn der Index den vorbestimmten Null-Wert enthält, liefert dieses eine Anzeige dafür, daß keine weitere Verarbeitung erforderlich ist, um die Aktion oder den Test abzuschließen, und das kein entsprechender Speicher in dem codierten Steuerabschnitt 300 zugeordnet ist. Beispielswiese wird, wenn keine Einsprungaktionsverarbeitung bei dem Einsprung in einen gegebenen Zustand erforderlich ist, der entsprechende Einsprungaktionsindex 304 für diesen Zustand mit dem vorbestimmten Null-Wert codiert und dadurch die Notwendigkeit eliminiert, einen Einsprungaktionsvektor zu speichern, welcher leer wäre, und dadurch die Zeit eliminiert, welche zur Verarbeitung des Leervektors erforderlich wäre. Somit eliminiert die Verwendung eines vorbestimmten Null-Wertes die Zuordnung von Speicher für entsprechende Leervektoren und erhöht die Geschwindigkeit der Implementation der erfindungsgemäßen FSM durch die Elimination der Verarbeitung von Vektoren, welche keine Ergebnisse oder Veränderungen von Bedeutung erzeugen.
- Fig. 11 stellt eine visuelle Repräsentation der Information für den nächsten Zustand in dem codierten Steuerabschnitt 300 des Speichers, angesprochen durch den Index 310 für den nächsten Zustand dar. Ein Zählwert für die Übergänge 316 des nächsten Zustandes enthält einen numerischen Wert, welcher der Anzahl von Übergängen zu verschiedenen Zuständen entspricht, welche von den aktuellen Zustand aus erlaubt sind. Der Zählwert für den Übergang zum nächsten Zustand wird dazu genutzt, um die Anzahl der Übergangssätze zum nächsten Zustand zu definieren, wie es durch die Sätze des ersten Übergangs zum nächsten Zustand bis zum letzten Übergang zum nächsten Zustand in Fig. 11 dargestellt ist. Nach einem erfolgten Bezug auf die als Tabelle 314 dargestellte Speichertabelle durch den Index 310 für den nächsten Zustand, wird jeder Satz von Übergängen zu dem nächsten Zustand sequentiell getestet, indem der AND- Bedingungsvektor 320 mit dem Eingangsregistervektor verglichen wird, um zu ermitteln, ob ein entsprechender Übergang zu einem nächsten Zustand auszuführen ist. Ein Zählwert 318(A) von AND-Bedingungen für den Satz erster Zustandsübergänge ist gespeichert, um eine variable Anzahl von AND-Bedingungen für jeden Zustand zu erlauben, um die Speicherzuordnung zu minimieren. Der Vektor 322(A) für den nächsten Zustand erzeugt eine Adresse, welche die Speicherstelle des Zustands identifiziert, auf welche der Übergang durchzuführen ist. Entsprechende Sätze von Zustandübergangsinformation existieren für jeden möglichen Übergang zu einem nächsten Zustand. Der letzte Übergangssatz zu dem nächsten Zustand wird von Elementen 318(N), 320(N) und 322(N) repräsentiert, welche jeweils entsprechende Funktionen, wie vorstehend erläutert, bereitstellen. Wenn nach der Verarbeitung aller AND-Bedindungen, welche allen den in Tabelle 314 dargestellten Sätzen von Übergängen zum nächsten Zustand dargestellt sind und der Ermittlung, daß keine von den AND-Bedingungen erfüllt ist, führt dieses zu einer NEIN-Ermittlung durch den Zustandübergangsschritt gemäß Darstellung in Fig. 8. Wenn eine der AND-Vektorbedingungen TRUE ist, lautet die Entscheidung des Schrittes 200 für den Übergang auf den nächsten Zustand "JA" und führt zu einem Übergang auf den nächsten Zustand, welcher in dem entsprechenden Vektor 322 der Tabelle 314 angegeben ist. Somit ist offensichtlich, daß die Anzahl von AND-Vektoren, welche jedem Übergangssatz zu einem nächsten Zustand zugeordnet sind, in der Zahl variieren kann und damit die Notwendigkeit einer gleichmäßigen festgelegten Anzahl von Vektoren für jeden Satz, wie in der herkömmlichen Implementation erforderlich, eliminiert wird.
- Fig. 12 stellt eine Tabelle 324 von Eingangsaktionsinformation für einen im Speicher gespeicherten und von dem Eingangsaktionsindex 308 angegebenen Zustand dar. Im allgemeinen ist die Tabelle 324 ähnlich der vorstehend erwähnten Tabelle 314 mit der Ausnahme, daß die Tabelle 324 ähnlichen Funktionen für die erste Eingangsaktion im Gegensatz zu dem Übergang zu dem nächsten Zustand entspricht. Ein Zählwert 326, der für diesen Zustand verfügbaren Eingangsaktionen ist in der Tabelle 324 gespeichert. Für jeden der Sätze von Eingangsaktionen ist ein Zählwert 328(A) der Anzahl der AND-Bedingungen (Vektoren) für die Eingangsaktionen gespeichert. Dieses stellt eine Codierungssteuerung zur Bestimmung der Anzahl nachfolgender AND-Bedingungsvektoren 330(A), welche zu testen sind, bereit. Ein Eingangsaktionsvektor 332(A) ist jedem Satz von Eingangsaktionen zugeordnet und entspricht einem Eingangsaktionsvektor 128 von Fig. 6, welcher zum Einschreiben in das Ausgangsregister verwendet wird. Der letzte Eingangsaktionssatz enthält entsprechende Elemente, d. h., einen Zählwert 328(N) der Anzahl von AND-Bedingungen für die letzten Eingangsaktionen, die AND-Bedingungsvektoren 330(N) und einen entsprechenden Eingangsaktionsvektor 332(N). Die von der Tabelle 324 repräsentierte Speicherinformation wird von dem entsprechenden Eingangsaktionsindex 308 lokalisiert, auf welchen wiederum gemäß einer Anforderung für eine Verarbeitung eine Eingangsaktion durch den Schritt 204 von Fig. 8 zugegriffen wird. Wenn einer von den in Tabelle 324 repräsentierten AND-Bedingungsvektoren TRUE ist, wenn er mit dem Vektor des Eingangsregisters verglichen wird, wird der entsprechende Eingangsaktionsvektor ausgeführt und die Verarbeitung weiterer Sätze von Eingangsaktionen fortgesetzt, bis alle Sätze evaluiert worden sind; worauf die Steuerung dann auf den Übergangsschritt 200 zu dem nächsten Zustand übergeht.
- Der Vorteil dieser Implementation wird besser durch eine Bezugnahme auf Tabelle 100 von Fig. 6 verständlich und unter Beachtung, daß zwei Leervektoren, welche den Eingangsaktionsspezifikationen nach dem Stand der Technik zugeordnet sind, kein Speicher gemäß der vorliegenden Erfindung zugeordnet würde, da eine variable Anzahl von AND- Vektoren, wie unter Bezugnahme auf Fig. 12 erläutert, angeordnet werden kann. Somit wird der Bedarf an Speicher minimiert und die Verarbeitungsgeschwindigkeit gemäß der vorliegenden Erfindung erhöht, indem die Verarbeitung von Leervektoren verhindert wird, welche zu keiner Information von Bedeutung führt.
- Fig. 13 veranschaulicht eine AND-Spezifikation 400 gemäß einer herkömmlichen FSM-Implementation. Die AND-Spezifikation 400 in diesem Erläuterungsbeispiel besteht aus drei 16-Bit- Worten 402, 404 und 406, welche die Codierung für maximal 47 unterschiedliche Eingabebedingungen bereitstellen. Nach Kenntnis des Anmelders wurde die Null-Bit-Position im Wort 402 in der herkömmlichen Implementation dazu verwendet, um anzugeben, ob der Rest der Spezifikation irgendwelche Bits enthielt, welche gesetzt waren. In dem Veranschaulichungsbeispiels bilden die Worte eine effektive Bitfolge von der Bitposition Null in Wort 402 bis zu der letzten Bitposition 47 in Wort 406.
- Fig. 14 stellt ein weiteres Beispiel einer AND- Spezifikation 408 gemäß einer herkömmlichen Implementation dar, welche wiederum 3 16-Bit-Worte 410, 412 und 414 verwendet. In diesem Beispiel weist nur ein einziges Bit, d. h., die Bitposition 35 ein gesetztes Bit auf. Erfindungsgemäß wurde entdeckt, daß eine erhebliche Anzahl von den der erfindungsgemäßen FSM zugeordneten Vektoren nur ein einziges gesetztes Bit aufweist. Der AND-Vektor wird getestet, indem er mit dem Eingangsregistervektor unter Verwendung einer Bit-für-Bit-Vergleichs AND verknüpft wird. Für den Fachmann auf diesem Gebiet wird es offensichtlich sein, daß keiner der individuellen Bit-für-Bit-AND- Verknüpfungsvergleiche zu einer TRUE-Bedingung führen kann, außer für die AND-Verknüpfung des entsprechenden 35.-ten Bits mit der AND-Spezifikation mit dem Eingangsvektor des 35.-ten Bits. Es ist ersichtlich, daß erhebliche Verarbeitungszyklen erforderlich sind, um Bit-für-Bit-Übereinstimmungen für die 47 Vergleiche zu versuchen, welche erforderlich sind, selbst wenn sich nur ein einziger möglicher TRUE-Vergleich aus einem Vergleich der 35.-ten Bits der entsprechenden Vektoren ergeben könnte.
- Fig. 15 stellt die Verwendung eines einzigen 16-Bit- Wortes dar, welches einen AND-Index ausbildet, der AND- Vektor-Spezifikationen mit nur einem einzigen gesetzten Bit spezifiziert. Das Wort 416 repräsentiert ein herkömmliches 16-Bitwort, in welchem die Zahl 35 codiert ist, d. h., die binäre Bits 0, 1 und 5 gesetzt sind. Dieses repräsentiert die Bitposition 35 einer AND-Spezifikation gemäß Darstellung in Fig. 14, in welcher nur ein einziges Bit gesetzt wird. Das Wort 416 wird um ein Bit nach links verschoben, um ein weiteres Wort 418 zu erzeugen. Die Null-Bit-Position in dem Wort 418 ist gesetzt und hat die Funktion eines Flags, um anzuzeigen, daß ein nur ein 16-Bitwort verwendet wird, um eine spezielle AND-Indexspezifikation im Gegensatz zu einem AND-Spezifikationsvektor in voller Länge auszubilden. Wenn das Null-Bit gesetzt ist, interpretiert die erfindungsgemäße FSM das 16-Bit-Wort als eines, welches eine linksverschobene Anzahl enthält, welches eine Einzelbitposition repräsentiert, die in Bezug auf einen anderen Vektor voller Länge, wie z. B. den Eingaberegistervektor zu testen ist. Der Prozeß interpretiert das Wort 418 als ein die Zahl 35 enthaltenes Wort (unter Berücksichtigung einer 1-Bit-Linksverschiebung). Dann identifiziert der Prozeß die entsprechende Bitstelle im Vektor, mit welcher der Vergleich durchzuführen ist, und führt eine Bestimmung durch, ob die einzelne Bitposition in dem anderen Vektor TRUE ist. Eine TRUE-Bestimmung führt zu einer TRUE-Bestimmung der entsprechenden AND-Spezifikation; eine FALSE-Anzeige zeigt an, daß die AND-Spezifikation nicht TRUE ist. Der erfindungsgemäße Vorteil einer Verwendung eines AND-Indexes anstelle eines herkömmlichen AND- Spezifikationsvektors voller Länge beruht auf den Minimierung der Anzahl einzelner Bit-Vergleiche, welche durchgeführt werden müssen, um eine endgültige Entscheidung zu treffen. Nach der Entscheidung und Interpretation eines AND-Indexes 418 muß nur eine einzige Bitposition in dem entsprechenden Vergleichsvektor analysiert werden, um festzustellen, ob die gesamte herkömmliche AND-Spezifikation TRUE oder FALSE ist. Dieses minimiert die Anzahl der Zyklen und maximiert die Ausführungsgeschwindigkeit der erfindungsgemäß implementierten FSM.
- Für den Fachmann auf diesem Gebiet ist ersichtlich, daß die Verwendung dieser Indexierungstechnik auch auf die Ausgangssteuerungsvektoren, d. h., Eingangsaktionsvektoren, Einsprungaktionsvektoren und Aussprungaktionsvektoren angewendet werden kann. Beispielsweise kann ein Eingangsaktionsvektor mit nur einem einzigen gesetzten Bit, wie z. B. der Vektor 128 in Fig. 6, durch einen Vektor repräsentiert werden, der ein Indexflag gesetzt hat und die Bitposition des gesetzten Bits speichert. Ein derartiger Eingangsaktionsindex würde dazu genutzt werden, um das in dem Ausgangsregister zu setzende Bit direkt zu identifizieren.
Claims (8)
1. Verfahren zur Implementierung einer Maschine
mit endlichen Zuständen (FSM - finite-state-maschine) in
einem Mikrocomputer zum Steuern eines Ablaufverfahrens, wobei
die FSM mehrere Zustände und einen Selektionsvektorensatz
besitzt, und das Verfahren für die Implementierung der FSM
die Schritte aufweist:
a) Speichern aller Selektionsvektorensätze in
einem ersten Abschnitt eines Speichers (40);
gekennzeichnet durch:
b) Speichern eines Indexes für jeden Zustand der
FSM in einem zweiten Abschnitt des Speichers (40) des
Mikrocomputers, wobei der Index einen jedem
Selektionsvektorsatz entsprechenden Adressenlokalisierer
enthält; und
c) wobei während des Betriebs der FSM in einem
aktuellen Zustand der Mikroprozessor auf einen der
Selektionsvektorensätze durch Lesen eines entsprechenden
Adressenlokalisierers aus einem entsprechenden Index
zugreift.
2. Verfahren nach Anspruch 1, ferner mit dem
Schritt einer Speicherung eines ersten Zählwerts, der jeder
einem Zustand zugeordneten Gruppe von
Selektionsvektorensätzen zugeordnet ist, wobei der erste
Zählwert die Anzahl von Selektionsvektorensätzen ist, die
innerhalb der entsprechenden Gruppe enthalten sind, und wobei
der Mikrocomputer den ersten Zählwert verwendet, um die
maximale Anzahl von Selektionsvektorensätzen zu definieren,
die für jeden Zustand zu verarbeiten sind.
3. Verfahren nach Anspruch 1 oder 2, ferner mit
dem Schritt einer Speicherung eines zweiten Zählwerts, der
jedem von den Selektionsvektorensätzen zugeordnet ist, wobei
der zweite Zählwert die Anzahl von Selektionsvektoren ist,
die in jedem Satz enthalten sind, und wobei der Mikrocomputer
den zweiten Zählwert verwendet, um die Anzahl von
Selektionsvektoren zu definieren, die jedem Satz zugeordnet
sind.
4. Verfahren zum Minimieren des Speichers (40),
der von einem Mikrocomputer (36) benötigt wird, welcher eine
Implementation einer Maschine mit endlichen Zuständen (FSM)
enthält, welche einen Prozeß steuert, in welchem mehrere von
der FSM empfangene Eingangssignale (50) überwachten
Prozeßbedinungen entsprechen, und von der FSM erzeugte
Ausgangssignale (58) Befehlen entsprechen, welche
Veränderungen in dem Prozeß zugeordneten Parametern bewirken,
wobei die FSM mehrere Zustände und Selektionsvektorensätze,
logische Daten, die selektiv in den Selektionsvektoren
gespeichert sind, zur Definition logischer Bedingungen
aufweist;
gekennzeichnet durch
a) Speichern eines Indexes (302A-302 N) im Speicher
(40) des Mikrocomputers für jeden Zustand der FSM, wobei der
einen Adressenlokalisierer enthaltende Index einem Satz von
den Selektionsvektoren entspricht;
b) Zuweisen eines vorbestimmten Nullwerts zu
Adressenlokalisierern, die den Sätzen entsprechen, welche
Selektionsvektoren ohne jede logische Daten enthalten;
c) Speichern von in den Sätzen enthaltenen
Selektionsvektoren mit entsprechenden Adressenlokalisierern,
die nicht den Nullwert enthalten, im Speicher (40) des
Mikroprozessors, wobei kein Speicher in dem Mikroprozessor
zur Speicherung von Selektionsvektoren verwendet wird, die in
den Sätzen enthalten sind, die Adressenlokalisierern
entsprechen, die den Nullwert enthalten;
d) Zuweisen eines Nicht-Nullwerts zu
Adressenlokalisierern, die Sätzen entsprechen, welche
Selektionsvektoren mit logischen Daten enthalten, wobei der
Nicht-Nullwert als ein Zeiger auf eine Stelle in dem Speicher
dient, der die entsprechenden Selektionsvektoren enthält;
e) wobei während des Betriebs der FSM in einem
gegebenen Zustand der Mikroprozessor versucht, auf einen
Selektionsvektorensatz durch Lesen eines entsprechenden
Adressenlokalisierers zuzugreifen, wobei der Mikroprozessor
einen Nullwert in dem einen Adressenlokalisierer als eine
Angabe interpretiert, daß keine FSM-Verarbeitung des
zugeordneten einen Selektionsvektorensatzes erforderlich ist,
wobei der Mikroprozessor einen Nicht-Nullwert in dem einen
Adressenlokalisierer als eine Angabe interpretiert, daß eine
FSM-Verarbeitung des zugeordneten Selektionsvektorensatzes
erforderlich ist, wodurch der Speicher nicht für die
Speicherung von Selektionsvektoren benötigt wird, die keine
logischen Daten enthalten.
5. Verfahren nach Anspruch 1, wobei der
Mikrocomputer einen Nicht-Nullwert in dem einen
Adressenlokalisierer als Adresseninformation interpretiert
und zum Zugriff auf den einen Selektionsvektorensatz an einer
von den Nicht-Nullwert angegebenen Speicherstelle in dem
Speicher übergeht.
6. Verfahren nach Anspruch 1, ferner mit dem
Schritt einer Speicherung eines den Selektionsvektorensätzen
zugeordneten ersten Zählwerts, wobei der erste Zählwert die
Anzahl von Selektionsvektorensätzen ist, und der
Mikrocomputer den ersten Zählwert verwendet, um die maximale
Anzahl von Selektionsvektorensätzen zu definieren, die zu
verarbeiten sind.
7. Verfahren nach Anspruch 1 oder 3, ferner mit
dem Schritt einer Speicherung von jedem der
Selektionsvektorensätze zugeordneten zweiten Zählwerten,
wobei der zweite Zählwert die Anzahl der in jedem Satz
enthaltenen Selektionsvektoren ist, und der Mikrocomputer die
zweiten Zählwerte verwendet, um die Anzahl von
Selektionsvektoren zu definieren, die jedem Satz zugeordnet
sind.
8. Verfahren nach einem der Ansprüche 1, 3 oder 4
ferner mit dem Schritt der Speicherung eines Steuervektors,
der jedem Selektionsvektorensatz zugeordnet ist, wobei der
Mikrocomputer einen einem Selektionsvektorensatz zugeordneten
Steuervektor ausführt, wenn mindestens einer der
Selektionsvektoren von dem einen Satz eine WAHR-Bedingung
eines logischen UND-Vergleichs mit den Eingangssignalen
erfüllt.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/174,642 US5459841A (en) | 1993-12-28 | 1993-12-28 | Finite state machine with minimized vector processing |
US08/174,641 US5623680A (en) | 1993-12-28 | 1993-12-28 | Finite state machine for process control |
US08/174,646 US5473531A (en) | 1993-12-28 | 1993-12-28 | Finite state machine with minimized memory requirements |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69428343D1 DE69428343D1 (de) | 2001-10-25 |
DE69428343T2 true DE69428343T2 (de) | 2002-07-04 |
Family
ID=27390428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE1994628343 Expired - Fee Related DE69428343T2 (de) | 1993-12-28 | 1994-12-09 | Verbesserter endlicher Zustandsautomat für eine Prozesssteuerung |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP0662651B1 (de) |
DE (1) | DE69428343T2 (de) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10841366B2 (en) * | 2017-03-20 | 2020-11-17 | Futurewei Technologies, Inc. | Service graph based serverless cloud platform |
CN112733380B (zh) * | 2021-01-20 | 2023-10-13 | 北京高码科技有限公司 | 基于关系型数据库的有限状态机 |
CN115344332B (zh) * | 2022-10-17 | 2022-12-13 | 北京云枢创新软件技术有限公司 | 一种基于有限状态机的状态变化提取方法及系统 |
-
1994
- 1994-12-09 EP EP19940309194 patent/EP0662651B1/de not_active Expired - Lifetime
- 1994-12-09 DE DE1994628343 patent/DE69428343T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69428343D1 (de) | 2001-10-25 |
EP0662651A2 (de) | 1995-07-12 |
EP0662651A3 (de) | 1996-08-28 |
EP0662651B1 (de) | 2001-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3851038T2 (de) | Zugriff auf einen geschützten Speicher. | |
DE69719479T2 (de) | Datenverarbeitungssystemsicherheit | |
DE69217761T2 (de) | Lese- und Schreibschaltung für einen Speicher | |
DE68907518T2 (de) | Inhaltsadressierte Speicheranordnung. | |
EP0097725B1 (de) | Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen | |
DE2230102A1 (de) | Rechenwerk fuer variable wortlaengen | |
DE69121937T2 (de) | Verfahren und Gerät zum teilweisen Lauf eines Sequenzprogramms zwecks Fehlersuche | |
DE3752280T2 (de) | Mustergenerator | |
DE2023354A1 (de) | Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit | |
DE1499182B2 (de) | Datenspeichersystem | |
DE2735397A1 (de) | Programmierbarer maschinen-funktionsregler | |
DE69028907T2 (de) | Verfahren zur Anzeige der Betriebsgeschichte einer Maschine | |
DE1285219B (de) | Steuerwerk zur Ausfuehrung von Unterprogrammen | |
DE3855494T2 (de) | Abfragevorrichtung und -methode | |
DE2926322A1 (de) | Speicher-subsystem | |
DE3688136T2 (de) | Verfahren zum Testen und Setzen von Daten in einen Datensatz auf einer Platte in eine atomaren Ein/Ausgabeoperation. | |
DE4411389C2 (de) | Programmierbare Steuereinheit und Betriebsverfahren | |
DE68925376T2 (de) | In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas | |
DE1191145B (de) | Elektronische Zifferrechenmaschine | |
DE3121046C2 (de) | ||
DE69428343T2 (de) | Verbesserter endlicher Zustandsautomat für eine Prozesssteuerung | |
DE2759120C2 (de) | ||
DE2613800C2 (de) | ||
DE3688737T2 (de) | Kontextadressierbarer umlaufspeicher. | |
EP0525214B1 (de) | Verfahren zum Betreiben eines Automatisierungsgeräts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |