FUP/KOP/AWL

Ein kombinierter Editor ermöglicht das Programmieren in den Sprachen FUP (Funktionsplan), KOP (Kontaktplan) und AWL (Anweisungsliste).

Die Basiseinheit der FUP- und KOP-Programmierung ist ein Netzwerk. Jedes Netzwerk enthält eine Struktur, die Folgendes darstellen kann: Einen logischen oder arithmetischen Ausdruck, den Aufruf eines Programmierbausteins (Funktion, Funktionsbaustein, Programm usw.), einen Sprung, oder eine Return-Anweisung. AWL benötigt eigentlich keine Netzwerke. In TwinCAT besteht jedoch auch ein AWL-Programm aus mindestens einem Netzwerk, um das Konvertieren in FUP oder KOP zu unterstützen. Im Hinblick darauf sollten Sie auch ein AWL-Programm sinnvoll in Netzwerke unterteilen.

Siehe auch:

Funktionsplan (FUP)

Der Funktionsplan ist eine graphisch orientierte IEC 61131 Programmiersprache. Er arbeitet mit einer Liste von Netzwerken. Dabei enthält jedes Netzwerk eine Struktur, die logische und arithmetische Ausdrücke, Aufrufe von Funktionsblöcken, einen Sprung oder eine Return-Anweisung enthalten kann.

Hierbei werden Bausteine benutzt, die aus der booleschen Algebra bekannt sind. Bausteine und Variablen werden mit Verbindungslinien verknüpft. Der Signalfluss verläuft im Netzwerk von links nach rechts. Der Signalfluss im Editor verläuft von oben nach unten, beginnend mit Netzwerk 1.

Beispiel:

FUP/KOP/AWL 1:

Kontaktplan (KOP)

Der Kontaktplan (KOP) ist eine grafisch orientierte Programmiersprache, die dem Prinzip eines elektrischen Schaltplans angenähert ist.

Einerseits eignet sich der Kontaktplan dazu, logische Schaltwerke zu konstruieren, andererseits kann man aber auch Netzwerke wie im FUP erstellen. Daher können Sie den KOP sehr gut zum Steuern von Aufrufen anderer Programmbausteine verwenden.

Der Kontaktplan besteht aus einer Folge von Netzwerken. Ein Netzwerk wird auf der linken Seite von einer vertikalen Linie (Stromschiene) begrenzt. Ein Netzwerk enthält einen Schaltplan aus Kontakten, Spulen, optional Bausteinen (POUs) und Verbindungslinien. Auf der linken Seite eines Netzwerks gibt es einen Kontakt oder eine Folge von Kontakten, die von links nach rechts den Zustand ON oder OFF weitergeben, was den booleschen Werten TRUE und FALSE entspricht. Zu jedem Kontakt gehört eine boolesche Variable. Wenn diese Variable TRUE ist, dann wird der Zustand über die Verbindungslinie von links nach rechts weitergegeben. Ansonsten wird OFF weitergegeben. Somit erhält/erhalten die Spule(n) im rechten Teil des Netzwerks den von links kommenden Wert ON oder OFF und dementsprechend wird der Wert TRUE oder FALSE in die ihnen zugewiesene boolesche Variable geschrieben.

Wenn die Elemente in Reihe geschaltet werden, dann bedeutet dies eine UND-Verknüpfung. Wenn sie parallel geschaltet werden, dann bedeutet dies eine ODER-Verknüpfung. Ein Strich durch ein Element bedeutet eine Negierung des Elements. Die Negation eines Eingangs oder Ausgangs wird durch ein Kreissymbol angezeigt.

Beispiel:

FUP/KOP/AWL 2:

Die IEC 61131-3 definiert einen vollständigen KOP-Befehlssatz, bestehend aus verschiedenen Typen von Kontakten und Spulen. Kontakte leiten den Strom (entsprechend ihres Typs) von links nach rechts. Spulen speichern den eingehenden Wert. Kontakte und Spulen sind booleschen Variablen zugeordnet. Sie können ein KOP-Netzwerk durch Sprünge, Rücksprünge, Marken und Kommentare ergänzen.

Anweisungsliste (AWL)

Die Anweisungsliste ist eine Assembler-ähnliche IEC 61131-konforme Programmiersprache. Sie unterstützt Akkumulator-basiertes Programmieren.

Eine Anweisungsliste (AWL) besteht aus einer Folge von Anweisungen. Jede Anweisung beginnt in einer neuen Zeile und beinhaltet einen Operator und, je nach Art der Operation, einen oder mehrere durch Kommata separierte Operanden. Vor einer Anweisung kann eine Marke stehen, gefolgt von einem Doppelpunkt. Sie dient der Kennzeichnung der Anweisung und Sie können die Marke als Sprungziel verwenden. Ein Kommentar muss das letzte Element in einer Zeile sein. Leere Zeilen können zwischen Anweisungen eingefügt werden.

Alle IEC 61131-3 Operatoren werden unterstützt, ebenso mehrfache Eingänge, mehrfache Ausgänge, Negationen, Kommentare, Set/Reset von Ausgängen und bedingte/unbedingte Sprünge.

Jede Anweisung basiert primär auf dem Laden von Werten in den Akkumulator (LD-Anweisung). Danach wird die entsprechende Operation mit dem Parameter aus dem Akkumulator ausgeführt. Das Ergebnis der Operation wird wieder in den Akkumulator geschrieben, von wo Sie es mithilfe einer ST-Anweisung gezielt speichern sollten.

Für das Programmieren von bedingten Ausführungen oder Schleifen unterstützt die Anweisungsliste Vergleichsoperatoren (EQ, GT, LT, GE, LE, NE) und Sprünge. Sprünge können unbedingt (JMP) oder bedingt (JMPC / JMPCN) sein. Bei bedingten Sprüngen wird geprüft, ob der Wert im Akkumulator TRUE oder FALSE ist.

Beispiel:

FUP/KOP/AWL 3: