
- •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
Als Unterschied zum PD-Regler enthält dieser Funktionsbaustein einen weiteren DWORD-Eingang TN für die Nachstellzeit in msec.
Die Ausgabe, die Stellgröße (Y), ist wieder vom Typ REAL, und beinhaltet im Gegensatz zum PDRegler einen zusätzlichen integralen Anteil:
Y = KP (∆ + 1/TN ?∆(t)dt + TV δ∆/δt) + Y_OFFSET
Der PID-Regler läßt sich leicht in einen PI-Regler verwandeln, indem TV=0 gesetzt wird.
Durch den zusätzlichen I-Anteil kann es – bei falscher Reglerparametrierung, wenn das Integral über den Fehler ∆ zu groß wird – zum Überlauf kommen. Sicherheitshalber ist deshalb ein Boolescher Ausgang OVERFLOW vorhanden, der in diesem Fall TRUE wird. Gleichzeitig setzt der Regler aus, und wird erst durch eine Neuinitialisierung wieder aktiviert.
PID_FIXCYCLE
Der PID_FIXCYCLE-Regler-Funktionsblock :
Dieser Baustein entspricht funktionell dem PID-Regler, außer dass die Zykluszeit nicht automatisch intern gemessen wird, sondern über den Eingang CYCLE in Sekunden fest vorgegeben wird.
10.17.5Signalgeneratoren...
BLINK
Der Funktionsblock BLINK erzeugt ein pulsierendes Signal. Die Eingabe besteht aus ENABLE vom Typ BOOL, sowie TIMELOW und TIMEHIGH vom Typ TIME. Die Ausgabe OUT ist vom Typ BOOL.
Wird ENABLE auf TRUE gesetzt, dann beginnt BLINK, abwechseln die Ausgabe für die Zeitdauer TIMEHIGH auf TRUE, danach für die Dauer TIMELOW auf FALSE zu setzen.
Beispiel in CFC:
GEN
Der Funktionengenerator erzeugt typische periodische Funktionen:
Die Eingaben setzen sich zusammen aus MODE vom vordefinierten Aufzählungs-Typ GEN_MODE, BASE vom Typ BOOL, PERIOD vom Typ TIME, zwei INT-Werten CYCLES und AMPLITUDE, wie dem Booleschen RESET-Eingang. Ausgegeben wird ein INT mit der Bezeichnung OUT.
10-56 |
CoDeSys V2.3 |

10 - ANHANG
Der MODE beschreibt die Funktion, die erzeugt werden soll, wobei die Enumerationswerte TRIANGLE und TRIANGLE_POS zwei Dreiecksfunktionen liefern, SAWTOOTH_RISE ein steigendes, SAWTOOTH_FALL ein fallendes Sägezahn-, RECTANGLE ein Rechtecksignal und SINUS und COSINUS den Sinus und Cosinus:
TRIANGLE: TRIANGLE_POS:
SAWTOOTH_RISE: SAWTOOTH_FALL:
RECTANGLE: SINUS:
COSINUS:
BASE gibt an, ob sich die Periodendauer tatsächlich auf eine vorgegebene Zeit (dann BASE=TRUE) oder auf eine gewisse Anzahl von Zyklen, also Aufrufen des Funktionsblocks, (BASE=FALSE) bezieht.
PERIOD bzw. CYCLES legen dann die entsprechende Periodendauer fest. AMPLITUDE definiert trivialerweise die Amplitude der zu erzeugenden Funktion. Der Funktionengenerator wird wieder auf 0 gesetzt, sobald RESET=TRUE.
Beispiel in CFC:
CoDeSys V2.3 |
10-57 |

Die Bibliothek Util.lib
10.17.6Funktionsmanipulatoren...
CHARCURVE
Dieser Funktionsblock dient dazu, Werte auf eine stückweise lineare Funktion abzubilden:
IN vom Typ INT wird mit dem zu manipulierenden Wert gespeist. Das BYTE N bezeichnet die Anzahl der Punkte, die die Abbildungsfunktion festlegt. Im ARRAY P[0..10] mit P vom Typ POINT, einer Struktur bestehend aus zwei INT-Werten (X und Y), wird dann diese Kennlinie definiert.
Die Ausgabe besteht aus OUT vom Typ INT, dem manipulierten Wert, und dem BYTE ERR, das ggf. auf Fehler hinweist.
Die Punkte P[0]..P[N-1] im ARRAY müssen nach ihren X-Werten sortiert sein, ansonsten erhält ERR den Wert 1. Liegt die Eingabe IN nicht zwischen P[0].X und P[N-1].X, so wird ERR=2 und OUT erhält den entsprechenden Grenzwert P[0].Y oder P[N-1].Y.
Liegt N außerhalb der zulässigen Werte zwischen 2 und 11, so wird ERR=4.
Beispiel in ST:
Zunächst muss im Header das ARRAY P definiert werden:
VAR
...
KENNLINIE:CHARCURVE;
KL:ARRAY[0..10] OF POINT:=(X:=0,Y:=0),(X:=250,Y:=50),
(X:=500,Y:=150),(X:=750,Y:=400),7((X:=1000,Y:=1000));
ZAEHLER:INT;
...
END_VAR
Dann speisen wir CHARCURVE beispielsweise mit einem zunehmend wachsenden Wert :
ZAEHLER:=ZAEHLER+10;
KENNLINIE(IN:=ZAEHLER,N:=5,P:=KL);
Das anschließende Tracing illustriert:
RAMP_ INT
RAMP_INT dient dazu, den Anstieg bzw. den Abfall der eingespeisten Funktion zu begrenzen:
Die Eingabe besteht zum einen aus drei INT-Werten: IN, der Funktionseingabe, und ASCEND und DESCEND, der maximalen Zubzw. Abnahme pro Zeitintervall, welches durch TIMEBASE vom Typ TIME festgelegt wird. Setzt man RESET auf TRUE, so wird RAMP_INT neu initialisiert.
Die Ausgabe OUT vom Typ INT enthält den anund abstiegsbeschränkten Funktionswert.
Man beachte, dass sich Probleme ergeben können, wenn die eingestellte TIMEBASE geringer ist, als die Dauer für einen Durchlaufzyklus.
10-58 |
CoDeSys V2.3 |

10 - ANHANG
Wird TIMEBASE auf t#0s gesetzt, so bezieht sich die Zubzw. Abnahmebegrenzung auf einen Zyklus, also einen Aufruf des Funktionsblocks.
Beispiel in CFC:
RAMP_ REAL
RAMP_REAL funktioniert genau wie RAMP_INT, lediglich dass die Eingänge IN, ASCEND, DESCEND wie auch der Ausgang OUT vom Typ REAL sind.
10.17.7Analogwertverarbeitung...
HYSTERESIS
Der Eingang dieses Funktionsblocks besteht aus den drei INT-Werten IN, HIGH und LOW. Die Ausgabe OUT ist vom Typ BOOL.
Unterschreitet IN den Grenzwert LOW, so wird OUT TRUE. Wenn IN die obere Grenze HIGH überschreitet, so wird FALSE ausgegeben.
Illustrierendes Beispiel:
CoDeSys V2.3 |
10-59 |