
- •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 Util.lib
EN und PDT sind Eingabevariablen vom Typ BOOL bzw. DATE_AND_TIME. Q und CDT sind Ausgabevariablen vom Typ BOOL bzw. DATE_AND_TIME. Wenn EN FALSE ist, sind die Ausgaben Q und CDT FALSE bzw. DT#1970-01-01-00-00:00:00.
Sobald EN auf TRUE wechselt, wird die Zeit des PDT gesetzt und solange in Sekunden hochgezählt und über CDT ausgegeben (siehe Beispiel in Darstellung oben) wie EN TRUE ist. Sobald EN wieder auf FALSE gesetzt wird, springt CDT auf den Ausgangswert von DT#1970-01-01-00-00:00:00 zurück. Beachten Sie, dass die Zeit aus PDT nur durch eine steigende Flanke in EN gesetzt wird.
10.17 Die Bibliothek Util.lib
Diese Bibliothek enthält eine zusätzliche Sammlung verschiedener Bausteine, die für BCDKonvertierung, Bit/Byte-Funktionen, mathematische Hilfsfunktionen, als Regler, Signalgeneratoren, Funktionsmanipulatoren und zur Analogwertverarbeitung verwendet werden können.
Da einige der Funktionen und Funktionsbausteine REAL-Variablen enthalten, die von manchen Laufzeitsysteme nicht unterstützt werden, existiert eine zusätzliche Bibliothek UTIL_NO_REAL, in der diese Bausteine fehlen.
10.17.1BCD-Konvertierung...
Ein Byte im BCD-Format enthält ganzzahlige Werte zwischen 0 und 99. Dabei werden für jede Dezimalstelle vier Bit verwendet. Die Zehnerdezimalstelle wird dabei in die Bits 4-7 gespeichert. Somit ähnelt das BCD-Format der hexadezimalen Darstellung, nur dass im BCD-Byte nur Werte zwischen 0 und 99 gespeichert werden können, ein Hexadezimal-Byte jedoch von 0 bis FF reicht.,
Beispiel: Die Integerzahl 51 soll ins BCD-Format umgewandelt werden. 5 ist binär 0101, 1 ist binär 0001, somit das BCD-Byte 01010001, was dem Wert $51=81 entspricht.
BCD_TO_INT
Diese Funktion wandelt ein Byte im BCD-Format in einen INT-Wert um:
Der Eingabewert der Funktion ist vom Typ BYTE und die Ausgabe vom Typ INT.
Sollte ein Byte übergeben werden, welches nicht dem BCD-Format entspricht, so wird die Ausgabe "-1".
Beispiele in ST:
i:=BCD_TO_INT(73); (* Ergebnis ist 49 *) k:=BCD_TO_INT(151); (* Ergebnis ist 97 *) l:=BCD_TO_INT(15); (* Ausgabe -1, weil nicht BCD-Format *)
INT_TO_BCD
Diese Funktion verwandelt einen INTEGER-Wert in ein Byte im BCD-Format : Der Eingabewert der Funktion ist vom Typ INT, die Ausgabe vom Typ BYTE.
Sollte ein INTEGER-Wert übergeben werden, welcher nicht in ein BCD-Byte verwandelt werden kann, so wird 255 ausgegeben.
Beispiele in ST:
i:=INT_TO_BCD(49); (* Ergebnis ist 73 *) k:=BCD_TO_INT(97); (* Ergebnis ist 151 *) l:=BCD_TO_INT(100); (* Fehler! Ausgabe : 255 *)
10-52 |
CoDeSys V2.3 |

10 - ANHANG
10.17.2Bit-/Byte-Funktionen...
EXTRACT
Eingänge dieser Funktion sind ein DWORD X, sowie ein BYTE N. Ausgegeben wird ein BOOL-Wert, der den Inhalt des N-ten Bits der Eingabe X enthält, wobei mit dem nullten Bit zu zählen begonnen wird.
Beispiele in ST:
FLAG:=EXTRACT(X:=81, N:=4);
(* Ergebnis : TRUE, weil 81 ist binär 1010001, das 4. Bit also 1 *)
FLAG:=EXTRACT(X:=33, N:=0);
(* Ergebnis : TRUE, weil 33 ist binär 100001, das 0. Bit also 1 *)
PACK
Diese Funktion vermag acht Eingabebits B0, B1, ..., B7 vom Typ BOOL als ein BYTE zurückzugeben. Eng verknüpft mit dieser Funktion ist der Funktionsblock UNPACK.
PUTBIT
Die Eingabe dieser Funktion besteht aus einem DWORD X, einem BYTE N und einem Booleschen Wert B.
PUTBIT setzt das N-te Bit von X auf den Wert B, wobei mit dem nullten Bit zu zählen begonnen wird
Beispiel in ST:
var1:=38; |
(* binär 100110 *) |
var2:=PUTBIT(A,4,TRUE); (* Ergebnis: 54 = 2#110110 *) var3:=PUTBIT(A,1,FALSE); (* Ergebnis: 36 = 2#100100 *)
UNPACK
Der Funktionsblock UNPACK wandelt die Eingabe B vom Typ BYTE in 8 Ausgabevariablen B0,...,B7 vom Typ BOOL um, und ist somit das Gegenstück zur Funktion PACK.
Beispiel in CFC:
Ausgabe:
10.17.3Mathematische Hilfsfunktionen...
DERIVATIVE
Dieser Funktionsblock bestimmt näherungsweise die lokale zeitliche Ableitung.
Über IN wird der Funktionswert als REAL-Variable übergeben. TM enthält die verstrichene Zeit in msec in einem DWORD und durch den Eingang RESET vom Typ BOOL läßt sich der Funktionsblock durch Übergabe vom Wert TRUE neu starten.
Der Ausgang OUT ist vom Typ REAL.
Um ein möglichst gutes Ergebnis zu erzielen, nähert DERIVATIVE über die letzten vier Werte, um Fehler - verursacht durch (z.B. Mess-)Ungenauigkeiten in den Eingabevariablen - möglichst gering zu halten.
CoDeSys V2.3 |
10-53 |

Die Bibliothek Util.lib
Baustein in CFC:
INTEGRAL
Dieser Funktionsblock bestimmt näherungsweise das Integral einer Funktion nach der Zeit.
Analog zu DERIVATIVE wird über IN der Funktionswert als REAL-Variable übergeben. TM enthält die verstrichene Zeit in msec in einem DWORD und durch den Eingang RESET vom Typ BOOL läßt sich der Funktionsblock mit TRUE neu starten.
Der Ausgang OUT ist vom Typ REAL.
Das Integral wird durch eine Treppenfunktionen genähert.
Erreicht der Integralwert das Ende des Wertebereichs einer REAL-Variable (ca. ±1038), dann wird die BOOLsche Ausgangsvariable OVERFLOW auf TRUE gesetzt, und der Baustein ist so lange gesperrt, bis er mit RESET neu initialisiert wird.
Baustein in CFC: Beispiel: Integral über eine lineare Funktion:
STATISTICS_INT
Dieser Funktionsblock berechnet einige statistische Standardwerte:
Die Eingabe IN ist vom Typ INT. Wird die BOOLsche Eingabe RESET TRUE, dann werden alle Werte neu initialisiert.
Die Ausgabe MN enthält den Minimal-, MX den Maximalwert von IN. AVG beschreibt den Durchschnitt, also den Erwartungswert von IN. Alle drei Ausgaben sind vom Typ INT.
Baustein in CFC:
STATISTICS_REAL
Dieser Funktionsblock entspricht STATISTICS_INT, nur dass die Eingabe IN wie die Ausgaben MN, MX, AVG vom Typ REAL sind.
VARIANCE
VARIANCE berechnet die Varianz eingegebener Werte.
Die Eingabe IN ist vom Typ REAL, RESET vom Typ BOOL und die Ausgabe OUT wieder vom Typ REAL.
10-54 |
CoDeSys V2.3 |

10 - ANHANG
Von den eingegebenen Werten berechnet dieser Funktionsblock die statistische Varianz. Mit RESET=TRUE läßt sich VARIANCE neu initialisieren.
Die Standardabweichung kann leicht aus der Quadratwurzel von VARIANCE berechnet werden.
10.17.4Regler...
PD
Der PD-Regler-Funktionsblock :
ACTUAL (Istwert) und SET_POINT (Sollwert) sowie KP, der Proportionalitätskoeffizient, sind Eingabewerte vom Typ REAL. TV ist vom Typ DWORD und enthält die Vorhaltzeit in msec. Y_OFFSET, Y_MIN und Y_MAX sind vom Typ REAL und dienen der Transformation der Stellgröße in einen vorgegebenen Bereich. MANUAL vom Typ BOOL schaltet auf Handbetrieb. RESET ist vom Typ BOOL und dient der Neuinitialisierung des Reglers.
Die Ausgabe, die Stellgröße (Y), ist vom Typ REAL, und berechnet sich wie folgt :
Y = KP (∆ + TV δ∆/δt) + Y_OFFSET whereby ∆=SET_POINT-ACTUAL
Zusätzlich wird Y auf den zulässigen Bereich zwischen Y_MIN und Y_MAX begrenzt. Überschreitet Y diesen Bereich, so wird LIMITS_ACTIVE, eine Boolesche Ausgabevariable, TRUE. Wünscht man keine Begrenzung der Stellgröße, setzt man Y_MIN und Y_MAX auf 0.
Ist MANUAL TRUE, dann setzt der Regler so lange aus, d.h. Y wird (vom Regler) nicht verändert, bis MANUAL FALSE wird, wodurch der Regler neu initialisiert wird.
Ein P-Regler läßt sich leicht dadurch erzeugen, indem TV fest auf 0 gesetzt wird.
PID
Der PID-Regler-Funktionsblock :
CoDeSys V2.3 |
10-55 |