-
HINTERGRUND
DER ERFINDUNG
-
Gebiet der Erfindung
-
Die
Erfindung behandelt allgemein Prozesssteuerroutinen und insbesondere
Steuerroutinen unter Verwendung von Ladder Logic.
-
Kurzbeschreibung
der diesbezüglichen
Technologie
-
Ladder
Logic wurde häufig
verwendet, um bei Prozesssteuersystemen implementierte Steuerroutinen auszudrücken. Die
Ladder Logic hat ihren Ursprung im Ausdruck relaisbasierter Logik,
wobei jedes Relais als Spule ausgedrückt ist und ein oder mehrere
Kontakte steuern, ob die Spule mit Energie beaufschlagt wird. Hierzu
sind die Kontakte und die Spule für jedes Relais an einer zwischen
zwei Stromschienen angeschlossenen Sprosse angeordnet, sodass eine
Leiterstruktur entsteht. Außerhalb
von Relais und Relais-Netzen
wurde Ladder Logic häufig
als standardmäßiges Programmierparadigma
für speicherprogrammierbare
Steuerungen (SPS, PLC) eingesetzt, die zur Implementierung von Steuerlogik
für eine
Vielzahl von Prozesssteuervorgängen
verwendet werden. Die von SPS-Einrichtungen ausgeführte Logik
und die Routinen lassen sich oft in anderen Programmierparadigmen
ausdrücken,
wie z.B. in boolescher Logik. Ladder Logic bleibt jedoch eines der bevorzugten
Programmierparadigmen, insbesondere wenn die Logik leicht als Reihe
von Relais-Spulen und -Kontakten ausgedrückt werden kann.
-
Zur
Bewältigung
der zunehmenden Komplexität
von Prozesssteuerroutinen wurden SPS-Einrichtungen verwendende Prozesssteuersysteme
so erweitert, dass sie höher
entwickelte digitale Controller einschließen, die die über Programmierstrukturen
oder -sprachen höherer
Ordnung, wie z.B. objektorientierte Programmiersprachen, ausgedrückte Steuerlogik
ausführen.
Diese höher
entwickelten Controller sind normalerweise in umfassende Netzwerke
integriert, die auf verteilte Prozesssteuerverfahren mit einer oder
mehreren Bediener-Workstations aufbauen, um Benutzerschnittstellen
zur Konfiguration und Wartung und für sonstige Steuerfunktionen
bereitzustellen. In diesen Fällen
führen
die Workstations und die anderen Benutzerschnittstellen Konfigurationssoftware
und sonstige Routinen aus, die es dem Kontrollpersonal ermöglichen,
die über
das Prozesssteuersystem implementierte Steuerlogik einzusehen und
zu bearbeiten. Infolge dieser Innovationen kann die Wartung eines
Prozesssteuersystems, das eine Anzahl von Controllern integriert,
bewältigt
werden, ohne die Prüfung
jedes individuellen Controllers durch das Personal mittels Handheld
oder sonstigen tragbaren Einrichtungen zur Programmierung bzw. für andere
Arbeiten zu erfordern, was bei SPS-Einrichtungen oft der Fall war.
-
Trotz
dieser Fortschritte und Innovationen bei der Prozesssteuerung verwenden
viele Systeme noch Ladder Logic zum Ausdruck der von Controllern
bzw. sonstigen Einrichtungen im Netzwerk ausgeführten Steuerlogik. Allerdings
ist das mit der Systemwartung betraute Personal nunmehr besser mit
dem Arbeiten mit Programmiersprachen höherer Ordnung und boolescher
Logik statt mit Ladder Logic vertraut. Demzufolge können Wartungs-
und sonstige Arbeiten zur Verbesserung oder Neukonfiguration von
Ladder-Logic-Systemen in ineffizienter Weise eine oder mehrere Übersetzungen
der Logik erfordern. Insbesondere kann ein erster Übersetzungsprozess
erforderlich sein, um die Steuerroutine von Ladder Logic in boolesche
Logik umzusetzen, um es mit boolescher Logik besser vertrauten Personen
zu ermöglichen,
Probleme zu erkennen und Verbesserungen der Steuerroutine zu entwickeln.
Da diese Übersetzung
häufig
manuell ausgeführt
wird, ist der Vorgang oft zeitaufwendig und fehleranfällig, wodurch
weitere Übersetzungen
notwendig werden können.
-
Das
für Baxter
erteilte US-Patent Nr. 5,623,401 beschreibt ein Betriebsverfahren
für Steuersysteme, das
ein Verfahren zur Umsetzung von Ladder Logic einer begrenzten und
vereinfachten Art (d.h. nur Spulen und Kontakte) in flussartige
Programme mit booleschen Gates zur Verbesserung der Ansprechzeit
eines Steuersystems enthält.
Das Endergebnis ist eine Folge von Übergangsroutinen, die sicherstellen,
dass nur Änderungen
an bestimmten Variablen während
des Betriebs abgearbeitet werden. Somit werden diese Übergangsroutinen
erzeugt, um die Ausführung
zu optimieren, und nicht, um die vorstehend in Zusammenhang mit
höher entwickelten
Prozesssteuersystemen beschriebenen Arten von Logik-Design, Konfiguration,
Wartung und sonstigen Arbeiten zu unterstützen. Dementsprechend werden
die Ergebnisse nicht auf eine Weise verfügbar gemacht, gespeichert oder
ausgedrückt,
die weitere Design-, Konfigurations-, Wartungs- oder sonstige Arbeiten an der Logikroutine
unterstützt.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Beschrieben
wird ein automatisiertes Logikumsetzungsverfahren, das als System,
eine Methode oder ein Computerprogramm zur automatisierten Übersetzung
oder Umsetzung einer in Ladder Logic ausgedrückten Routine implementiert
werden kann. Das beschriebene Verfahren setzt die Ladder Logic in
Elemente booleschen Logik um, sodass weitere Design-, Konfigurations-,
Wartungs- und sonstige Arbeiten an der Routine und der zugrunde
liegenden Logik ermöglicht
werden.
-
Gemäß einem
Aspekt des Umsetzungsverfahrens ist eine Methode zweckmäßig zur
Abarbeitung einer Routine, die über
in einer Vielzahl von Leitersprossen und entsprechend einer Ausführungssequenz
angeordneten Ladder-Logic-Elementen ausgedrückt ist. Die Methode schließt die Erfassung
boolescher Darstellungen der Ladder-Logic-Elemente in einem entsprechenden logischen
Ausdruck für
jede Leitersprosse der Vielzahl von Leitersprossen ein, sowie die
Auflösung
der booleschen Logikelemente aus den logischen Ausdrücken und
die Speicherung von Informationen zu den booleschen Logik elementen
in einem Speicher entsprechend der Ausführungssequenz zum Ausdruck
der Routine in boolescher Logik.
-
Bei
bestimmten Ausführungsformen
wird der Auflösungsschritt
ausgeführt,
wenn eine weitere Erfassung boolescher Darstellungen in einem der
entsprechenden logischen Ausdrücke
zu einer Kombination unterschiedlicher boolescher Logikfunktionen
führen
würde.
-
Der
Erfassungsschritt kann die Schritte der Bewertung jedes Ladder-Logic-Elements zur Bestimmung eines
dadurch ausgeführten
Vorgangs und die Anpassung des dazugehörigen logischen Ausdrucks zur
Wiedergabe des Vorgangs einschließen. Der Speicherungsschritt
kann den Schritt des Schreibens einer Definition des booleschen
Logikelements in den Speicher als ein vom logischen Ausdruck getrenntes
Objekt einschließen.
Das Objekt kann bezüglich
weiterer Objekte, die weiteren booleschen Logikelementen zugeordnet
sind, in eine Speicherposition geschrieben werden, die die Ausführungssequenz
der Routine erhält.
Die Ladder-Logic-Elemente können
in Spaltenpositionen innerhalb jeder Leitersprosse angeordnet sein,
wobei die Ausführungssequenz
spaltenweise abläuft.
-
Bei
einer Ausführungsform
enthält
die Methode weiter vor der Bewertung eines anderen Ladder-Logic-Elements
in der erstbenannten Leitersprosse den Schritt des Übergangs
zu einer unterschiedlichen Leitersprosse der Vielzahl von Leitersprossen
für ein
darauf folgendes Ladder-Logic-Element.
-
In
Fällen,
in denen die Ladder Logic spezielle Funktionen hat, enthält die Methode
die Schritte der (i) Angabe einer nicht-booleschen Funktion mit über mehrere
Leitersprossen der Vielzahl von Leitersprossen verteilten Einheiten
und (ii) Auflösung
eines weiteren booleschen Logikelements aus einem entsprechenden
logischen Ausdruck für
die mit einer Eingabe der nicht-booleschen Funktion verbundenen
Leitersprosse aus der Vielzahl von Leitersprossen. Die Methode kann
ferner den Schritt der Speicherung eines Objekts, das die nicht-boolesche
Funktion wiedergibt, im Speicher entsprechend der Ausführungssequenz
umfassen.
-
Bei
einer Ausführungsform
umfasst der Erfassungsschritt den Schritt der Kombination von zwei
oder mehreren logischen Ausdrücken
für benachbarte
Leitersprossen aus der Vielzahl von Leitersprossen, die über eine
oder mehrere OR-Funktionen verknüpft
sind, um für
jeden der zwei oder mehreren entsprechenden logischen Ausdrücke einen
zusammengesetzten logischen Ausdruck zu erzeugen. Der Kombinationsschritt
kann den Schritt der Ausführung
eines Rekursionsverfahrens umfassen.
-
Gemäß einem
weiteren Aspekt des Umsetzungsverfahrens enthält ein System einen Prozessor,
einen mit dem Prozessor verbundenen mittels Computer lesbaren Speicher
und eine Logik-Umsetzungsroutine, die in dem mittels Computer lesbaren
Speicher gespeichert und so konfiguriert ist, dass sie vom Prozessor
ausgeführt
werden kann. Die Logik-Umsetzungsroutine enthält wiederum eine Abarbeitungsroutine
für Ladder-Logic-Elemente, die boolesche
Darstellungen der Ladder-Logic-Elemente in einem entsprechenden
logischen Ausdruck für
jede Leitersprosse der Vielzahl von Leitersprossen erfasst. Die
Abarbeitungsroutine für
Ladder-Logic-Elemente löst
anschließend
ein boolesches Logikelement aus dem entsprechenden logischen Ausdruck
auf, wenn eine weitere Erfassung weitere unterschiedliche boolesche
Funktion im entsprechenden logischen Ausdruck ergeben würde.
-
Bei
einer Ausführungsform
enthält
die Logik-Umsetzungsroutine weiter eine Abarbeitungsroutine für OR-Funktionen,
die beim Vorliegen einer OR-Funktion (i) mehrere dazugehörige logische
Ausdrücke
für benachbarte
Leitersprossen aus der Vielzahl von Leitersprossen, die über die
OR-Funktion verknüpft
sind, verbindet, um eine Kombination der mehreren dazugehörigen logischen
Ausdrücke
wiederzugeben, und (ii) jeden der mehreren dazugehörigen logischen
Ausdrücke ändert, um
die Kombination wiederzugeben. Die Abarbeitungsroutine für OR-Funktionen
kann ein Rekursionsverfahren ausführen.
-
Die
Abarbeitungsroutine für
Ladder-Logic-Elemente kann eine Abarbeitungsroutine für Spulen
umfassen, wenn in einer Stromleitersprosse der Vielzahl von Leitersprossen
eine Spule vorliegt, und löst
anschließend
den logischen Ausdruck für
die Stromleitersprosse in ein weiteres boolesches Logikelement auf.
-
Gemäß noch einem
weiteren Aspekt des Umsetzungsverfahrens ist ein Computerprogrammprodukt zur
Umsetzung einer Ladder-Logic-Routine auf einem mittels Computer
lesbaren Medium gespeichert. Das Computerprogrammprodukt enthält erste,
zweite und dritte Anweisungsmengen. Die erste Anweisungsmenge erfasst
boolesche Darstellungen der Ladder-Logic-Elemente in einem entsprechenden
logischen Ausdruck für jede
Leitersprosse der Vielzahl von Leitersprossen. Die zweite Anweisungsmenge
bestimmt anschließend,
ob die booleschen Logikelemente aus den logischen Ausdrücken aufgelöst werden
sollen. Die dritte Anweisungsmenge speichert dann die booleschen
Logikelemente entsprechend einer Reihenfolge, in der die booleschen Logikelemente
aufgelöst
werden, in einem Speicher.
-
Bei
einer Ausführungsform
kann die zweite Anweisungsmenge ausgeführt werden, wenn die weitere Erfassung
der booleschen Darstellungen in einem der logischen Ausdrücke durch
die erste Anweisungsmenge zu einer Kombination unterschiedlicher
boolescher Logikfunktionen führen
würde.
-
Die
erste Anweisungsmenge kann jedes Ladder-Logic-Element bewerten,
um einen dadurch ausgeführten
Vorgang zu bestimmen und den entsprechenden logischen Ausdruck aktualisieren,
um den betreffenden Vorgang wiederzugeben.
-
Die
dritte Anweisungsmenge kann entsprechende Definitionen zu jedem
booleschen Logikelement als dazugehöriges Objekt, das vom logischen
Ausdruck, aus dem das boolesche Logikelement aufgelöst worden ist,
getrennt ist, in den Speicher schreiben. Bei einer Ausführungsform
erhält
die Reihenfolge, in der die Objekte gespeichert sind, eine Ausführungssequenz
der Ladder-Logic-Routine.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Zum
umfassenderen Verständnis
der Erfindung wird Bezug genommen auf die folgende detaillierte Beschreibung
und die beigefügten
Zeichnungen. Es zeigen:
-
1 ist
eine schematische Darstellung eines beispielhaften Prozesssteuersystems,
das eine für
die Umsetzung mittels des beschriebenen Verfahrens geeignete Ladder-Logic-Routine ausführt, zusammen
mit einem oder mehreren Systemen bzw. Einrichtungen, die eine Logik-Umsetzungsroutine
gemäß einer
Ausführungsform
implementieren können.
-
2 ist
eine schematische Darstellung einer beispielhaften Ladder-Logic-Routine
mit Ladder-Logic-Elementen einschließlich eines Sonderfunktionselements.
-
3 ist
ein Ablaufdiagramm mit der Wiedergabe einer Ladder-Logic-Umsetzungsroutine
zur Abarbeitung der in 2 dargestellten beispielhaften
Ladder-Logic-Routine
gemäß einer
Ausführungsform
des beschriebenen Umsetzungsverfahrens.
-
4 ist
ein Ablaufdiagramm mit der ausführlicheren
Darstellung eines Spulenkompressions-Abschnitts der in 3 wiedergegebenen
Umsetzungsroutine.
-
5 ist
ein Ablaufdiagramm mit der ausführlicheren
Darstellung der Abschnitte zur Erfassung und Abarbeitung der in 3 wiedergegebenen
Umsetzungsroutine.
-
6 ist
ein Ablaufdiagramm mit der Darstellung eines Abschnitts zur Spulen- und Kontaktbewertung und
-abarbeitung der in 3 und 5 wiedergegebenen
Umsetzungsroutine gemäß einer
Ausführungsform.
-
7 ist
ein Ablaufdiagramm mit der Darstellung des Abschnitts zur Sonderfunktionsbewertung
und -abarbeitung der in 3 und 5 wiedergegebenen
Umsetzungsroutine gemäß einer
Ausführungsform.
-
8A–8C sind
Ablaufdiagramme mit der Darstellung eines Abschnitts zur Bewertung
und Abarbeitung der OR-Funktion der in 3 und 5 wiedergegebenen
Umsetzungsroutine gemäß einer
Ausführungsform.
-
Während sich
das beschriebene Umsetzungsverfahren für verschiedenartige Ausführungsformen
eignet, sind in der Zeichnung (und in der folgenden Beschreibung) spezifische
Ausführungsformen
der Erfindung dargestellt, wobei die Beschreibung der Veranschaulichung
dienen und die Erfindung nicht auf die hier beschriebenen und dargestellten
spezifischen Ausführungsformen
begrenzt sein soll.
-
AUSFÜHRLICHE
BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Die
beschriebenen Ausführungsformen
behandeln allgemein die automatisierte Umsetzung oder Übersetzung
von Ladder Logic in boolesche Logik und können somit in Verbindung mit
einem Prozesssteuersystem zweckmäßig sein,
das Einrichtungen hat, die in Ladder Logic ausgedrückte Routinen
ausführt.
Insbesondere können
Konfigurations-, Design-, Wartungs- und sonstige Arbeiten zur Aufrechterhaltung
bzw. zur Verbesserung des Betriebs derartiger Prozesssteuersysteme
Nutzen aus dieser Umsetzung oder Übersetzung, falls beispielsweise
die Bediener oder sonstiges Personal mit Ladder Logic nicht vertraut
sind. Auch wenn die beschriebenen Ausführungsformen sich besonders
gut für
die Umsetzung von Prozesssteuerroutinen eignen, ist der Einsatz
der beschriebenen Ausführungsformen
aber nicht auf die Anwendung in einer bestimmten Art von System
oder Zusammenhang oder auf die Ausführung auf einer bestimmten
Workstation oder einer sonstigen Hardwareanordnung begrenzt. Das
hier beschriebene automatisierte Umsetzungsverfahren kann vielmehr
ungeachtet des Zusammenhangs oder der Anwendung, in denen die zugrunde
liegende Ladder Logic ausgeführt
wird, bei einer beliebigen Computerplattform aus einer Anzahl unterschiedlicher
Computerplattformen eingesetzt werden. Daher ist jeder hier enthaltene
direkte oder indirekte Bezug auf eine Art von Routine (d.h. eine
Prozesssteuerroutine), einen Zusammenhang oder ein System, in dem
die beschriebenen Ausführungsformen
enthalten sind oder eingesetzt werden, nur zum Zweck der Veranschaulichung
des beschriebenen Verfahrens wiedergegeben.
-
Der
Einsatz der beschriebenen Ausführungsformen
ist ebenfalls nicht auf ein bestimmtes Ladder-Logic-Paradigma oder
eine Konvention begrenzt. So ist das beschriebene Umsetzungsverfahren
mit zahlreichen Ladder-Logic-Regeln kompatibel. Beispielsweise kann
das beschriebene Umsetzungs- bzw. Übersetzungsverfahren bei einer
Routine eingesetzt werden, die nicht standardmäßige Ladder-Logic-Elemente
enthält
(d.h. andere Elemente als Spulen und Kontakte), wie z.B. Timer,
Flip-Flops und andere Sonderfunkti onen. Derartige Funktionen werden
bei einer Ausführungsform
des beschriebenen Verfahrens allgemein als eine aus einem Katalog
von Sonderfunktionen adressiert. Die zugrunde liegende Ladder Logic
kann auch entsprechend der nachfolgend wiedergegebenen Beschreibung
eine vertikale, horizontale oder andere Ausführungsreihenfolge haben, sodass
z.B. die der Ausführungssequenz
zugrunde liegende Logik bei der Übersetzung
oder der sonstigen Ausgabe der Umsetzungsroutine erhalten bleibt.
-
Allgemeiner
ausgedrückt,
basiert das beschriebene Umsetzungsverfahren gemäß einer Ausführungsform
teilweise auf der Erfassung der booleschen Darstellungen von Ladder-Logic-Elementen
in separaten logischen Ausdrücken,
die jeder Sprosse der Leiter zugeordnet sind, in der die Ladder-Logic-Elemente
angeordnet sind. Jeder entsprechende logische Ausdruck wird aktualisiert
bzw. geändert,
während
das automatisierte Umsetzungsverfahren die Prozesse sequenziell
abarbeitet bzw. jedes Ladder-Logic-Element in der Leiter bewertet.
Die von der Umsetzungsroutine erzeugten logischen Ausdrücke stellen
aber nicht die Ausgabe des beschriebenen Systems, der Methode oder
des Computerprogramms dar. So sind die logischen Ausdrücke Zwischenergebnisse
(d.h. temporäre
oder Arbeitsparameter), die bei der Abarbeitung der Umsetzung verwendet werden,
auch wenn die booleschen Darstellungen in den logischen Ausdrücken bei
einigen Ausführungsformen
eine formelle boolesche Logik mit einer kompletten oder kohäsiven Menge
von Elementen, Operatoren, Operationen oder Funktionen fortführen kann.
Stattdessen werden bestimmte boolesche Logikelemente aus der in
den Ausdrücken
fortgeführten
Logik aufgelöst,
während
die Abarbeitung der Leiter fortschreitet. Ein Element wird bei bestimmten
Abarbeitungen aufgelöst,
um die Erfassung unterschiedlicher booleschen Funktionen in einem
logischen Ausdruck zu vermeiden, obwohl unter mehreren verschiedenen
Umständen
Elemente aufgelöst
werden können.
Diese booleschen Logikelemente werden anschließend in der Reihenfolge, in
der sie erzeugt werden, und auf eine Weise, die (i) anschließende Wartungs-
und sonstige Arbeiten an der umgesetzten Routine unterstützt und
die (ii) die Ausführungssequenz
der zugrunde liegenden Ladder Logic beibehält, gespeichert.
-
1 gibt
ein beispielhaftes, allgemein mit 10 gekennzeichnetes Prozesssteuersystem
wieder, um einen Zusammenhang festzulegen, in dem die zugrunde liegende
Ladder Logic oder die sich ergebende boolesche Logik ausgeführt werden
kann. Anders ausge drückt,
kann die beschriebene Umsetzungsroutine daher Eingangsdaten von
und Ausgangsdaten zu einer oder mehreren Komponenten des Systems 10 empfangen bzw.
bereitstellen. In diesem Fall ist die Umsetzungsroutine durch eine
Workstation, einen Personal Computer oder eine sonstige Einrichtung
implementiert, die dem System 10 nicht zugeordnet, davon
getrennt (d.h. off-line) und/oder entfernt davon angeordnet sind.
So kann das beschriebene Umsetzungsverfahren unter Verwendung einer
beliebigen Hardware- oder Softwareplattform implementiert sein.
Bei einer alternativen Ausführungsform
können
dagegen eine oder mehrere Komponenten des Systems 10 zur
Unterstützung
der Ausführung
der Umsetzungsroutine fähig
sein. Die folgende Beschreibung kann sich auf die Implementierung
der Umsetzungsroutine auf diese Weise beziehen (d.h. dass Komponenten
des Systems 10 die Umsetzungsroutine ausführen), wobei
dies aber lediglich zum Zweck der besseren Veranschaulichung erfolgt.
-
Das
Prozesssteuersystem 10 enthält Benutzerschnittstellen 12 und 14,
die beispielsweise Workstations oder Computer sein können, die über einen
Datenbus 20 auf Systemebene in einem Kommunikationsnetz
mit einer Anzahl von anderen Einrichtungen wie z.B. einer Datenspeichereinrichtung
oder einem Historian-System 16 und mit einer beliebigen
Anzahl von Controllern 18 verbunden sein können. Der
Datenbus 20 auf Systemebene kann ein Ethernet-Datenbus
oder ein sonstiger Datenbus sein, der sich für die Datenübertragung eignet. Die Controller 18 können beispielsweise
ein DCS-(Distributed
Control System)-Controller sein und mit den Benutzerschnittstellen 12 und 14 unter
Verwendung eines proprietäres
Kommunikationsprotokoll oder auf eine andere geeignete Weise über den
Datenbus 20 auf Systemebene kommunizieren, um die zugrunde
liegende Ladder Logic oder die sich ergebende boolesche Logik auszuführen. Die
zugrunde liegende Ladder Logic bzw. die sich ergebende boolesche
Logic können
im Controller 18 als Steueralgorithmen oder Routinen zur
Verwendung bei der Steuerung von Feldgeräten implementiert sein, die
auf eine beliebige herkömmliche
oder sonstige gewünschte
Weise mit dem Controller 18 verbunden sind.
-
Entsprechend
der Darstellung in 1 kommuniziert jeder Controller 18 mit
einer beliebigen Anzahl von Feldgeräten 22, 23 über eine
oder mehrere Verknüpfungseinrichtungen 24, 25,
die beispielsweise Eingangs/Ausgangs-(I/O)-Karten für das Hart-Protokoll sein können. Die
Feldgeräte 22, 23 kommunizieren
miteinander und mit den Verknüpfungseinrichtungen 24, 25,
um eine oder mehrere Prozesssteuerschleifen entweder in Verbindung
mit oder unabhängig
von dem Controller 18 auszuführen. Auf diese Weise kann
der Controller 18 als MAC (Multi Application Controller)
oder als DPU (Distributed Processing Unit) wirken, unterstützt aber
in jedem Fall die Ausführung
der Steuerlogik für
die Datenerfassung und die Steuerstrategien (d.h. PID-Steuerung)
für die
Feldgeräte 22, 23.
Die Feldgeräte 22, 23 können beispielsweise
Hart-kompatible Einrichtungen sein. Andere Einrichtungs- bzw. drahtgebundene
Topologien können
ebenfalls verwendet werden, einschließlich Point-to-Point-Verbindungen
und Baum- bzw. „Spur"-Verbindungen.
-
Eine
der Benutzerschnittstellen 12, 14 oder beide können eine
Engineering Station sein wie die Ovation-Workstation, die von Emerson
Process Management, Power & Water
Systems (Pittsburgh, US-Bundesstaat Pennsylvania) erhältlich ist,
oder eine beliebige sonstige ähnliche
Workstation, die auf einer UNIX-Plattform läuft. Alternativ oder zusätzlich dazu
können
eine der Benutzerschnittstellen 12, 14 oder beide
ein Personal Computer sein, der unter einem beliebigen aus einer
Anzahl von Betriebssystemen läuft,
wie z.B. Microsoft Windows. Eine der Benutzerschnittstellen 12, 14 oder
beide können
die Implementierung des beschriebenen Logik-Umsetzungsverfahrens übernehmen
oder unterstützen.
Wie vorstehend erläutert
wurde, erfordert die Implementierung der Umsetzungsroutine aber
keine der Benutzerschnittstellen 12, 14 (oder
eine andere Workstation oder Einrichtung des Prozesssteuersystems)
und kann stattdessen einem standardmäßigen Personal Computer außerhalb
des dem System 10 zugeordneten Netzwerks übergeben
werden. Somit kann bei einer Ausführungsform eine der Benutzerschnittstellen 12, 14 nicht
wie in 1 dargestellt mit dem Bus 20 verbunden
sein, was bedeutet, dass das beschriebene Logik-Umsetzungsverfahren
off-line ausgeführt
wird. Allgemeiner ausgedrückt,
kann der Personal Computer, die Workstation oder der sonstige Computer
für die
Implementierung der Routine auf beliebige Weise mit dem in 10 dargestellten Netzwerk verbunden oder
zur Kommunikation verbunden sein, wobei dies aber nicht notwendigerweise
der Fall sein muss. In Fällen,
bei denen die Umsetzung in einer vom System 10 unabhängigen oder
getrennten Weise erfolgt, kann die sich ergebende boolesche Logik
der Umsetzungsroutine, d.h. die Ausgabedaten, zur Verwendung in
Design-, Konfigurations-, Kalibrierungs- oder sonstigen Arbeiten
bezüglich
des Prozesses per Upload oder auf sonstige beliebige Weise zu den
Benutzerschnittstellen 12, 14 oder anderen Komponenten
des Systems 10 übertragen
werden.
-
In
bestimmten Fällen
kann das beschriebene Umsetzungsverfahren in einem Prozesssteuersystem als
Teil eines Pakets von Software-Dienstprogrammen oder Tools implementiert
bzw. ausgeführt
werden. Unabhängig
vom Ausmaß ihrer
Integration mit anderen Tools oder mit Software kann die Umsetzungsroutine
zur Ausführung
auf einer beliebigen aus einer Anzahl von Hardware- und Softwareplattformen
konfiguriert sein und ist nicht auf proprietäre Lösungen bei Betriebssystem,
Hardware, Programmiersprache oder Softwarekonfiguration begrenzt.
Während
das beschriebene Logik-Umsetzungsverfahren
als Computerprogramm, das von einem oder mehreren Prozessoren für allgemeine
Einsatzzwecke ausgeführt
wird, implementiert sein kann, kann das beschriebene Verfahren auch
unter Verwendung von dedizierter Hardware, Firmware, Software oder einer
beliebigen Kombination daraus implementiert sein. In jedem Fall
kann das beschriebene Logik-Umsetzungsverfahren als Teil einer umfassenderen
Suite aus Dienstprogrammen oder Funktionen implementiert sein, die
für die
Prozesssteuerung und allgemeiner für das Prozesssteuersystem 10 zur
Verfügung
stehen. Diese Dienstprogramme und Funktionen können beispielsweise Konfigurations-
und Bearbeitungsfunktionen umfassen, die einem Bediener das Anlegen
von Ladder-Logic-Routinen ermöglicht,
die durch das beschriebene Verfahren umgesetzt werden sollen.
-
Wiederum
mit Bezug auf die 1 dargestellte exemplarische
Ausführungsform
hat jede Benutzerschnittstelle 12 und 14 ein Display
und/oder eine andere Ausgabeeinrichtung 26, die die Verwaltung
und Wartung der Steuerstrategie im gesamten System 10 über Menüs, Fenster
und sonstige standardmäßige Informationsanzeigeverfahren
ermöglicht.
Hierzu kann die Konfigurations- und sonstige Software (wie z.B.
bei einigen Ausführungsformen
die beschriebene Umsetzungsroutine) in einem Speicher 27 jeder
Benutzerschnittstelle 12, 14 zur Ausführung durch
einen dazugehörigen
Prozessor 28 vorliegen. Jede Benutzerschnittstelle 12 und 14 enthält außerdem eine
oder mehrere Eingabeeinrichtungen 29, wie z.B. eine Tastatur
oder eine Auswahleinrichtung, um die Eingabe von Informationen und
Daten zur Konfiguration, zur Steuerung und zu weiteren Vorgängen zu
ermöglichen.
-
Der
Prozessor kann ein Prozessor beliebiger Art sein, ist aber vorzugsweise
ein programmierbarer Prozessor für
allgemeine Einsatzzwecke, wie die normalerweise in Personal Computern,
UNIX-Workstations und ähnlichen
Einrichtungen verwendeten Prozessoren. Der Speicher 27 kann
ein Speicher eines beliebigen gewünschten Typs sein.
-
Der
Controller 18 enthält
ferner einen Prozessor, der eine oder mehrere (in einem Speicher
gespeicherte) Prozesssteuerroutinen implementiert oder überwacht,
die dort gespeicherte oder auf andere Weise damit zugeordnete Steuerschleifen
enthalten können,
und er kommuniziert mit den Einrichtungen 22, 23,
den Benutzerschnittstellen 12 und 14 und dem Daten-Historiansystem 16,
um z.B. gemäß der zugrunde
liegenden und umzusetzenden Ladder-Logic-Routine einen Prozess zu
steuern. Man beachte, dass Teile der zugrunde liegenden Routine
bei Bedarf von unterschiedlichen Controllern oder anderen Einrichtungen
implementiert oder ausgeführt
werden können.
Entsprechend kann die zugrunde liegende Routine in beliebiger Form
vorliegen, einschließlich
Software, Firmware, Hardware usw. Zum Zweck dieser Offenlegung können Steuerroutinen,
die Module oder beliebige Teile eines Steuerverfahrens wie z.B.
Subroutinen, Teile von Subroutinen (wie Codezeilen) usw. sein können, unter
Verwendung beliebiger Design-Tools entworfen sein, einschließlich grafischer
Design-Tools und Software/Hardware/Firmware-Programmier- oder -Design-Tools beliebigen
anderen Typs.
-
Bei
einer Ausführungsform,
wobei die zugrunde liegende Routine durch den Controller 18 ausgeführt wird,
können
die Benutzerschnittstellen 12, 14 einen Funktionsumfang
für Online-
und Off-line-Betrieb, grafische Überwachung
und andere damit verbundene Steuerfunktionen bereitstellen. Die
zugrunde liegende Routine kann daher als grafische Ladder Logic
entsprechend der Darstellung in 2 über eines
oder mehrere der Displays 26 ausgedrückt sein. Bei alternativen
Ausführungsformen
kann die zugrunde liegende Routine an unterschiedlichen Positionen
im Prozesssteuersystem 10 gespeichert sein und somit in
einem der Speicher 27 der Benutzerschnittstellen 12, 14 (oder
in beiden) oder des Daten-Historian 16 vorliegen, und zwar
unabhängig davon,
ob die Routine auf Controllerebene ausgeführt werden kann. Allgemeiner
ausgedrückt,
ist der Einsatz des beschriebenen Umsetzungsverfahrens unabhängig davon,
wo die Steuerroutine vorliegt oder ausgeführt wird. Dementsprechend kann
die Steuerroutine bei einigen Ausführungsformen auf verteilte
Weise implementiert oder gespeichert werden und/oder zur Ausführung, Implementierung
oder Umsetzung auf remote Weise verfügbar gemacht werden.
-
2 stellt
ausschließlich
für den
Zweck der Veranschaulichung des beschriebenen Umsetzungsverfahrens
gemäß einer
oder mehrerer Ausführungsformen
eine Routine dar, die in Ladder Logic ausgedrückt ist und eine vereinfachte
Struktur hat. Die in 2 wiedergegebene Routine kann
in einem beliebigen Zusammenhang implementiert werden, aber sie
wird vermutlich wesentlich komplexer und hat viel mehr logische
Elemente, wenn sie in dem vorstehend in Zusammenhang mit 1 erwähnten Kontext
der Prozesssteuerung implementiert ist. Dennoch eignet sich die
Anwendung des beschriebenen Umsetzungsverfahrens gut für eine Steuerroutine
beliebiger Größe oder
Komplexität,
da das Verfahren die Abarbeitung der Ladder Logic auf systematische
sequenzielle Weise gemäß der Ausführungssequenz
der Ladder Logic einbezieht. Demzufolge beinhaltet der systematische
Ansatz des beschriebenen Umsetzungsverfahrens die fortschreitende
Abarbeitung der Ladder Logic, wie z.B. der in 2 wiedergegebenen
Logik, in der von der Ausführungssequenz
bestimmten Reihenfolge bzw. Sequenz, sowie die Erzeugung der Ausgabe
der booleschen Logik während
der Abarbeitung der Sequenz (d.h. unmittelbare Erzeugung). Das Speichern
der booleschen Logikausgabe in der Reihenfolge der Erzeugung ermöglicht auch
die Wiedergabe und Beibehaltung der Ausführungssequenz der zugrunde
liegenden Ladder Logic bei der Ausgabe.
-
Ladder
Logic im Allgemeinen wie auch die logischen Elemente der in 2 dargestellten
Steuerroutine sind Fachleuten auf diesem Gebiet bereits bekannt
und werden nur kurz angerissen. Bei der standardmäßigen Ladder-Logic-Umsetzung
wird die Routine über
eine Anzahl von logischen Elementen zwischen den zwei Stromschienen 30 und 32 bestimmt.
Zunächst
bezieht sich ein logisches Element entsprechend der hier verwendeten
Definition auf einen beliebigen Abschnitt oder Aspekt einer Logikroutine
(Ladder oder boolesch), sodass ein logisches Element grafisch oder
textlich und mit verschiedenen Ebenen von Vorgaben oder Details ausgedrückt werden
kann. Beispielsweise kann ein logisches Element ein Operator sein
(z.B. AND, OR, ein normalerweise geöffneter Kontakt usw.), oder
ein Operand (z.B. A1, B2, TRUE, FALSE usw.), eine logische Funktion
mit einem oder mehreren Operatoren oder Operanden (z.B. „A1 OR
B2", TRUE usw.),
oder die Identifikation, das Symbol oder die Variable (z.B. C),
die mit der Funktion gleichgesetzt sind (z.B. bei C = A1 OR B2).
Logische Elemente können
ebenfalls Sonderfunktionen und spezifische Aspekte davon (z.B. einen
Timer, die Dauer usw.) darstellen, umfassen, einbeziehen oder sich
darauf beziehen, und zwar bis zu dem Ausmaß, in dem die betreffenden
Sonderfunktionen in eine Ladder-Logic- oder boolesche Logikroutine
integriert sind. Ein logischer Ausdruck entsprechend der hier gebräuchlichen
Verwendung bezieht sich auf einen beliebigen Ausdruck mit einem
oder mehreren logischen Elementen, die entweder grafisch oder textlich
oder in einer beliebigen anderen Form eine Funktion, einen Vorgang
oder einen sonstigen Abschnitt einer Logikroutine bestimmen, und
zwar unabhängig
von der Art oder der Detailstufe, in der der Ausdruck ausgedrückt ist
(z.B. ob ex über
ein Referenzsymbol ausgedrückt
ist oder über
eine Identifikation, eine Variable, die zugrunde liegende Logikfunktion
oder den logischen Vorgang usw.). Bei einer Ausführungsform, die im Folgenden
ausführlicher erläutert wird,
kann ein logischer Ausdruck eine Zeichenfolge mit textlich definierten
logischen Elementen sein. Allgemeiner ausgedrückt, beschreibt oder definiert
die Kombination von logischen Elementen jedoch die Logikroutine.
Diese Beschreibung oder Definition kann die für die Logik-Umsetzungsroutine
bereitgestellten Eingangsdaten bilden, und sie kann auch während der
Ausführung
der Leiterstruktur verwendet werden.
-
Die
in 2 wiedergegebene beispielhafte Routine ist durch
eine Anzahl von Sprossen 34A–34D definiert, die
allgemein von einer Stromschiene 30 zur anderen Stromschiene 32 verlaufen,
obwohl eine oder mehrere Sprossen 34B entsprechend der
Darstellung mit einer anderen Sprosse 34A verbunden sein
können. Jede
Sprosse 34A–34D kann
ein oder mehrere logische Elemente entlang der Struktur unterstützen und
kann selbst auch als logisches Element betrachtet werden, da eine
direkte Verbindung über
eine Leitersprosse (bzw. eine Leitung) den logischen Zustand oder
Wert des darauf geführten
Signals beibehält.
Zum Beispiel sind die Sprossen 34A–34C direkt mit der
Stromschiene 30 verbunden, sodass der logische Zustand
oder Wert der Schiene 30, nämlich TRUE (gleichbedeutend
mit „ON" oder „1") beibehalten wird,
bis ein normalerweise geöffneter
Kontakt 36A–36C an
der entsprechenden Position auf der Strecke zur anderen Schiene 32 vorgefunden
wird. Kontakte können
auch normalerweise geschlossen sein, wie dies beim Kontakt 36D auf
der Sprosse 34B der Fall ist. Allgemeiner ausgedrückt, sind
Kontakte und andere logische Elemente nützlich bei der Zustandsbestimmung
für jede
Sprosse während
des Betriebs (d.h. während
der Ausführung
der Logikroutine). Der Zustand jeder Sprosse kann wiederum den Wert
oder Zustand bestimmen, der einem weiteren logischen Element wie
z.B. einer Spule zugeordnet ist. Beispielsweise enthalten die Sprossen 34A und 34D auch
Spulen 38A bzw. 38D. Bei der Spule 38A kann
die Logikroutine den Wert oder Zustand der Spule 38A als
weitere logische Variable nutzen, die an anderer Stelle in der Routine
verwendet werden soll, wie z.B. als Operand für den Kontakt 36C.
Dagegen kann der Wert der Spule 38D ein Ausgangssteuersignal
wiedergeben oder bestimmen, dass beispielsweise bestimmt, ob ein
Ventilaktuator mit Energie beaufschlagt wird. Wenn man zurückverfolgt,
wie die in 2 dargestellte Logikroutine
die Steuerung des Aktuators bewirken könnte, wird der hypothetische
Ventilaktuator über
einen von einem Timer 40, der erst nachdem die Stromschiene 30 über den Kontakt 36C mit
dem Timer 40 verbunden worden ist, einen Wert TRUE oder „1" zur Spule 38D sendet,
festgelegten Zeitraum mit Energie beaufschlagt (bzw. aktiviert).
Der Kontakt 36C wiederum wird erst geschlossen, um den
Timer 40 zu aktivieren, wenn die logischen Elemente an
den Sprossen 34A und 34B die Beaufschlagung der
Spule 38A mit Energie zulassen (d.h. dass sie einen Wert
TRUE oder „1" haben).
-
Gemäß einer
Ausführungsform
des beschriebenen Umsetzungsverfahrens ist die umzusetzende Ladder
Logic der Steuerroutine in eine Anzahl von allgemein mit 42 gekennzeichneten
Zellen bzw. Einheiten organisiert oder strukturiert. Beispielsweise
hat in der in 2 dargestellten Routine die
Sprosse 34A fünf
Zellen oder Einheiten 42, wobei die am weitesten links
angeordnete den Kontakt 36A enthält. Allgemeiner ausgedrückt, kann
jede Zelle 42 ein beliebiges logisches Element enthalten
(z.B. eine Leitung, einen Kontakt oder eine Spule) oder auch gar
nichts, entsprechend der Darstellung bei einer Anzahl von Zellen
in der in 2 dargestellten Routine. Bei
bestimmten Ausführungsformen
kann jede Zelle 42 gemäß einem
oder mehreren Attributen oder Parametern definiert sein. Ein Attribut „SHAPE" kann beispielsweise
verwendet werden, um das Vorliegen eines Kontakts, einer Spule,
einer Leitung (d.h. Durchgang) oder einer Sonderfunktion, oder das Fehlen
solcher Elemente zu bestimmen. Ein Attribut „ROW" kann die Zeilenzahl der Zelle angeben,
während ein
Attribut „COLUMN" die Spaltenzahl
angeben kann. Falls die Zelle 42 einen Kontakt enthält, kann
ein Attribut „NC" bestimmen, ob der
Kontakt normalerweise geschlossen (ein Wert „TRUE") oder normalerweise geöffnet (ein
Wert „FALSE") ist. Kontaktzellen
können
auch ein Attribut „IN" verwenden, um zur
Zustandsbestimmung des Kontakts die bewertete Variable anzugeben.
Zur besseren Veranschaulichung wird diese Variable oder das Identifikationssymbol
hier als „Punktname" bezeichnet und kann
oft die Identifikation einer Bitzahl umfassen, falls mehrere unterschiedliche
Werte in einem einzelnen Punkt gruppiert oder als Array zusammengefasst
sind. Auf diese Weise gibt der Punktname eine spezifische Position
in einem Speicher des Systems 10 an, an der der dem Punktnamen
zugeordnete Wert vorgefunden werden kann. Allgemeiner ausgedrückt, kann der
hier verwendete Begriff „Punktname" den Namen, den Identifier
oder andere Identifikationsinformationen für eine während der Ausführung der
umgesetzten Logikroutine oder während
der Ausführung
der beschriebenen Logik-Umsetzungsroutine bewertete oder erzeugte
Variable angeben. Falls die Zelle 42 eine Spule enthält, kann
ein Attribut „OUTPUT" den Punktnamen (und
in bestimmten Fällen
die Bitzahl) der Variablen angeben, deren Wert oder Zustand von
der Sprosse bestimmt wird, auf dem die betreffende Spule angeordnet
ist. Ein Attribut „OR" kann benutzt werden
um anzugeben, wann die Zelle 42 eine Verbindung mit einer
anderen Sprosse beinhaltet, sodass ein Wert „TRUE" das Vorliegen einer „OR"-Funktion bedeutet.
Andere Attribute können verwendet
werden, um die Definition von Sonderfunktionen zu ermöglichen,
und ein Beispiel eines Ansatzes für solche Fälle wird im Folgenden in Zusammenhang
mit einer Ausführungsform
beschrieben.
-
Wie
Fachleuten auf diesem Gebiet bereits bekannt ist, kann die Ladder
Logic auf textliche, grafische oder sonstige Weise gespeichert werden,
doch werden in jedem Fall die dazugehörigen Attributdaten für jede Zelle
zugeordnet, um die Logik vollständig
zu definieren.
-
Durch
die Aufteilung der Routine in die Einheiten bzw. Zellen 42 wird
die Routine in eine Anzahl von allgemein als 44 gekennzeichneten
Spalten und allgemein als 46 angegebenen Zeilen organisiert.
Neben der Positionsangabe für
jede Zelle 42 über
die Spalten- und Zeilenzahl verwenden Fachleute auf diesem Gebiet diese
Organisationsstruktur zur Bestimmung einer geordneten Sequenz für die Logik.
Anders ausgedrückt,
ist die Unterteilung der Leiterstruktur in Zellen 42 ein
eindeutiges Verfahren zur Bestimmung oder Definition der Ausführungssequenz
der Routine. Ohne Kenntnis der Ausführungssequenz kann die Ausführung der
Routine nicht konsistent sein. Dies gilt insbesondere, wenn logische
Elemente wie die Spule 38A zur Zustandsbestimmung anderer
logischer Elemente in der Routine, wie des Kontakts 36C,
verwendet werden. In diesen Fällen würde die
Abarbeitung der Leiterstruktur in einer unterschiedlichen Reihenfolge
bei der Ausführung
die Art ändern,
in der die zugrunde liegende Routine ausgeführt wird, und bei der Umsetzung
in boolesche Logik eine fehlerhafte Übersetzung ergeben.
-
Falls
eine Leiterstruktur noch in Zellen organisiert werden muss, kann
eine Fachleuten auf diesem Gebiet bekannte Parsing-Routine verwendet
werden, um die Leiterroutine in Spalten, Zeilen und/oder Zellen
zu organisieren, sofern die Ausführungssequenz
oder sonstige Konvention für
die Leiterstruktur bekannt ist oder sich leicht ableiten lässt. Die
Aufteilung der zugrunde liegenden Logik muss aber nicht eine Menge
rechtwinkliglinear angeordneter und durch Spalten und Zeilen definierter
Einheiten oder Zellen ergeben. Beispielsweise kann die zugrunde
liegende Routine eine Sequenz von Einheiten oder sonstigen Abschnitten
haben, die gemäß der Ausführungssequenz
definiert sind. Denn solange die Ausführungssequenz (oder gleichbedeutend dazu
die Betriebsweise) der Leiterstruktur bekannt, gegeben oder sonst
wie definiert ist, kann die Umsetzungsroutine die Abschnitte der
Leiterstruktur korrekt sequenziell abarbeiten, um eine genaue Übersetzung
zu erzeugen.
-
Somit
ist der Einsatz des beschriebenen Verfahrens trotz der Vorteile
der Aufteilung der Routine in Zellen oder Einheiten nicht auf Ladder-Logic-Systeme
mit definierten Zellen oder Einheiten begrenzt. Das beschriebene
Verfahren kann vielmehr bei einer beliebigen Ladder Logic mit einer
geordneten oder definierten Sequenz von logischen Elementen angewandt
werden. Auf diese Weise das beschriebene Verfahren die Leiterstruktur
in der korrekten Reihenfolge der logischen Elemente ab und behält damit
die Ausführungssequenz der
Logik im Prozess bei.
-
Wie
vorstehend im Zusammenhang mit der in 2 dargestellten
Routine erläutert
wurde, kann die Ausführungssequenz
oder Reihenfolge, in der die logischen Elemente gescannt oder bewertet
werden sollen, für
die Ausführung
der Routine kritisch sein. Leider würden in unterschiedlichen Systemen
unterschiedliche Scan-Konventionen für die Leiterstruktur eingesetzt,
was die automatisierte Übersetzung
komplizierter macht. Das beschriebene Umsetzungsverfahren ist allerdings
auf keine Scan-Konvention begrenzt.
-
Eine
Scan-Konvention legt eine horizontale Ausführungssequenz fest, sodass
die logischen Elemente in einer Zeile alle bewertet werden, wobei
die Bewegung im Allgemeinen von links nach rechts verläuft, bevor zur
nächsten
Zeile übergegangen
wird, die üblicherweise
die Zeile unmittelbar unterhalb der aktuellen Zeile ist. Selbstverständlich kann
dieses horizontale Scannen an jeder beliebigen Zelle der Leiterstruktur
beginnen und dann entweder von rechts nach links oder von den unteren
Zeilen in Richtung auf den Anfang der Leiterstruktur fortgesetzt
werden. Alternativ dazu kann für
die Leiterstruktur eine Scan-Konvention gelten, die eine vertikale oder
spaltenweise Ausführungssequenz
festlegt, wobei die logischen Elemente in einer Spalte bewertet
werden, bevor zu einer benachbarten Spalte übergegangen wird. Üblicherweise
würde die
Bewertung von links nach rechts und von oben nach unten verlaufen,
doch können
andere Anfangspunkte und Bewertungsrichtungen gewählt werden.
Zur besseren Veranschaulichung wird in der folgenden Beschreibung
des offen gelegten Umsetzungsverfahrens eine vertikale Ausführungssequenz
beginnend mit der oben am weitesten links gelegenen Zelle angenommen.
-
Eine
weitere Ladder-Logic-Konvention betrifft die Verbindung von zwei
oder mehr Leitersprossen in bestimmten Fällen zwischen den Stromschienen 30 und 32.
Derartige Verbindungen erzeugen eine OR-Funktion mit zwei oder mehr
Operanden. Bei einer Ausführungsform
des beschriebenen Umsetzungsverfahrens gibt die Aufteilung der Leiterstruktur
in Zellen oder Einheiten auch an, welche Zellen mit der Verbindung
bzw. der „OR"-Funktion identifiziert
werden. Allein zum Zweck der besseren Veranschaulichung und bei
einer exemplarischen Ausführungsform
wird dem vorstehend erwähnten
Attribut „OR" ein Wert „TRUE" nur für die untere
der beiden die Verbindung bildenden Zellen zugeordnet. Bei der in 2 dargestellten
beispielhaften Ausführungsform
hätte die
Zelle 42 mit dem Kontakt 36D daher ein auf „TRUE" gesetztes „OR"-Attribut, während die
unmittelbar darüber
befindliche Zelle 42 ein auf „FALSE" gesetztes „OR"-Attribut
hätte,
auch wenn die Leiterstruktur grafisch angibt, dass dort die Verbindung
hergestellt ist. Man beachte aber, dass diese Regel nur eine Frage
einer Konvention bezüglich
der Verbindung von zwei oder mehr Leitersprossen ist, sodass der
Einsatz des beschriebenen Umsetzungsverfahrens nicht auf die Art
der Vorgabe der Attribute begrenzt ist. Während diese Konvention nützlich sein
kann, um die anschließende
Abarbeitung bzw. Ausführung
der Logik in möglichst
effizienter Weise durchführen
zu können (z.B.
wenn bekannt ist, wann bestimmte Schritte für die Abarbeitung einer „OR"-Funktion eingeleitet werden sollen),
können
bei alternativen Ausführungsformen
der Kontakt 36D und die „OR"-Funktion beispielsweise in benachbarten
(d.h. getrennten) Zellen an der Sprosse 36B angeordnet
sein, oder die „OR"-Funktion kann der
Zelle 42 oberhalb der Zelle mit dem Kontakt 36D zugeordnet sein.
-
Im
Zusammenhang der Prozesssteuerung werden diese Konventionen oder
Regeln durch die zum Design und/oder zur Ausführung der Ladder Logic verwendete
Prozesssteueranwendung oder das Prozesssteuersystem (d.h. durch
Konfigurationssoftware) festgelegt. Für jedes gegebene Prozesssteuersystem
oder jede Prozesssteueranwendung kann die Umsetzung der zugrunde
liegenden Ladder Logic der Steuerroutine dann in einer Reihenfolge
gemäß der geltenden
Ladder-Logic-Konventionen erfolgen. Allgemein ausgedrückt, ist
diese Sequenz bzw. Reihenfolge, in der die zugrunde liegende Ladder
Logic von der beschriebenen Logik-Umsetzungsroutine bewertet wird,
die gleiche wie die Ausführungssequenz,
d.h. die Reihenfolge, in der die zugrunde liegende Logik bei der
Ausführung
bewertet wird. Somit übersetzt
die Logik-Umsetzungsroutine die zugrunde liegende Logik auf systematische
Weise entsprechend der Ausführungssequenz,
wobei die boolesche Logikausgabe direkt erzeugt und die Ausgabe
auf eine Weise, die die Ausführungssequenz
beibehält, gespeichert
wird. „Direkte" Erzeugung bezieht
sich darauf, wie die Ausgabe der Umsetzungsroutine gateweise oder
elementweise erzeugt wird, während
die Steuerroutine systematisch und elementweise, statt nach der Bewertung
oder Abarbeitung der gesamten zugrunde liegenden Logik, abgearbeitet
wird. Obwohl nicht jedes vorgefundene Ladder-Logic-Element zur separaten
Erzeugung eines entsprechenden booleschen Logikelements in der Ausgabe
führt,
erzeugt das beschriebene Umsetzungsverfahren jedes Element oder
jeden Abschnitt seiner Ausgabe in Abhängigkeit vom und infolge des
Vorliegen(s) eines darauf folgenden Ladder-Logic-Elements. Dennoch
gibt die Reihenfolge, in der die booleschen Logikelemente oder Gates
erzeugt werden, die Reihenfolge an, in der sie während der Ausführung der
booleschen Logikausgabe bewertet werden sollen. Somit führt dieser
sequenzielle Ansatz der Umsetzung zu Ergebnissen in einer geordneten
Menge von booleschen Logikelementen, bei der die ursprüngliche
Ausführungssequenz
der zugrunde liegenden Ladder Logic beibehalten wird.
-
3 zeigt
einen Umriss der Schritte, die die Umsetzungsroutine gemäß einer
Ausführungsform
des beschriebenen Umsetzungsverfahrens ausführt. Diese Schritte und die
in Zusammenhang mit anderen Zeichnungen beschriebenen ausführlicheren
Schritte können
als Teil einer Software oder sonstigen Routine implementiert sein,
die von einem oder mehreren Prozessoren entweder separat und getrennt
vom Prozesssteuersystem 10 oder darin integriert ausgeführt wird.
Anfänglich
kann die Kontrolle in der Routine auf einen vorbereitenden Spulenkompressionsblock
oder Schritt 50 übergehen,
in dem jede Leitersprosse analysiert wird, um allgemein zu bestimmen,
ob erstens eine Spule vorliegt und ob zweitens die Spule zur Vereinfachung
der Leitersprosse verschoben werden kann. Trotz des Potenzials zur
Vereinfachung ist der Einsatz des beschriebenen Umsetzungsverfahrens
nicht auf Umstände
begrenzt, bei denen Spulenkompression implementiert ist. So kann
das Erfordernis der Spulenkompression davon abhängen, ob eine Regel oder Konvention
mit der Festlegung der Ausführungssequenz
für die
Ladder Logic die Spulenkompression vorschreibt. Das heißt, dass
die Spulenkompression entsprechend Block 50 zweckmäßig sein
kann, falls die Ausführung
der Ladder Logic eine Spulenkompression erfordert. Diese Situation
kann vorliegen, wenn beispielsweise Spulen nur in der äußersten
rechten Spalte zulässig
sind und wenn die Ausführungssequenz
vertikal ist. In diesen Fällen
kann die Konvention zur Ausführungssequenz
festlegen, dass Spulen an der ersten offenen Position (oder Zelle)
in der Leitersprosse bewertet werden sollen. In anderen Fällen braucht
der Spulenkompressionsblock 50 nicht implementiert zu sein.
-
Wie
vorstehend kurz erwähnt,
verwendet das beschriebene Umsetzungsverfahren eine Anzahl oder Menge
von logischen Ausdrücken,
wobei jeweils einer jeder Zeile bzw. jeder Leitersprosse zugeordnet
ist, um einen Zählwert
der in Verbindung mit jeder Leitersprosse bislang vorgefundenen
logischen Elemente zu verwalten. Jeder logische Ausdruck dient daher
als Erfassungsmechanismus für
die vorgefundene Logik, was im Folgenden ausführlicher beschrieben wird.
Nach der Durchführung
der Spulenkompression kann die Kontrolle zu einem Block 52 übergehen,
um jeden dieser logischen Ausdrücke
zu initialisieren. Der Block 52 kann die logischen Ausdrücke in Zusammenhang
mit ihrer Initialisierung erzeugen, falls beispielsweise die Ausdrücke noch
nicht erzeugt worden sind (oder falls die korrekte Anzahl von Ausdrücken nicht
zuvor erzeugt worden war). Bei einer Ausführungsform enthält der Block 52 die
Erzeugung eines Arrays EXP mit der korrekten Anzahl von Elementen
EXP0, EXP1, ...,
EXPi, wobei der Indexi die
Zeile oder die Leitersprosse angibt, dem der logische Ausdruck zugeordnet
ist.
-
Unabhängig davon,
ob jeder logische Ausdruck als Array-Element oder in einer beliebigen
anderen Art angeordnet gespeichert ist, ermöglicht der Block 52 allgemein
die Speicherung der logischen Ausdrücke als Zeichen- oder Textfolgen
mit Informationen oder Daten, die sich aus der Übersetzung ergeben, wie z.B.
boolesche Operatoren, Operanden, Gates oder andere Funktionen. Solche
Informationen werden im Allgemeinen unter Verwendung von booleschen
Darstellungen der Ladder-Logic-Elemente bestimmt. Die logischen
Ausdrücke
müssen
die Informationen aber nicht streng oder ausschließlich in
formellen Begriffen boolescher Logik enthalten (wie z.B. C = A1
AND B2), insofern die logischen Ausdrücke nicht die endgültige Ausgabe
des beschriebenen Umsetzungsverfahrens sind, sondern vielmehr ein
Zwischenschritt. Somit können
die booleschen Darstellungen die booleschen Logikelemente auf eine
Weise fortschreiben, die die Art, in der die boolesche Logik formell
ausgedrückt
würde,
wiedergibt, ohne notwendigerweise damit identisch zu sein. Bei einer
Ausführungsform
nehmen aber die in der Zeichenfolge EXPi gespeicherten
Informationen die Form des Textes an, der die von den Ladder-Logic-Elementen
in einer bestimmten Leitersprosse festgelegten booleschen Funktion ausdrückt. Beispielsweise
kann nach der Analyse eines normalerweise geöffneten Kontakts in der ersten
Spalte der ersten Zeile die Zeichenfolge wie EXP0 =
A aussehen, wobei A die Kontaktvariable ist. Die Erfassung der weiteren
Ladder Logic in der betreffenden Zeile (oder in anderen Zeilen)
führt dann
zur Änderung
der betreffenden EXP-Folge, was im Folgenden beschrieben wird. Allgemein
ausgedrückt,
umfasst diese Erfassung und Änderung
die Aktualisierung des entsprechenden logischen Ausdrucks, um eine
Kombination des aktuellen logischen Ausdrucks mit einer Darstellung
des sequenziell in der Zeile bzw. in der Leitersprosse vorgefundenen
nächsten
Ladder-Logic-Elements
wiederzugeben.
-
An
diesem Anfangspunkt wird jede EXP-Folge im Block 52 mit
einem Wert „TRUE" initialisiert, um
das Potenzial für
eine Verbindung mit der Stromschiene 30 (Anmerkung der Überretzers:
Im Original steht „rung 30") anzugeben. Der
Wert „TRUE" wird anschließend mit
der in der Zelle der ersten Spalte vorliegenden Ladder Logic kombiniert,
um zu bestimmen, wie die Zeichenfolge EXPi geändert werden
muss.
-
Nachdem
die EXP-Zeichenfolgen erzeugt bzw. initialisiert worden sind, geht
die Kontrolle zu einem Block 54 über, der bewirkt, dass die
Umsetzungsroutine mit der ersten zu bewertenden Spalte fortfährt, die
bei der beispielhaften Ausführungsform
die Zelle 42 in der am weitesten links gelegenen Spalte
der Leiterstruktur ist. Mehrere Phasen der Bewertung und Abarbeitung
der Zellen in der Spalte werden dann zu einem Block 56 geführt. Die
mehreren Phasen werden zu unterschiedlichen Arten von Ladder-Logic-Elementen geleitet,
die in jeder Zelle vorliegen können.
Diese Mehrphasen-Bewertung und -Abarbeitung der Zellen erfolgt im
Allgemeinen sequenziell zellweise innerhalb der Spalte und entsprechend
der Ausführungssequenz,
d.h. von der obersten Leitersprosse nach unten. Gleichwohl können bei
einigen Ausführungsformen
alle Zellen in einer Spalte gemäß einer
ersten Phase bewertet und abgearbeitet werden, bevor die Bewertung
und Abarbeitung für
die zweite Phase beginnt. Alternativ dazu kann die gesamte Bewertung
und Abarbeitung jeder Zelle durchgeführt werden, bevor mit der nächsten Zelle
fortgefahren wird.
-
Allgemein
bestimmt die in Block 56 durchgeführte Bewertung einen vom Ladder-Logic-Element in
der Zelle durchgeführten
Vorgang, sodass die Abarbeitung die Änderung des logischen Ausdrucks
für die
Leitersprosse oder die Zeile, in der die Zelle angeordnet ist, beinhaltet,
um den Vorgang wiederzugeben. Falls beispielsweise in der gerade
bewerteten Zelle ein Kontakt vorhanden ist, aktualisiert die in
Block 56 vorgenommene Änderung
den logischen Ausdruck, um das Ergebnis der Kombination des Kontakts
und der bereits im logischen Ausdruck erfassten Logik auszudrücken.
-
Bei
der Änderung
oder Aktualisierung des logischen Ausdrucks kann der Block 56 zur
Aktualisierung des logischen Ausdrucks ein boolesches Logikelement
aus den Informationen in der Zeichenfolge EXPi auflösen, um
bestimmte Kombinationen zu vermeiden. Insbesondere wird ein boolesches
Logikelement aus dem logischen Ausdruck aufgelöst, wenn die Kombination gemischte
oder unterschiedliche logische Funktionen in einem zusammengesetzten
logischen Ausdruck ergeben würde
(z.B. AND, OR, NOT). Beispielsweise ist der folgende logische Ausdruck
zusammengesetzt, da er mehr als einen Operator hat und zwei unterschiedliche Funktionen
oder Operatoren einschließt:
(A1 OR B2) AND B3. Wie im Folgenden näher erläutert wird, kann es andere
Fälle geben,
bei denen ein boolesches Logikelement aufgelöst wird. In jedem Fall wird
das neue boolesche Logikelement anschließend in einem Speicher gespeichert,
wobei dies bei einer Ausführungsform
die Speicherung des Elements an der nächsten verfügbaren Position in einem eindimensionalen
Vektor aus Daten umfasst, die die booleschen Logikelemente definieren.
Zusätzlich
wird ein neuer Identifier angelegt, um die Ausgabe des booleschen
Logikausdrucks wiederzugeben.
-
Falls,
wiederum im Rahmen des vorstehenden Beispiels, der logische Ausdruck
vor der Änderung EXPi = A1 OR B2 war, können die gespeicherten Informationen
die boolesche Funktion darstellen, C = A1 OR B2. Nach der Auflösung dieses
neuen booleschen Elements kombiniert der Block 56 es mit
der durch die gerade bewertete Zelle eingeführten Logik. Insbesondere wird
der logische Ausdruck „A1
OR B2" ersetzt durch eine
Identifikation oder ein Symbol für
das neue boolesche Logikelement, und zwar „C". Da die letzte Zelle einen Kontakt
B3 aufweisen könnte,
wird die modifizierte Zeichenfolge EXPi zu
EXPi = C AND B3. Dieser Änderungsvorgang wird im Folgenden
in Zusammenhang mit bestimmten Ladder-Logic-Elementen ausführlicher beschrieben,
doch allgemein ausgedrückt
handelt es sich um eine iterative Prozedur, die (i) den Aufbau komplexer
Zeichenfolgen mit boolescher Logik vermeidet, die beispielsweise
einen oder mehrere Klammerausdrücke
in zusammengesetzten oder verschachtelten Anordnungen unter Einschluss
gemischter oder unterschiedlicher Funktionen oder Operatoren aufweisen,
während
(ii) eine geordnete Sequenz getrennter boolescher Logikelemente
gemäß der Ausführungssequenz
erzeugt wird. Zu diesem Zweck werden die getrennten Logikelemente
als unabhängige
Objekte und getrennt von den logischen Ausdrücken, aus denen sie erzeugt
wurden, gespeichert.
-
In
dem exemplarischen Fall der Umsetzung der in 2 dargestellten
Ladder Logic würde
der erste Ausführungsvorgang
des Blocks 56 das Vorfinden des Kontakts 36A einschließen. Die Änderung
der EXP-Zeichenfolge beinhaltet somit die Kombination der aktuellen
Zeichenfolge („TRUE") mit einem normalerweise
geöffneten
Kontakt. Die Umsetzungsroutine verarbeitet diese besondere Kombination
zur Aktualisierung der EXP-Zeichenfolge, EXP0,
um den Punktnamen des Kontakts 36A wiederzugeben. In diesem
Fall wird kein boolesches Logikelement aufgelöst, da der logische Ausdruck
immer noch nur einen einzelnen Operanden und daher einfach (bzw.
nicht komplex) bleibt.
-
Die
in 3 dargestellten verbleibenden Blöcke dienen
allgemein der Führung
des Umsetzungsverfahrens durch den Rest der Leiterstruktur. Dementsprechend
richten sich die Details nach den umgesetzten Konventionen, doch
bestimmt bei dieser Ausführungsform
ein Entscheidungsblock 58, ob die Umsetzungsroutine an
der letzten oder am weitesten rechts angeordneten Spalte in der
Leiterstruktur vorliegt, wobei die Routine in diesem Fall endet.
Falls die letzte Spalte noch nicht vorgefunden wurde, geht die Kontrolle
zum Entscheidungsblock 60 über, der bewirkt, dass die
Umsetzungsroutine mit der Zelle in der nächstfolgenden obersten Zeile
der nächsten
Spalte fortfährt.
-
Mit
Bezug auf 4 wird die Spulenkompressionsroutine
des Blocks 50 ausführlicher
dargestellt. Entsprechend der vorstehenden Erläuterung kann eine Spulenkompression
vor der Ausführung
der Ladder Logic implementiert sein (und damit vor allen Übersetzungsschritten).
Die Spulenkompression umfasst sofern möglich allgemein die Verschiebung
von Spulen in der Leiterstruktur nach links. Die Routine beginnt
in einem Block 62, der anfänglich die aktuelle Zeile und
Spalte als erste (d.h. oberste) Zeile bzw. letzte (d.h. am weitesten rechte)
Spalte festsetzt. Ein Entscheidungsblock 64 bestimmt, ob
die Zelle, die der aktuellen Zeile und Spalte zugeordnet ist, eine
Spule aufweist. Ist keine Spule vorhanden, geht die Kontrolle an
einen Entscheidungsblock 66 über, der bestimmt, ob die letzte
Zeile oder die letzte Leitersprosse gerade bewertet worden ist,
wobei die Prozedur in diesem Fall enden würde. Da die erste Zeile bewertet
wurde, geht die Kontrolle aber zu einem Block 68 über, der
die aktuelle Zeile erhöht,
sodass die Routine mit der letzten Spalte der nächsten Zeile fortfährt.
-
Falls
in der aktuellen Zeile eine Spule vorliegt, bestimmt ein Block 70,
ob die Spule komprimiert werden kann. Allgemein ausgedrückt, bewertet
der Block 70 zur Durchführung
dieser Bewertung benachbarte Zellen sowohl in der aktuellen Zeile
als auch in einer benachbarten Zeile. Ladder Logic in einer benachbarten
Leitersprosse kann relevant sein, falls beispielsweise eine OR-Funktion
vorliegt, die die benachbarten Leitersprossen verknüpft. Bei
dieser beispielhaften Ausführungsform
wird die Komprimierbarkeit über
die Bewertung bestimmt, ob zwei Bedingungen erfüllt sind, nämlich (i) ob ein Durchgang
oder eine Leitung ohne eine OR-Funktion in der Zelle in der vorangegangenen
Spalte (z.B. in der nächsten
Spalte nach links) der aktuellen Zeile vorliegt und (ii) ob die
aktuelle Zeile die letzte Zeile in der Leiterstruktur ist, oder
ob die Zelle in der nächs ten Zeile
und der vorangegangenen Spalte keine OR-Funktion hat. Wenn beide
Bedingungen erfüllt
sind, ist die aktuelle Spule komprimierbar.
-
Falls
die Spule nicht komprimierbar ist, geht die Kontrolle zum Block 66 zurück. Falls
die Spule komprimierbar ist, geht die Kontrolle zu einem Block 72 über, der
die Spule in der aktuellen Zelle in die vorangegangene Spalte bewegt
bzw. verschiebt. Ein Block 74 setzt dann den Zählwert der
aktuellen Spalte herab, sodass die Routine mit der Bewertung fortfahren
kann, ob die Spule weiter komprimiert werden kann. Falls ein Block 76 bestimmt,
dass die aktuelle Spalte jetzt die am weitesten links angeordnete
Spalte in der Leiterstruktur ist, ist keine weitergehende Kompression
möglich,
und die Kontrolle kehrt zum Block 66 zurück um festzustellen,
ob weitere Zeilen vorliegen. Falls die aktuelle Zelle nicht in der
ersten Spalte ist, kehrt die Kontrolle zum Block 64 zurück um festzustellen,
ob in der aktuellen Zeile eine weitere Kompression erfolgen kann.
Da die Spule gerade in die aktuelle Spalte verschoben worden ist,
gibt der Block 64 die Kontrolle zu einer weiteren Prüfung der
Komprimierbarkeit an den Block 70 weiter.
-
Nachdem
die Spulenkompressionsroutine die gesamte Leiterstruktur durchlaufen
hat, ist die Leiterstruktur bereit für die Abarbeitung durch den
Rest der Umsetzungsroutine. Allgemeiner ausgedrückt, kann die Leiter zur Vorbereitung
auf die Umsetzung auf beliebige Weise geändert werden. Änderungen
können
durch die Ausführungsregeln
und -konventionen für
die Ladder Logic erforderlich sein, wie z.B. die Ausführungssequenz,
oder bei Bedarf aus einem anderen Grund.
-
In 5 enthält die Umsetzungsroutine
eine Anzahl von Abarbeitungsphasen für die Bewertung bzw. die spätere Umsetzung
oder Verarbeitung mit einem oder mehreren arten von Ladder-Logic-Elementen.
Jede Phase kann über
eine separate Routine, einen Routinenabschnitt oder eine Subroutine
implementiert sein und/oder für
alle Phasen gemeinsame Aufrufprozeduren oder Ausführungsroutinen
umfassen. Allgemein wird jede Abarbeitungsphase für jede Zelle,
jede Einheit oder jeden Abschnitt der umgesetzten Leiterstruktur
ausgeführt.
Auf diese Weise kann die Routine eine Situation bewältigen,
bei der eine Zelle so definiert ist, dass sie mehr als ein logisches
Element hat (z.B. einen Kontakt und eine OR-Funktion). Bei der in 5 dargestellten exemplarischen
Ausführungsform
legt die Logik-Umsetzungsroutine einen Ansatz in drei Phasen fest,
d.h. dass jede Zelle dreimal bewertet und abgearbeitet wird, und
zwar zunächst
einmal in Bezug auf Leitersprossen, Kontakte und Spulen, dann nach
Sonderfunktionsblöcken
und anschließend
nach OR-Funktionen. Bei alternativen Ausführungsformen kann der Ansatz
die verschiedenen Ladder-Logic-Elemente in unterschiedlichen Gruppen
adressieren, wodurch sich eine beliebige Anzahl unterschiedlicher
Phasen ergeben kann, einschließlich
der Situation, wobei die gesamte Abarbeitung in eine einphasige
Routine integriert ist. Bestimmte Ausführungsformen können auch
eine oder mehrere Phasen überspringen,
wenn beispielsweise das Ladder-Logic-Element mehr als eine Zelle
umfasst.
-
Jede
Phase der Bewertung und Abarbeitung ist durch eine oder mehrere
Routinen oder Subroutinen implementiert, die die vorgefundenen Ladder-Logic-Elemente
bewerten und abarbeiten. Der Verarbeitungsabschnitt jeder Phase
umfasst die Erfassung von booleschen Darstellungen der Ladder-Logic-Elemente
in den dazugehörigen
logischen Ausdrücken
für jede
Leitersprosse. Bei einer Ausführungsform
umfasst diese Erfassung wiederum die sequenzielle Änderung
jedes logischen Ausdrucks, um den aktuellen Zustand der Bewertung
jeder Leitersprosse auszudrücken.
Auf diese Weise durchläuft
die Logik-Umsetzungsroutine die Leiterstruktur in der Ausführungssequenz
und aktualisiert sequenziell den entsprechenden logischen Ausdruck
für die
gerade abgearbeitete Zeile der Zelle, um die vorgefundenen logischen
Elemente wiederzugeben. Wie vorstehend erläutert wurde, setzt der Block 54 (3)
die aktuelle Spalte so, dass Bewertung und Abarbeitung mit der am
weitesten links angeordneten Spalte beginnen. Ein Block 77 kann
dann die aktuelle Zeile auf die erste von oben nach unten in jeder
Spalte abzuarbeitende Zeile setzen.
-
Die
erste Verarbeitungsphase umfasst einen Block 78, der die
aktuelle Zelle in Bezug auf Leitersprossen (d.h. einen Durchgang
oder eine Leitung), Kontakte und Spulen bewertet. Auch wenn die
von diesen Elementen benutzte Logik eine unterschiedliche Umsetzungsverarbeitung
bedingt, sind all diese Ladder-Logic-Elemente Einzelsprossen-Elemente, da sie
vollständig
in einer Zeile oder auf einer Leitersprosse angeordnet sind, sodass
die Zellen, in denen sie angeordnet sind, keine Verknüpfung mit
anderen Zeilen oder Leitersprossen haben. Wenn ein Kontakt vorgefunden
wird, erfasst der Block 78 den Kontakt über die Änderung des logischen Ausdrucks
für die
aktuelle Leitersprosse, um den Kontakt durch eine Kombination des
Kontakts mit dem logischen Ausdruck auszu drücken. Da bei dieser Ausführungsform
der logische Ausdruck eine Textfolge ist, die die Logik in booleschen
Form ausdrückt,
kann diese Kombination zum Hinzufügen von Text zur Textfolge
oder zu einem oder mehreren Textaustauschvorgängen in der Textfolge führen, sofern
ein boolesches Gate oder Element möglicherweise durch die davon
dargestellte logische Funktion ersetzt wird, was im Folgenden ausführlich erläutert wird.
Allgemein ausgedrückt,
kann der Wert des logischen Ausdrucks aber ersetzt oder aufgelöst werden,
wenn die Zeichenfolge EXPi ein komplexes
Objekt enthält,
wie z.B. „A1
AND B2". Derartige komplexe
Objekte unterscheiden sich von nicht komplexen logischen Ausdrücken mit
nur einem Begriff eines logischen Elements, wie z.B. bei EXPi = TRUE oder EXPi =
A1. Bei einer Ausführungsform
umfasst die Auflösung
der Zeichenfolge die Einrichtung eines booleschen Gates oder Elements
gemäß der im
Ausdruck festgelegten Logik. Beispielsweise könnte das Gate durch das Identifikationssymbol
C wiedergegeben sein, und C könnte
gleich der logischen Funktion „A1
AND B2" gesetzt
sein. In diesen Fällen
wird anschließend
das neue Identifikationssymbol, d.h. das boolesche Element C, das
infolge der Bewertung erzeugt wurde, wieder in den Ausdruck eingesetzt,
und es ersetzt den Abschnitt des Ausdrucks, den es jetzt wiedergibt,
und ermöglicht
dadurch die Erfassung und Übernahme
des neuen Kontakts im logischen Ausdruck.
-
Die
Auflösung
eines booleschen Elements aus dem logischen Ausdruck kann einen
Vorgang durch die Umsetzungsroutine umfassen bzw. enthalten, der
ein boolesches Element aus den im logischen Ausdruck angegebenen
Informationen bildet, bestimmt oder erzeugt. Ein Identifikationssymbol
für das
neue boolesche Element wird dann zugeordnet und verwendet, um einen
geänderten
logischen Ausdruck anzugeben. Anders ausgedrückt, wird eine Darstellung
des booleschen Elements, das neue Identifikationssymbol, wieder
in den logischen Ausdruck eingesetzt, aus dem das boolesche Element
aufgelöst
worden war. Der logische Ausdruck ist damit aktualisiert und vereinfacht,
und ein komplexes Element, wie z.B. „A1 AND B2" wurde durch das neue Identifikationssymbol
des aufgelösten
booleschen Elements ersetzt, das ein nicht komplexes Element (z.B.
C) st, das gleich dem vorherigen komplexen Element, z.B. A1 AND
B2, definiert ist.
-
Nach
der Abarbeitung der aktuellen Zelle durch den Block 78 bestimmt
ein Block 80, ob die letzte Zeile in der Spalte erreicht
ist. Ist dies nicht der Fall, setzt ein Block 82 die aktuelle
Zeile herauf und gibt die Kontrolle zur Erfassung und Abarbeitung
der nächsten
Zelle in der aktuellen Spalte an den Block 78 zurück. Nachdem alle
Zelle in einer Spalte abgearbeitet worden sind, übergibt der Block 80 die
Kontrolle an einen Block 84, der zur Vorbereitung der nächsten Verarbeitungsphase
die aktuelle Zeile auf die erste Zeile zurücksetzt.
-
Die
zweite Verarbeitungsphase ist in einem Block 86 implementiert
und betrifft die Bewertung der aktuellen Zelle in Bezug auf Sonderfunktionsblöcke. Die
Erfassungs- und
Verarbeitungsroutine des Blocks 8G kann auch zu einer Änderung
des logischen Ausdrucks für
die Leitersprosse führen,
in dem die aktuelle Zelle angeordnet ist, was wiederum zur Auflösung von
einem oder mehreren booleschen Elementen oder Gates aus der Zeichenfolge
EXPi für
die aktuelle Zelle führen
kann. In Verbindung mit Sonderfunktionen können die hier ausgeführten Schritte
dennoch von anderen Verarbeitungsphasen eingesetzte Prozeduren oder
Routinen verwenden. Beispielsweise können mehrere Verarbeitungsphasen
die gleiche Prozedur zur Auflösung
eines booleschen Logikelements aus der aktuellen Zeichenfolge EXPi aufrufen. Weitere Einzelheiten hinsichtlich
der Verarbeitung von Sonderfunktionen sind im Folgenden in Zusammenhang
mit einer beispielhaften Ladder-Logic-Konvention geschildert.
-
Nach
der Bewertung und Abarbeitung der aktuellen Zelle in Bezug auf Sonderfunktionen
implementieren zwei Blocks 88 und 90 die gleiche
Schleife wie die Blocks 80 und 82, um alle Zellen
in der aktuellen Spalte abzuarbeiten. So können die Blöcke 88 und 90 die
gleiche Subroutine wie die Blöcke 80 und 82 umfassen
und sind nur zur besseren Veranschaulichung separat dargestellt.
Auf ähnliche
Weise wie bei Block 84 setzt ein Block 92 nach
der vollständigen
Abarbeitung der aktuellen Spalte die aktuelle Zeile zur Vorbereitung
auf die nächste
Verarbeitungsphase auf die erste Zeile zurück.
-
Anschließend implementiert
ein Block 94 eine Bewertung und verarbeitet anschließend die
der aktuellen Zelle zugeordnete Logik in Bezug auf OR-Funktionen.
Die Art, in der OR-Funktionen abgearbeitet werden, kann von den
für die
OR-Funktionen maßgeblichen
Ladder-Logic-Regeln oder -Konventionen abhängig sein. Beispielsweise könnte die
aktuelle Zelle durch eine OR-Funktion betroffen sein, ohne dass
die OR-Funktion
formell in der Zelle enthalten sein muss. Anders ausgedrückt, kann
bei dem vorstehend beschriebenen beispielhaften Ladder-Logic-System,
bei dem Zellen Attribute haben, eine Zelle von einer OR-Funktion
betroffen sein, ohne dass ihr OR-Attribut gleich TRUE gesetzt ist.
Diese Situation ist wiederum lediglich eine Frage von Konventionen.
In diesem Fall kann die OR-Funktion in der unteren der beiden von
der OR-Funktion
verknüpften
Zellen angeordnet sein. Ungeachtet dessen, wie die Ladder Logic
mit OR-Funktionen umgeht, führt die
Abarbeitung von OR-Funktion entsprechend dem beschriebenen Verfahren
aber generell zu einer Änderung
der logischen Ausdrücke
jeder Leitersprosse oder jeder Zeile, die der OR-Funktion zugeordnet
oder dadurch verknüpft
ist. Weitere Einzelheiten zur Abarbeitung von OR-Funktionen sind
im Folgenden in Verbindung mit der in 8 dargestellten
beispielhaften Ausführungsform
angegeben.
-
Nachdem
die aktuelle Zelle vom Block 94 in Bezug auf OR-Funktionen
abgearbeitet worden ist, bilden die Blöcke 96 und 98 eine
Schleife zur Unterstützung
dieser Abarbeitung bei jeder Zelle in der aktuellen Spalte, und
zu diesem Zweck können
sie die gleiche Prozedur aufrufen wie die Blöcke 80 und 82.
Wenn die letzte Zelle in der Spalte erreicht ist, geht die Kontrolle
aber zum Block 58 über
(siehe auch 3), um zu prüfen, ob die aktuelle Spalte
die letzte Spalte ist. Ist dies nicht der Fall, geht die Kontrolle
zum Block 60 über,
um mit der Erfassung und Abarbeitung der Ladder-Logic-Elemente in
der nächsten
Spalte fortzufahren.
-
Mit
Bezug auf 8 ist eine Ausführungsform
der Bewertungs- und Verarbeitungsroutine des Blocks 78 (5)
ausführlicher
dargestellt. Wie vorstehend beschrieben, dient diese Routine zur
Abarbeitung von Einzelsprossen-Elementen, wie Spulen, Leitungen
und Kontakten, und sie kann für
jede Zelle oder sequenzielle Einheit der Ladder-Logic-Routine ausgeführt werden. Die Routine kann
bei Block 100 beginnen, indem bestimmt wird, ob die aktuelle
Zelle leer ist, wobei in diesem Fall der logische Ausdruck oder
EXPi für
die aktuelle Leitersprosse in einem Block 101 auf FALSE
gesetzt wird. An dieser Stelle kann die Kontrolle zur Ausführung der
restlichen Routine zurückkehren
oder enden, falls die Zelle leer ist.
-
Die
Routine für
das Einzelsprossen-Element kann in einem Block 102 fortfahren,
der bestimmt, ob die aktuelle Zelle einen Durchgang oder eine Leitung
aufweist, wobei in diesem Fall die Kontrolle an einen Block 103 übergeht,
der den aktuellen logischen Ausdruck bzw. den Wert EXPi wartet.
An dieser Stelle kann die Routine für das Einzelsprossen-Element
enden, da die Zelle keine weiteren Elemente aufweist. Alternativ
dazu geht die Kontrolle entsprechend der Darstellung in 6 zu
einem Block 104 über,
der bestimmt, ob die aktuelle Zelle einen Kontakt aufweist, wobei
in diesem Fall ein weiterer Block 106 die Art des Kontakts
bestimmt. Das Zellattribut NC (d.h. „normalerweise geschlossen") ist in Abhängigkeit
davon, ob der Kontakt normalerweise geschlossen oder offen ist,
TRUE bzw. FALSE. Falls der Kontakt normalerweise offen ist, geht
die Kontrolle zu einem Block 107 über, der bestimmt, ob die Zeichenfolge
EXPi einen einfachen (d.h. nicht komplexen)
logischen Ausdruck aufweist. Falls die Zeichenfolge EXPi einfach
ist, wird die Erfassung des Kontakts durch einen Block 108 implementiert,
wobei dies die Änderung
oder Aktualisierung des logischen Ausdrucks umfasst, um die vom
Kontakt ausgedrückte
Logik wiederzugeben. Die Art, in der der logische Ausdruck aktualisiert
wird, richtet sich nach dem Inhalt des logischen Ausdrucks vor der
Kombination, und die verschiedenen Möglichkeiten sind in der folgenden
Tabelle I aufgeführt.
-
Falls
die Zeichenfolge EXPi komplex ist, bestimmt
ein Block 109, welche Axt von Operator oder Funktion vorliegt.
Falls die Zeichenfolge einen oder mehrere AND-Operatoren enthält, geht die Kontrolle zum
Block 108 über,
wobei die Erfassung des Kontakts eine weitere AND-Funktion und eine
Identifikation der Kontaktvariablen als neuen Operanden anhängt. Falls
die Zeichenfolge einen oder mehrere OR-Operatoren enthält, löst ein Block 110 ein
neues boolesches Element auf, das die über den oder die mehreren OR-Operatoren
ausgedrückte
Logik wiedergibt, wobei das Symbol oder die sonstige Identifikation
des neuen booleschen Elements in der Zeichenfolge in Kombination
mit dem Kontakt ersetzt wird. Ein Beispiel dieses Prozesses wird
im Folgenden in Verbindung mit Tabelle I gezeigt. Auf diese Weise
vermeidet die Umsetzungsroutine die Zusammenlegung oder Vermischung
unterschiedlicher boolescher Operatoren, d.h. die Erzeugung eines
logischen Ausdrucks, bei dem mehr als ein Typ eines Operators oder
einer Funktion in einem logischen Ausdruck vorliegt. Allgemeiner
ausgedrückt,
umfasst die Erfassung und Verarbeitung von Kontakten aber die Aktualisierung
der Zeichenfolge EXPi, indem Text hinzugefügt und/oder
ersetzt wird, um die Auswirkung der Betriebsweise des Kontakts wiederzugeben.
-
Ein
Beispiel der in den Blocks 107–119 ausgeführten Prozedur
zur Aktualisierung des logischen Ausdrucks ist im Folgenden in Tabelle
I angegeben, in der logische Variable und boolesche Elemente durch
beispielhafte Punktnamen identifiziert sind. Zur Unterscheidung
der unterschiedlichen betreffenden Punktnamen bezeichnet der Punktname
X die von dem neu vorgefundenen logischen Element, einem Kontakt,
eingeführte Variable.
Wenn ein neues boolesches Element oder Gate als Ergebnis der Kombination
aufgelöst
ist, wird das neue Element über
einen neuen, eindeutigen Namen identifiziert, in diesem Beispiel
Y. Verweise auf den logischen Ausdruck „A1 AND B2" sollten ferner so interpretiert werden,
dass sie eine beliebige Zeichenfolge mit einem oder mehreren AND-Operatoren bezeichnen.
Die Spalte „Typ
der Kombination" in
Tabelle I wird durch die Art der vorgefundenen Ladder Logic bestimmt
und gibt insbesondere den Kontext für die Kombination des Kontakts
X an, d.h., ob der Kontakt X über
eine AND- oder eine OR-Funktion
kombiniert wird. Die Art, in der Kombinationen auf der Grundlage
einer OR-Funktion
auftreten, wird im Folgenden beschrieben. Die Spalte „Auflösen" gibt an, ob ein
neues boolesches Element als Ergebnis der Kombination aufgelöst wird,
was zu einem Ersatz des neuen, eindeutigen Elements Y führt.
-
-
Tabelle
I zeigt, dass in Fällen,
die einfache EXPi-Folgen umfassen, d.h.
bei den ersten sechs Einträgen in
der Tabelle, ein neues boolesches Element oder Gate nicht aufgelöst wird.
Nur wenn eine komplexe EXPi-Folge auf eine
Art kombiniert wird, die AND- und OR-Operatoren vermischt, wird
ein neues boolesches Element aufgelöst. Anderenfalls kann die komplexe
EXPi-Folge eine Zeichenfolge mit mehreren
AND-Operatoren oder
mehreren OR-Operatoren bleiben.
-
Wiederum
mit Bezug auf 6 geht die Kontrolle, falls
der Block 106 bestimmt, dass der vorgefundene Kontakt normalerweise
geschlossen ist (z.B. wenn das Attribut NC für die aktuelle Zelle auf TRUE
gesetzt ist), zu einem Block 114 über, der ein neues boolesches
Element, ein NOT-Gate, auflöst,
bevor mit der vorstehend in Zusammenhang mit den Blöcken 107–110 beschriebenen
Kombinationsprozedur für
den logischen Ausdruck fortgefahren wird. Insbesondere erzeugt der
Block 114 einen eindeutigen Punktnamen für das NOT-Gate
und definiert ihn anhand des aufgelösten booleschen Logikelements.
Beispielsweise kann der Kontakt 36D aus 2 dem
Punktnamen D1 zugeordnet sein, sodass das vom Block 114 aufgelöste Element
anhand eines eindeutigen Punktnamens MIG-DX-0000 und der booleschen
Funktion NOT (D1) definiert ist. Selbstverständlich kann die logische Logik-Umsetzungsroutine
diese boolesche Logik auf unterschiedliche Weise oder auch entsprechend
der Konfigurationssoftware für
die Prozesssteuerung, die die Logik implementiert, ausdrücken oder
speichern. Beispielsweise kann die Logik auf folgende Weise erzeugt
und/oder gespeichert werden: MAKE NOTIN, IN1 = D1, OUT = MIG-DX-0000.
Die beispielhafte Konfigurationssoftware interpretiert diese Anweisung
so, dass ein NOT-Gate so definiert werden soll, dass es einen Eingangswert
hat, der gleich den der Variablen D1 zugeordneten Informationen
im Speicher gesetzt ist, und dass es einen Ausgangswert hat, der
dem eindeutigen Namen MIG-DX-0000
zugeordnet ist.
-
Der
Block 114 löst
ein neues boolesches Element auf, um eine Kombination unterschiedlicher
oder gemischter boolescher Funktionen in einem logischen Ausdruck
zu vermeiden, d.h. in diesem Fall die Kombination von NOT und einer
der Funktionen AND oder OR.
-
Jedes
Mal, wenn über
die Ausführung
der Blocks 110 oder 114 ein neues boolesches Element
aufgelöst
wird, werden Informationen oder Daten, die das neue boolesche Element
angeben bzw. definieren, in der Reihenfolge ihrer Erzeugung in einem
Speicher gespeichert. Bei einer Ausführungsform werden die Aufzeichnungen
im nächsten
von der Umsetzungsroutine ausgeführten
Schritt aufgezeichnet. Alternativ dazu werden die Informationen
zu einem späteren
Zeitpunkt aufgezeichnet, wobei jedoch die Art der Aufzeichnung die
Reihenfolge beibehält,
in der das boolesche Element (relativ zu den anderen aufgelösten booleschen
Elementen) aufgelöst
worden ist. Beispielsweise kann die Aufzeichnung des aufgelösten booleschen
Elements an der Stelle erfolgen, an der das nächste boolesche Element erzeugt
werden soll. In jedem Fall ist die Speicherung der booleschen Elemente
in der Reihenfolge ihrer Auflösung
eine Möglichkeit
der Erhaltung der Ausführungssequenz
der Ladder Logic, die auf der Weise beruht, in der das beschriebene
Logik-Umsetzungsverfahren die Ladder Logic sequenziell abarbeitet.
Zu diesem Zweck kann der Speicher, in dem die booleschen Elemente gespeichert
werden, eindimensional oder ein Vektor sein, sodass die Elemente
in einer eindimensionalen Sequenz oder Reihenfolge gespeichert werden.
Man beachte jedoch, dass die auf das boolesche Element bezogenen
Informationen (z.B. MAKE NOTIN, IN1 = D1, OUT = MIG-DX-0000) in mehreren
Komponenten (z.B. TYPE, IN, OUT usw.) statt als einzelne individuelle
Anweisung gespeichert sein können.
Man beachte ferner, dass der Speicher, in dem die booleschen Elemente
gespeichert werden, gleich einem beliebigen oder mehreren der Speicher
im Prozesssteuersystem 10 sein kann, aber nicht notwendigerweise
sein muss, wie z.B. einer der Speicher 27, und dass er
den gleichen Speicher darstellen kann, aber nicht darstellen muss,
in dem alle anderen Routinen oder Informationen in Zusammenhang
mit der Umsetzung gespeichert sind.
-
Wenn
jedes neue boolesche Element im Vektor oder im sonstigen Speicher
gespeichert worden ist, kann die Verarbeitungsroutine für das Einzelsprossen-Element
enden (wie in 6 dargestellt ist) oder fortfahren,
als ob kein Kontakt vorgefunden worden wäre. Wenn die aktuelle Zelle
keinen Kontakt enthält,
geht die Kontrolle an einen Entscheidungsblock 118 über, der
bestimmt, ob eine Spule vorhanden ist. Die Bewertung und Verarbeitung
in Zusammenhang mit Spulenelementen umfasst allgemein die Auflösung des
logischen Ausdrucks für
die Sprosse, auf der die aktuelle Zelle angeordnet ist. Der logische
Ausdruck kann komplex sein und daher eine OR-Zeichenfolge oder eine AND-Zeichenfolge
enthalten, oder er kann einfach sein (d.h. nicht komplex) und somit
ein eingliedriges boolesches Element enthalten. In jedem Fall veranlasst
das Vorliegen einer Spule die Auflösung eines booleschen Elements
entsprechend der Darstellung in 6. Man beachte
ferner, dass die bei der Auflösung
und Speicherung eines booleschen Elements eingesetzte Verarbeitung
ungeachtet des vorgefundenen Ladder-Logic-Elements (d.h. Kontakt,
Spule usw.) die gleiche Routine, den gleichen Routinenabschnitt,
die gleiche Subroutine oder Prozedur einbeziehen kann. Allgemeiner
ausgedrückt,
brauchen die Verarbeitungsschritte nicht unabhängige und getrennte Routinen
darzustellen, sondern sie können stattdessen
eine beliebige Anzahl gemeinsam genutzter Prozeduren, Routinen usw.
einbeziehen.
-
Wiederum
mit Bezug auf die Verarbeitung der Spulenelemente entsprechend der
Darstellung in 6 gibt ein Entscheidungsblock 120,
falls die EXP-Zeichenfolge einfach ist, die Kontrolle an einen Block 122 ab, der
ein OR-Gate mit dem in der Zeichenfolge EXPi identifizierten
booleschen Element als einziger Eingabe auflöst. Bei alternativen Ausführungsformen
kann aber eine beliebige Funktion, die einen logischen Parameter
als Eingabe akzeptieren und einen logischen Ausgabeparameter mit
dem gleichen Wert wie dem des Eingabeparameters erzeugen kann, statt
des OR-Gates verwendet werden. Beispiele umfassen ein AND-Gate mit
einzelner Eingabe, eine ASSIGN-Funktion
(die eine Einzeleingabe nimmt und den Wert der Einzeleingabe als Ausgabe
unter einer unterschiedlichen Variablen erzeugt) und andere pufferähnliche
Elemente. Falls die Zeichenfolge EXPi komplex
ist, geht die Kontrolle zu einem Entscheidungsblock 124 über, der
bestimmt, ob ein AND-Operator in der EXPi-Zeichenfolge
vorliegt. Falls die Zeichenfolge eine AND-Funktion ist, wird ein
neues AND-Gate in einem Block 126 aufgelöst. Die
in der Zeichenfolge EXPi angegebenen Variablen
oder Punktnamen werden als Eingaben zum AND-Gate angenommen. Anderenfalls
wird ein neues OR-Gate
in einem Block 128 aufgelöst, wobei erneut die Punktnamen
als Eingänge
am Gate genommen werden. In jedem dieser Fälle geht die Kontrolle nach
der Auflösung
des booleschen Elements an einen Block 130 über, der
die dem Element zugeordneten Informationen im Vektor oder in einem
anderen Speicher speichert.
-
Die
in Zusammenhang mit der in 6 dargestellten
beispielhaften Ausführungsform
angegebenen Schritte zur Bewertung und Verarbeitung erzeugen eine
Zusammen stellung von booleschen Logik-Gates oder -Elementen, die
in einem Speicher als getrennte Objekte in einer Reihenfolge gespeichert
werden, die der Ausführungssequenz
der Ladder Logic entsprechen. Diese Objekte sind die Ergebnisse
der Übersetzung
von standardmäßigen Ladder-Logic-Elementen
und -Funktionen, wie z.B. Spulen und Kontakten. Das beschriebene
Umsetzungsverfahren unterstützt
aber auch die Umsetzung von nicht standardmäßigen Ladder-Logic-Elementen
oder Sonderfunktionen, die in der Leiterstruktur angeordnet sein
können.
Die zur Bewertung und Verarbeitung von Sonderfunktionen durchgeführten Schritte
sind in 7 wiedergegeben. Im Gegensatz
zu Elementen wie Spulen oder Kontakten können Sonderfunktionen in mehr
als einer Zelle oder Einheit der Leiterstruktur vorliegen, ohne
dass dies notwendigerweise so sein muss. In Abhängigkeit von den Konventionen oder
Regeln der Leiterstruktur kann eine Sonderfunktion über unterschiedliche
Leitersprossen und/oder unterschiedliche Spalten angeordnet sein
oder eine Anzahl von Zellen enthalten. Wenn das beschriebene Umsetzungsverfahren
bei Ladder Logic mit einer von Zellen oder Einheiten definierten
sequenziellen Reihenfolge angewandt wird, kann demzufolge die Übersetzung
von Sonderfunktionen mehr als eine Leitersprosse oder Spalte umfassen.
In diesen Fällen
kann die Routine alle zu einer Sonderfunktion gehörenden (oder
davon umfassten) Zellen während
des gleichen Schritts oder separat verarbeiten. Die beispielhafte,
in 7 dargestellte Ausführungsform leistet effektiv
beides, da die Sonderfunktionen in diesem exemplarischen System
in der gleichen Spalte angeordnet sind. Beim Vorfinden der ersten
Zelle der Sonderfunktion verarbeitet die Routine jede Zelle der
Sonderfunktion separat und fährt
zellenweise in der Leiterstruktur fort, bis die letzte Zelle in
der Leiterstruktur erreicht ist. Doch ist dies nicht erforderlich,
und der Einsatz des beschriebenen Umsetzungsverfahrens ist nicht
durch die Arten oder Formen der hier gezeigten oder beschriebenen
Sonderfunktionen begrenzt.
-
Bei
dem in 2 gezeigten Beispiel umfasst die Sonderfunktion 40 zwei
Zellen. Typischerweise definiert jede Zelle einen oder mehrere Parameter
oder ist ihnen zugeordnet. Parameter können eine Eingabe- oder Ausgabevariable
für die
Sonderfunktion bestimmen, einen temporären Wert einer Variablen speichern oder
während
der Ausführung
der Sonderfunktion einen konstanten Wert festlegen. Entsprechend
der Darstellung hat die erste Zelle der Sonderfunktion den Eingangsparameter
IN1 und die Konstante 100, während die zweite Zelle der
Sonderfunktion den Ausgangsparameter OUT2 hat.
-
Die
Komponenten der Sonderfunktion sind entsprechend dem Zellattribut
SHA-PE angeordnet,
wobei der Beginn oder Start der Sonderfunktion SHAPE = TOP lautet
und für
die letzte Zelle bzw. das Ende der Sonderfunktion dann SHAPE = BOT
gilt. Daher hat die obere Zelle der Sonderfunktion 40 eine
Shape-Angabe TOP, während
die untere Zelle eine Shape-Angabe BOT hat. Zellen zwischen dem
Anfang und dem Ende der Sonderfunktion können einen anderen SHAPE-Wert
haben, wie z.B. MID. Auf diese Weise „erinnert" sich die Umsetzungsroutine daran, dass
sie sich noch in der Abarbeitung einer Sonderfunktion befindet,
wenn sie sich zur nächsten
in vertikaler Richtung benachbarten Zelle bewegt, obwohl sie vorgegangen
ist, als sei die Zelle eine beliebige andere Zelle (z.B. durch die
Ausführung
der in 6 wiedergegebenen Routine).
-
Die
Bewertung und Verarbeitung von Sonderfunktion wird im Folgenden
in Zusammenhang mit der in 7 dargestellten
beispielhaften Ausführungsform
ausführlicher
geschildert. Die in 7 dargestellten Schritte nehmen
an, dass eine Sonderfunktion erkannt wurde, und zwar über die
Erkennung einer Zelle mit einem SHAPE-Attribut gleich TOP oder über einen
anderen gewünschten
Mechanismus. Falls keine Sonderfunktion erkannt wird, kann die Logik-Umsetzungsroutine
die in 7 dargestellten Schritte überspringen und mit der nächsten Bewertungs-
und Verarbeitungsphase fortfahren.
-
Zellen,
die Sonderfunktionen zugeordnet sind, können eine Anzahl von Attributen
haben, die nur in Verbindung mit Sonderfunktionen genutzt werden.
Die Attribute INUB und ONUB sind in Abhängigkeit davon, ob die Zelle
einen Eingang oder einen Ausgang hat, TRUE bzw. FALSE. Das NUMBER-Attribut
kann verwendet werden, um die Nummer der Zelle in der Sonderfunktion
zu kennzeichnen (z.B. die erste Zelle, bei der NUM-BER gleich 1 gesetzt
ist), wobei dies zur Kennzeichnung von Sonderfunktionsparametern
nach Zellennummern benutzt werden kann. Bei dem in 2 wiedergegebenen
Beispiel ist der Eingang von Zelle Nummer eins der Sonderfunktion 40 dem
Parameter IN1 zugeordnet, während
der Ausgang der Zelle Nummer zwei dem Parameter OUT2 zugeordnet
ist. Das ARG-Attribut kennzeichnet den Parametertyp für die Zelle,
während CONST,
HREG, POINT NAME und NONE eine Ganzzahlkonstante, ein Halteregister,
einen Punktnamen bzw. keinen Parameter angibt. Entsprechend kann
das Attribut POINT NAME einen Punktnamen angeben, und das Attribut
CONST kann den Wert 100 enthalten.
-
Allgemein
ausgedrückt,
definieren die Werte der vorstehenden Attribute einen oder mehrere
Parameter jeder Zelle der Sonderfunktion. Während der Bewertung einer Sonderfunktion
verarbeitet das beschriebene Umsetzungsverfahren die Sonderfunktion über die
sequenzielle Abarbeitung der Parameter jeder Zelle entsprechend
der Art der Sonderfunktion. Die Bewertung und Verarbeitung der Parameter
liefert die Grundlage für
die Abbildung oder Übersetzung
der Sonderfunktion aus dem Konfigurationsschema der Ladder Logic
in das boolesche Logikschema.
-
7 zeigt
die von der Verarbeitungsphase der Routine für die Sonderfunktion durchgeführten Schritte.
Wenn eine Sonderfunktion in der aktuell bewerteten Spalte vorgefunden
wurde, bestimmt ein Entscheidungsblock 140, ob die aktuelle
Zelle einen Eingang hat, indem der Parameter INUB analysiert wird.
Ist INUB auf TRUE, löst
ein Block 142 den logischen Ausdruck für den Fall auf, dass die EXP-Zeichenfolge
komplex ist. Dieser Auflösungsschritt
kann die gleiche oder eine ähnliche
Prozedur verwenden, die vorstehend in Zusammenhang mit Spulen und
Kontakten beschrieben wurde. In jedem Fall kann auf der Grundlage
der in der Zeichenfolge EXPi angegebenen
Logik ein boolesches Element eingerichtet und zusammen mit den anderen
booleschen Elementen im Vektor oder sonstigen Speicher gespeichert
werden. Der Block 142 setzt anschließend den Eingangsparameter
gleich dem sich ergebenden booleschen Element.
-
Schließlich geht
die Kontrolle zu einem Entscheidungsblock 144 über, der
bestimmt, ob die aktuelle Zelle einen Ausgang hat, indem der Parameter
ONUB analysiert wird. Falls ONUB auf TRUE steht, erzeugt ein Block 146 einen
eindeutigen Punktnamen für
diesen Ausgang, belegt den Ausgang der Zelle mit diesem Namen (wobei
der Ausgang gleich dem Namen definiert wird) und speichert diese
Zuordnung in der Zeichenfolge EXPi, wobei
eventuell zuvor in der Zeichenfolge vorhandener Text ersetzt wird.
Falls die Zelle keine Ausgangszelle hat, speichert ein Block 148 in
der Zeichenfolge EXPi FALSE.
-
Die
Kontrolle geht dann zu einem Block 150 über, der alle anderen (d.h.
nicht eingangs- und nicht ausgangsbezogenen) Sonderfunktionsparameter
in jeder Zelle abarbeitet. Andere Parameter können Aspekte der Sonderfunktion
definieren. Falls die Sonderfunktion beispielsweise einen Timer
enthält,
ist ein Parameter, der in einer der Zellen der Sonderfunktion definiert
sein kann, die Konstante, die festlegt, wie lange der Timer zählt. Der
Block 150 erkennt diese Zeitkonstante und speichert sie,
um die Definition der Sonderfunktion im booleschen Logikschema zu
ermöglichen.
Der Wert kann entsprechend der vorstehenden Erläuterung in Zusammenhang mit
der Zellennummer gespeichert werden.
-
Die
Kontrolle geht dann zu einem Entscheidungsblock 152 über, der über die
Analyse des SHAPE-Attributs bestimmt, ob die letzte Zelle in der
Sonderfunktion erreicht ist. Falls die aktuelle Zelle nicht die
SHAPE-Angabe BOT hat, geht die Kontrolle zu einem Block 154 zurück, der
mit der in vertikaler Richtung nächsten benachbarten
Zelle in der Sonderfunktion fortfährt, und die Kontrolle geht
für eine
weitere Iteration der Abarbeitung der Sonderfunktion zum Block 140 zurück. Falls
die aktuelle Zelle eine SHAPE-Angabe BOT hat, geht die Kontrolle
zu einem Block 156 über,
der die Sonderfunktion in die entsprechende Funktion übersetzt,
die im booleschen Logikschema, in das die Routine umgesetzt wird,
verwendet wird. In einigen Fällen
kann die Funktion im Vergleich zu der Ladder-Logic-Funktion den
gleichen Namen, die gleichen Parameter und gleiche andere Eigenschaften
haben. In anderen Fällen
kann die Funktion unterschiedliche Eigenschaften haben, doch in
jedem Fall kann der Block 156 eine Verweistabelle (Look-up-Tabelle)
oder andere Mapping-Informationen verwenden, um die entsprechende
Sonderfunktion zu identifizieren und die Sonderfunktionsparameter
aus dem Ladder-Logic-Schema
korrekt in das Zielschema zu übertragen.
-
Nach
der Übersetzung
der Sonderfunktion speichert ein Block 158 die Sonderfunktion
und eventuelle Parameterdefinitionen im Vektor oder im sonstigen
Speicher, der jedes vom beschriebenen Umsetzungsverfahren erzeugte
logische Element auflistet. Anschließend kann eine weitere Verarbeitung
der Zellen in der gleichen Spalte wie bei der gerade übersetzten
Sonderfunktion erfolgen, wobei diese Phase der Routine allgemein die
Zellen bewertet, um zu bestimmen, ob die in 7 dargestellten
Schritte erneut implementiert werden sollen, bevor mit der nächsten Phase
fortgefahren wird.
-
Nach
dem Scannen jeder Zelle in der aktuellen Spalte nach Sonderfunktionen
geht die Kontrolle zur abschließenden
Verarbeitungsphase über,
die eine Verarbeitungsroutine für
die OR-Funktion implementiert, wobei eine beispielhafte Ausführungsform
in 8 wiedergegeben ist. Die Verarbeitungsroutine
für die OR-Funktion
kombiniert allgemein die Zeichenfolge EXPi für jede der
durch die OR-Funktion verknüpften
Zellen und wendet die sich ergebende Kombination auf die Zeichenfolge
EXPi von jeder der verknüpften Zellen an. Somit kombiniert
eine einer Zelle zugeordnete OR-Funktion allgemein die Werte der
EXPi-Zeichenfolgen von zwei oder mehr benachbarten
Leitersprossen. Bei einer Ausführungsform
liegt eine vorhandene OR-Funktion in der unteren Zelle der beiden
verknüpften
Zellen vor, sodass die OR-Funktion die EXPi-Zeichenfolgen der
aktuellen Leitersprosse und der darüber befindlichen kombiniert.
In Abhängigkeit
von den für
die Ladder-Logic geltenden Konventionen der zugrunde liegenden Steuerroutine
können
alternative Ausführungsformen
festlegen, dass eine OR-Funktion in der oberen Zelle vorliegt, sodass
die Funktion die Zeichenfolge der aktuellen Leitersprosse und der
darunter befindlichen kombiniert.
-
Zwei
oder mehr OR-Funktionen können
kombiniert verwendet werden, wobei in diesem Fall die EXPi-Zeichenfolgen von drei oder mehr Leitersprossen
kombiniert werden können.
Wegen dieser Möglichkeit kann
die Bewertungs- und Verarbeitungsroutine ein rekursives Verfahren
sein, das eine oder mehrere OR-Funktionen abarbeitet, um die erforderlichen
Kombinationen auszuführen.
In der vorstehend erwähnten Ausführungsform,
wobei die OR-Funktion in der unteren Zelle der beiden verknüpften Zellen
vorliegt, kann die Ausführung
des rekursiven Verfahrens eingeleitet werden, wenn die gerade bewertete
aktuelle Zelle keine OR-Funktion hat. Trotz des Fehlens einer OR-Funktion in der Zelle
kann die OR-Routine relevant sein, da die Zelle darunter die OR-Funktion aufweisen
kann und dadurch die beiden benachbarten Leitersprossen verknüpft und
die aktuelle Zelle einbezieht.
-
Die
Verarbeitungsroutine für
die OR-Funktion verendet allgemein einen temporären Parameter zum Erfassen
der logischen Ausdrücke
von allen durch die OR-Funktion verknüpften Leitersprossen. Diese
Erfassung kann Kombinationen von logischen Elementen einbeziehen,
und solche Kombinationen können
entsprechend dem Inhalt von Tabelle I dieser Beschreibung hergestellt
werden. Wenn beispielsweise zwei logische Ausdrücke als Ergebnis einer OR-Funktion
kombiniert werden, ist der Kombinationstyp „OR", und die vierte Spalte von Tabelle
I kann konsultiert werden (z.B. über
eine Verweistabelle in einem Speicher), um die Axt und Weise zu
bestimmen, in der sie kombiniert werden sollen.
-
Mit
Bezug auf die in 8A dargestellte beispielhafte
Ausführungsform
kann die Verarbeitungsroutine für
die OR-Funktion mit einem Entscheidungsblock 160 beginnen,
der bestimmt, ob die aktuelle Zelle leer ist. Eine leere Zelle hat
keine darin angeordneten Eingänge,
Ausgänge,
Leitungen, Kontakte oder sonstige Ladder-Logic-Elemente oder OR-Funktionen
in der darunter befindlichen Zelle (da bei bestimmten Leiterkonventionen
die OR-Funktion eine vertikale Leitung erzeugt, die die beiden Zellen
verknüpft
und einen Ausgang für die
aktuelle Zelle erzeugt). Wenn die Zelle leer ist, kann die OR-Verarbeitungsroutine
enden, und die Umsetzungsroutine geht beispielsweise auf die in
Zusammenhang mit der in 3 und 5 dargestellten
Ausführungsform
beschriebenen Weise zur nächsten
Zelle weiter.
-
Falls
die aktuelle Zelle nicht leer ist, bestimmt ein Entscheidungsblock 162,
ob eine OR-Funktion in der Zelle vorliegt. Falls eine OR-Funktion
vorliegt, kann die Routine ebenfalls enden, da die mit der betreffenden OR-Funktion
zusammenhängenden
Zellen und Leitersprossen bereits von der im Folgenden beschriebenen rekursiven
Prozedur abgearbeitet worden sind.
-
Falls
die aktuelle Zelle nicht leer ist und keine OR-Funktion enthält, initialisiert
ein Block 164 einen temporären Zeichenfolgeparameter TEMP
zur Vorbereitung für
die Ausführung
der rekursiven Prozedur. Insbesondere setzt die Initialisierung
den TEMP-Parameter
gleich dem in der EXPi-Zeichenfolge für die Leitersprosse, in
der die aktuelle Zelle angeordnet ist, angegebenen Wert. Die rekursive
Prozedur wird dann in einem Block 166 mit TEMP, d.h. der
EXPi-Zeichenfolge der aktuellen Leitersprosse,
als Eingangsparameter aufgerufen. Dieser Aufruf der rekursiven Prozedur
gibt die kombinierte EXPi-Zeichenfolge zurück, die
als Ergebnis der von der OR-Funktion festgelegten Kombinationen
erzeugt wird. Als Folge davon wird das zurückgeleitete Ergebnis die EXPi-Zeichenfolge für die aktuelle Leitersprosse
(und als solches gespeichert).
-
8B gibt
das rekursive Verfahren wieder. Infolge des Prozeduraufrufs mit
der TEMP-Zeichenfolge geht die Kontrolle zu einem Entscheidungsblock 168 über, der
bestimmt, ob die aktuelle Zelle die letzte Zelle in einer Spalte
ist. Ist dies der Fall, wird die Abarbeitung der rekursiven Prozedur
im Wesentlichen umgangen, da keine OR-Funktion vorliegen kann. Entsprechend
bestimmt ein Entscheidungsblock 170, ob in der Zelle unterhalb
der aktuellen Zelle eine OR-Funktion vorliegt. Wenn keine OR-Funktion
vorliegt, wird die rekursive Prozedur wiederum im Wesentlichen umgangen.
-
Wenn
in der Zelle unterhalb der aktuellen Zelle eine OR-Funktion vorliegt,
sind die beiden Leitersprossen durch eine OR-Funktion verknüpft, und
die Kombination der beiden Zeichenfolgen EXPi und
EXPi+1 wird in einem Block 172 ausgeführt. Insbesondere
beinhaltet die Kombination den TEMP-Parameter und die Zeichenfolge
EXPi+1.
-
Weitere
Einzelheiten in Bezug auf diese Kombination werden im Folgenden
in Zusammenhang mit 8C ausgeführt.
-
Anschließend bestimmt
ein Block 174 die rekursive Art der in 8B dargestellten
Prozedur, da die Prozedur sich selbst für die nächste Zeile aufruft. Anders
ausgedrückt,
können
zusätzliche
Kombinationen von logischen Ausdrücken notwendig sein, da zusätzliche
OR-Funktionen vorliegen können,
sodass mehr als zwei Leitersprossen verknüpft sind. Um festzustellen,
ob weitere Kombinationen notwendig sind, wird die in 8B wiedergegebene
Prozedur mit TEMP als Eingangsparameter aufgerufen. Infolgedessen
wird die in TEMP vorliegende Kombination als Ergebnis der ersten
Ausführung
der rekursiven Prozedur die Zeichenfolge, die in Block 172 mit
der Zeichenfolge EXPi+2 kombiniert werden
kann, falls die Leitersprosse i+2 tatsächlich eine von Block 170 ermittelte
OR-Funktion aufweist.
-
Diese
Rekursion wird fortgesetzt, bis entweder die letzte Zeile erreicht
ist (siehe Block 1G8) oder bis in der Zelle unterhalb der
aktuellen Zelle keine OR-Funktion vorgefunden wird (siehe Block 170).
In jedem Fall kann die Kontrolle zu einem Block 176 übergehen,
der ein boolesches Element aus dem TEMP-Parameter auflöst.
-
Jede
Ausführungsebene
der rekursiven Prozedur endet mit dem Zurückschreiben des TEMP-Parameters
in die aktuelle Zeichenfolge EXPi für den Prozeduraufruf
(siehe Block 178). Auf diese Weise wird schließlich jeder
der Zeichenfolgen der Wert des TEMP-Parameters zugewiesen.
-
Die
vom Block 172 implementierten Verarbeitungsschritte zur
Ausführung
einer OR-Kombination werden nun ausführlicher mit Bezug auf 8C beschrieben.
Zunächst bestimmt
ein Entscheidungsblock 180, ob der TEMP-Parameter auf FALSE
gesetzt ist, wobei in diesem Fall die von der OR-Funktion ausgeführte Kombination
einfach gleich der Zeichenfolge EXPi+1 gesetzt
wird. Zu diesem Zweck setzt ein Block 182 den TEMP-Parameter gleich
der Zeichenfolge EXPi+1. Anderenfalls geht
die Kontrolle zu einem Entscheidungsblock 184 über, der
bestimmt, ob der TEMP-Parameter derzeit auf TRUE gesetzt ist, wobei
in diesem Fall die von der OR-Funktion ausgeführte Kombination den Wert des
TEMP-Parameters beibehält,
und die Routine wird beendet.
-
Anderenfalls
geht die Kontrolle zu einem Entscheidungsblock 186 über, um
zu bestimmen, ob die Zeichenfolge EXPi+1 aufgelöst werden
muss (d.h. ob ein boolesches Element aus der Zeichenfolge aufgelöst werden
muss). Falls die Zeichenfolge EXPi+1 einen
AND-Operator hat, geht die Kontrolle zu einem Block 188 über, der
die Zeichenfolge auflöst,
das neu erzeugte boolesche Element im Vektor oder im sonstigen Speicher
speichert und den TEMP-Parameter auf den neu erzeugten Ausgabewert
aus der aufgelösten
Logik setzt. Falls die Zeichenfolge EXPi+1 keinen
AND-Operator hat, bestimmt ein Entscheidungsblock 190,
ob die Zeichenfolge EXPi+1 derzeit auf FALSE
gesetzt ist, wobei in diesem Fall der TEMP-Parameter von der Zeichenfolge
nicht geändert
wird, und die Routine wird beendet. Alternativ dazu geht die Kontrolle,
falls ein Entscheidungsblock 192 bestimmt, dass die Zeichenfolge
EXPi+1 derzeit auf TRUE gesetzt ist, zu
einem Block 194 über,
der den TEMP-Parameter infolge der OR-Kombination auf TRUE setzt.
-
Falls
die Zeichenfolge EXPi+1 nicht auf TRUE gesetzt
ist, geht die Kontrolle zu einem Entscheidungsblock 196 über, der
bestimmt, ob der TEMP-Parameter einen AND-Operator hat und daher zur Vorbereitung für eine OR-Kombination
aufgelöst
werden muss. Ist dies der Fall, löst ein Block 198 den
TEMP-Parameter auf und erzeugt dabei ein neues boolesches Element,
dessen repräsentative
Daten im Vektor oder im Speicher gespeichert werden, und er setzt
den TEMP-Parameter auf den neu erzeugten Ausgabewert aus der aufgelösten Logik.
Nachdem der TEMP-Parameter aufgelöst worden ist, führt ein
Block 200 die OR-Kombination durch, indem TEMP gleich dem
logischen Ausdruck gesetzt wird, wobei TEMP und EXPi+1 durch
einen OR-Operator getrennt sind.
-
Als
Beispiel für
die von der beschriebenen Umsetzungsroutine vorgenommenen Verarbeitungsschritte wird
nun die Abarbeitung der in 2 dargestellten
exemplarischen Ladder Logic in Zusammenhang mit einer Ausführungsform
des beschriebenen Umsetzungsverfahrens beschrieben. Die Ladder Logic
wird zunächst
abgearbeitet, um zu bestimmen, ob Spulen verschoben werden können. Dementsprechend
findet der Block 64 die Spule 38A, und der Block 70 bestimmt,
dass die Spule, zum Teil wegen des Nichtvorliegens einer OR-Funktion
in der Zelle links unterhalb der aktuellen Zelle, komprimiert werden
kann. Der Block 72 verschiebt dann die Spule um eine Zelle
nach links, und der Block 74 setzt die aktuelle Spalte
auf die zweite Spalte der Schiene 32. Die Spule 38A wird
erneut vom Block 64 gefunden, doch diesmal findet der Block 70 die
OR-Funktion, die die Leitersprossen 34A und 34B verknüpft (siehe
die Zelle mit dem Kontakt 36D).
-
Die
Routine zur Spulenkompression wird entsprechend der Darstellung
in 4 fortgesetzt und ergibt nur eine weitere Verschiebung,
und zwar einen in Zusammenhang mit der Spule 38D durchgeführten Vorgang.
-
Nach
der Abarbeitung der Spulenkompression beginnt die Umsetzungsroutine
mit der zellenweisen Abarbeitung der Leiterstruktur auf sequenzielle
Weise entsprechend der Ausführungssequenz
und beginnt daher mit der Zelle und Spalte mit dem Kontakt 36A.
Im weiteren Verlauf des Beispiels werden den in 3 wiedergegebenen
Kontakten und Spulen die folgenden Punktnamen zugeordnet:
-
Tabelle II
-
Kontakt |
Punktname |
Kontakt
36A |
A1 |
Kontakt
36B |
B1 |
Kontakt
36C |
C |
Spule
38A |
C |
Kontakt
36D |
D |
Spule
38D |
E |
-
Die
EXP-Zeichenfolgen werden anhand ihrer Zeilennummer beginnend mit
0 identifiziert und mit dem Wert TRUE initialisiert. Die Umsetzungsroutine
beginnt die drei Erfassungs- und Verarbeitungsphasen mit der in 6 dargestellten
Routine, und der Block 104 findet den normalerweise geöffneten
Kontakt 36A. Bei auf FALSE gesetztem NC kombiniert der
Block 108 EXP0 mit dem Punktnamen
A1 gemäß den Kombinationsregeln
der Tabelle I, sodass EXP0 gleich A1 gesetzt
wird. Die Umsetzungsroutine fährt
mit dem Rest der ersten Spalte fort und geht dann zur darunter befindlichen
Zelle über,
wo der Kontakt 36B vorgefunden wird. Die Routine verarbeitet
die Zelle auf ähnliche
Weise verglichen mit den in Zusammenhang mit der ersten Zelle durchgeführten Schritten,
sodass EXP2 einen Wert TRUE beibehält. Schließlich sind
die beiden letzten Leitersprossen leer, sodass die Zeichenfolgen
EXP3 und EXP4 über die
Ausführung
des Blocks 101 auf einen Wert FALSE geändert werden.
-
Entsprechend
der Darstellung in 5 geht die Verarbeitung der
ersten Spalte dann zur zweiten Phase für Sonderfunktionen entsprechend
Block 86 über.
Die in 7 dargestellte Phase für Sonderfunktionen findet dann
keine Sonderfunktion vor, und die Verarbeitung geht zur dritten
Phase für
OR-Funktionen über. Wenn
keine OR-Funktionen
in der ersten Spalte vorliegen, endet die Verarbeitungsroutine für OR-Funktionen für jede Zelle
nach einem Aufruf der rekursiven Prozedur, wobei der Block 170 keine
OR-Funktion unterhalb der aktuellen Zelle vorfindet.
-
Die
Routine fährt
nach dem Erreichen der in 3 dargestellten
Blocks 58 und 60 mit der zweiten Spalte fort,
und die erste Phase der Verarbeitung beginnt erneut mit der obersten
Zelle in dieser Spalte. In den ersten beiden Zellen werden Leitungen
vorgefunden, wobei die Werte der ersten beiden logischen Ausdrücke erhalten
bleiben (d.h. EXP0 = A1 und EXP1 =
B1). Bei der dritten Leitersprosse wird der Kontakt 36C vorgefunden,
sodass die Zeichenfolge EXP2 über die
Ausführung
der Blocks 107 und 108 auf C gesetzt wird. Während der
ersten Phase der Verarbeitung dieser Spalte werden keine weiteren Änderungen
an den logischen Ausdrücken
vorgenommen. Die Implementierung der zweiten und dritten Verarbeitungsphase
für diese
Spalte führt
ebenfalls zu keiner Veränderung.
-
Die
Umsetzungsroutine fährt
mit der dritten Spalte fort, wobei die erste Phase der Verarbeitung
den Wert des logischen Ausdrucks der ersten Leitersprosse vor dem
Vorfinden des normalerweise geschlossenen Kontakts 36D in
der zweiten Spalte beibehält.
Bis zu dieser Stelle sind Änderungen
der logischen Ausdrücke erfolgt,
doch kein boolesches Logikelement wurde aus den logischen Ausdrücken aufgelöst. Das
erste aufgelöste
und aufgezeichnete boolesche Logikelement, ein NOT-Gate, wird vom
normalerweise geschlossenen Aspekt des Kontakts 36D benötigt. Insbesondere
löst der
Block 114 ein NOT-Gate auf oder erzeugt es, wobei dessen
Definition an der ersten Position des Vektors oder Speichers als
erstes Objekt in der booleschen Logikausgabe gespeichert wird. Das
NOT-Gate kann über
die Speicherung von Informationen definiert werden, wie z.B. die
Zeichenfolge „MAKE
NOTIN, IN1 = D, OUT = MIG-DX-0001". Nach der Auflösung des NOT-Gates bewirkt
die Ausführung
der Blöcke 107 und 108 die Änderung
der Zeichenfolge EXP2, um die Erfassung
des Kontakts 36D auszudrücken. Insbesondere wird die
Zeichenfolge EXP2 zur Zeichenfolge „B1 AND
MIG-DX-0001". Da
in der dritten Spalte keine weiteren Kontakte oder Spulen vorliegen,
fährt die
Routine mit der zweiten Verarbeitungsphase fort.
-
In
der zweiten Phase trifft die Routine auf die Sonderfunktion 40,
wobei der Block 140 (7) bestimmt,
dass die erste Zelle die Attribute TOP und INUB auf TRUE gesetzt
hat, sodass der Block 142 den Wert der Zeichenfolge EXP2, C, auf den Funktionsparameter IN1 anwendet.
Die Verarbeitungsroutine für
Sonderfunktionen des Blocks 150 trifft auch auf die Konstante 100 in
der ersten Zelle und stellt dabei fest, dass der Parameter CELL1
auf 100 gesetzt ist. Diese Konstante gibt den Zeitraum
wieder, über
den der Timer nach der Aktivierung eingeschaltet bleibt. Die Routine
fährt schließlich über den
Block 154 mit der nächsten
Sonderfunktionszelle fort. Als Ausgabezelle erzeugt der Block 146 einen
Ausgangsnamen, z.B. MIG-DX-0002, und wendet diesen Namen auf die
Zeichenfolge EXP3 an, sodass die Zeichenfolge
jetzt gleich MIG-DX-0002 gesetzt ist. Dieser Name wird auch auf
den Sonderfunktionsparameter OUT2 angewandt. Der Block 150 verarbeitet
dann eventuelle Sonderfunktionsparameter. Da keine weiteren Parameter
für die
Sonderfunktion vorliegen, bestimmt der Block 152 anschließend, dass
die letzte Zelle in der Sonderfunktion abgearbeitet worden ist.
Der Block 156 nimmt dann die für die Sonderfunktion erfassten
Informationen zu Eingang, Ausgang und sonstigen Parametern, um sie
in die entsprechende Sonderfunktion in dem bei der booleschen Logik
verwendeten Schema zu übersetzen.
Nachdem die Übersetzung
erfolgt ist, schreibt der Block 158 die Definition der
Sonderfunktion in diesem Schema an die nächste verfügbare Position im Vektor oder
sonstigen Speicher. Beispielsweise könnte ein exemplarischer Timer
mit einer „Ein"-Dauer von 100 Zählimpulsen
im Vektor wie folgt definiert sein: MAKE TIMER_ON, CELL1 = 100,
IN1 = C, OUT2 = MIG-DX-0002. In diesem Beispiel werden die vorangegangenen
Informationen nach der Definition des ersten booleschen Elements,
dem aus dem Kontakt 36D hervorgegangenen NOT-Gate, aufgezeichnet.
-
Die
Routine fährt
dann mit der dritten Verarbeitungsphase fort, bei der die erste
OR-Funktion der exemplarischen Leiterstruktur vorgefunden wird.
Die erste Zelle der dritten Spalte hat eine Leitung, jedoch mit einer
Verbindung zu einer OR-Funktion in der Zelle darunter, die vom Block 170 (8B)
der rekursiven Prozedur erkannt wird. Die Werte des TEMP-Parameters,
der in Block 166 gleich dem Wert von EXP0 gesetzt
worden war, und die Zeichenfolge EXP1 werden
anschließend
gemäß den in 8C wiedergegebenen
Verarbeitungsschritten und insbesondere dem in Block 200 ausgeführten Schritt
kombiniert. Demzufolge haben beide Zeichenfolgen EXP0 und
EXP1 schließlich den gleichen Wert. Im
Einzelnen wird die rekursive Prozedur aufgerufen, sodass der TEMP-Parameter
gleich A1 gesetzt wird, dem Wert der Zeichenfolge EXP0.
Der Block 172 (8B) kombiniert
anschließend
den TEMP-Parameter mit dem Wert der Zeichenfolge EXP1.
Diese Kombination erfolgt in Übereinstimmung
mit den in Zusammenhang mit 8C beschriebenen
Schritten. Da die Zeichenfolge EXP1 einen
AND-Operator hat (d.h. „B1
AND MIG-DX-0001"),
wird ein neues boolesches Element über die Ausführung des
Blocks 188 aufgelöst.
So wird das dritte boolesche Element dann an der nächsten verfügbaren Vektorposition
aufgezeichnet, beispielsweise wie folgt: MAKE AND8, IN1 = B1, IN2
= MIG-DX-0001, OUT = MIG-DX-0003. Mit diesem neuen eindeutigen booleschen
Element führt
der Block 200 die durch den OR-Operator bewirkte Kombination
aus, sodass der TEMP-Parameter anschließend gleich der Zeichenfolge „A1 OR
MIG-DX-0003" gesetzt
wird. Der Block 174 veranlasst einen weiteren Aufruf der
rekursiven Prozedur für
die zweite Zeile mit dem Wert von TEMP. Bei dieser zweiten Iteration
der rekursiven Prozedur findet der Block 170 keine OR-Funktion
in der nächsten
Zelle (d.h. der Zelle in der dritten Zeile der aktuellen Spalte).
Infolgedessen löst
der Block 176 anschließend
das nächste
boolesche Element aus diesem TEMP-Parameter auf, sodass die nächste verfügbare Vektorposition
dann Folgendes enthält:
MAKE OR8, IN1 = A1, IN2 = MIG-DX-0003, OUT1 = MIG-DX-0004. Der TEMP-Parameter
wird anschließend
gleich MIG-DX-0004 gesetzt. Der Block 178 speichert den
Wert von TEMP in der Zeichenfolge EXPi,
um diese Iteration der rekursiven Prozedur zu beenden, wonach die
Kontrolle zu dem Punkt der ersten Iteration zurückgeht, an dem die zweite Iteration
der Prozedur aufgerufen wurde. Insbesondere geht die Kontrolle zum
Block 176 über,
der die (erneute) Auflösung
des TEMP-Parameters veranlasst. Es wird aber keine zusätzliche
boolesche Logik erzeugt, da der TEMP-Parameter einfach (d.h. nicht
komplex) ist. Der letzte während
der dritten Verarbeitungsphase ausgeführte Vorgang wird über den
Block 178 bereitgestellt und umfasst die Änderung
der Zeichenfolge EXP0, um den TEMP-Parameter wiederzugeben.
Dementsprechend wird der Wert der Zeichenfolge EXP0 gleich
MIG-DX-0004 gesetzt.
-
Die
vierte Spalte enthält
infolge der Spulenkompression die Spulen 38A und 38D.
Demzufolge trifft die Umsetzungsroutine zunächst auf die Spule 38A,
und der Block 128 löst
eine OR-Funktion aus der Zeichenfolge EXPi auf,
sodass Folgendes als nächstes
entstandenes boolesches Element gespeichert wird: MAKE OR8, INI
= MIG-DX-0004, OUT = C. Anschließend wird die Spule 38D abgearbeitet,
sodass MAKE OR8, INI = MIG-DX-0002,
OUT = E gilt, und die Routine hat das abschließende boolesche Element aufgelöst.
-
Die
Ergebnisse der Umsetzungsroutine sind im Folgenden wiedergegeben,
wobei die Ausführungsreihenfolge
mit dem ersten (oder obersten) MAKE-Befehl beginnt und durch den
Rest der Befehle fortfährt,
um alle Abschnitte der sich ergebenden booleschen Logik zu erzeugen.
- MAKE NOTIN, IN1 = D, OUT = MIG-DX-0001
- MAKE TIMER_ON, CELL1 = 100, IN1 = C, OUT2 = MIG-DX-0002
- MAKE AND8, IN1 = B1, IN2 = MIG-DX-0001, OUT = MIG-DX-0003
- MAKE ORB, IN1 = A1, IN2 = MIG-DX-0002, OUTI = MIG-DX-0004
- MAKE OR8, INI = MIG-DX-0004, OUT = C
- MAKE OR8, INI = MIG-DX-0002, OUT = E
-
Ausführungsformen
des beschriebenen Systems und Verfahrens können in Hardware oder Software oder
in einer Kombination von beiden implementiert werden. Einige Ausführungsformen
können
als Computerprogramme implementiert werden, die auf programmierbaren
Systemen mit mindestens einem Prozessor, einem Datenspeichersystem
(einschließlich
flüchtiger
und nichtflüchtiger
Speicher- und Sicherungseinrichtungen), mindestens einer Eingabeeinrichtung
und mindestens einer Ausgabe einrichtung ausgeführt werden. Programmcode kann
bei Eingabedaten angewandt werden, um die hier beschriebenen Funktionen
auszuführen
und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf
bereits bekannte Weise bei einer oder mehreren Ausgabeeinrichtungen
angewandt werden. Zum Zweck dieser Anwendung enthält ein Verarbeitungssystem
in beliebiges System mit einem Prozessor, wie z.B. einem digitalen
Signalprozessor (DSP), einem Mikrocontroller, einer anwendungsspezifischen
integrierten Schaltung (ASIC) oder einem Mikroprozessor.
-
Die
Programme können
in einer problem-, prozedur- oder objektorientierten Programmiersprache
zur Kommunikation mit einem Verarbeitungssystem implementiert sein.
Die Programme können
bei Bedarf auch in Assembler- oder Maschinensprache implementiert
sein. So ist der Einsatz des beschriebenen Systems und Verfahrens
nicht auf eine bestimmte Programmiersprache beschränkt. In
jedem Fall kann die Sprache eine kompilierte oder interpretierte
Sprache sein.
-
De
Programme können
als eine oder mehrere Anweisungsmengen, kompiliert oder nicht, auf
einem Speichermedium oder in einer Speichereinrichtung gespeichert
werden (z.B. Floppy-Disk-Laufwerk, Nur-Lese-Speicher (ROM), CD-ROM-Einrichtung,
Flash-Memory-Einrichtung, Digital Versatile Disk (DVD) oder andere
Speichereinrichtungen), die von einem allgemeinen oder zweckorientierten
Verarbeitungssystem gelesen werden kann, um das Verarbeitungssystem
zu konfigurieren und zu betreiben, wenn das Speichermedium oder
die Speichereinrichtung vom Verarbeitungssystem gelesen wird, um
die hier beschriebenen Prozeduren auszuführen. Ausführungsformen des beschriebenen
Systems und Verfahrens können
auch zur Implementierung als ein maschinenlesbares Speichermedium
berücksichtigt
werden, das zur Verwendung mit einem Verarbeitungssystem konfiguriert
ist, wobei das so konfigurierte Speichermedium das Verarbeitungssystem
veranlasst, in einer spezifischen und vorbestimmten Weise die hier
beschriebenen Funktionen auszuführen.
-
Bei
der Implementierung in Software können die hier beschriebenen
Routinen in einem beliebigen computerlesbaren Speicher gespeichert
werden, wie z.B. auf Magnetplatten, Laser-Disks, optischen Speicherplatten
oder anderen Speichermedien, sowie in einem RAM oder ROM eines Computers
oder Prozessors usw. Entsprechend kann diese Soft ware einem Benutzer
oder einem Prozesssteuersystem über
ein beliebiges bekanntes oder gewünschtes Bereitstellungsverfahren
zur Verfügung
gestellt werden, einschließlich
beispielsweise computerlesbarer Platten oder anderer transportabler
Computerspeichermechanismen, oder in modulierter Form über einen
Kommunikationskanal, wie z.B. eine Telefonleitung, das Internet
usw. (wobei dies als gleich bzw. austauschbar in Bezug auf die Bereitstellung
der Software über
ein transportables Speichermedium angesehen wird).
-
Die
vorstehende Beschreibung ist lediglich zum besseren Verständnis wiedergegeben,
und es dürfen daraus
keine unnötigen
Einschränkungen
abgeleitet werden, da Änderungen
im Rahmen des Schutzbereichs der Erfindung für Fachleute auf diesem Gebiet
unmittelbar verständlich
sind.