Kontaktplan (KOP)
Der Kontaktplan ist eine ebenfalls graphisch orientierte Programmiersprache, die dem Prinzip einer elektrischen Schaltung angenähert ist. Einerseits eignet sich der Kontaktplan dazu, logische Schaltwerke zu konstruieren, andererseits kann man aber auch Netzwerke wie im FUP erstellen. Daher kann der KOP sehr gut dazu benutzt werden, um den Aufruf von anderen Bausteinen zu steuern. Der Kontaktplan besteht aus einer Folge von Netzwerken. Ein Netzwerk wird auf der linken und rechten Seite von einer linken und einer rechten vertikalen Stromleitung begrenzt. Dazwischen befindet sich ein Schaltplan aus Kontakten, Spulen und Verbindungslinien. Jedes Netzwerk besteht auf der linken Seite aus einer Folge von Kontakten, die von links nach rechts den Zustand "AN" oder "AUS" weitergeben, diese Zustände entsprechen den boolschen Werten TRUE und FALSE. Zu jedem Kontakt gehört eine boolsche Variable. Wenn diese Variable TRUE ist, dann wird der Zustand über die Verbindungslinie von links nach rechts weitergegeben, sonst erhält die rechte Verbindung den Wert AUS.
Beispiel für ein Netzwerk im Kontaktplan, wie es in TwinCAT PLC Control typischerweise aussehen könnte:
Kontakt
Jedes Netzwerk im KOP besteht auf der linken Seite aus einem Netzwerk von Kontakten (Kontakte werden dargestellt durch zwei parallele Linien: | |), die von links nach rechts den Zustand "An" oder "Aus" weitergeben. Diese Zustände entsprechen den boolschen Werten TRUE und FALSE. Zu jedem Kontakt gehört eine boolsche Variable. Wenn diese Variable TRUE ist, dann wird der Zustand über die Verbindungslinie von links nach rechts weitergegeben, sonst erhält die rechte Verbindung den Wert "Aus". Kontakte können parallel geschaltet sein, dann muss einer der Parallelzweige den Wert "An" übergeben, damit die Parallelverzweigung den Wert "An" übergibt, oder die Kontakte sind in Reihe geschaltet, dann müssen alle Kontakte den Zustand "An" übergeben, damit der letzte Kontakt den Zustand "An" weitergibt. Dies entspricht also einer elektrischen Parallel- bzw. Reihenschaltung. Ein Kontakt kann auch negiert sein, erkennbar am Schrägstrich im Kontaktsymbol: |/|. Dann wird der Wert der Linie weitergegeben, wenn die Variable FALSE ist.
Spule
Auf der rechten Seite eines Netzwerks im KOP befindet sich eine beliebige Anzahl sogenannter Spulen, dargestellt durch Klammern:( ). Diese können nur parallel geschaltet werden. Eine Spule gibt den Wert der Verbindungen von links nach rechts weiter, und kopiert ihn in eine zugehörige boolsche Variable. An der Eingangslinie kann der Wert AN (entspricht der boolschen Variablen TRUE) oder der Wert AUS anliegen (entsprechend FALSE). Kontakte und Spulen können auch negiert werden (im Beispiel ist z.B. der Kontakt SCHALT1 und die Spule %QX3.0 negiert). Wenn eine Spule negiert ist (erkennbar am Schrägstrich im Spulensymbol: (/)), dann kopiert sie den negierten Wert in die zugehörige boolsche Variable. Wenn ein Kontakt negiert ist, dann schaltet er nur dann durch, wenn die zugehörige boolsche Variable FALSE ist.
Funktionsblöcke im Kontaktplan
Neben Kontakten und Spulen können Sie auch Funktionsblöcke und Programme eingeben, diese müssen im Netzwerk einen Eingang und einen Ausgang mit boolschen Werten haben und können an denselben Stellen verwendet werden wie Kontakte, d. h. auf der linken Seite des KOP-Netzwerks.
Set/Reset-Spulen
Spulen können auch als Set oder Reset-Spulen definiert sein. Eine Set-Spule (erkennbar am ‚S' im Spulensymbol: (S)) überschreibt in der zugehörigen boolschen Variablen niemals den Wert TRUE. D.h., wenn die Variable einmal auf TRUE gesetzt wurde, dann bleibt sie es auch. Eine Reset-Spule (erkennbar am ‚R' im Spulensymbol: (R)), überschreibt in der zugehörigen boolschen Variablen niemals den Wert FALSE: Wenn die Variable einmal auf FALSE gesetzt wurde, dann bleibt sie es auch.
KOP als FUP
Beim Arbeiten mit dem KOP kann leicht der Fall auftreten, dass Sie das Ergebnis der Kontaktschaltung zur Steuerung anderer Bausteine nutzen wollen. Dann können Sie einerseits das Ergebnis mit Hilfe der Spulen in einer globalen Variable ablegen, die an anderer Stelle weiter benutzt wird. Sie können aber auch den eventuellen Aufruf direkt in Ihr KOP-Netzwerk einbauen. Dazu führen Sie einen Baustein mit EN-Eingang ein. Solche Bausteine sind ganz normale Operanden, Funktionen, Programme oder Funktionsblöcke, die einen zusätzlichen Eingang haben, der mit EN beschriftet ist. Der EN-Eingang ist immer vom Typ BOOL und seine Bedeutung ist: der Baustein mit EN-Eingang wird dann ausgewertet, wenn EN den Wert TRUE hat. Ein EN-Baustein wird parallel zu den Spulen geschaltet, wobei der EN-Eingang mit der Verbindungslinie zwischen den Kontakten und den Spulen verbunden wird. Wenn über diese Linie die Information AN transportiert wird, dann wird dieser Baustein ganz normal ausgewertet. Ausgehend von einem solchen EN-Baustein können Netzwerke wie in FUP erstellt werden.
Teil eines KOP-Netzwerks mit einem EN-Baustein