Kontaktplanlogik – Wikipedia

before-content-x4

Kontaktplanlogik war ursprünglich eine schriftliche Methode zur Dokumentation des Entwurfs und der Konstruktion von Relais-Racks, wie sie bei der Herstellung und Prozesssteuerung verwendet werden.[1] Jedes Gerät im Relais-Rack wird durch ein Symbol im Kontaktplan dargestellt, wobei die Verbindungen zwischen diesen Geräten angezeigt werden. Darüber hinaus werden im Kontaktplan auch andere Elemente außerhalb des Relais-Racks angezeigt, z. B. Pumpen, Heizungen usw.

after-content-x4

Die Kontaktplanlogik hat sich zu einer Programmiersprache entwickelt, die ein Programm durch ein grafisches Diagramm darstellt, das auf den Schaltplänen der Relaislogikhardware basiert. Die Kontaktplanlogik wird verwendet, um Software für speicherprogrammierbare Steuerungen (SPS) zu entwickeln, die in industriellen Steuerungsanwendungen verwendet werden. Der Name basiert auf der Beobachtung, dass Programme in dieser Sprache Leitern ähneln, mit zwei vertikalen Schienen und einer Reihe horizontaler Sprossen dazwischen. Während Kontaktplandiagramme früher die einzige verfügbare Notation für die Aufzeichnung programmierbarer Steuerungsprogramme waren, sind heute andere Formulare in IEC 61131-3 standardisiert (als Alternative zur grafischen Kontaktplanlogik gibt es beispielsweise auch eine Assemblersprache wie das Format Instruction Liste innerhalb der Norm IEC 61131-3.).

Überblick[edit]

Kontaktplanlogik wird häufig zum Programmieren von SPSen verwendet, bei denen eine sequentielle Steuerung eines Prozesses oder eines Herstellungsvorgangs erforderlich ist. Die Kontaktplanlogik ist nützlich für einfache, aber kritische Steuerungssysteme oder für die Überarbeitung alter festverdrahteter Relaisschaltungen. Mit zunehmender Komplexität der speicherprogrammierbaren Steuerungen wurde sie auch in sehr komplexen Automatisierungssystemen eingesetzt. Oft wird das Kontaktplanprogramm in Verbindung mit einem HMI-Programm verwendet, das auf einer Computerarbeitsstation ausgeführt wird.

Die Motivation für die Darstellung der sequentiellen Steuerlogik in einem Kontaktplan bestand darin, Fabrikingenieuren und Technikern die Entwicklung von Software ohne zusätzliche Schulung zum Erlernen einer Sprache wie FORTRAN oder einer anderen allgemeinen Computersprache zu ermöglichen. Entwicklung und Wartung wurden aufgrund der Ähnlichkeit mit bekannten Relais-Hardwaresystemen vereinfacht.[2] Implementierungen der Kontaktplanlogik können Merkmale aufweisen, wie z. B. die sequentielle Ausführung und die Unterstützung von Kontrollflussmerkmalen, die die Analogie zur Hardware etwas ungenau machen.

Die Kontaktplanlogik kann eher als regelbasierte Sprache als als prozedurale Sprache betrachtet werden. Eine “Sprosse” in der Leiter repräsentiert eine Regel. Bei der Implementierung mit Relais und anderen elektromechanischen Geräten werden die verschiedenen Regeln gleichzeitig und sofort ausgeführt. Bei der Implementierung in einer speicherprogrammierbaren Steuerung werden die Regeln normalerweise nacheinander von der Software in einer Endlosschleife oder “Scan” ausgeführt. Durch schnelles Ausführen der Schleife, typischerweise viele Male pro Sekunde, wird der Effekt einer gleichzeitigen und sofortigen Ausführung erreicht. Die ordnungsgemäße Verwendung programmierbarer Steuerungen erfordert ein Verständnis der Einschränkungen der Ausführungsreihenfolge von Sprossen.

Syntax und Beispiele[edit]

Die Sprache selbst kann als eine Reihe von Verbindungen zwischen logischen Prüfern (Kontakten) und Aktoren (Spulen) angesehen werden. Wenn ein Pfad zwischen der linken Seite des Strompfads und dem Ausgang durch aktivierte (wahr oder “geschlossen”) Kontakte verfolgt werden kann, ist der Strompfad wahr und das Speicherbit der Ausgangsspule ist aktiviert (1) oder wahr. Wenn kein Pfad verfolgt werden kann, ist der Ausgang falsch (0) und die “Spule” wird analog zu elektromechanischen Relais als “stromlos” betrachtet. Die Analogie zwischen logischen Aussagen und Relaiskontaktstatus ist Claude Shannon zu verdanken.

Die Kontaktplanlogik verfügt über Kontakte, die Schaltkreise zur Steuerung von Spulen herstellen oder unterbrechen. Jede Spule oder jeder Kontakt entspricht dem Status eines einzelnen Bits im Speicher der programmierbaren Steuerung. Im Gegensatz zu elektromechanischen Relais kann ein Kontaktplanprogramm beliebig oft auf den Status eines einzelnen Bits verweisen, was einem Relais mit einer unbegrenzt großen Anzahl von Kontakten entspricht.

after-content-x4

Sogenannte “Kontakte” können sich auf physische (“harte”) Eingaben in die programmierbare Steuerung von physischen Geräten wie Drucktasten und Endschaltern über ein integriertes oder externes Eingangsmodul beziehen oder den Status von internen Speicherbits darstellen, die erzeugt werden können an anderer Stelle im Programm.

Jede Sprosse der Leitersprache hat normalerweise eine Spule ganz rechts. Einige Hersteller erlauben möglicherweise mehr als eine Ausgangsspule auf einem Strompfad.

  • Strompfad-Eingang: Prüfer (Kontakte)
    • —[ ]— Normalerweise offener Kontakt, geschlossen, wenn die entsprechende Spule oder ein Eingang, der sie steuert, erregt wird. (Offener Kontakt in Ruhe)
    • —[]— Normalerweise geschlossener (“nicht”) Kontakt, geschlossen, wenn die entsprechende Spule oder ein Eingang, der sie steuert, nicht erregt ist. (Geschlossener Kontakt in Ruhe)
  • Strompfadausgang: Aktuatoren (Spulen)
    • —( )— Normalerweise inaktive Spule, die bei geschlossenem Strompfad erregt wird. (In Ruhe inaktiv)
    • —()— Normalerweise aktive (“nicht”) Spule, die immer dann erregt wird, wenn ihr Strompfad geöffnet ist. (Aktiv in Ruhe)

Die “Spule” (Ausgang eines Strompfads) kann einen physischen Ausgang darstellen, der ein mit der programmierbaren Steuerung verbundenes Gerät betreibt, oder kann ein internes Speicherbit zur Verwendung an anderer Stelle im Programm darstellen.

Eine Möglichkeit, sich daran zu erinnern, besteht darin, sich die Prüfer (Kontakte) als Druckknopf-Eingang und die Aktuatoren (Spulen) als Glühbirnen-Ausgang vorzustellen. Das Vorhandensein eines Schrägstrichs in den Prüfern oder Aktuatoren würde den Standardzustand des Geräts in Ruhe anzeigen.

Logisches UND[edit]

 ------[ ]--------------[ ]----------------( )
   Key switch 1      Key switch 2       Door motor

Das Obige realisiert die Funktion: Türmotor = Schlüsselschalter 1 UND Schlüsselschalter 2

Diese Schaltung zeigt zwei Schlüsselschalter, mit denen Sicherheitspersonal einen Elektromotor an einer Banktresortür aktivieren kann. Wenn die normalerweise offenen Kontakte beider Schalter schließen, kann Strom zum Motor fließen, der die Tür öffnet.

Logisch UND mit NICHT[edit]

 ------[ ]--------------[]----------------( )
   Close door      Obstruction         Door motor

Das Obige realisiert die Funktion: Türmotor = Tür schließen UND NICHT (Hindernis).

Diese Schaltung zeigt einen Druckknopf, der eine Tür schließt, und einen Hindernisdetektor, der erkennt, ob der schließenden Tür etwas im Wege steht. Wenn der normalerweise geöffnete Druckknopfkontakt schließt und der normalerweise geschlossene Hindernisdetektor geschlossen wird (kein Hindernis erkannt), kann Elektrizität zu dem Motor fließen, der die Tür schließt.

Logisches ODER[edit]

 --+-------[ ]-------+-----------------( )
   | Exterior unlock |                 Unlock
   |                 |
   +-------[ ]-------+
     Interior unlock

Das Obige realisiert die Funktion: Entsperren = Innen entsperren ODER Außen entsperren

Diese Schaltung zeigt die beiden Dinge, die die elektrischen Türschlösser eines Autos auslösen können. Der Fernempfänger ist immer mit Strom versorgt. Der Entriegelungsmagnet wird mit Strom versorgt, wenn einer der Kontakte geschlossen ist.

Industrieller STOP / START[edit]

In der üblichen Start / Stopp-Logik für industrielle Verriegelungen haben wir eine “Start” -Taste zum Einschalten eines Motorschützes und eine “Stop” -Taste zum Ausschalten des Schützes.

Wenn die Taste “Start” gedrückt wird, wird die Eingabe über den NC-Kontakt der Taste “Stop” wahr. Wenn der “Run” -Eingang wahr wird, wird der NO-Kontakt “Run” parallel zum NO-Kontakt “Start” geschlossen, wobei die Eingangslogik wahr bleibt (verriegelt oder versiegelt). Nach dem Verriegeln des Stromkreises kann die Taste “Stop” gedrückt werden, wodurch sich der Öffnerkontakt öffnet und folglich der Eingang falsch wird. Der NO-Kontakt “Run” wird dann geöffnet und die Schaltungslogik kehrt in ihren inaktiven Zustand zurück.

 --+----[ ]--+----[]----( )
   |   Start |   Stop    Run
   |         |
   +----[ ]--+
        Run
 -------[ ]--------------( )
        Run             Motor

Das Obige realisiert die Funktion: Run = (Start OR Run) AND (NOT Stop)

Diese Latch-Konfiguration ist eine gängige Redewendung in der Kontaktplanlogik. Es kann auch als “Seal-In-Logik” bezeichnet werden. Der Schlüssel zum Verständnis der Verriegelung liegt darin, zu erkennen, dass der “Start” -Schalter ein Momentschalter ist (sobald der Benutzer die Taste loslässt, ist der Schalter wieder geöffnet). Sobald der Magnet “Run” einrastet, schließt er den NO-Kontakt “Run”, der den Magneten einrastet. Das Öffnen des “Start” -Schalters hat dann keine Wirkung.

Hinweis: In diesem Beispiel steht “Run” für den Status eines Bits in der SPS, während “Motor” für den tatsächlichen Ausgang des realen Relais steht, das den realen Stromkreis des Motors schließt.

Aus Sicherheitsgründen kann ein Not-Aus in Reihe mit dem Startschalter fest verdrahtet sein, und die Relaislogik sollte dies widerspiegeln.

 --[]----[]----+--[ ]--+---------( )
   ES    Stop    | Start |        Run
                 |       |
                 +--[ ]--+
                    Run
 -------[ ]--------------( )
        Run             Motor

Das Obige realisiert die Funktion: Run = (NICHT Not-Aus) UND (NICHT Stopp) UND (Start ODER Ausführen)

Komplexe Logik[edit]

Hier ist ein Beispiel dafür, wie zwei Sprossen in einem Kontaktplanprogramm aussehen könnten. In realen Anwendungen können Hunderte oder Tausende von Sprossen vorhanden sein.

In der Regel wird die komplexe Kontaktplanlogik von links nach rechts und von oben nach unten “gelesen”. Wenn jede der Leitungen (oder Sprossen) ausgewertet wird, kann die Ausgangsspule eines Strompfads als Eingang in die nächste Stufe der Leiter eingespeist werden. In einem komplexen System befinden sich auf einer Leiter viele “Sprossen”, die in der Reihenfolge ihrer Bewertung nummeriert sind.

 1. ----[ ]---------+----[ ]-----+----( )
      Switch        |   HiTemp   |    A/C

                    |            |
                    +----[ ]-----+
                        Humid
 2. ----[ ]----[]--------------------( )
        A/C    Heat                 Cooling

Zeile 1 realisiert die Funktion: A / C = Schalter AND (HiTemp OR Humid)

Zeile 2 realisiert die Funktion: Kühlen = A / C UND (NICHT Heizen)

Dies stellt ein etwas komplexeres System für Strompfad 2 dar. Nachdem die erste Leitung ausgewertet wurde, wird die Ausgangsspule “A / C” in Strompfad 2 eingespeist, der dann ausgewertet wird, und die Ausgangsspule “Cooling” könnte in einen Ausgang eingespeist werden Gerät “Kompressor” oder in Sprosse 3 auf der Leiter. Mit diesem System können sehr komplexe Logikdesigns aufgeschlüsselt und bewertet werden.

Zusätzliche Funktionalität[edit]

Zusätzliche Funktionen können einer Leiterlogikimplementierung durch den SPS-Hersteller als spezieller Block hinzugefügt werden. Wenn der Spezialblock mit Strom versorgt wird, führt er Code für vorgegebene Argumente aus. Diese Argumente können innerhalb des speziellen Blocks angezeigt werden.

                              +-------+
  -----[ ]--------------------+  A    +----
   Remote unlock              +-------+
                           Remote counter
                             +-------+    
 -----[ ]--------------------+  B    +----
  Interior unlock            +-------+      
                         Interior counter 
                      +--------+
  --------------------+ A + B  +-----------
                      | into C |
                      +--------+
                         Adder

In diesem Beispiel zählt das System, wie oft die Tasten für die Innen- und Fernentriegelung gedrückt wurden. Diese Informationen werden an den Speicherplätzen A und B gespeichert. Der Speicherort C enthält die Gesamtzahl der Male, die die Tür elektronisch entriegelt wurde.

SPS haben viele Arten von Spezialblöcken. Dazu gehören Timer, arithmetische Operatoren und Vergleiche, Tabellensuchen, Textverarbeitung, PID-Regelung und Filterfunktionen. Leistungsstärkere SPS können an einer Gruppe interner Speicherstellen arbeiten und eine Operation an einem Adressbereich ausführen, um beispielsweise eine physikalische sequentielle Trommelsteuerung oder eine Finite-State-Maschine zu simulieren. In einigen Fällen können Benutzer ihre eigenen speziellen Blöcke definieren, bei denen es sich effektiv um Unterprogramme oder Makros handelt. Die große Bibliothek an Spezialblöcken sowie die Hochgeschwindigkeitsausführung haben die Verwendung von SPS zur Implementierung sehr komplexer Automatisierungssysteme ermöglicht.

Einschränkungen und Nachfolgesprachen[edit]

Die Kontaktplan-Notation eignet sich am besten zur Steuerung von Problemen, bei denen nur binäre Variablen erforderlich sind und bei denen das Ineinandergreifen und Sequenzieren von Binärvariablen das primäre Steuerungsproblem ist. Wie bei allen parallelen Programmiersprachen kann die Reihenfolge der Operationen undefiniert oder undurchsichtig sein. Es sind logische Rennbedingungen möglich, die zu unerwarteten Ergebnissen führen können. Komplexe Sprossen lassen sich am besten in mehrere einfachere Schritte unterteilen, um dieses Problem zu vermeiden. Einige Hersteller vermeiden dieses Problem, indem sie die Ausführungsreihenfolge eines Strompfads explizit und vollständig definieren. Programmierer haben jedoch möglicherweise immer noch Probleme, die resultierende komplexe Semantik vollständig zu erfassen.

Analoge Größen und arithmetische Operationen lassen sich in der Kontaktplanlogik nur schwer ausdrücken, und jeder Hersteller hat verschiedene Möglichkeiten, die Notation für diese Probleme zu erweitern. Arrays und Schleifen werden normalerweise nur eingeschränkt unterstützt, was häufig zu einer Duplizierung des Codes führt, um Fälle auszudrücken, in denen in anderen Sprachen indizierte Variablen verwendet werden müssten.

Da Mikroprozessoren leistungsfähiger geworden sind, können Notationen wie sequentielle Funktionsdiagramme und Funktionsblockdiagramme die Kontaktplanlogik für einige eingeschränkte Anwendungen ersetzen. Bei einigen neueren SPSen wird die Programmierung möglicherweise ganz oder teilweise in einem Dialekt ausgeführt, der BASIC, C oder einer anderen Programmiersprache ähnelt, wobei die Bindungen für eine Echtzeitanwendungsumgebung geeignet sind.

Popularität[edit]

Im Jahr 2019 stufte IEEE Spectrum die Kontaktplanlogik in einer Liste beliebter Programmiersprachen als Nummer 50 von 52 ein.[3]

Siehe auch[edit]

Verweise[edit]

Weiterführende Literatur[edit]

Externe Links[edit]

after-content-x4