Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
41
Добавлен:
11.10.2020
Размер:
3.04 Mб
Скачать

2 - Was ist was in CoDeSys

2 Was ist was in CoDeSys

2.1 Bestandteile eines Projekts...

Projekt

Ein Projekt beinhaltet alle Objekte eines Steuerungsprogramms. Ein Projekt wird in einer Datei mit dem Namen des Projekts gespeichert. Zu einem Projekt gehören folgende Objekte:

Bausteine, Datentypen, Visualisierungen, Ressourcen und Bibliotheken.

Baustein

Funktionen, Funktionsblöcke und Programme sind Bausteine, die durch Aktionen ergänzt werden können.

Jeder Baustein besteht aus einem Deklarationsteil und einem Code-Teil. Der Code-Teil ist in einer der IEC-Programmiersprachen AWL, ST, AS, FUP, KOP oder CFC geschrieben.

CoDeSys unterstützt alle IEC-Standardbausteine. Wenn Sie diese Bausteine in Ihrem Projekt benutzen wollen, müssen Sie die Bibliothek standard.lib in Ihr Projekt einbinden.

Bausteine können andere Bausteine aufrufen. Rekursionen sind jedoch nicht erlaubt.

Funktion

Eine Funktion ist ein Baustein, der als Ergebnis der Ausführung genau ein Datum (das auch mehrelementig sein kann, wie z.B. Felder oder Strukturen) zurückliefert. Der Aufruf einer Funktion kann in textuellen Sprachen als ein Operator in Ausdrücken vorkommen.

Bei der Deklaration einer Funktion ist darauf zu achten, dass die Funktion einen Typ erhalten muss. D.h. nach dem Funktionsnamen muss ein Doppelpunkt gefolgt von einem Typ eingegeben werden.

Eine korrekte Funktionsdeklaration sieht z.B. so aus:

FUNCTION Fct: INT

Außerdem muss der Funktion ein Ergebnis zugewiesen werden. D.h. der Funktionsname wird benutzt wie eine Ausgabevariable.

Eine Funktionsdeklaration beginnt mit dem Schlüsselwort FUNCTION.

In AS kann ein Funktionsaufruf nur innerhalb von Aktionen eines Schrittes oder in einer Transition erfolgen.

In ST kann ein Funktionsaufruf als Operand in Ausdrücken verwendet werden.

Beispiele für den Aufruf der oben beschriebenen Funktion:

in AWL:

LD 7

Fct 2,4

ST Ergebnis

in ST:

Ergebnis := Fct(7, 2, 4);

in FUP:

CoDeSys V2.3

2-1

Bestandteile eines Projekts...

Funktionen verfügen über keine internen Zustände. D.h. Aufrufe einer Funktion mit denselben Argumenten (Eingabeparametern) liefern immer denselben Wert (Ausgabe). Deshalb dürfen Funktionen keine globalen Variablen und Adressen enthalten.

Achtung: Wird eine lokale Variable in einer Funktion als RETAIN deklariert, hat dies keine Auswirkung. Die Variable wird nicht im Retain-Bereich gespeichert !

Hinweis: Wenn Sie in Ihrem Projekt eine Funktion mit Namen CheckBounds definieren, können Sie damit Bereichsüberschreitungen in Arrays automatisch überprüfen (siehe Anhang C, Die Datentypen).

Wenn Sie die Funktionen 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 (siehe Anhang A, Die IEC Operatoren).

Wenn Sie die Funktionen CheckRangeSigned und CheckRangeUnsigned definieren, können Sie damit im online-Betrieb automatisch Bereichsüberschreitungen bei Variablen, die mit Unterbereichstypen (siehe Anhang C, Die Datentypen) deklariert sind, abfangen.

Die genannten Funktionsnamen sind aufgrund der hier beschriebenen Einsatzmöglichkeit reserviert.

Funktionsbaustein (Funktionsblock)

Ein Funktionsbaustein - auch Funktionsblock genannt - ist ein Baustein der bei der Ausführung einen oder mehrere Werte liefert. Ein Funktionsblock liefert keinen Rückgabewert im Gegensatz zu einer Funktion.

Eine Funktionsblockdeklaration beginnt mit dem Schlüsselwort FUNCTION_BLOCK.

Es können Vervielfältigungen, genannt Instanzen (Kopien) eines Funktionsblocks geschaffen werden.

Beispiel in AWL für einen Funktionsblock mit zwei Eingabevariablen und zwei Ausgabevariablen. Eine Ausgabe ist das Produkt der beiden Eingaben, die andere ein Vergleich auf Gleichheit:

Instanzen von Funktionsblöcken

Es können Vervielfältigungen, genannt Instanzen (Kopien) eines Funktionsblocks geschaffen werden.

Jede Instanz besitzt einen zugehörigen Bezeichner (den Instanznamen), und eine Datenstruktur, die ihre Eingaben, Ausgaben und internen Variablen beinhaltet. Instanzen werden wie Variablen lokal oder global deklariert, indem als Typ eines Bezeichners der Name des Funktionsblocks angegeben wird.

Beispiel für eine Instanz mit Namen INSTANZ des Funktionsblocks FUB:

INSTANZ: FUB;

2-2

CoDeSys V2.3

2 - Was ist was in CoDeSys

Aufrufe von Funktionsblöcken geschehen stets über die oben beschriebenen Instanzen.

Nur auf die Ein-und Ausgabeparameter kann von außerhalb einer Instanz eines Funktionsblocks zugegriffen werden, nicht auf dessen interne Variablen.

Die Deklarationsteile von Funktionsblöcken und Programmen können Instanzdeklarationen beinhalten. Instanzdeklarationen in Funktionen sind nicht zulässig.

Der Zugriff auf die Instanz eines Funktionsblocks ist auf den Baustein beschränkt, in dem sie instanziert wurde, es sei denn, sie wurde global deklariert.

Der Instanzname einer Instanz eines Funktionsblocks kann als Eingabe einer Funktion oder eines Funktionsblocks benutzt werden.

Hinweis: Alle Werte bleiben von einer Ausführung des Funktionsblocks bis zur nächsten erhalten. Daher liefern Aufrufe eines Funktionsblocks mit denselben Argumenten nicht immer dieselben Ausgabewerte!

Hinweis: Enthält der Funktionsblock mindestens eine Retain-Variable, wird die gesamte Instanz im Retainbereich gespeichert.

Aufruf eines Funktionsblocks

Man kann die Eingabeund Ausgabevariablen eines Funktionsblocks von einem anderen Baustein aus ansprechen, indem man eine Instanz des Funktionsblocks anlegt und über folgende Syntax die gewünschte Variable angibt:

<Instanzname>.<Variablenname> Zuweisung der Parameter beim Aufruf:

Wenn man die Eingabeund/oder Ausgabeparameter beim Aufruf setzen will, dann geschieht das bei den Textsprachen AWL und ST, indem man nach dem Instanznamen des Funktionsblocks in Klammer den Parametern Werte zuweist. Die Zuweisung geschieht bei Eingabeparametern durch ":=" wie bei der Initialisierung von Variablen an der Deklarationsstelle, bei Ausgabeparametern mit "=>").

Wird die Instanz unter Verwendung der Eingabehilfe (<F2>) mit Option Mit Argumenten im Implementationsfenster eines ST oder AWL-Bausteins eingefügt, wird sie automatisch in dieser Syntax mit ihren Parametern dargestellt. Die Parameter müssen jedoch dann nicht zwingend belegt werden.

Beispiel:

FBINST ist eine lokale Variable vom Typ eines Funktionsblocks, der die Eingabevariable xx und die Ausgabevariable yy enthält. Beim Aufruf von FBINST über die Eingabehilfe wird sie so in ein STProgramm eingefügt: FBINST1(xx:= , yy=> );

EinAusgabevariablen beim Aufruf:

Beachten Sie, dass EinAusgabevariablen (VAR_IN_OUT) eines Funktionsblocks als Pointer übergeben werden. Ihnen können deshalb beim Aufruf keine Konstanten zugewiesen werden und es kann nicht lesend oder schreibend von außen auf sie zugegriffen werden.

Beispiel

Aufruf einer VAR_IN_OUT Variable inout1 des Funktionsblocks fubo in einem ST-Baustein:

VAR inst:fubo; var1:int;

END_VAR var1:=2;

inst(inout1:=var1);

Nicht zulässig wäre: inst(inout1:=2); bzw. inst.inout1:=2;

Beispiele für den Aufruf des Funktionsblocks FUB:

siehe oben, Absatz 'Funktionsblock'

CoDeSys V2.3

2-3

Bestandteile eines Projekts...

Das Multiplikationsergebnis wird in der Variablen ERG abgelegt, das Ergebnis des Vergleichs wird in QUAD gespeichert. Es sei eine Instanz von FUB mit dem Namen INSTANZ deklariert.

So wird die Instanz eines Funktionsblocks in AWL aufgerufen:

So wird die Instanz eines Funktionsblocks in ST aufgerufen (Deklarationsteil wie bei AWL):

So wird die Instanz eines Funktionsblocks in FUP aufgerufen (Deklarationsteil wie bei AWL):

In AS können Aufrufe von Funktionsblöcken nur in Schritten vorkommen.

Programm

Ein Programm ist ein Baustein, der bei der Ausführung einen oder mehrere Werte liefert. Programme sind global im gesamten Projekt bekannt. Alle Werte bleiben von einer Ausführung des Programms bis zur nächsten erhalten.

Eine Programmdeklaration beginnt mit dem Schlüsselwort PROGRAM und endet mit END_PROGRAM.

2-4

CoDeSys V2.3

2 - Was ist was in CoDeSys

Beispiel für ein Programm:

Programme können von Programmen und Funktionsblöcken aufgerufen werden. Ein Programmaufruf in einer Funktion ist nicht erlaubt. Es gibt auch keine Instanzen von Programmen.

Wenn ein Baustein ein Programm aufruft, und es werden dabei Werte des Programms verändert, dann bleiben diese Veränderungen beim nächsten Aufruf des Programms erhalten, auch wenn das Programm von einem anderen Baustein aus aufgerufen wird.

Dies ist anders als beim Aufruf eines Funktionsblocks. Dort werden nur die Werte in der jeweiligen Instanz eines Funktionsblocks geändert. Diese Veränderungen spielen also auch nur eine Rolle, wenn dieselbe Instanz aufgerufen wird.

Wenn man beim Aufruf eines Programms die Eingabeund/oder Ausgabeparameter, also Werte der Ein-/Ausgabevariablen beim Aufruf setzen will, dann geschieht das bei den Textsprachen AWL und ST, indem man nach dem Programmnamen in Klammer den Parametern Werte zuweist. Die Zuweisung erfolgt durch ":=" wie bei der Initialisierung von Variablen an der Deklarationsstelle.

Wird ein Programm unter Verwendung der Eingabehilfe (<F2>) mit Option MIt Argumenten im Implementationsfenster eines ST oder AWL-Bausteins eingefügt, wird sie automatisch in dieser Syntax mit ihren Parametern dargestellt. Die Parameter müssen jedoch dann nicht zwingend belegt werden.

Beispiele für Aufrufe eines Programms:

In einem Programm PRGexample2 sind die Eingabevariable in_var und die Ausgabevariable out_var sind jeweils vom Typ INT deklariert. Lokal deklariert ist die Variable erg, ebenfalls vom Typ INT:

In AWL:

CAL PRGexample2

LD PRGexample2.out_var ST ERG

oder mit unmittelbarer Angabe der Parameter (Eingabehilfe "Mit Argumenten", s.o.):

CAL PRGexample2(in_var:=33, out_var=>erg )

In ST:

PRGexample;

Erg := PRGexample2.out_var;

oder mit unmittelbarer Angabe der Parameter (Eingabehilfe "Mit Argumenten", s.o.): PRGexample2(in_var:=33, out_var=>erg );

In FUP:

Beispiel für eine mögliche Aufrufsequenz von PLC_PRG:

Sehen Sie hierzu das Programm PRGbeispiel in der Abbildung zu Beginn dieses Kapitels:

LD 0

ST PRGbeispiel.PAR (*PAR wird mit 0 vorbesetzt*)

CoDeSys V2.3

2-5

Bestandteile eines Projekts...

CAL AWLaufruf (*ERG in AWLaufruf ergibt sich zu 1*)

CAL STaufruf (*ERG in STaufruf ergibt sich zu 2*)

CAL FUPaufruf (*ERG in FUPaufruf ergibt sich zu 3*)

Wenn von einem Hauptprogramm aus zunächst die Variable PAR des Programms PRGbeispiel mit 0 initialisiert wird, und dann nacheinander Programme mit den obigen Programmaufrufen aufgerufen werden, dann wird das Ergebnis Erg in den Programmen die Werte 1,2 und 3 haben. Wenn man die Reihenfolge der Aufrufe vertauscht, ändern sich dem entsprechend auch die Werte der jeweiligen Ergebnisparameter.

PLC_PRG

Es ist möglich, aber nicht zwingend, die Projektabarbeitung über so genannte Tasks (Taskkonfiguration) zu steuern. Liegt jedoch keine Taskkonfiguration vor, muss das Projekt den Baustein PLC_PRG enthalten. Der PLC_PRG wird als Baustein vom Typ Programm automatisch erzeugt, wenn in einem neu angelegten Projekt erstmalig mit 'Projekt' 'Objekt einfügen' ein Baustein eingefügt wird. PLC_PRG wird pro Steuerungszyklus genau einmal aufgerufen.

Liegt eine Taskkonfiguration vor, darf das Projekt kein PLC_PRG enthalten, da dann die Ausführungsreihenfolge von der Taskzuordnung abhängt.

Vorsicht: Löschen Sie den Baustein PLC_PRG nicht und benennen Sie ihn auch nicht um (vorausgesetzt Sie verwenden keine Taskkonfiguration. PLC_PRG ist generell das Hauptprogramm in einem Single-Task Programm.

Ressourcen

Die Ressourcen benötigen Sie zum Konfigurieren und Organisieren Ihres Projektes und zur Verfolgung von Variablenwerten:

Globale Variablen, die im gesamten Projekt bzw. Netzwerk verwendet werden können

Bibliotheken, die über den Bibliotheksverwalter ins Projekt eingebunden werden können

Logbuch zum Aufzeichnen der Online-Aktivitäten

Steuerungskonfiguration zum Konfigurieren Ihrer Hardware

Taskkonfiguration zur Steuerung Ihres Programms über Tasks

Watchund Rezepturverwalter in zum Anzeigen und Vorbelegen von Variablenwerten

Zielsystemeinstellungen zur Anwahl und gegebenenfalls Endkonfiguration des Zielsystems

Arbeitsbereich mit einem Abbild der Projektoptionen

Abhängig vom gewählten Zielsystem bzw. den in CoDeSys vorgenommenen Zielsystemeinstellungen können folgende Ressourcen ebenfalls verfügbar sein:

Parameter Manager für den Datenaustausch mit anderen Steuerungen in einem Netzwerk

PLC-Browser als Monitor der Steuerung

Traceaufzeichnung zur grafischen Aufzeichnung von Variablenwerten

Tools zum Aufruf externer Anwendungen

Aktion

Zu Funktionsblöcken und Programmen können Aktionen definiert und hinzugefügt werden ('Projekt' 'Aktion hinzufügen'). Die Aktion stellt eine weitere Implementation dar, die durchaus in einer anderen Sprache als die 'normale' Implementation erstellt werden kann. Jede Aktion erhält einen Namen.

Eine Aktion arbeitet mit den Daten des Funktionsblocks bzw. Programmes, zu dem sie gehört. Die Aktion verwendet die gleichen Ein-/ Ausgabevariablen und lokalen Variablen, wie die 'normale' Implementation.

2-6

CoDeSys V2.3

2 - Was ist was in CoDeSys

Beispiel für eine Aktion eines Funktionsblocks:

In diesem Beispiel wird bei Aufruf des Funktionsblocks Counter die Ausgabevariable out erhöht bzw. erniedrigt in Abhängigkeit der Eingabevariablen in. Bei Aufruf der Aktion 'Reset' des Funktionsblocks wird die Ausgabevariable out auf Null gesetzt. Es wird in beiden Fällen die gleiche Variable out beschrieben.

Aufruf einer Aktion:

Eine Aktion wird aufgerufen mit <Programmname>.<Aktionsname> bzw. <Instanzname>.<Aktionsname>. Beachten Sie die Schreibweise im FUP (siehe Beispiel unten). Soll die Aktion innerhalb des eigenen Bausteins aufgerufen werden, so verwendet man in den Texteditoren nur den Aktionsnamen und in den grafischen den Funktionsblockaufruf ohne Instanzangabe.

Beispiele für Aufrufe der obigen Aktion aus einem anderen Baustein:

Deklaration für alle Beispiele:

PROGRAM PLC_PRG VAR

inst : counter; END_VAR

Aufruf von Aktion 'Reset' in einem anderen Baustein, der in AWL programmiert ist:

CAL inst.Reset(in := FALSE)

LD inst.out ST ERG

Aufruf in einem anderen Baustein, der in ST programmiert ist: inst.Reset(in := FALSE);

Erg := inst.out;

Aufruf in einem anderen Baustein, der in FUP programmiert ist:

Hinweis: Bei Bausteinen in Ablaufsprache spielen Aktionen eine besondere Rolle.

CoDeSys V2.3

2-7

Соседние файлы в папке 759-333