
- •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

Bit-Shift Operatoren...
Beispiel in AWL:
Var1 BYTE
LD |
2#1001_0011 |
|
NOT |
|
|
ST |
Var1 |
(* Ergebnis ist 2#0110_1100 *) |
Beispiel in ST:
Var1 := NOT 2#1001_0011
Beispiel in FUP:
10.3 Bit-Shift Operatoren...
Hinweis für Versionen bis einschließlich Service Pack 5 der Version 2.2: Der Codegenerator für Infineon C16x Zielsysteme führt die Bit-Shift Rechenoperationen mit Modulo 16 durch.
SHL
Bitweises Links-Shift eines Operanden: erg:= SHL (in, n)
in wird um n Bits nach links geschoben. und von rechts mit Nullen aufgefüllt.
Hinweis: Beachten Sie, dass die Anzahl der Bits, die für die Rechenoperation berücksichtigt wird, durch den Datentyp der Eingangsvariable in vorgegeben wird. Handelt es sich hierbei um eine Konstante, wird der kleinstmögliche Datentyp berücksichtigt. Der Datentyp der Ausgangsvariable bleibt ohne Auswirkung auf die Rechenoperation.
Sehen Sie im nachfolgenden Beispiel in hexadezimaler Darstellung, wie sich bei gleichem Wert der Eingangsvariablen in_byte und in_word die Ergebnisse erg_byte und erg_word der Operation unterscheiden, je nachdem, ob in vom Typ BYTE oder WORD ist.
Beispiel in ST:
PROGRAM shl_st VAR
in_byte : BYTE:=16#45;
in_word : WORD:=16#45; erg_byte : BYTE; erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=SHL(in_byte,n); (* Ergebnis ist 16#14 *) erg_word:=SHL(in_word;n); (* Ergebnis ist 16#0114 *)
Beispiel in FUP:
Beispiel in AWL:
LD 16#45
SHL 2
ST erg_byte
10-6 |
CoDeSys V2.3 |

10 - ANHANG
SHR
Bitweises Rechts-Shift eines Operanden: erg:= SHR (in, n)
in wird um n Bits nach rechts geschoben. Wenn ein vorzeichenloser Datentyp verwendet wird (BYTE, WORD, DWORD), wird von links mit Nullen aufgefüllt. Bei Vorzeichen-Datentypen wie z.B. INT wird dagegen ein arithmetischer Shift durchgeführt, d.h. es wird mit dem Wert des obersten Bits aufgefüllt.
Hinweis: Beachten Sie, dass die Anzahl der Bits, die für die Rechenoperation berücksichtigt wird, durch den Datentyp der Eingangsvariable in vorgegeben wird. Handelt es sich hierbei um eine Konstante, wird der kleinstmögliche Datentyp berücksichtigt. Der Datentyp der Ausgangsvariable bleibt ohne Auswirkung auf die Rechenoperation.
Sehen Sie im nachfolgenden Beispiel in hexadezimaler Darstellung die Ergebnisse der Operation, wobei einmal erg_byte vom Typ BYTE und einmal erg_word vom Typ WORD als Eingangsvariablen dienen.
Beispiel in ST:
PROGRAM shr_st VAR
in_byte : BYTE:=16#45;
in_word : WORD:=16#45; erg_byte : BYTE; erg_word : WORD;
n: BYTE :=2; END_VAR
erg_byte:=SHR(in_byte,n); (* Ergebnis ist 11 *) erg_word:=SHR(in_word;n); (* Ergebnis ist 0011 *)
Beispiel in FUP:
Beispiel in AWL:
LD 16#45
SHR 2
ST erg_byte
ROL
Bitweise Linksrotation eines Operanden: erg:= ROL (in, n)
erg, in und n sollten vom Typ BYTE, WORD oder DWORD sein. in wird n mal um eine Bitstelle nach links geschoben, wobei das linkeste Bit von rechts wieder eingeschoben wird.
Hinweis: Beachten Sie, dass die Anzahl der Bits, die für die Rechenoperation berücksichtigt wird, durch den Datentyp der Eingangsvariable in vorgegeben wird. Handelt es sich hierbei um eine Konstante, wird der kleinstmögliche Datentyp berücksichtigt. Der Datentyp der Ausgangsvariable bleibt ohne Auswirkung auf die Rechenoperation.
Sehen Sie im nachfolgenden Beispiel in hexadezimaler Darstellung, wie sich bei gleichem Wert der Eingangsvariablen in_byte und in_word die Ergebnisse erg_byte und erg_word der Operation unterscheiden, je nachdem, ob in vom Typ BYTE oder WORD ist.
Beispiel in ST:
PROGRAM rol_st VAR
in_byte : BYTE:=16#45; in_word : WORD:=16#45; erg_byte : BYTE; erg_word : WORD;
n: BYTE :=2;
CoDeSys V2.3 |
10-7 |

Bit-Shift Operatoren...
END_VAR
erg_byte:=ROL(in_byte,n); (* Ergebnis ist 16#15 *) erg_word:=ROL(in_word;n); (* Ergebnis ist 16#0114 *)
Beispiel in FUP:
Beispiel in AWL:
LD 16#45
ROL 2
ST erg_byte
ROR
Bitweise Rechtsrotation eines Operanden: erg:= ROR (IN, N)
erg, in und n sollten vom Typ BYTE, WORD oder DWORD sein. in wird n mal um eine Bitstelle nach rechts geschoben, wobei das rechteste Bit von links wieder eingeschoben wird.
Hinweis: Beachten Sie, dass die Anzahl der Bits, die für die Rechenoperation berücksichtigt wird, durch den Datentyp der Eingangsvariable in vorgegeben wird. Handelt es sich hierbei um eine Konstante, wird der kleinstmögliche Datentyp berücksichtigt. Der Datentyp der Ausgangsvariable bleibt ohne Auswirkung auf die Rechenoperation.
Sehen Sie im nachfolgenden Beispiel in hexadezimaler Darstellung, wie sich bei gleichem Wert der Eingangsvariablen in_byte und in_word die Ergebnisse erg_byte und erg_word der Operation unterscheiden, je nachdem, ob in vom Typ BYTE oder WORD ist.
Beispiel in ST:
PROGRAM ror_st
VAR
in_byte : BYTE:=16#45;
in_word : WORD:=16#45; erg_byte : BYTE; erg_word : WORD;
n: BYTE :=2; END_VAR
erg_byte:=ROR(in_byte,n); (* Ergebnis ist 16#51 *) erg_word:=ROR(in_word;n); (* Ergebnis ist 16#4011 *)
Beispiel in FUP:
Beispiel in AWL:
LD 16#45
ROR 2
ST erg_byte
10-8 |
CoDeSys V2.3 |

10 - ANHANG
10.4 Auswahloperatoren...
Sämtliche Auswahloperationen lassen sich auch auf Variablen durchführen. Wegen der besseren Anschaulichkeit beschränken wir uns in den folgenden Beispielen auf Konstanten als Operatoren.
SEL
Binäre Selektion.
OUT := SEL(G, IN0, IN1) bedeutet:
OUT := IN0 if G=FALSE;
OUT := IN1 if G=TRUE.
IN0, IN1 und OUT können jeden Typ haben, G muss vom Typ BOOL sein. Das Ergebnis der Selektion ist IN0, wenn G FALSE ist, bzw. IN1, wenn G TRUE ist.
Beispiel in AWL: |
|
||
LD |
TRUE |
|
|
SEL |
3,4 |
(* IN0 = 3, IN1 =4 *) |
|
ST |
Var1 |
(* Ergebnis ist 4 |
*) |
LD |
FALSE |
|
|
SEL |
3,4 |
|
|
ST |
Var1 |
(* Ergebnis ist 3 |
*) |
Beispiel in ST:
Var1:=SEL(TRUE,3,4); (* Ergebnis für Var1 ist 4 *)
Beispiel in FUP:
Hinweis: Zum Zweck der Laufzeitoptimierung wird folgendermaßen abgearbeitet: Ein Ausdruck, der IN0 vorgeschaltet ist, wird nur dann berechnet, wenn G FALSE ist. Ein Ausdruck der IN1 vorgeschaltet ist, wird nur dann berechnet, wenn G TRUE ist !
In der Simulation dagegen werden alle Zweige berechnet.
MAX
Maximumsfunktion. Liefert von zwei Werten den größten.
OUT := MAX(IN0, IN1)
IN0, IN1 und OUT können von beliebigem Typ sein.
Beispiel in AWL:
LD 90
MAX 30
MAY 40
MAX 77
ST Var1 (* Ergebnis ist 90 *)
Beispiel in ST:
Var1:=MAX(30,40); (* Ergebnis ist 40 *)
Var1:=MAX(40,MAX(90,30)); (* Ergebnis ist 90 *)
CoDeSys V2.3 |
10-9 |

Auswahloperatoren...
Beispiel in FUP:
MIN
Minimumsfunktion. Liefert von zwei Werten den kleinsten.
OUT := MIN(IN0, IN1)
IN0, IN1 und OUT können von beliebigem Typ sein.
Beispiel in AWL:
LD 90
MIN 30
MIN 40
MIN 77
ST Var1 (* Ergebnis ist 30 *)
Beispiel in ST:
Var1:=MIN(90,30); (* Ergebnis ist 30 *);
Var1:=MIN(MIN(90,30),40); (* Ergebnis ist 30 *);
Beispiel in FUP:
LIMIT
Limitierung
OUT := LIMIT(Min, IN, Max) bedeutet:
OUT := MIN (MAX (IN, Min), Max)
Max ist die obere, Min die untere Schranke für das Ergebnis. Wenn der Wert IN die obere Grenze Max überschreitet, dann liefert LIMIT Max. Wenn IN Min unterschreitet, dann ist das Ergebnis Min.
IN und OUT können von beliebigem Typ sein.
Beispiel in AWL:
LD 90
LIMIT 30,80
ST Var1 (* Ergebnis ist 80 *)
Beispiel in ST:
Var1:=LIMIT(30,90,80); (* Ergebnis ist 80 *);
MUX
Multiplexer
OUT := MUX(K, IN0,...,INn) bedeutet:
OUT := INK.
IN0, ...,INn und OUT können von beliebigem Typ sein. K muss von den Typen BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT oder UDINT sein. MUX wählt aus einer Menge von Werten den K-ten aus. Der erste Wert entspricht K=0. Ist K größer als die Anzahl der weiteren Eingänge (n) , so wird der letzte Wert weiter gegeben (INn).
Beispiel in AWL:
LD 0
10-10 |
CoDeSys V2.3 |