
- •1 Kurzer Einblick in CoDeSys
- •1.1 Was ist CoDeSys
- •1.2 Überblick über die Funktionalität von CoDeSys...
- •1.3 Übersicht der Anwender-Dokumentation zu CoDeSys
- •2 Was ist was in CoDeSys
- •2.1 Bestandteile eines Projekts...
- •2.2 Die Sprachen...
- •2.2.1 Anweisungsliste (AWL)...
- •2.2.2 Strukturierter Text (ST)...
- •2.2.3 Ablaufsprache (AS)...
- •2.2.4 Funktionsplan (FUP)...
- •2.2.5 Der freigraphische Funktionsplaneditor (CFC)...
- •2.2.6 Kontaktplan (KOP)...
- •2.3 Debugging, Onlinefunktionalitäten...
- •2.4 Die Norm...
- •3 Wir schreiben ein kleines Programm
- •3.1 Die Steuerung einer Ampelanlage...
- •3.2 Die Visualisierung einer Ampelanlage...
- •4 Die Komponenten im Einzelnen
- •4.1 Hauptfenster...
- •4.2 Projekt Optionen...
- •4.3 Projekte verwalten...
- •4.4 Objekte verwalten...
- •4.5 Allgemeine Editierfunktionen...
- •4.6 Allgemeine Online Funktionen...
- •4.7 Fenster ...
- •4.8 Die rettende Hilfe...
- •5 Die Editoren
- •5.1 Das gilt für alle Editoren...
- •5.2 Der Deklarationseditor...
- •5.2.1 Arbeiten im Deklarationseditor
- •5.2.2 Deklarationseditoren im Online Modus
- •5.3 Editoren der textuellen Programmiersprachen...
- •5.3.1 Arbeiten in den Texteditoren
- •5.3.2 Der Anweisungslisteneditor...
- •5.3.3 Der Editor für Strukturierten Text...
- •5.4 Editoren der grafischen Programmiersprachen...
- •5.4.1 Arbeiten in den grafischen Editoren
- •5.4.2 Der Funktionsplaneditor...
- •5.4.3 Der Kontaktplaneditor...
- •5.4.4 Der Ablaufspracheneditor...
- •5.4.5 Der freigraphische Funktionsplaneditor (CFC)...
- •6 Die Ressourcen
- •6.1 Übersicht Ressourcen
- •6.2 Globale Variablen, Variablenkonfiguration, Dokumentvorlage
- •6.2.1 Globale Variablen
- •6.2.2 Variablenkonfiguration...
- •6.2.3 Dokumentvorlage
- •6.3 Alarmkonfiguration
- •6.3.1 Überblick
- •6.3.2 Alarmsystem, Begriffe
- •6.3.3 Alarmklassen
- •6.3.4 Alarmgruppen
- •6.3.5 Alarmspeicherung
- •6.3.6 Menü Extras: Einstellungen
- •6.4 Bibliotheksverwaltung...
- •6.5 Logbuch...
- •6.6 Steuerungskonfiguration
- •6.6.1 Überblick
- •6.6.2 Arbeiten im CoDeSys Steuerungskonfigurator
- •6.6.3 Allgemeine Einstellungen in der Steuerungskonfiguration
- •6.6.4 Anwendungsspezifischer Parameterdialog
- •6.6.5 Konfiguration eines I/O Moduls...
- •6.6.6 Konfiguration eines Kanals
- •6.6.7 Konfiguration von Profibus Modulen...
- •6.6.8 Konfiguration von CAN Modulen...
- •6.6.9 Konfiguration eines CanDevice (CANopen Slave)
- •6.6.10 Steuerungskonfiguration im Online Modus
- •6.6.11 Hardware Scan/Status/Diagnose aus dem Zielsystem
- •6.7 Taskkonfiguration...
- •6.7.1 Arbeiten im Taskkonfigurator
- •6.7.2 System-Ereignisse
- •6.7.3 Taskkonfiguration im Online Modus
- •6.8.1 Überblick
- •6.9 Traceaufzeichnung...
- •6.9.1 Überblick und Konfiguration
- •6.9.2 Darstellung der Traceaufzeichnung
- •6.9.3 'Extras' 'Tracewerte speichern'
- •6.9.4 'Extras' 'Externe Tracekonfigurationen'
- •6.10 Arbeitsbereich
- •6.11 Parameter Manager ..
- •6.11.1 Aktivieren des Parameter Managers
- •6.11.2 Der Parameter Manager Editor, Overview
- •6.11.3 Parameterlisten: Typen und Attribute
- •6.11.4 Parameterlisten verwalten
- •6.11.5 Parameterlisten editieren
- •6.11.6 Parameter Manager im Online Modus
- •6.11.7 Export / Import von Parameterlisten
- •6.12 Zielsystemeinstellungen
- •6.13 PLC Browser...
- •6.13.1 Allgemeines zur PLC-Browser- Bedienung
- •6.13.2 Kommandoeingabe im PLC-Browser
- •6.13.3 Verwendung von Makros bei der Kommandoeingabe im PLC-Browser
- •6.13.4 Weitere PLC-Browser-Optionen
- •6.14 Tools
- •6.14.1 Eigenschaften der bestehenden Verknüpfungen (Objekt Eigenschaften)
- •6.14.2 Verwalten von Verknüpfungen
- •6.14.3 Die wichtigsten Fragen zu Tools
- •7 ENI Versionsverwaltung
- •7.1.2 Voraussetzungen für das Arbeiten mit einer ENI Projektdatenbank
- •7.1.3 Arbeiten in CoDeSys mit der Projektdatenbank
- •7.1.4 Kategorien innerhalb der Projektdatenbank
- •8 DDE Kommunikation
- •8.1 DDE Schnittstelle des CoDeSys Programmiersystems...
- •8.2 DDE Kommunikation über den GatewayDDE-Server...
- •9 Lizenzmanagement in CoDeSys
- •9.1 Der 3S Licensing Manager
- •9.1.1 Erstellen einer lizenzpflichtigen Bibliothek
- •10 ANHANG
- •Anhang A IEC Operatoren und zusätzliche normerweiternde Funktionen
- •Arithmetische Operatoren...
- •Bitstring Operatoren...
- •Bit-Shift Operatoren...
- •Auswahloperatoren...
- •Vergleichsoperatoren...
- •Adressoperatoren...
- •Aufrufoperator...
- •Typkonvertierungen...
- •Numerische Operatoren...
- •Anhang B Operanden in CoDeSys
- •Konstanten...
- •Variablen...
- •Adressen...
- •Funktionen...
- •Anhang C Datentypen in CoDeSys
- •Standard Datentypen
- •Definierte Datentypen
- •Anhang D CoDeSys Bibliotheken
- •Die Bibliothek Standard.lib
- •String Funktionen...
- •Bistabile Funktionsblöcke...
- •Flankenerkennung...
- •Zähler...
- •Timer...
- •Die Bibliothek Util.lib
- •BCD-Konvertierung...
- •Bit-/Byte-Funktionen...
- •Mathematische Hilfsfunktionen...
- •Regler...
- •Signalgeneratoren...
- •Funktionsmanipulatoren...
- •Analogwertverarbeitung...
- •Die Bibliothek AnalyzationNew.lib
- •Die CoDeSys Systembibliotheken
- •Anhang E Übersicht: Operatoren und Bibliotheksbausteine
- •Anhang F Kommandozeilen-/Kommandodatei-Befehle
- •Kommandozeilen-Befehle
- •Kommandodatei (Cmdfile)-Befehle
- •Anhang G Siemens Import
- •SEQ-Symbolikdatei importieren
- •S5-Datei importieren
- •Konvertierung S5 nach IEC 1131-3
- •Anhang H Dialoge der Zielsystemeinstellungen
- •Einstellungen in Kategorie Zielplattform
- •Einstellungen in Kategorie Allgemein
- •Einstellungen in Kategorie Speicheraufteilung
- •Einstellungen in Kategorie Netzfunktionen
- •Einstellungen in Kategorie Visualisierung
- •Anhang I Tastaturbedienung
- •Tastaturbedienung
- •Tastenkombinationen
- •Anhang J Übersetzungsfehler und -warnungen
- •Warnungen...
- •Übersetzungsfehler...
- •Index

10 - ANHANG
10 ANHANG
Anhang A IEC Operatoren und zusätzliche normerweiternde Funktionen
Überblick
CoDeSys unterstützt alle IEC-Operatoren. Diese sind, im Gegensatz zu den Standardfunktionen (Standardbibliothek) implizit im ganzen Projekt bekannt. Neben den IEC-Operatoren unterstützt CoDeSys außerdem folgende nicht von der Norm verlangte Operatoren: INDEXOF und SIZEOF (siehe Arithmetische Operatoren), ADR und BITADR (siehe Adressoperatoren).
Achtung: Bei Operationen mit Gleitkomma-Datentypen ist das Rechenergebnis abhängig von der verwendeten Zielsystem-Hardware !
In den Bausteinimplementationen werden Operatoren wie Funktionen benutzt.
>Arithmetische Operatoren
>Bitstring Operatoren
>Bit-Shift Operatoren
>Auswahloperatoren
>Vergleichsoperatoren
>Adressoperatoren
>Aufrufoperator
>Typkonvertierungen
>Numerische Operatoren
10.1Arithmetische Operatoren...
ADD
Addition von Variablen vom Typ BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL und LREAL.
Es können auch zwei TIME-Variablen addiert werden, die Summe ist dann wieder eine Zeit (z.B. gilt t#45s + t#50s = t#1m35s)
Beispiel in AWL:
LD 7
ADD 2,4,7
ST Var1
Beispiel in ST:
var1 := 7+2+4+7;
Beispiel in FUP:
MUL
CoDeSys V2.3 |
10-1 |

Arithmetische Operatoren...
Multiplikation von Variablen vom Typ BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL und LREAL.
Beispiel in AWL:
LD 7
MUL 2,4,7
ST Var1
Beispiel in ST:
var1 := 7*2*4*7;
Beispiel in FUP:
SUB
Subtraktion einer Variablen vom Typ BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL und LREAL von einer anderen Variablen von einem dieser Typen.
Eine TIME-Variable kann auch von einer anderen TIME-Variablen subtrahiert werden, das Ergebnis ist dann wieder vom Typ TIME. Beachten Sie, dass negative TIME-Werte nicht definiert sind.
Beispiel in AWL:
LD 7
SUB 2
ST Var1
Beispiel in ST:
var1 := 7-2;
Beispiel in FUP:
DIV
Division einer Variablen vom Typ BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL und LREAL durch eine andere Variable von einem dieser Typen.
Beispiel in AWL:
LD 8
DIV 2
ST Var1 (* Ergebnis ist 4 *)
Beispiel in ST:
var1 := 8/2;
Beispiel in FUP:
Hinweis: Wenn Sie in Ihrem Projekt Funktionen mit Namen CheckDivByte, CheckDivWord, CheckDivDWord und CheckDivReal definieren, können Sie damit bei Verwendung des Operators DIV den Wert des Divisors überprüfen, beispielsweise um eine Division durch 0 zu verhindern. Der Name der Funktion ist festgelegt und darf nur diese Bezeichnung besitzen.
Achtung: Beachten Sie, dass das Verhalten im Falle einer Division durch 0 von dem eingesetztem Betriebsund Zielsystem abhängig ist.
10-2 |
CoDeSys V2.3 |

10 - ANHANG
Beispiel für die Implementierung der Funktion CheckDivReal:
FUNCTION CheckDivReal : REAL
VAR_INPUT divisor:REAL;
END_VAR
IF divisor = 0 THEN
CheckDivReal:=1;
ELSE CheckDivReal:=divisor;
END_IF;
Das Ergebnis der Funktion CheckDivReal wird vom Operator DIV als Divisor eingesetzt. Im nachfolgend dargestellten Beispielprogramm wird dadurch verhindert, dass durch 0 geteilt wird, der Divisor (d) wird von 0 auf 1 gesetzt. Das Ergebnis erg der Division ist dementsprechend 799.
PROGRAM PLC_PRG
VAR erg:REAL;
v1:REAL:=799;
d:REAL;
END_VAR erg:= v1/d;
MOD
Modulo Division einer Variablen vom Typ BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT durch eine andere Variable von einem dieser Typen. Als Ergebnis liefert diese Funktion den ganzzahligen Rest der Division.
Beispiel in AWL:
LD 9
MOD 2
ST Var1 (* Ergebnis ist 1 *)
Beispiel in ST:
var1 := 9 MOD 2;
Beispiel in FUP:
MOVE
Zuweisung einer Variablen auf eine andere Variable eines entsprechenden Typs. Dadurch, dass MOVE in den FUP, CFCund KOP-Editoren als Baustein verfügbar ist, kann dort die EN/EN0Funktionalität auch auf eine Variablenzuweisung angewendet werden.
Beispiel in CFC in Verbindung mit der EN/EN0 Funktion:
Nur wenn en_i TRUE ist, wird der Wert der Variablen var1 Variable var2 zugewiesen.
Beispiel in AWL:
LD ivar1
MOVE ivar2
ST ivar2 (* Ergebnis: var2 erhält Wert von var1 *)
( entspricht:
LD ivar1
ST ivar2 )
CoDeSys V2.3 |
10-3 |

Bitstring Operatoren...
Beispiel in ST:
ivar2 := MOVE(ivar1);
( entspricht:
ivar2 := ivar1; )
INDEXOF
Diese Funktion ist nicht von der Norm IEC61131-3 vorgeschrieben.
Als Ergebnis liefert INDEXOF den internen Index eines Bausteins.
Beispiel in ST:
var1 := INDEXOF(baustein2);
SIZEOF
Diese Funktion ist nicht von der Norm IEC61131-3 vorgeschrieben.
Als Ergebnis liefert SIZEOF die Anzahl der Bytes, die die angegebene Variable benötigt.
Beispiel in AWL: arr1:ARRAY[0..4] OF INT;
Var1 INT
LD arr1
SIZEOF
ST Var1 (* Ergebnis ist 10 *)
Beispiel in ST:
var1 := SIZEOF(arr1);
10.2 Bitstring Operatoren...
AND
Bitweises AND von Bit-Operanden. Die Operanden sollten vom Typ BOOL, BYTE, WORD oder DWORD sein.
Beispiel in AWL:
Var1 BYTE
LD 2#1001_0011
AND 2#1000_1010
ST Var1 (* Ergebnis ist 2#1000_0010 *)
Beispiel in ST:
var1 := 2#1001_0011 AND 2#1000_1010
Beispiel in FUP:
Hinweis: Wenn Sie bei Verwendung von 68xxxoder C-Code-Generatoren im FUP einen wie hier dargestellten
Programmablauf eingeben, müssen Sie folgendes beachten: Die Zuweisung des Wertes der zweiten Eingangsvariablen am AND-Operator-Baustein zur Variablen z wird aufgrund der optimierten
10-4 |
CoDeSys V2.3 |

10 - ANHANG
Abarbeitungsprozedur im FUP nicht mehr durchgeführt, sobald Eingangsvariable a den Wert FALSE hat !
OR
Bitweises OR von Bit-Operanden. Die Operanden sollten vom Typ BOOL, BYTE, WORD oder DWORD sein.
Beispiel in AWL: |
|
|
Var1 |
BYTE |
|
LD |
2#1001_0011 |
|
OR |
2#1000_1010 |
|
ST |
Var1 |
(* Ergebnis ist 2#1001_1011 *) |
Beispiel in ST:
Var1 := 2#1001_0011 OR 2#1000_1010
Beispiel in FUP:
Hinweis: Wenn Sie bei Verwendung von 68xxxoder C-Code-Generatoren im FUP einen wie hier dargestellten
Programmablauf eingeben, müssen Sie folgendes beachten: Die Zuweisung des Wertes der zweiten Eingangsvariablen am OR-Operator-Baustein zur Variablen z wird aufgrund der optimierten Abarbeitungsprozedur im FUP nicht mehr durchgeführt, sobald Eingangsvariable a den Wert TRUE hat !
XOR
Bitweises XOR von Bit-Operanden. Die Operanden sollten vom Typ BOOL, BYTE, WORD oder DWORD sein.
Beispiel in AWL: |
|
|
Var1 |
BYTE |
|
LD |
2#1001_0011 |
|
XOR |
2#1000_1010 |
|
ST |
Var1 |
(* Ergebnis ist 2#0001_1001 *) |
Beispiel in ST:
Var1 := 2#1001_0011 XOR 2#1000_1010
Beispiel in FUP:
Hinweis: Beachten Sie das Verhalten des XOR-Bausteins in erweiterter Form, also bei mehr als 2 Eingängen: Die Eingänge werden paarweise geprüft und die jeweiligen Ergebnisse dann wiederum gegeneinander verglichen (entspricht der Norm, jedoch nicht unbedingt der Erwartung).
NOT
Bitweises NOT eines Bit Operanden. Der Operand sollte vom Typ BOOL, BYTE, WORD oder DWORD sein
CoDeSys V2.3 |
10-5 |