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

Die Bibliothek Standard.lib
ST VarBOOL3
Beispiel in FUP:
Beispiel in ST:
SEMAInst(CLAIM:= VarBOOL1 , RELEASE:=VarBOOL2 );
VarBOOL3 := SEMAInst.BUSY;
10.16.3Flankenerkennung...
R_TRIG
Der Funktionsblock R_TRIG detektiert eine ansteigende Flanke.
FUNCTION_BLOCK R_TRIG
VAR_INPUT
CLK : BOOL;
END_VAR
VAR_OUTPUT
Q : BOOL;
END_VAR
VAR
M : BOOL := FALSE;
END_VAR
Q := CLK AND NOT M;
M := CLK;
Solange die Eingabevariable CLK FALSE liefert, solange werden die Ausgabe Q und die Hilfsvariable M FALSE sein. Sobald CLK TRUE liefert, wird zuerst Q TRUE liefern, und dann M auf TRUE gesetzt. D.h.: bei jedem weiteren Aufruf der Funktionsblockinstanz wird Q wieder FALSE liefern, bis CLK eine fallende und wieder eine steigende Flanke hat.
Deklarationsbeispiel:
RTRIGInst : R_TRIG ;
Beispiel in AWL:
CAL RTRIGInst(CLK := VarBOOL1)
LD RTRIGInst.Q
ST VarBOOL2
Beispiel in FUP:
Beispiel in ST:
RTRIGInst(CLK:= VarBOOL1);
VarBOOL2 := RTRIGInst.Q;
F_TRIG
Der Funktionsblock F_TRIG detektiert eine fallende Flanke.
FUNCTION_BLOCK F_TRIG
VAR_INPUT
CLK: BOOL;
END_VAR
10-46 |
CoDeSys V2.3 |

10 - ANHANG
VAR_OUTPUT
Q: BOOL;
END_VAR
VAR
M: BOOL := FALSE;
END_VAR
Q := NOT CLK AND NOT M;
M := NOT CLK;
Solange die Eingabevariable CLK TRUE liefert, solange werden die Ausgabe Q und die Hilfsvariable M FALSE sein. Sobald CLK FALSE liefert, wird zuerst Q TRUE liefern, und dann M auf TRUE gesetzt. D.h.: bei jedem weiteren Aufruf der Funktionsblockinstanz wird Q wieder FALSE liefern, bis CLK eine steigende und wieder eine fallende Flanke hat.
Deklarationsbeispiel:
FTRIGInst : F_TRIG ;
Beispiel in AWL:
CAL FTRIGInst(CLK := VarBOOL1)
LD FTRIGInst.Q
ST VarBOOL2
Beispiel in FUP:
Beispiel in ST:
FTRIGInst(CLK:= VarBOOL1);
VarBOOL2 := FTRIGInst.Q;
10.16.4Zähler...
CTU
Der Funktionsblock Aufwärtszähler :
Die Eingänge CU und RESET und der Ausgang Q sind vom Typ BOOL, der Eingang PV und der Ausgang CV sind vom Typ INT.
Wenn RESET TRUE ist, wird die Zählvariable CV mit 0 initialisiert. Wenn CU eine steigende Flanke von FALSE auf TRUE hat, dann wird CV um 1 erhöht.
Q liefert TRUE, wenn CV größer oder gleich der Obergrenze PV ist. Deklarationsbeispiel:
CTUInst : CTU ;
Beispiel in AWL:
CAL CTUInst(CU := VarBOOL1, RESET := VarBOOL2, PV := VarINT1)
LD CTUInst.Q
ST VarBOOL3
LD CTUInst.CV
ST VarINT2
CoDeSys V2.3 |
10-47 |

Die Bibliothek Standard.lib
Beispiel in FUP:
Beispiel in ST:
CTUInst(CU:= VarBOOL1, RESET:=VarBOOL2 , PV:= VarINT1);
VarBOOL3 := CTUInst.Q ;
VarINT2 := CTUInst.CV;
CTD
Der Funktionsblock Abwärtszähler :
Die Eingänge CD und LOAD und der Ausgang Q sind vom Typ BOOL, der Eingang PV und der Ausgang CV vom Typ INT.
Wenn LOAD TRUE ist, wird die Zählvariable CV mit der Obergrenze PV initialisiert. Wenn CD eine steigende Flanke von FALSE auf TRUE hat, wird CV um 1 erniedrigt, solange CV größer als 0 ist (Wenn also kein Unterlauf verursacht wird).
Q liefert TRUE, wenn CV gleich 0 ist. Deklarationsbeispiel:
CTDInst : CTD ;
Beispiel in AWL:
CAL |
CTDInst(CD := VarBOOL1, LOAD := VarBOOL2, PV := VarINT1) |
LD |
CTDInst.Q |
ST |
VarBOOL3 |
LD |
CTDInst.CV |
ST |
VarINT2 |
Beispiel in FUP:
Beispiel in ST:
CTDInst(CD:= VarBOOL1, LOAD:=VarBOOL2 , PV:= VarINT1);
VarBOOL3 := CTDInst.Q ;
VarINT2 := CTDInst.CV;
CTUD
Der Funktionsblock Aufund Abwärtszähler :
Die Eingänge CU, CD, RESET, LOAD und die Ausgänge QU und QD sind vom Typ BOOL, PV und CV sind vom Typ INT.
Wenn RESET gilt, dann wird die Zählvariable CV mit 0 initialisiert. Wenn LOAD gilt, dann wird CV mit PV initialisiert.
Wenn CU eine steigende Flanke von FALSE auf TRUE hat, dann wird CV um 1 erhöht. Wenn CD eine steigende Flanke von FALSE auf TRUE hat, dann wird CV jeweils um 1 erniedrigt, solange CV keinen Unterlauf verursacht.
QU liefert TRUE, wenn CV größer oder gleich PV geworden ist.
10-48 |
CoDeSys V2.3 |

10 - ANHANG
QD liefert TRUE, wenn CV gleich 0 geworden ist
Deklarationsbeispiel:
CTUDInst : CUTD ;
Beispiel in AWL:
CAL |
CTUDInst(CU:=VarBOOL2, RESET:=VarBOOL3, LOAD:=VarBOOL4, PV:=VarINT1) |
LD |
CTUDInst.Q |
ST |
VarBOOL5 |
LD |
CTUDInst.QD |
ST |
VarBOOL5 |
LD |
CTUInst.CV |
ST |
VarINT2 |
Beispiel in FUP:
Beispiel in ST:
CTUDInst(CU := VarBOOL1, CU:= VarBOOL2, RESET := VarBOOL3, LOAD:=VarBOOL4 , PV:=
VarINT1);
VarBOOL5 := CTUDInst.QU ;
VarBOOL6 := CTUDInst.QD ;
VarINT2 := CTUDInst.CV;
10.16.5Timer...
TP
Der Funktionsblock TP ist ein Pulsgeber. TP(IN, PT, Q, ET) bedeutet:
IN und PT sind Eingabevariablen vom Typ BOOL bzw. TIME. Q und ET sind Ausgabevariablen vom Typ BOOL bzw. TIME. Wenn IN FALSE ist, sind die Ausgaben FALSE bzw. 0.
Sobald IN TRUE ist, wird in ET die Zeit in Millisekunden hochgezählt, bis der Wert gleich dem in PT ist, dann bleibt er gleich.
Q ist TRUE wenn IN TRUE und ET kleiner gleich PT ist. Andernfalls ist es FALSE. Q liefert somit für den in PT angegebenen Zeitraum ein Signal.
Graphische Darstellung des zeitlichen Ablaufs von TP:
CoDeSys V2.3 |
10-49 |

Die Bibliothek Standard.lib
Deklarationsbeispiel:
TPInst : TP ;
Beispiel in AWL:
CAL TPInst(IN := VarBOOL1, PT := T#5s)
LD TPInst.Q
ST VarBOOL2
Beispiel in FUP:
Beispiel in ST:
TPInst(IN := VarBOOL1, PT:= T#5s);
VarBOOL2 :=TPInst.Q;
TON
Der Funktionsblock Timer on-delay realisiert eine Einschaltverzögerung. TON(IN, PT, Q, ET) bedeutet:
IN und PT sind Eingabevariablen vom Typ BOOL bzw. TIME. Q und ET sind Ausgabevariablen vom Typ BOOL bzw. TIME. Wenn IN FALSE ist, sind die Ausgaben FALSE bzw. 0.
Sobald IN TRUE ist, wird in ET die Zeit in Millisekunden hochgezählt, bis der Wert gleich dem in PT ist, dann bleibt er gleich.
Q ist TRUE wenn IN TRUE und ET gleich PT ist. Andernfalls ist es FALSE.
Q hat somit eine steigende Flanke, wenn die in PT in Millisekunden angegebene Zeit abgelaufen ist. Graphische Darstellung des zeitlichen Verhaltens von TON:
Deklarationsbeispiel:
TONInst : TON ;
Beispiel in AWL:
CAL TONInst(IN := VarBOOL1, PT := T#5s)
LD TONInst.Q
ST VarBOOL2
Beispiel in FUP:
10-50 |
CoDeSys V2.3 |

10 - ANHANG
Beispiel in ST:
TONInst(IN := VarBOOL1, PT:= T#5s);
VarBOOL2 :=TONInst.Q;
TOF
Der Funktionsblock Timer off-delay realisiert eine Ausschaltverzögerung. TOF(IN, PT, Q, ET) bedeutet:
IN und PT sind Eingabevariablen vom Typ BOOL bzw. TIME. Q und ET sind Ausgabevariablen vom Typ BOOL bzw. TIME. Wenn IN TRUE ist, sind die Ausgaben TRUE bzw. 0.
Sobald IN FALSE ist, wird in ET die Zeit in Millisekunden hochgezählt, bis der Wert gleich dem in PT ist, dann bleibt er gleich.
Q ist FALSE wenn IN FALSE und ET gleich PT ist. Andernfalls ist es TRUE.
Q hat somit eine fallende Flanke, wenn die in PT in Millisekunden angegebene Zeit abgelaufen ist. Graphische Darstellung des zeitlichen Verhaltens von TOF:
Deklarationsbeispiel:
TOFInst : TOF ;
Beispiel in AWL:
CAL TOFInst(IN := VarBOOL1, PT := T#5s)
LD TOFInst.Q
ST VarBOOL2
Beispiel in FUP:
Beispiel in ST:
TOFInst(IN := VarBOOL1, PT:= T#5s);
VarBOOL2 :=TOFInst.Q;
RTC
Der Funktionsblock Runtime Clock gibt ab einem vorgegebenen Startzeitpunkt die fortlaufende Datumsund Uhrzeit wieder.
RTC(EN, PDT, Q, CDT) bedeutet:
CoDeSys V2.3 |
10-51 |