Einführung in die IEC 61131-3 Programmierung
Transcription
Einführung in die IEC 61131-3 Programmierung
Lesezeichen ein-/ausblenden L Handbuch Global Drive PLC Developer Studio Global Drive Drive PLC Developer Studio Einführung in die IEC 61131-3 Programmierung Lesezeichen ein-/ausblenden Wichtiger Hinweis: Die Software wird dem Benutzer in der vorliegenden Form zur Verfügung gestellt. Alle Risiken hinsichtlich der Qualität und der durch ihren Einsatz ermittelten Ergebnisse verbleiben beim Benutzer. Entsprechende Sicherheitsvorkehrungen gegen eventuelle Fehlbedienungen sind vom Benutzer vorzusehen. Wir übernehmen keine Verantwortung für direkt oder indirekt entstandene Schäden, z. B. Gewinnverluste, Auftragsverluste oder geschäftliche Beeinträchtigungen jeglicher Art. ã 2003 Lenze Drive Systems GmbH Ohne besondere schriftliche Genehmigung von Lenze Drive Systems GmbH darf kein Teil dieser Dokumentation vervielfältigt oder Dritten zugänglich gemacht werden. Wir haben alle Angaben in dieser Dokumentation mit größter Sorgfalt zusammengestellt und auf Übereinstimmung mit der beschriebenen Hard- und Software geprüft. Trotzdem können wir Abweichungen nicht ganz ausschließen. Wir übernehmen keine juristische Verantwortung oder Haftung für Schäden, die dadurch eventuell entstehen.Notwendige Korrekturen werden wir in die nachfolgenden Auflagen einarbeiten. Alle in dieser Dokumentation aufgeführten Markennamen sind Warenzeichen ihrer jeweiligen Besitzer. Version 2.0 01/2003 TD05 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Inhalt 1 Vorwort und Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 2 Weitere Informationen zur IEC 61131-3-Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Das Softwaremodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1 Ressourcen innerhalb einer Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 2.2 Programmorganisationseinheiten, POEs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Funktionsblöcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 6 2.3 Wiederanlaufverhalten der Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3 Das Kommunikationsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1 Zugriffspfade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Globale Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3 Aufrufparameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.4 Kommunikationsbausteine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4 Allgemeine Sprachelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.1 Bezeichner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2 Schlüsselwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.3 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.4 Literale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.5 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.6 Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5 Programmiersprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.1 Anweisungsliste (AWL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.2 Strukturierter Text (ST) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.3 Ablaufsprache (AS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.4 Funktionsplan (FUP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.5 Kontaktplan (KOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6 Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.1 IEC-Schlüsselwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.2 Konventionen für Lenze Variablenbezeichner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Systembaustein-Bezeichnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.2 Variablentypangabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.3 Datentypangabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.4 Identifikator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.5 Signaltypangabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.6 Beispiele für Variablenbezeichner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 21 21 22 22 22 6.3 Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 l DDS-IEC61131 DE 2.0 1 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Vorwort und Allgemeines 1 Vorwort und Allgemeines Dieses Handbuch gibt Ihnen einen kurzen Überblick über die Norm IEC 61131-3. Mit der Norm IEC 61131-3 wurde eine Basis für eine einheitliche SPS-Programmierung geschaffen, die es dem Anwender ermöglichen soll, • ausgetestete und standardisierte Software-Bausteine wiederzuverwenden, • Softwareengineering-Methoden für die Erstellung dieser Bausteine einzusetzen, • Problemlösungsansätze ganzheitlich zu betrachten, • komplexe Aufgaben in überschaubare Module zu abstrahieren, • eindeutige Schnittstellen zu definieren, • Programme durch einen einheitlichen Sprachumfang leichter auf andere Systeme portieren zu können. Die im Drive PLC Developer Studio realisierten Programmiersprachen sind konform zu den Anforderungen der Norm IEC 61131-3. Neben den deutschsprachigen Begriffen werden in dieser Einführung oftmals auch die internationalen Begriffe (kursiv in Klammern) mit aufgeführt. 1.1 Weitere Informationen zur IEC 61131-3-Programmierung • finden Sie im Handbuch zum Drive PLC Developer Studio • finden Sie im Internet auf der Homepage der PLCopen: 2 DDS-IEC61131 DE 2.0 www.plcopen.org L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Das Softwaremodell 2 Das Softwaremodell Im Softwaremodell der IEC 61131-3 werden die Begriffe Konfiguration, Ressource, Task, Programm, Funktionsblock und Funktion und deren Zusammenhang beschrieben. Prinzipiell geht die Norm bei der Definition der Begriffe von einer maximal leistungsfähigen SPS mit folgenden Eigenschaften aus: • • • • 2.1 Multiprozessor-fähig Multitasking-fähig unbegrenzte Anzahl analoger und digitaler Ein- und Ausgänge Kommunikationsfähigkeit zu anderen SPS bzw. PC Ressourcen innerhalb einer Konfiguration Die oberste Ebene im Softwaremodell bildet die Konfiguration (Configuration), die die Struktur des Gerätes definiert. Dieses Gerät kann z. B. eine SPS mit mehreren vernetzten Zentraleinheiten (CPUs) sein. Eine Konfiguration beinhaltet eine oder mehrere Ressourcen (Resources), die eine Steuerungseinheit (CPU) darstellen. Die der Ressource zugehörigen Programme werden durch Tasks gesteuert, die eine ablauffähige Programmeinheit darstellen. Configuration Resource Task Task Resource Resource Task DDS001 Abb. 1 Eine Konfiguration mit mehrerer Ressourcen, die wiederum unabhängige Tasks beinhalten können. 2.1.1 Tasks Tasks können periodisch oder aufgrund eines Ereignisses abgearbeitet werden, zudem werden sie mit einer Priorität versehen, durch die die Zuteilung von CPU-Zeiten innerhalb der Ressource erfolgt. Es werden folgende Arten von Tasks unterschieden: • Zyklische Task • Zeitgesteuerte Task (INTERVAL-Task) • Ereignisgesteuerte Task (EVENT-Task) • Interrupt-Task Die Deklarierung einer Task besteht aus dem Namen der Task, einem Eintrag für die Priorität, die die Task haben soll, und einem Eintrag für die Bedingung, unter der die Task ausgeführt werden soll. Die Bedingung kann entweder ein Zeitintervall sein, nach dem die Task ausgeführt werden soll, ein Ereignis (steigende Flanke am digitalen Eingang bzw. FALSE/TRUE-Wechsel einer globalen Variable) oder ein Interrupt. Zu jeder Task können Sie nun eine Folge von Programmen angeben, die von der Task aufgerufen werden sollen. Diese Programme werden in der angefügten Reihenfolge abgearbeitet. L DDS-IEC61131 DE 2.0 3 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Das Softwaremodell Für die Ausführung von Tasks gelten folgende Regeln: • Es wird die Task ausgeführt, deren Bedingung zutrifft, das heißt, wenn z. B. die angegebene Intervallzeit abgelaufen ist oder bei Ereignissteuerung die angewählte Variable von FALSE auf TRUE wechselt. • Haben mehrere Tasks eine gültige Bedingung, dann wird die Task mit der höchsten Priorität ausgeführt. • Mehrere Tasks mit gleicher Priorität sind nicht möglich. (Ausnahme: Priorität 0 = Task gesperrt) • Wenn während der Abarbeitung einer Task die Bedingung für eine Task höherer Priorität zutrifft, so wird die Task mit der niedrigeren Priorität unterbrochen und erst nach Beendigung der höher prioren Task wieder fortgesetzt. 2.2 Programmorganisationseinheiten, POEs In der IEC1131-3 bezeichnet man Programme (Programs), Funktionsblöcke (Function Blocks) und Funktionen (Functions) als Programmorganisationseinheiten bzw. POEs (Program Organization Units, POUs). Die Eigenschaften einer POE ermöglichen eine weitreichende Modularisierung des Anwenderprogramms und eine Wiederverwendung bereits implementierter und getesteter Software-Bausteine. Um Programmodulen den Zugriff auf POEs zu ermöglichen, wird mindestens die Deklaration der Aufrufschnittstelle benötigt. Eine POE steht nach ihrer Deklaration allen anderen POEs global zur Verfügung. Task Program Function Block Function Block Program Program Function Function Function Abb. 2 Strukturierung von Programmorganisationseinheiten (POEs) in Programme, Funktionsblöcke und Funktionen 2.2.1 Programme DDS002 Durch die Zuordnung von Programmen zu einer Task werden die Laufzeiteigenschaften des Gesamtprogramms definiert, welches selbständig in einer CPU ablaufen kann. Ein Programm kann zu mehreren Tasks gehören, d. h. es werden mehrere Instanzen des Programms mit unterschiedlichen Laufzeiteigenschaften erzeugt. 4 DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Das Softwaremodell 2.2.2 Funktionsblöcke Um typische SPS-Funktionalitäten zu standardisieren, führt die Norm IEC 61131-3 Standard-Funktionen und Funktionsblöcke ein. Diese ”Standard-Bibliothek” bildet eine wichtige Grundlage für eine einheitliche, herstellerunabhängige Programmierung von SPS-Systemen. Funktionsblöcke (FBs) können mit integrierten Schaltungen verglichen werden, die eine bestimmte Steuerungsfunktion beinhalten. Sie werden dazu verwendet, Ein-/Ausgänge sowie interne Variable zu setzen, dabei werden die Zustände eines Funktionsblockaufrufs von Zyklus zu Zyklus zwischengespeichert. Vom aufrufenden Programm sind nur die Ein- und Ausgangsvariablen des Funktionsblocks ansprechbar. Ein Funktionsblock kann von einem anderen Funktionsblock aufgerufen werden. Instanzierung von Funktionsblöcken In der IEC 61131-3 ist die Instanzierung von Funktionsblöcken vorgesehen. Eine Instanz ist eine Struktur, in der beim Aufruf eines FBs alle internen sowie Ein- und Ausgabevariablen gespeichert werden. Ein Programm, welches FB1 dreimal aufruft, besitzt drei Instanzen des FB1, eine für jeden Aufruf. Durch diese objektorientierte Vorgehensweise kann die Evaluierung des Programms aufrufgenau und seiteneffektfrei erfolgen. Zu beachten ist hierbei, daß alle Instanzen den gleichen Programmcode verwenden, d. h. Änderungen am Programmcode wirken sich in allen drei Aufrufen gleich aus. Moderne Software-Tools wie das Drive PLC Developer Studio helfen mit einer automatischen Deklaration, diese Instanzierung durchzuführen: für einen Aufruf eines FB wird einfach ein Instanzname festgelegt, der die Datenstruktur dieses Aufrufs verwaltet. Übersicht IEC 61131-3 Standard-Funktionsblöcke Bistabile Funktionsblöcke SR/RS Bistabiler Funktionsblock (dominant setzen/zurücksetzen) SEMA Software-Semaphor (unterbrechbar) Flankenerkennung R_TRIG/F_TRIG Detektor für eine ansteigende Flanke//fallende Flanke Zähler CTU/CTD Aufwärtszähler/Abwärtszähler CTUD Auf- und Abwärtszähler Timer L TP Pulsgeber TON/TOF Timer on-delay/Timer off-delay DDS-IEC61131 DE 2.0 5 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Das Softwaremodell 2.2.3 Funktionen Im Gegensatz zu FBs können Funktionen ihre internen Werte nicht zwischenspeichern und dürfen daher keine globalen Variablen verwenden, auf Funktionsbausteine zugreifen und direkt adressierte Variablen deklarieren. Allen Funktionen gemeinsam ist, daß sie bei gleichen Eingangsparametern immer die gleichen Ausgangsparameter zurückliefern. Übersicht IEC 61131-3 Standard-Funktionen Typkonvertierungsfunktionen ..._TO_... Konvertierungen zwischen ganzzahligen Zahlentypen BOOL_TO BOOL Þ Typ X TO_BOOL Typ X Þ BOOL TIME_TO / TIME_OF_DAY TIME / TIME_OF_DAY Þ Typ X DATE_TO / DT_TO DATE / DATE_AND_TIME Þ Typ X STRING_TO STRING Þ Typ X TRUNC REAL Þ INT Numerische Funktionen ABS Absolutwert SQRT Quadratwurzel LN natürlicher Logarithmus LOG Logarithmus zur Basis 10 EXP Exponentialfunktion SIN Sinusberechnung in rad COS Cosinusberechnung in rad TAN Tangensberechnung in rad ASIN Arcussinusberechnung in rad ACOS Arcuscosinusberechnung in rad ATAN Arcustangensberechnung in rad EXPT Potenzierung einer Variablen mit einer anderen STRING-Funktionen 6 LEN gibt die Länge eines Strings aus LEFT liefert einen linken Anfangsstring eines Strings RIGHT liefert einen rechten Anfangsstring eines Strings MID liefert einen Teilstring eines Strings CONCAT Konkatenation (Aneinanderhängen) von zwei Strings INSERT fügt einen String ab einer bestimmten Stelle in einen anderen ein DELETE löscht ab einer bestimmten Stelle einen Teilstring aus einem String REPLACE ersetzt einen Teilstring eines Strings durch einen anderen String FIND sucht einen Teilstring in einem String DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Das Softwaremodell Übersicht IEC 61131-3 Standard-Operatoren Arithmetische Operatoren ADD Addition MUL Multiplikation SUB Subtraktion DIV Division MOD Restbildung EXP Exponentiation MOVE Zuweisung Bit-Shift-Operatoren SHL Schieben nach links SHR Schieben nach rechts ROR Rotieren nach rechts ROL Rotieren nach links Bit-String-Operatoren AND Bitweises AND von Bit -Operanden OR Bitweises OR von Bit-Operanden XOR Bitweises XOR von Bit -Operanden NOT Bitweises NOT eines Bit Operanden Auswahloperatoren SEL Binäre Selektion MAX Maximum-Bildung MIN Minimum-Bildung LIMIT Begrenzung MUX Multiplexer Vergleichsoperatoren 2.3 GT Größer als LT Kleiner als LE Kleiner oder gleich GE Größer oder gleich EQ Gleichheit NE Ungleichheit Wiederanlaufverhalten der Steuerung Ebenfalls im Softwaremodell der IEC 61131-3 definiert ist das Wiederanlaufverhalten der Steuerung. Kaltstart Bei einem Kaltstart wird das Programm neu geladen. Alle Variablen werden auf Ihren Initialwert gesetzt. Entweder wird ein Standard-Initialwert (z. B. 0 bzw. FALSE)oder der in der Variablen-Deklaration (optional) angegebene Initialwert gesetzt. Alle Tasks der Ressource werden gestartet. Warmstart Bei einem Warmstart (Wiederanlauf) werden die Variablen nicht auf Ihren Initialwert gesetzt, sondern es werden die vor der Unterbrechung im Speicher vorhandenen Werte übernommen. L DDS-IEC61131 DE 2.0 7 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Das Kommunikationsmodell 3 Das Kommunikationsmodell Das Kommunikationsmodell der IEC 61131-3 beschreibt den Datenaustausch der Elemente einer Konfiguration über • Zugriffspfade • Globale Variable • Aufrufparameter • Kommunikationsbausteine (IEC 61131-5) Durch diese eindeutig definierten Schnittstellen soll insbesondere die Modularisierung und dadurch Wiederverwendbarkeit von Programmteilen gefördert werden. 3.1 Zugriffspfade Definierte Zugriffspfade dienen den Elementen einer Konfiguration zur Kommunikation untereinander und mit weiteren SPS-Systemen. 3.2 Globale Variable Globale Variable dienen der einfachen Kommunikation von Programmen untereinander und können innerhalb einer Konfiguration, einer Ressource und eines Programms deklariert und verwendet werden. 3.3 Aufrufparameter Innerhalb von Programmen erfolgt der Datenaustausch über Aufrufparameter, also Ein-/Ausgangsvariablen. Durch Aufrufparameter werden eindeutige Schnittstellen zur Übergabe von Werten definiert. 3.4 Kommunikationsbausteine Kommunikationsbausteine stellen Kommunikationsdienste zur Verfügung, die im Teil 5 der IEC 61131 definiert sind, der sich zur Zeit aber noch in Bearbeitung befindet. 8 DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Allgemeine Sprachelemente 4 Allgemeine Sprachelemente Zu den allgemeinen Sprachelementen der IEC 61131-3 gehören Bezeichner, Schlüsselworte, Kommentare, Literale, Datentypen sowie Variable, die in den folgenden Unterkapiteln erläutert werden. 4.1 Bezeichner Über Bezeichner werden Variablen, Funktionen, Programme usw. angesprochen, sie stellen also den Namen des entsprechenden Elements dar und fördern bei sinnvoller Auswahl die Lesbarkeit von Programmen. • Ein Bezeichner ist eine Folge von Buchstaben, Ziffern und Unterstrichen, die mit einem Buchstaben oder einem Unterstrich beginnen. Ein Bezeichner darf • keine Leerstellen und Umlaute enthalten, • nicht doppelt deklariert werden, • und nicht identisch mit Schlüsselwörtern sein.(^Kapitel 4.2) Tip! Die Konventionen, die für die Bezeichner der Variablen von Lenze Systembausteinen, Funktionsblöcken und Funktionen verwendet werden, sind im Anhang aufgeführt. (^ 20) 4.2 Schlüsselwörter Schlüsselwörter sind eindeutige Kombinationen von Zeichen, die als individuelle Syntax-Elemente angewendet werden. • Schlüsselwörter dürfen nicht als Bezeichner verwendet werden. Beispiele für Schlüsselwörter der IEC 61131-3 ABS, SIN, BOOL, FALSE, TRUE, FOR, NEXT, IF, THEN, VAR, GLOBAL, DATE, TIME, FUNCTION 4.3 Kommentare Kommentare zu Programmteilen fördern dessen Nachvollziehbarkeit und dienen somit als wichtiges Dokumentationsmittel. Kommentare sind in allen Texteditoren und dort an beliebiger Stelle erlaubt und müssen in die speziellen Zeichenfolgen (* und *) eingeschlossen werden. Auch können zu jedem Netzwerk Kommentare eingegeben werden, um dessen Funktionalität zu dokumentieren. 4.4 Literale Ein Literal in der IEC 61131-3 ist entweder eine Zeichenfolge, eine Zahl oder eine Zeitangabe. Zeichenfolgen Zeichenfolge-Literale sind Sequenzen von 0 oder mehr Zeichen, die durch einfache Anführungszeichen eingeschlossen sind (z. B. ’Zeichenfolge’). L DDS-IEC61131 DE 2.0 9 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Allgemeine Sprachelemente Zahlen Es gibt zwei Arten von numerischen Literalen, ganzzahlige Literale (Integer)und reelle Literale (Real). Ganzzahlige Literale können mit einer Basis definiert werden, dezimale Zahlen können desweiteren Vorzeichen (+ oder -) enthalten. Bei reellen Literalen ist auch die Angabe mit Exponent möglich. Kennzeichnung Beispiel Ganzzahlige Literale (Integer) dezimal 10 binär 2# 2#1010 oktal 8# 8#12 hexadezimal 16# 16#A E -12.50 15.7E4 Reelle Literale (Real) ohne Exponent mit Exponent Zeiten Es gibt zwei Arten von zeitlichen Literalen, Zeitdauer und Tageszeit/Datum. Kennzeichnung Beispiel T# oder TIME# T#10ms Datum D# oder #DATE D#1999-08-29 Tageszeit TOD# oder #TIME_OF_DAY TOD#15:36:30 Datum und Tageszeit DT# oder #DATE_AND_TIME DT#1999-08-29-15:36:30 Zeitdauer Tageszeit/Datum 4.5 Datentypen In der IEC 61131-3 sind verschiedene Standard-Datentypen definiert, aus denen abgeleitete und benutzerdefinierte Datentypen zusammengestellt werden können. Jedem Bezeichner wird ein Datentyp zugeordnet, der festlegt, wieviel Speicherplatz reserviert wird und welche Werte dem Speicherinhalt entsprechen. Standard-Datentypen: • BOOL (Wahrheitswerte TRUE/FALSE) • BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT (Ganzzahlige Datentypen) • REAL (Gleitpunktdatentyp) • STRING (Zeichenkette) • TIME, TIME_OF_DAY, DATE, DATE_AND_TIME (Zeitdatentypen) Definierte Datentypen: • ARRAY (ein-, zwei-, dreidimensionales Feld) • POINTER (beinhaltet Adresse von Variable/Funktionsblock zur Laufzeit des Programms) • Aufzählungstyp (Enumerated , besteht aus einer Menge von Stringkonstanten) • STRUCT (Struktur) • Referenz (erzeugt alternativen Namen für Variable/Konstante/Funktionsblock) 10 DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Allgemeine Sprachelemente 4.6 Variable In der IEC 61131-3 sind fünf unterschiedliche Variablenklassen definiert: • Globale Variablen • Lokale Variablen • Eingabevariablen • Ausgabevariablen • Ein- und Ausgabevariablen Während Lokale Variable keine Verbindung nach außen haben, also nur innerhalb des Programmteils auf sie zugegriffen werden kann, sind Globale Variable von allen POEs aus ansprechbar. Eingabe, Ausgabe- sowie Ein-/Ausgabevariablen werden bezogen auf ein Programm, eine Funktion oder einen Funktionsblock. Innerhalb der zugeordneten POE können sie lesend und schreibend verändert werden, außerhalb nur in der definierten Weise (Eingabe, Ausgabe bzw. Ein- und Ausgabe). Die Deklaration der Variablen erfolgt im Quelltext zwischen den Schlüsselwörtern VAR und END_VAR. Grundsätzlich wird nach einem Kaltstart jede Variable initialisiert. Der Grundwert (Default) beträgt üblicherweise 0 oder FALSE. Eine anwenderspezifische Initialisierung mit einem anderen Wert ist mit dem Zeichen “:=” innerhalb der Deklaration möglich. Variablen-Attribute: Bei der Deklaration einer Variable können zusätzlich folgende Attribute verwendet werden: • RETAIN: Diese Variablen behalten ihren Wert auch nach einem Stromausfall. Bei erneutem Start des Programms wird mit den gespeicherten Werten weitergearbeitet. • CONSTANT: Variablenwerte können nicht geändert werden. • AT: Variablen besitzen einen festen Platz im Speicherabbild (feste Adresse) Beispiel: Deklaration einer Ausgabevariable mit Initialisierungswert VAR_OUTPUT par_out1 : INT := 10; END_VAR (* Output-Parameter 1 mit Startwert 10 *) Fest adressierte Variablen Bei der Deklaration können Variablen einem physikalischen Speicherort (SPS-Adresse) mit dem Schlüsselwort AT zugeordnet werden. Der Aufbau der Adreßangabe erfolgt mittels spezieller Zeichenreihen. Die Zeichenreihe beginnt mit einem Prozentzeichen ”% ”, gefolgt von einem Bereichspräfix und einem Präfix (Datentyp) für die Größe, und endet mit einer Zahlenfolge, die den direkten Speicherort angibt. Bereichspräfixe: I (Eingang), Q (Ausgang), M (Merker, interner Speicherbereich) Präfix für die Größe: X (Einzelbit), B (Byte, 8 Bits), W (Wort, 16 Bits), D (Doppelwort, 32 Bits) Beispiele: L %QX1.0.2 %IW1.0.1 %MB7 %MW1 %MD3 %MX1.2 Ausgangsbit 2 Eingangsbit 1 Merkerbyte 7 Merkerwort 1 Merkerdoppelwort 3 drittes Merkerbit im Merkerwort 1 DDS-IEC61131 DE 2.0 11 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Programmiersprachen 5 Programmiersprachen In der IEC 61131-3 sind folgende fünf Programmiersprachen definiert: • AWL: Anweisungsliste (Instruction List, IL) • ST: Strukturierter Text (Structured Text) • AS: Ablaufsprache (Sequential Function Chart, SFC) • FUP: Funktionsplan (Function Block Diagram, FBD) • KOP: Kontaktplan (Ladder Diagram, LD) Jede Sprache für sich hat spezielle Anwendungsfälle bzw. Ausprägungen, die zur Lösung von bestimmten Problemfällen besonders geeignet sind. 5.1 Anweisungsliste (AWL) (Instruction List, IL) Die Anweisungsliste ist mit der Sprache Assembler vergleichbar und besteht aus einer Folge von Anweisungen. • Jede Anweisung beginnt in einer neuen Zeile, beinhaltet einen Operator und, je nach Art der Operation, einen oder mehrere durch Kommata abgetrennte Operanden. • Vor einer Anweisung kann sich eine Identifikator-Marke befinden, gefolgt von einem Doppelpunkt (:). • Ein Kommentar kann zusätzlich eingetragen werden. • Leere Zeilen können zwischen Anweisungen eingefügt werden. Beispiel: LD 17 ST lint GE 5 JMPC next LD idword EQ istruct.sdword STN test next: 12 (* Kommentar *) DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Programmiersprachen 5.2 Strukturierter Text (ST) (Structured Text) Der Strukturierte Text besteht aus einer Reihe von Anweisungen, die wie in Hochsprachen bedingt (IF..THEN..ELSE) oder in Schleifen (WHILE..DO) ausgeführt werden können. Neben der leistungsfähigen Schleifenprogrammierung und der Möglichkeit konditionierter Befehle können auch mathematische Funktionen hervorragend abgebildet werden, zudem ist Strukturierter Text eine sehr gut lesbare und verständliche Programmiersprache. Beispiel: IF value < 7 THEN WHILE value < 8 DO value := value + 1; END_WHILE; END_IF; Anweisungen (Überblick) L Anweisungsart Beispiel Zuweisung durch Zuweisungsoperator A:=B; CV:=CV + 1; C:=SIN(X); Aufruf eines Funktionsblocks, Benutzung der FB-Ausgabe CMD_TMR(IN:=%IX5, PT:=300); A:=CMD_TMR.Q RETURN RETURN; IF-Bedingung D:=B*B; IF D<0.0 THEN C:=A; ELSIF D=0.0 THEN C:=B; ELSE C:=D; END_IF; CASE-Auswahl CASE INT1 OF 1: BOOL1:=TRUE; 2: BOOL2:=TRUE; ELSE BOOL1:=FALSE; BOOL2:=FALSE; END_CASE; FOR-Schleife J:=101; FOR I:=1 TO 100 BY 2 DO IF ARR[I]=70 THEN J:=I; EXIT; END_IF; END_FOR; WHILE-Schleife J:=1; WHILE J<=100 AND ARR[J]<>70 DO J:=J+2; END_WHILE; REPEAT-Schleife J:=-1; REPEAT J:=J+2; UNTIL J= 101 OR ARR[J]=70 END_REPEAT; EXIT EXIT; Leere Anweisung ; DDS-IEC61131 DE 2.0 13 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Programmiersprachen 5.3 Ablaufsprache (AS) (Sequential Function Chart, SFC) Die Ablaufsprache ist eine graphisch orientierte Sprache, die es ermöglicht, die zeitliche Abfolge verschiedener Aktionen innerhalb eines Programms zu beschreiben. Ein in Ablaufsprache geschriebener Baustein besteht aus einer Folge von Schritten, die über gerichtete Verbindungen (Transitionen) miteinander verbunden sind. Abb. 3 Beispiel für ein Netzwerk in der Ablaufsprache Die grafische Darstellung von Transitionen und Schritten erinnert an ein Flußdiagramm, ist sehr gut lesbar und eignet sich hervorragend für die Programmierung übergeordneter Zustandsabläufe. Schritte Ein Schritt besteht aus einem Flag und einer oder mehreren zugewiesenen Aktionen oder boolschen Variablen. • Die Aktionen von Schritten liegen getrennt von den Schritten vor und können innerhalb ihres Bausteins mehrfach verwendet werden. • Über sogenannte Bestimmungszeichen (Qualifier) werden die Aktionen und boolschen Variablen aktiviert und deaktiviert, zum Teil mit zeitlichen Verzögerungen. • Da eine Aktion immer noch aktiv sein kann, auch wenn bereits der nächste Schritt abgearbeitet wird, z. B. durch das Bestimmungszeichen S (Set), kann man Nebenläufigkeiten erreichen. Aktionen Eine Aktion kann eine Folge von Instruktionen in AWL oder in ST, eine Menge von Netzwerken in FUP oder in KOP oder wieder eine Ablaufstruktur (AS) enthalten. 14 DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Programmiersprachen Transitionen Zwischen den Schritten liegen sogenannte Transitionen. Der einer Transition folgende Schritt wird aktiv, wenn die Transitionsbedingung TRUE ist. Folgende Transitionsbedingungen sind möglich: • eine Boolsche Variable • eine Boolsche Adresse • eine Boolsche Konstante (TRUE) • eine Folge von Instruktionen mit einem Boolschen Ergebnis in ST-Syntax ((i<=100) AND b) • eine Folge von Instruktionen ausprogrammiert in einer beliebigen Sprache Alternativverzweigungen Zwei oder mehr Zweige in AS können als Alternativverzweigungen definiert werden. • Jeder Alternativzweig muß mit einer Transition beginnen und enden. • Alternativverzweigungen können Parallelverzweigungen und weitere Alternativverzweigungen beinhalten. • Eine Alternativverzweigung beginnt an einer horizontalen Linie (Alternativanfang) und endet an einer horizontalen Linie (Alternativende) oder mit einem Sprung. • Wenn der Schritt, der der Alternativanfangslinie vorangeht, aktiv ist, dann wird die erste Transition jeder Alternativverzweigung von links nach rechts ausgewertet. Die erste Transition von links, deren Transitionsbedingung den Wert TRUE hat, wird geöffnet und die nachfolgenden Schritte werden aktiviert. Parallelverzweigungen Zwei oder mehr Verzweigungen in AS können als Parallelverzweigungen definiert werden. • Jeder Parallelzweig muß mit einem Schritt beginnen und enden. • Parallelverzweigungen können Alternativverzweigungen oder weitere Parallelverzweigungen beinhalten. • Eine Parallelverzweigung beginnt bei einer doppelten Linie (Parallelanfang) und endet bei einer doppelten Linie (Parallelende) oder mit einem Sprung. • Wenn der der Parallelanfangs-Linie vorangehende Schritt aktiv ist, und die Transitionsbedingung nach diesem Schritt den Wert TRUE hat, dann werden die ersten Schritte aller Parallelverzweigungen aktiv. Diese Zweige werden nun alle parallel zueinander abgearbeitet. • Der Schritt nach der Parallelende-Linie wird aktiv, wenn alle vorangehenden Schritte aktiv sind, und die Transitionsbedingung vor diesem Schritt den Wert TRUE liefert. Sprünge Ein Sprung ist eine Verbindung zu dem Schritt, dessen Name unter dem Sprungsymbol angegeben ist. Sprünge werden benötigt, weil es nicht erlaubt ist, nach oben führende oder sich überkreuzende Verbindungen zu schaffen. L DDS-IEC61131 DE 2.0 15 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Programmiersprachen 5.4 Funktionsplan (FUP) (Function Block Diagram, FBD) Der Funktionsplan ist eine graphisch orientierte Programmiersprache. Er arbeitet mit einer Liste von Netzwerken, wobei jedes Netzwerk eine Struktur enthält, die jeweils einen logischen bzw. arithmetischen Ausdruck, den Aufruf eines Funktionsblocks, einen Sprung oder eine Return-Anweisung darstellt. Ausgänge von Funktionsblöcken werden mit Eingängen folgender Funktionsblöcke verbunden, Sprünge und Rücksprunge erleichtern die Programmierung. Basierend auf definierten Funktionsblöcken lassen sich mit dem Funktionsplan beliebige Programmabläufe mit Hilfe von Verbindungselementen vollgrafisch realisieren. Zudem trägt die schematische Darstellung des Datenflusses dazu bei, Programmabläufe transparent zu halten. Wie auch bei der 9300 Servo PLC und der Drive PLC werden häufig Hardwarekomponenten mit den zugehörigen Funktionsblöcken angeboten, so daß sowohl auf Hard-, als auch auf SoftwareEbene korrespondierende Module existieren. Abb. 4 Beispiel für ein Netzwerk im Funktionsplan 5.5 Kontaktplan (KOP) (Ladder Diagramm, LD) Der Kontaktplan ist eine 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 Kontaktplan 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 vertikalen Stromleitung begrenzt. Dazwischen befindet sich ein Schaltplan aus Kontakten, Spulen und Verbindungslinien, die von links nach rechts den Zustand ”AN” oder ”AUS” (TRUE oder FALSE) weitergeben: Abb. 5 16 Beispiel für ein Netzwerk im Kontaktplan DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Programmiersprachen Kontakte Hat die zu einem Kontakt gehörige boolsche Variable den Wert TRUE, dann wird der Zustand ”AN” über die Verbindungslinie von links nach rechts weitergegeben, sonst erhält die rechte Verbindung den Wert ”AUS”. • Kontakte können parallel geschaltet sein, dann muß einer der Parallelzweige den Wert ”AN” übergeben, damit die Parallelverzweigung den Wert ”AN” übergibt. • Kontakte können in Reihe geschaltet sein, dann müssen alle Kontakte den Zustand ”AN” übergeben, damit der letzte Kontakt den Zustand ”AN” weitergibt. • Ein Kontakt kann auch negiert sein, erkennbar am Schrägstrich im Kontaktsymbol. Er gibt dann den Eingangszustand weiter, wenn sein Zustand ”AUS” (FALSE) ist. Spulen Auf der rechten Seite eines Netzwerks im KOP befindet sich eine beliebige Anzahl sogenannter Spulen, dargestellt durch Klammern. • 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” oder ”AUS” anliegen (entsprechend den boolschen Werten TRUE bzw. FALSE). • Spulen können nur parallel geschaltet werden. • Eine Spule kann auch negiert sein, erkennbar am Schrägstrich im Spulensymbol. Sie kopiert dann den negierten Wert in die zugehörige boolsche Variable. Set/ Reset-Spulen Eine Spule kann auch als Set oder Reset-Spule definiert sein. Eine Set-Spule (erkennbar am ”S” im Spulensymbol) kann den Zustand ”AN” annehmen, daraufhin aber nicht mehr den Zustand ”AUS”. • Wenn die boolsche Variable der Set-Spule einmal auf TRUE gesetzt wurde, dann kann sie daraufhin nicht mehr auf FALSE gesetzt werden. Eine Reset-Spule (erkennbar am ,R’ im Spulensymbol)kann den Zustand ”AUS” annehmen, daraufhin aber nicht mehr den Zustand ”AN”. • Wenn die boolsche Variable der Reset-Spule einmal auf FALSE gesetzt wurde, dann kann sie daraufhin nicht mehr auf TRUE gesetzt werden. Funktionsblöcke im Kontaktplan Neben Kontakten und Spulen können Sie im Kontaktplan auch Funktionsblöcke und Programme eingeben. Funktionsblöcke bzw. Programme 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. L DDS-IEC61131 DE 2.0 17 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Anhang 6 Anhang 6.1 IEC-Schlüsselwörter Schlüsselwörter sind eindeutige Kombinationen von Zeichen, die als individuelle Syntax-Elemente angewendet werden. • Schlüsselwörter dürfen nicht als Bezeichner verwendet werden. • Zu den Schlüsselwörtern im Drive PLC Developer Studio gehören auch die Namen der Lenze-Funktionsblöcke, die immer mit ”L_” beginnen (L_ABS, L_ADD, ...). Reservierte Schlüsselwörter für Programmiersprachen der IEC 61131-3: 18 ABS ANY ARRAY ACOS ANY_BIT ASIN ACTION ANY_DATE AT ADD ANY_INT ATAN AND ANY_NUM ANDN ANY_REAL BOOL BY BYTE CAL CLK CTU CALC CONCAT CTUD CALCN CONFIGURATION CU CASE CONSTANT CV CD COS CDT CTD DATE DS DATE_AND_TIME DT DELETE DWORD DINT DIV DO ELSE END_FUNCTION END_RESOURCE END_WHILE EXP ESIF END_ACTION END_FUNCTION_BLOCK END_STEP END_STRUCT EN ENO EXPT END_CASE END_IF END_TRANSITION EQ END_CONFIGURATION END_PROGRAM END_TYPE ET END_FOR END_REPEAT END_VAR EXIT FALSE FUNCTION F_EDGE FUNCTION_BLOCK F_TRIG FIND FOR FROM GE GT IF IN INITIAL_STEP INSERT INT INTERVAL JMP JMPC JMPCN L LIMIT LWORD LD LINT LDN LN LE LOG LEFT LREAL LEN LT MAX MUX MID MIN MOD MOVE MUL N NE NEG NOT OF ON OR ORN DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Anhang L P PRIORITY PROGRAM PT Q Q1 QU QD R RELEASE RETC RS R1 REPEAT RETCN RTC R_TRIG REPLACE RETURN R_EDGE READ_ONLY RESOURCE RIGHT READ_WRITE RET ROL REAL RETAIN ROR S SHR SR SUB S1 SIN ST SD SINGLE STEP SEL SINT STN SEMA SL STRING SHL SQRT STRUCT TAN TOD TYPE TASK TOF THEN TON TIME TP TIME_OF_DAY TRANS TO TRUE UDINT UINT ULINT UNTIL VAR VAR_OUTPUT VAR_ACCESS VAR_EXTERNAL WHILE WITH WORD XOR XORN VAR_GLOBAL DDS-IEC61131 DE 2.0 PV USINT VAR_INPUT VAR_IN_OUT 19 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Anhang 6.2 Konventionen für Lenze Variablenbezeichner Dieses Kapitel stellt Ihnen die Konventionen vor, die für die Variablenbezeichner der Lenze Systembausteine, Funktionsblöcke sowie Funktionen verwendet werden, um eine einheitliche und durchgängige Benennung zu gewährleisten und dadurch die Lesbarkeit von SPS-Programmen zu fördern. Tip! Die von Lenze verwendeten Konventionen basieren auf der sogenannten “Ungarischen Notation”, wodurch anhand des Bezeichners sofort auf die wichtigsten Eigenschaften (z. B. den Datentyp)der entsprechenden Variable geschlossen werden kann. Ein Bezeichner setzt sich zusammen aus • einer Systembaustein-Bezeichnung (nur bei Bezeichnern von Systembaustein-Variablen) • einer Variablentypangabe (optional) • einer Datentypangabe • einem Identifikator (dem “eigentlichen” Namen der Variablen) • einer Signaltypangabe (optional) 6.2.1 Systembaustein-Bezeichnung (nur bei Bezeichnern von Systembaustein-Variablen) Der Zugriff auf die Ein-/Ausgänge eines Systembausteins erfolgt direkt über entsprechende I/O-Variablen. Um kenntlich zu machen, welchem Systembaustein eine solche I/O-Variable zugeordnet ist, wird dem Bezeichner der Name des entsprechenden Systembausteins gefolgt von einem Unterstrich vorgesetzt. Beispiele für Systembaustein-Bezeichnungen: AIN_ CAN1_ DIGIN_ 20 DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Anhang 6.2.2 Variablentypangabe Die Variablentypangabe kann optional verwendet werden, um im Bezeichner den Variablentyp mit anzugeben: 6.2.3 Variablentypangabe (optional) Bedeutung I_ VAR_INPUT Q_ VAR_OUTPUT IQ_ VAR_IN_OUT R_ VAR RETAIN C_ VAR CONSTANT CR_ VAR CONSTANT RETAIN g_ VAR_GLOBAL gR_ gC_ VAR_GLOBAL RETAIN VAR_GLOBAL CONSTANT gCR_ VAR_GLOBAL CONSTANT RETAIN Datentypangabe Die Datentypangabe gibt Aufschluß darüber, von welchen Datentyp die entsprechende Variable ist: Datentypangabe Bedeutung b Bool by n Byte Integer w Word dn Double Integer dw Double Word s String f Real (Float) sn Short Integer t Time un Unsigned Integer udn Unsigned Double Integer usn Unsigned Short Integer Handelt es sich bei der Variable um ein Array oder einen Zeiger (Pointer), so wird dies zusätzlich vor der eigentlichen Datentypangabe mit angegeben: Datentypangabe (optional) Bedeutung a Array (zusammengesetzter Typ), Feld p Zeiger (pointer) Beispiele für Datentypangaben: L aby (Array vom Datentyp Byte) dn (Double Integer) pdn (Zeiger auf Double Integer) DDS-IEC61131 DE 2.0 21 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Anhang 6.2.4 Identifikator Der Identifikator ist der “eigentliche” Name der Variable und sollte auf den Verwendungszweck bzw. die Funktion der Variable hinweisen. • Der Identifikator beginnt immer mit einem Großbuchstaben. • Setzt sich ein Identifikator aus mehreren ”Worten” zusammen, so beginnt jedes “Wort” mit einem Großbuchstaben. • Alle anderen Buchstaben werden klein geschrieben. Beispiele für Identifikatoren: JogValue NumberOfValues CurrentSelectedJogValue 6.2.5 Signaltypangabe Den meisten Ein- und Ausgängen von Lenze-Funktionsblöcken/Systembausteinen kann ein bestimmter Signaltyp zugeordnet werden, wobei zwischen digitalen, analogen, Lage- sowie Drehzahlsignalen unterschieden wird. Dem Bezeichner der entsprechenden Ein-/Ausgangsvariable wird eine Endung (angeführt mit einem Unterstrich) angefügt, die angibt, um welchen Signaltyp es sich handelt. Signaltyp 6.2.6 22 Endung Speicherplatz Normierung (externe Größe ≡ interne Größe) Bisherige Kennung analog _a (analog) 16 Bit 100 % ≡ 16384 H digital Winkeldifferenz oder Drehzahl _b _v (binary) (velocity) 16 Bit 15000 rpm ≡ 16384 G F Winkel oder Lage _p (position) 32 Bit 1 Motorumdrehung ≡ 65535 E Beispiele für Variablenbezeichner Variablenbezeichner zugehöriger Systembaustein Variablentyp Datentyp Signaltyp Verwendungszweck/Funktion g_anFixSetSpeedValue_a - VAR_GLOBAL Array (Integer) analog Array für fixe Sollwerte CAN2_nOutW1_a CAN2_IO - Integer analog Ausgangswort 1 vom CAN2_OUT AOUT1_nOut_a AOUT1 - Integer analog Auszugebendes Analogsignal bQSP_b - - Bool binary (TRUE/FALSE) Auslösen von Quickstop byFunction - - Byte - Funktionsauswahl dnIn1_p - - Double Integer position Winkeleingangssignal 1 nVp - - Integer - Verstärkung DDS-IEC61131 DE 2.0 L Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Anhang 6.3 L Glossar Ablaufsprache Ablaufsprache AS (Sequential Function Chart - SFC) ist eine Programmiersprache zur Beschreibung sequentieller und paralleler Steuerungsabläufe mit Zeit- und Ereignis-Steuerung. Aktion Boolsche Variable oder eine Reihe von Anweisungen, die über einen Aktionsblock angesteuert werden können, in AS. Aktionsblock Aktivierungsbeschreibung von Aktionen in AS. Aktuelles Ergebnis Zwischenergebnis in AWL von beliebigem Datentyp. Anweisungsliste Anweisungsliste (Instruction List - IL) ist eine weit verbreitete Assembler-ähnliche Programmiersprache für SPS-Systeme. AS Abk. für Ablaufsprache. AWL Abk. für Anweisungsliste. Baustein (Unter-) Programmeinheit, aus denen SPS-Programme zusammengesetzt werden. Bausteine können oft unabhängig voneinander in die SPS geladen werden. Vgl. POE. CPU Zentraleinheit (Central Processing Unit), z. B. einer SPS. Deklaration Bekanntgabe von Variablen und FB-Instanzen in einem Deklarationsblock unter Angabe eines Bezeichners, des Datentyps bzw. FB-Typs sowie ggf. Anfangswerte, Bereichsangabe und Feldeigenschaften. Deklarationsblock Zusammenfassung von Deklarationen einer Variablenart zu Beginn der POE. Elementarer Datentyp Ein durch die IEC 61131-3 vordefinierter Standard-Datentyp. Erweiterung von Funktionen Eine Funktion kann eine variable Anzahl von Eingängen besitzen. FB Abk. für Funktionsblock (Function Block), oftmals wird hierfür auch der Begriff “Funktionsbaustein” verwendet. FB-Instanz siehe Instanz FB-Typ Name eines Funktionsblocks mit Aufruf- und Rückgabeschnittstelle. FBD Function Block Diagram, siehe Funktionsplan Funktion Eine POE vom Typ Function Funktionsbaustein siehe Funktionsblock Funktionsblock Eine POE vom Typ Function_Block Funktionsplan Der Funktionsplan (Function Block Diagram) besteht aus einer Liste von Netzwerken, in denen sich beliebige Programmabläufe mit Hilfe von Verbindungselementen vollgrafisch realisieren lassen. FUP siehe Funktionsplan IL Instruction List, siehe Anweisungsliste Indirekter FB-Aufruf Aufruf einer FB-Instanz, dessen Name als VAR_IN_OUT-Parameter einer POE übergeben wurde. Instanz Strukturierter Datensatz eines FBs durch Deklaration eines Funktionsblocks unter Angabe des FB-Typs. KOP Abk. für Kontaktplan. Konfiguration Die Konfiguration (Configuration) definiert die Struktur der SPS, sie bildet die oberste Ebene im Softwaremodell der IEC 61131-3. Kontaktplan Kontaktplan (Ladder Diagram - LD) ist eine Programmiersprache zur Beschreibung von Netzwerken mit gleichzeitig arbeitenden boolschen, elektromechanischen Elementen wie Kontakten und Spulen. LD Ladder Diagram, siehe Kontaktplan POE Abk. für Programmorganisationseinheit (Program Organization Unit - POU) POU Program Organization Unit, siehe Programmorganisationseinheit Programmorganisationseinheit Ein Baustein der IEC 61131-3 des Typs Funktion, Funktionsblock oder Programm, aus dem Anwenderprogramme hierarchisch aufgebaut werden. Ressource Eine Ressource (Resource) stellt innerhalb einer Konfiguration eine Zentraleinheit (CPU) dar. Schritt Zustandsknoten in einem AS-Programm, in dem Anweisungen der zu einem Schritt zugehörigen Aktion angestoßen werden. SFC Sequential Function Chart, siehe Ablaufsprache SPS Speicherprogrammierbare Steuerung (Programmable Controller). DDS-IEC61131 DE 2.0 23 Lesezeichen ein-/ausblenden Einführung in die IEC 61131-3 Programmierung Anhang 24 ST Abk. für Strukturierter Text. Standard-Funktionen Menge der durch die IEC 61131-3 fest vordefinierten Funktionen zur Realisierung SPS-typischer Funktionalität. Standard-Funktionsbausteine siehe Standard-Funktionsblöcke Standard-Funktionsblöcke Menge der durch die IEC 61131-3 fest vordefinierten Funktionsblöcke (Function Blocks) zur Realisierung SPS-typischer Funktionalität. Strukturierter text Strukturierter Text (Structured Text) ist eine Programmiersprache zur Beschreibung von Algorithmen und Ausführungssteuerung mit den Mitteln einer modernen Hochsprache. Task Definition von Laufzeiteigenschaften eines Programms. Transition Übergang von einem AS-Schritt zum nächsten durch Auswertung der Transitionsbedingung. Typdefinition Definition eines benutzerspezifischen Datentyps auf der Basis bereits vorhandener Datentypen. Variable Bezeichnung eines Datenspeichers, der Werte annehmen kann, die durch den Datentyp sowie Angaben bei der Variablen-Deklaration festgelegt werden. Zyklus Ein Durchlauf des (periodisch aufgerufenen) Anwenderprogramms. Zykluszeit Die Zeit, die ein Anwenderprogramm für einen Zyklus benötigt. DDS-IEC61131 DE 2.0 L