Wo und wie deklariere ich meine CODESYS Variablen?

Wordcloud - CODESYS, Variablen, Datentypen, Deklaration

In diesem Artikel werde ich euch zeigen wo und wie Ihr in CODESYS Variablen deklarieren könnt. Zunächst einmal die Frage: Was bedeutet eigentlich Deklaration und was passiert dabei?

Die Deklaration einer Variable ist im ersten Schritt die Festlegung bzw. Verknüpfung eines Variablenname und eines Datentyp. Gleichzeitig könnt Ihr dabei die Sichtbarkeit eurer Variable innerhalb eures CODESYS Projektes definieren, Konstanten als Initialwert übergeben und eine Verknüpfung zu einem Hardware Adressbereich eurer SPS herstellen.

Prinzipiell werden eure Variablen im Deklarationsteil eines POUs angelegt. Diese Variablen sind nur innerhalb eures Programms, Bausteins oder eurer Funktion sichtbar. z.B.

PROGRAM PLC_PRG
VAR
	// counter to iterate error array
	iCounter: INT := -1;
END_VAR

Wollt Ihr eine Variable in mehreren Programmteilen verwenden, so müsst Ihr diese in einer globalen Variablenliste (GVL) außerhalb eurer Bausteine deklarieren. Neben diesen zwei Möglichkeiten ist es aber auch Möglich eine Variable direkt im Hardware-Konfigurations Editor zu erstellen, oder in einer sogenannten Netzwerkvariablen Liste (NVL). Die Netzwerkvariablen stehen Geräteübergreifend zur Verfügung. Diesem tollen Thema werde ich eine eigene Artikelreihe widmen, da der Informationsaustausch zwischen mehreren Geräten eine interessante Thematik ist.

Aber beginnen wird zunächst mit der einfachen Deklaration von Variablen in unserem Projekt.

Globale Variablenliste anlegen

  1. Klickt auf die Applikation in eurem Projekt
  2. Öffnet das Kontextmenü (Rechtsklick) -> Objekt hinzufügen -> Globale Variablenliste und tragt einen Namen ein.

    CODESYS Variablen - Hinzufügen einer globalen Variablenliste
    Globale Variablenliste (GVL) hinzufügen
  3. CODESYS erstellt nur für euch das Objekt GVL im Gerätebaum
  4. Öffnet diese GVL und Ihr seht folgende Darstellung

    Beispiel - UINT Variable deklarieren
    Beispiel – UINT Variable deklarieren

Hier könnt Ihr nun eure Variablen anlegen. Im Beispiel habe ich die Variable gErrorIndex vom Typ unsigned Integer angelegt und mit dem Wert 0 initialisiert. Grundlegend werden Variablen wie folgt deklariert:

<Name> {AT <Adresse>}:<Datentyp> {:=<Initialisierungswert>};
  1. Name der Variablen
  2. Adresse der Variable wenn optional ein Mapping auf ein Hardware Signal erfolgen soll
  3. Datentyp (siehe Artikel Datentypen)
  4. Initialisierungswert (nicht zwingend erforderlich)

Tabellarische Darstellung

Für manche Einsteiger/Umsteiger ist diese Textbasierte Darstellung gewöhnungsbedürftig. Hierfür hat 3S in CODESYS eine zweite Darstellungsform des Deklarationseditors implementiert. Nachfolgend seht Ihr die selbe Darstellung als Tabelle. Über die icons (siehe Animation unten) könnt Ihr zwischen den verschiedenen Ansichten umschalten.

Textbasierte Darstellung vs. Tabellarische Darstellung
Textbasierte Darstellung vs. Tabellarische Darstellung

Ihr könnt beliebig viele Globale Variablenlisten anlegen. Bei meinen Projekten existieren für die Steuerung von Antrieben, die Verbindung zu Visualisierungen und den globalen System-Handler jeweils separate Variablenlisten. Teilweise sogar mehr. Je nach Komplexität der Anlage.

Anmerkung: Wünscht Ihr, dass die Variable nicht nur innerhalb eurer Applikation global Verfügbar ist, sondern von eurem gesamten CODESYS Projektordner verwendet werden kann, so müsst Ihr Sie nicht im Geräte Tab hinzufügen, sondern auf den Reiter POUs wechseln und hier eine GVL anlegen.

Für die Deklaration eurer Variable stehen euch verschiedenen Typen zur Verfügung. Dadurch wird festgelegt, wo und wie Ihr die Variable einsetzten könnt. Einen dieser Typen bzw. dessen Schlüsselwort „VAR_GLOBAL“ habt Ihr im vorigen Beispiel bereit Kennengelernt. Alle diese Deklarationselemente müssen mit „END_VAR“ im Deklarationseditor wieder geschlossen werden.

Variablentypen

  1. VAR – lokale Variablen
  2. VAR_GLOBAL – globale Variablen oder Konstanten die im gesamten Projekt sichtbar sind
  3. VAR_INPUT – Eingangsvariablen eines Bausteins, Programms oder einer Funktion die beim Aufruf von außen beschrieben werden können.
  4. VAR_OUTPUT – Ausgangssignale eines Bausteins, Programms oder einer Funktion. In CODESYS kann eine Element mehrere Ausgangssignale besitzen.
  5. VAR_IN_OUT – Diese Variable kann Eingangssignal und Ausgangssignal gleichzeitig darstellen, da der Wert der Variable durch den Baustein einfach durchgereicht wird. Den Wert könnet Ihr innerhalb des Baustein-Codes beliebig verändern. Wollt Ihr jedoch von außen auf den Wert zugreifen, müsset Ihr zunächst eine Variable vom selben Datentyp anlegen und an diesen VAR_IN_OUT Konnektor übergeben. Hintergrund ist, dass hier der Mechanismus „Call by Reference“ eingesetzt wird. D.h. wenn Ihr innerhalb des Bausteins den Wert ändert wird dieser direkt in die Adresse der Variable geschrieben.
  6. VAR_TEMP – temporäre Variablen werden bei jedem neuen Aufruf des Bausteins neu initialisiert und eignen sich dadurch für die Nutzung von Schleifen oder Zählern.
  7. VAR_STAT – statische Variablen werden beim ersten Aufruf eines POUs initialisiert. Anders als die temporären Variablen bleib Ihr wert bestehen und eignet sich dadurch z.B. zum zählen/protokollieren der Aufrufe eines Bausteins oder einer Funktion.
  8. VAR_EXTERNAL  – nutzt Ihr eine globale Variable innerhalb eines Funktionsbausteines, so müsst Ihr diese (laut norm) im Deklarationsteil des Bausteins mit dem selben Namen/Bezeichner als external angeben.
  9. VAR_CONFIG – durch VAR_Config könnt Ihr variablen in FBI mit unvollständiger Adressangabe deklarieren und später auf Geräte E/As Mappen, indem Ihr die vollständige Adresse zuweist.
  10. VAR_INST – Instanzvariablen sind bei der Verwendung von Methoden (innerhalb von Funktionsbausteinen) sinnvoll. Dadurch könnt Ihr eure Variablen im Deklarationsteil einer Methode angeben. Der unterschied zu den anderen „lokal“ angelegten Variablen besteht darin, dass der Speicherort der Variable nicht auf dem Methoden-Stack liegt, sondern im Baustein-Stack und dadurch nicht bei jedem neuen Methoden Aufruf neu initialisiert wird.

Variablen Anlegen Dialog

Neben der Möglichkeit die Variablen in den jeweiligen Variablenlisten anzulegen könnt Ihr diese auch über den Variablen Anlegen Dialog anlegen. Hierzu könnt Ihr diesen Dialog einmal über das Menü ⇒ Bearbeiten ⇒ Variable Deklarieren öffnen, oder Ihr schreibt einfach im Anwendungsteil eines Programmeditors den Namen eurer Variable. Wenn diese noch nicht deklariert ist, öffnet CODESYS automatisch den Dialog (Option muss in den Einstellungen aktiviert sein) zum Anlegen der Variablen.

Hier findet die Deklaration nicht über die einzelnen Schlüsselworte statt, sondern Ihr könnt die einzelnen Parameter in verschiedenen Auswahllisten selektieren.

Variable deklarieren - CODESYS Dialog zum deklarieren einer Variable
Variable deklarieren – Dialog
  1. Wählt den Scope/Variablentyp/Gültigkeitsbereich eurer Variable (hier in unserem Fall soll es eine Lokale Variable im PLC_PRG werden).
  2. Gebt bei Name einen Bezeichner für eure Variable ein.
  3. Wählt unter Type den Datentyp z.B. INT (siehe Artikel Datentypen)
  4. In der Auswahlliste „Object“ ist euer Programm vorselektiert, in dem Ihr die den Variablennamen im Programmeditor geschrieben habt. Solltet Ihr den Dialog über das Menü geöffnet haben müsst Ihr hier ein POU oder eine Variablenliste auswählen.
  5. Gebt im „Initialization“ Feld den Startwert für euere Variable ein.
  6. Vergesst auch nicht ein sinnvolles Kommentar einzutragen.
  7. Aktiviert, wenn erforderlich, die Optionen CONSTANT, RETAIN, PERSISTENT (dazu später mehr)
  8. Nach dem betätigen auf OK wird euere Variable eingefügt

CODESYS Variablen Deklaration im E/A-Gerätekonfigurator

Kommen wir nun zu der letzten Möglichkeit, die ich euch vorstellen Möchte. Soll eure Variable direkt mit einem Hardware Signal verknüpft werden, so könnt Ihr diese auch direkt im E/A-Gerätekonfigurator deklarieren.

Dazu müsst Ihr in eurem selektierten Gerät einfach die Registerkarte E/A-Abbild öffnen und könnt nun das Mapping bearbeiten.

Variablen Deklaration im E/A Gerätekonfigurator
Variablen Deklaration im E/A Gerätekonfigurator

In der Spalte „Variable“ könnt Ihr nun entweder einfach einen neuen Variablenbezeichner  eintragen, oder Ihr wählt eine bestehende Variable (Achtung Datentyp muss passen) aus einem eurer POUs aus. Dazu müsst Ihr die Eingabehilfe öffnen (Button mit „…“ ) und eure Variable im passenden POU selektieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website benutzt Cookies und Google Analytics. Wenn du die Website weiter nutzt, gehen wir von deinem Einverständnis aus Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen