DE102006001101A1 - Verfahren und System zur Umsetzung von Ladder Logic in Boolesche Logik in einem Prozesssteuersystem - Google Patents

Verfahren und System zur Umsetzung von Ladder Logic in Boolesche Logik in einem Prozesssteuersystem Download PDF

Info

Publication number
DE102006001101A1
DE102006001101A1 DE102006001101A DE102006001101A DE102006001101A1 DE 102006001101 A1 DE102006001101 A1 DE 102006001101A1 DE 102006001101 A DE102006001101 A DE 102006001101A DE 102006001101 A DE102006001101 A DE 102006001101A DE 102006001101 A1 DE102006001101 A1 DE 102006001101A1
Authority
DE
Germany
Prior art keywords
ladder
logic
boolean
routine
rungs
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102006001101A
Other languages
English (en)
Inventor
Frederick F. Klein
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Emerson Process Management Power and Water Solutions Inc
Original Assignee
Emerson Process Management Power and Water Solutions Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Emerson Process Management Power and Water Solutions Inc filed Critical Emerson Process Management Power and Water Solutions Inc
Publication of DE102006001101A1 publication Critical patent/DE102006001101A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13018Conversion ladder diagram to decision system, machine code, language

Abstract

Beschrieben ist ein Verfahren zur Umsetzung einer Ladder-Logic-Routine in boolesche Logik. Boolesche Wiedergaben der Ladder-Logic-Elemente der Ladder-Logic-Routine werden in entsprechenden logischen Ausdrücken für jede Leitersprosse der Vielzahl von Leitersprossen, die die Ladder-Logic-Routine definieren, erfasst. Boolesche Logikelemente werden dann aus den logischen Ausdrücken aufgelöst. Die booleschen Logikelemente werden anschließend in einem Speicher in einer Reihenfolge gespeichert, in der die booleschen Logikelemente aufgelöst werden, um die Ladder-Logic-Routine entsprechend einer Ausführungssequenz der Ladder-Logic-Routine auszudrücken.

Description

  • 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.
  • 8A8C 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 34A34D 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 34A34D 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 34A34C 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 36A36C 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 107119 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
    Figure 00320001
  • 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 107110 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.

Claims (36)

  1. Verfahren zur Abarbeitung einer Routine, die über in einer Vielzahl von als Leitersprossen angeordnete Ladder-Logic-Elemente ausgedrückt ist, gemäß einer Ausführungssequenz, wobei das Verfahren folgende Schritte umfasst: Sammlung von booleschen Darstellungen der Ladder-Logic-Elemente in einem entsprechenden logischen Ausdruck für jede Leitersprosse der Vielzahl von Leitersprossen; Auflösung von booleschen Logikelementen aus den logischen Ausdrücken; und Speichern von Informationen zu den booleschen Logikelementen in einem Speicher entsprechend der Ausführungssequenz zur Wiedergabe der Routine in boolescher Logik.
  2. Verfahren nach Anspruch 1, wobei der Auflösungsschritt ausgeführt wird, falls die weitere Erfassung von booleschen Wiedergaben in einem der entsprechenden logischen Ausdrücke zu einer Kombination unähnlicher boolescher Logikfunktionen führen würde.
  3. Verfahren nach Anspruch 1, wobei der Erfassungsschritt die Schritte der Bewertung jedes Ladder-Logic-Elements zur Bestimmung eines dadurch ausgeführten Vorgangs sowie die Aktualisierung des entsprechenden logischen Ausdrucks zum Ausdrücken des Vorgangs umfasst.
  4. Verfahren nach Anspruch 1, wobei der Speicherschritt den Schritt des Schreibens einer Definition des booleschen Logikelements als ein vom logischen Ausdruck getrenntes Objekt in den Speicher umfasst.
  5. Verfahren nach Anspruch 4, wobei das Objekt in eine Position im Speicher mit Bezug auf weitere, anderen booleschen Logikelementen zugeordnete Objekte geschrieben wird, die die Ausführungssequenz der Routine beibehält.
  6. Verfahren nach Anspruch 5, wobei die Ladder-Logic-Elemente in Spaltenpositionen in jeder Leitersprosse angeordnet sind und wobei die Ausführungssequenz spaltenweise fortfährt.
  7. Verfahren nach Anspruch 1, wobei ferner der Schritt der Fortführung an einer anderen Leitersprosse der Vielzahl von Leitersprossen zur Bewertung eines nachfolgenden Ladder-Logic-Elements vor der Bewertung eines anderen Ladder-Logic-Elements in der erstbenannten Leitersprosse umfasst ist.
  8. Verfahren nach Anspruch 1, wobei ferner der Schritt der Kompression jeder Leitersprosse der Vielzahl von Leitersprossen mit einem Spulen-Logikelement vor dem Erzeugungsschritt durch die Verschiebung einer Position des Spulen-Logikelements in der entsprechenden Leitersprosse umfasst ist, bis ein anderes Ladder-Logic-Element vorgefunden wird.
  9. Verfahren nach Anspruch 1, wobei ferner die Schritte (i) der Identifizierung einer nicht-booleschen Funktion mit über mehrere Leitersprossen der Vielzahl von Leitersprossen verteilte Einheiten und (ii) der Auflösung eines weiteren booleschen Logikelements aus einem entsprechenden logischen Ausdruck für die Leitersprosse der Vielzahl von Leitersprossen, die mit einem Eingang der nicht-booleschen Funktion verknüpft sind, umfasst sind.
  10. Verfahren nach Anspruch 9, wobei ferner der Schritt des Speicherns eines Objekts mit der Wiedergabe der nicht-booleschen Funktion im Speicher gemäß der Ausführungssequenz umfasst ist.
  11. Verfahren nach Anspruch 1, wobei der Erfassungsschritt den Schritt der Kombination von zwei oder mehr logischen Ausdrücken für benachbarte Leitersprossen der Vielzahl von Leitersprossen, die über eine oder mehrere OR-Funktionen verknüpft sind, umfasst, um einen zusammengesetzten logischen Ausdruck für jede der zwei oder mehr entsprechenden logischen Ausdrücke zu erzeugen.
  12. Verfahren nach Anspruch 11, wobei die Kombinationsschritt den Schritt der Ausführung einen rekursiven Prozedur umfasst.
  13. Verfahren nach Anspruch 1, wobei der Erfassungsschritt den Schritt der Initialisierung des entsprechenden logischen Ausdrucks jeder Leitersprosse der Vielzahl von Leitersprossen mit einem Wert TRUE umfasst.
  14. Verfahren nach Anspruch 1, wobei der Auflösungsschritt bei jedem Vorliegen einer Spule in der Vielzahl von Leitersprossen ausgeführt wird.
  15. Verfahren nach Anspruch 1, wobei der Auflösungsschritt den Schritt der Auflösung eines Inverters bei jedem Vorliegen eines normal geschlossenen Kontakts in der Vielzahl von Leitersprossen umfasst.
  16. System zur Umsetzung einer über Ladder-Logic-Elemente ausgedrückten Logikroutine, die in einer Vielzahl von Leitersprossen angeordnet ist, wobei das System Folgendes umfasst: einen Prozessor; einen mit dem Prozessor gekoppelten computerlesbaren Speicher; und eine im computerlesbaren Speicher gespeicherte und für die Ausführung durch den Prozessor konfigurierte Logik-Umsetzungsroutine, wobei die Logik-Umsetzungsroutine umfasst: eine Verarbeitungsroutine für Ladder-Logic-Elemente, die boolesche Wiedergaben der Ladder-Logic-Elemente in einem entsprechenden logischen Ausdruck für jede Leitersprosse der Vielzahl von Leitersprossen sammelt und die ein boolesches Logikelement aus dem entsprechenden logischen Ausdruck auflöst, wenn die weitere Sammlung unterschiedliche boolesche Funktionen in dem entsprechenden logischen Ausdruck festschreiben würde.
  17. System nach Anspruch 16, wobei die Logik-Umsetzungsroutine weiter eine Verarbeitungsroutine für OR-Funktionen umfasst, die beim Vorfinden einer OR-Funktion (i) mehrere entsprechende logische Ausdrücke für benachbarte Leitersprossen der durch die OR-Funktion verknüpften Vielzahl von Leitersprossen kombiniert, um eine Kombination der mehreren entsprechenden logischen Ausdrücke auszudrücken, und (ii) jeden der mehreren entsprechenden logischen Ausdrücke abwandelt, um die Kombination auszudrücken.
  18. System nach Anspruch 17, wobei die Verarbeitungsroutine für die OR-Funktion eine rekursive Prozedur ausführt.
  19. System nach Anspruch 18, wobei die rekursive Prozedur ausgeführt wird, wenn das aktuell abgearbeitete Ladder-Logic-Element keine OR-Funktion enthält.
  20. System nach Anspruch 16, wobei die Verarbeitungsroutine für Ladder-Logic-Elemente eine Spulen-Verarbeitungsroutine umfasst, die beim Vorfinden einer Spule in einer aktuellen Leitersprosse der Vielzahl von Leitersprossen den logischen Ausdruck für die aktuelle Leitersprosse in ein weiteres boolesches Logikelement auflöst.
  21. System nach Anspruch 16, wobei die Logik-Umsetzungsroutine weiter eine Verarbeitungsroutine für nicht-boolesche Funktionen umfasst, die Positionsinformationen in einer nicht-booleschen Funktion mit über mehrere Leitersprossen verteilten Einheiten bestimmt.
  22. System nach Anspruch 21, wobei die Verarbeitungsroutine für nicht-boolesche Funktionen ein weiteres boolesches Logikelement aus dem entsprechenden logischen Ausdruck jeder Leitersprosse der Vielzahl von Leitersprossen auflöst, die als an einen Eingang der nicht-booleschen Funktion gekoppelt erkannt wurden.
  23. System nach Anspruch 16, wobei die Verarbeitungsroutine für Ladder-Logic-Elemente Informationen mit der Definition des booleschen Elements als Objekt in einem Vektor speichert, der eine Ausführungssequenz der Logikroutine beibehält.
  24. System nach Anspruch 23, wobei die das erstbenannte booleschen Logikelement definierende Information gespeichert wird, bevor die Verarbeitungsroutine für Ladder-Logic-Elemente mit der Abarbeitung eines folgenden Ladder-Logic-Elements fortfährt.
  25. System nach Anspruch 16, wobei die Ausführungssequenz spaltenweise fortfährt, sodass nacheinander abgearbeitete Ladder-Logic-Elemente in unterschiedlichen Leitersprossen der Vielzahl von Leitersprossen angeordnet sind.
  26. System nach Anspruch 16, wobei die Logik-Umsetzungsroutine weiter eine Kompressionsroutine umfasst, die jede Leitersprosse der Vielzahl von Leitersprossen über die Verschiebung einer Position eines Spulen-Logikelements in einer Leitersprosse der Vielzahl von Leitersprossen komprimiert, bis ein anderes Ladder-Logic-Element vorgefunden wird.
  27. Auf einem computerlesbaren Medium gespeichertes Computerprogrammprodukt zur Umsetzung einer über in einer Vielzahl von Leitersprossen angeordnete Ladder-Logic-Elemente ausgedrückten Ladder-Logic-Routine, wobei das Computerprogrammprodukt Folgendes umfasst: einen ersten Anweisungssatz, der boolesche Wiedergaben der Ladder-Logic-Elemente in einem entsprechenden logischen Ausdruck für jede Leitersprosse der Vielzahl von Leitersprossen sammelt; und einen zweiten Anweisungssatz, der bestimmt, ob boolesche Logikelemente aus den logischen Ausdrücken aufgelöst werden; einen dritten Anweisungssatz, der die booleschen Logikelemente in einem Speicher entsprechend einer Reihenfolge speichert, in der die booleschen Logikelemente aufgelöst werden.
  28. Computerprogrammprodukt nach Anspruch 27, wobei die zweite Anweisungsmenge ausgeführt wird, wenn die weitere Erfassung der booleschen Wiedergaben in einem der logischen Ausdrücke durch die erste Anweisungsmenge zu einer Kombination unähnlicher boolescher Logikfunktionen führen würde.
  29. Computerprogrammprodukt nach Anspruch 27, wobei der erste Anweisungssatz jedes Ladder-Logic-Element bewertet, um einen davon ausgeführten Vorgang zu bestimmen, und den entsprechenden logischen Ausdruck zur Wiedergabe des Vorgangs aktualisiert.
  30. Computerprogrammprodukt nach Anspruch 27, wobei der dritte Anweisungssatz entsprechende Definitionen jedes booleschen Logikelements als entsprechendes Objekt, das vom logischen Ausdruck gelöst ist, aus dem das boolesche Logikelement aufgelöst wurde, in den Speicher schreibt.
  31. Computerprogrammprodukt nach Anspruch 30, wobei die Reihenfolge, in der die Objekte gespeichert werden, eine Ausführungssequenz der Ladder-Logic-Routine beibehält.
  32. Computerprogrammprodukt nach Anspruch 31, wobei die Ladder-Logic-Elemente in Spaltenpositionen in jeder Leitersprosse angeordnet sind und wobei die Ausführungssequenz spaltenweise fortfährt.
  33. Computerprogrammprodukt nach Anspruch 27, wobei ferner ein vierter Anweisungssatz umfasst ist, der eine nicht-boolesche Funktion mit über mehrere Leitersprossen der Vielzahl von Leitersprossen verteilte Einheiten identifiziert und der ein weiteres boolesches Logikelement aus einem entsprechenden logischen Ausdruck für die Leitersprosse der Vielzahl von Leitersprossen auflöst, die mit einem Eingang der nicht-booleschen Funktion verbunden ist.
  34. Computerprogrammprodukt nach Anspruch 33, wobei ferner ein fünfter Anweisungssatz umfasst ist, der ein Objekt, das die nicht-boolesche Funktion wiedergibt, im Speicher speichert.
  35. Computerprogrammprodukt nach Anspruch 27, wobei der erste Anweisungssatz zwei oder mehr entsprechende logische Ausdrücke für benachbarte Leitersprossen der Vielzahl von Leitersprossen, die über eine oder mehrere OR-Funktionen verknüpft sind, kombiniert, um einen zusammengesetzten logischen Ausdruck für jeden der zwei oder mehr entsprechenden logischen Ausdrücke zu erzeugen.
  36. Computerprogrammprodukt nach Anspruch 35, wobei der erste Anweisungssatz eine rekursive Prozedur umfasst.
DE102006001101A 2005-01-10 2006-01-09 Verfahren und System zur Umsetzung von Ladder Logic in Boolesche Logik in einem Prozesssteuersystem Withdrawn DE102006001101A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/032,273 US20060155393A1 (en) 2005-01-10 2005-01-10 Method and system for converting ladder logic to boolean logic in a process control system
US11/032,273 2005-01-10

Publications (1)

Publication Number Publication Date
DE102006001101A1 true DE102006001101A1 (de) 2006-07-20

Family

ID=35911590

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006001101A Withdrawn DE102006001101A1 (de) 2005-01-10 2006-01-09 Verfahren und System zur Umsetzung von Ladder Logic in Boolesche Logik in einem Prozesssteuersystem

Country Status (5)

Country Link
US (1) US20060155393A1 (de)
CN (1) CN1811630A (de)
CA (1) CA2532232A1 (de)
DE (1) DE102006001101A1 (de)
GB (1) GB2422033A (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8448149B2 (en) * 2007-02-19 2013-05-21 Schneider Electric Automation Gmbh Method for the conversion of ladder diagrams
US9519804B2 (en) 2013-02-05 2016-12-13 Hackproof Technologies, Inc. Domain-specific hardwired symbolic machine that validates and maps a symbol
US10303881B2 (en) 2013-02-05 2019-05-28 Hackproof Technologies Inc. Soft-wired radio (SWR) web machine
WO2017066427A1 (en) 2015-10-13 2017-04-20 Hackproof Technologies, Inc. Soft-wired radio (swr) web machine
US10751880B2 (en) * 2016-03-30 2020-08-25 Panasonic Intellectual Property Management Co., Ltd. Data storage device, robot system, and data storage method
US10956572B2 (en) 2016-08-22 2021-03-23 Hackproof Technologies Inc. Domain-specific hardwired web browser machine
US10762256B2 (en) * 2017-03-28 2020-09-01 Rockwell Automation Technologies, Inc. Hand-drawn ladder logic conversion method and system
JP7038554B2 (ja) * 2018-01-17 2022-03-18 三菱重工エンジニアリング株式会社 検証処理装置、ロジック生成装置及び検証処理方法
JP6795568B2 (ja) * 2018-11-07 2020-12-02 ファナック株式会社 トレース装置及びプログラマブルコントローラ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504902A (en) * 1993-12-01 1996-04-02 Patriot Sensors And Controls Corporation Multi-language generation of control program for an industrial controller
US5623401A (en) * 1995-08-16 1997-04-22 Allen-Bradley Company, Inc. Industrial controller with optimized execution of relay ladder logic programs
US5731712A (en) * 1995-11-09 1998-03-24 Welch; John T. Programmable gate array for relay ladder logic
US6192506B1 (en) * 1998-03-31 2001-02-20 Westinghouse Process Control, Inc. Controller for solving logic
US7024665B2 (en) * 2002-07-24 2006-04-04 Smar Research Corporation Control systems and methods for translating code from one format into another format

Also Published As

Publication number Publication date
US20060155393A1 (en) 2006-07-13
CN1811630A (zh) 2006-08-02
GB0600352D0 (en) 2006-02-15
GB2422033A (en) 2006-07-12
CA2532232A1 (en) 2006-07-10

Similar Documents

Publication Publication Date Title
DE102006001101A1 (de) Verfahren und System zur Umsetzung von Ladder Logic in Boolesche Logik in einem Prozesssteuersystem
DE102017005933B4 (de) Bearbeitungsprogrammeditiervorrichtung, Verfahren und Speichermedium
DE10210675B4 (de) Steuerungen, Erweiterungsplatten und Kommunikationseinheiten
DE60209631T2 (de) Verfahren zur Programmierung einer Automatisierungsapplikation
EP1430369B1 (de) Dynamischer zugriff auf automatisierungsressourcen
DE4210376C2 (de) Verfahren zum Erstellen eines Produktionssystems
EP2671122B1 (de) Automatisierte projektierung einer leittechnik einer technischen anlage
EP3298729A1 (de) Automatisierter topologiescan
EP1036352B1 (de) Verfahren zur bildschirmgestützten definition und parametrierung von schnittstellen
DE2744434A1 (de) Prozessteuersystem und verfahren zur prozessteuerung
EP1005215B1 (de) Verfahren und Vorrichtung zum Editieren von Konfigurationsdaten für Telekommunikationssysteme
EP0642067A1 (de) Dialogorientiertes Programmiersystem für eine CNC-Werkzeugmaschine
DE10305637A1 (de) Verfahren zur Projektierung eines elektrischen Systems
EP1347376B1 (de) Software zur Visualisierung hierarchisch stufbaren Objekten
DE10038441B4 (de) "Flow Chart Programmierung für industrielle Steuerungen, insbesondere Bewegungssteuerungen"
DE102008023873A1 (de) Verfahren zum Betrieb eines Antriebssystems
DE102020124479A1 (de) Optimierungsvorrichtung
EP1798617B1 (de) Verfahren zur Inbetriebnahme von numerischen Steuerungen für Werkzeug- oder Produktionsmaschinen
EP1226475B1 (de) Verfahren zum erstellen von leittechnik-programmcode
EP1795982A1 (de) Verfahren und System zur Transformation von Elementen eines in einer Funktionsplandarstellung vorliegenden Steuerungsprogramms in eine Kontaktplandarstellung
WO1994012914A1 (de) Verfahren zum erstellen der anwendungsabhängigen logik eines freiprogrammierbaren schaltwerkes, einrichtung zur durchführung dieses verfahres und einrichtung zum betrieb eines steuerungssystems unter verwendung eines so erstellten programms
EP1795999A1 (de) Verfahren und System zur Transformation von Elementen eines in einer Kontaktplandarstellung vorliegenden Steuerungsprogramms in eine Funktionsplandarstellung
DE102013002085A1 (de) SPS-Funktionsbausteine für Energieverwaltungsfunktionalitäten
DE10060206A1 (de) Programmiergerät
EP3717975A1 (de) Verfahren und vorrichtung zur projektierung einer spezifi-schen verfahrenstechnischen anlage

Legal Events

Date Code Title Description
R005 Application deemed withdrawn due to failure to request examination

Effective date: 20130110