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

10 - ANHANG

Anhang B Operanden in CoDeSys

In CoDeSys können Konstanten, Variablen, Adressen und evtl. Funktionsaufrufe als Operanden verwendet werden.

10.10 Konstanten...

BOOL-Konstanten

BOOL-Konstanten sind die Wahrheitswerte TRUE und FALSE.

TIME-Konstanten

In CoDeSys können TIME-Konstanten deklariert werden. Insbesondere werden diese benutzt, um die Timer aus der Standardbibliothek zu bedienen. Eine TIME-Konstante besteht stets aus einem anführenden "t" oder "T" (bzw. "time" oder "TIME" in der ausführlichen Form) und einem Doppelkreuz "#".

Danach kommt die eigentliche Zeitdeklaration, diese kann bestehen aus Tagen (bezeichnet mit "d"), Stunden (bezeichnet mit "h"), Minuten (bezeichnet mit "m"), Sekunden (bezeichnet mit "s") und Millisekunden (bezeichnet mit "ms"). Es ist zu beachten, dass die Zeitangaben der Größe nach geordnet sein müssen (d vor h vor m vor s vor m vor ms), wobei nicht alle Zeiten vorkommen müssen.

Beispiele für korrekte TIME-Konstanten in einer ST-Zuweisung:

TIME1 := T#14ms;

 

TIME1 := T#100S12ms;

(*Überlauf in der höchsten Komponente ist erlaubt*)

TIME1 := t#12h34m15s;

 

nicht korrekt wäre:

 

TIME1 := t#5m68s;

(*Überlauf bei einer niedrigeren Stelle*)

TIME1 := 15ms;

(*Es fehlt T#*)

TIME1 := t#4ms13d;

(*falsche Reihenfolge der Zeitangaben*)

DATE-Konstanten

Mit diesem Typ kann man Datumsangaben machen. Eine DATE-Konstante wird deklariert durch ein anführendes "d", "D", "DATE" oder "date" und ein nachfolgendes "#". Anschließend können Sie ein beliebiges Datum in der Reihenfolge Jahr-Monat-Tag eingeben.

Beispiele:

DATE#1996-05-06 d#1972-03-29

DATE (kurz D) Werte werden intern wie DWORD behandelt. Die Zeit wird in Sekunden angegeben, wobei ab dem 1. Januar 1970 um 00:00 Uhr gerechnet wird.

TIME_OF_DAY-Konstanten

Mit diesem Typ können Sie Uhrzeiten speichern. Eine TIME_OF_DAY-Deklaration beginnt mit "tod#", "TOD#", "TIME_OF_DAY#" oder "time_of_day#", anschließend können Sie eine Uhrzeit angeben in der Schreibweise: Stunde:Minute:Sekunde. Sekunden können dabei als reelle Zahlen angegeben werden, es können also auch Sekundenbruchteile angegeben werden.

Beispiele:

TIME_OF_DAY#15:36:30.123 tod#00:00:00

CoDeSys V2.3

10-25

Konstanten...

TIME_OF_DAY (kurz TOD) Werte werden intern wie DWORD behandelt. Die Zeit wird in Millisekunden angegeben, wobei bei ab 00:00 Uhr gerechnet wird.

DATE_AND_TIME-Konstanten

Datumskonstanten und Uhrzeiten können auch kombiniert werden zu so genannten DATE_AND_TIME-Konstanten. DATE_AND_TIME-Konstanten beginnen mit "dt#", "DT#", "DATE_AND_TIME#" oder "date_and_time#". Nach der Datumsangabe folgt ein Bindestrich und danach die Uhrzeit.

Beispiele:

DATE_AND_TIME#1996-05-06-15:36:30 dt#1972-03-29-00:00:00

DATE_AND_TIME (kurz DT) Werte werden intern wie DWORD behandelt. Die Zeit wird in Sekunden angegeben, wobei ab dem 1. Januar 1970 um 00:00 Uhr gerechnet wird.

Zahlenkonstanten

Zahlenwerte, können als Dualzahlen, Oktalzahlen, Dezimal zahlen und Hexadezimalzahlen auftreten. Wenn ein Integerwert keine Dezimalzahl ist, dann muss seine Basis gefolgt von einem Doppelkreuz

(#) vor die Integerkonstante geschrieben werden. Die Ziffernwerte für die Zahlen 10 bis 15 bei Hexadezimalzahlen werden wie üblich durch die Buchstaben A-F angegeben.

Unterstriche innerhalb eines Zahlenwertes sind erlaubt.

Beispiele:

14 (Dezimalzahl)

2#1001_0011 (Dualzahl)

8#67 (Oktalzahl)

16#A (Hexadezimalzahl)

Der Typ dieser Zahlenwerte kann dabei BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL oder LREAL sein.

Implizite Konvertierungen von "größere" auf "kleinere" Typen sind nicht erlaubt. D.h. eine DINTVariable kann nicht ohne weiteres als INT-Variable benutzt werden. Hierfür benutzt man die Typkonvertierungen .

REAL- / LREAL-Konstanten

REALund LREAL-Konstanten können als Dezimalbrüche und in Exponentialdarstellung angegeben werden. Man verwendet hierbei die amerikanische Schreibweise mit Punkt.

Beispiel:

7.4 statt 7,4

1.64e+009 statt 1,64e+009

STRING-Konstanten

Ein String ist eine beliebige Zeichenreihe. STRING-Konstanten werden mit einfachen Hochkommas vorn und hinten begrenzt. Es können auch Leerzeichen und Umlaute einige geben werden. Sie werden genauso wie alle anderen Zeichen behandelt.

In Zeichenfolgen wird die Kombination des Dollarzeichens ($) gefolgt von zwei hexadezimalen Ziffern als hexadezimale Darstellung des acht Bit Zeichencodes interpretiert. Außerdem werden, wenn sie in einer Zeichenfolge auftauchen, Kombinationen von zwei Zeichen, die mit dem Dollarzeichen beginnen, wie folgt interpretiert:

$$ Dollarzeichen

$' Hochkomma

10-26

CoDeSys V2.3

10 - ANHANG

$L or $l

Zeilenvorschub

$N or $n

Neue Zeile

$P or $p

Seitenvorschub

$R or $r

Zeilenumbruch

$T or $t

Tabulator

Beispiele:

'w1Wüß?'

'Susi und Claus' ':-)'

Getypte Konstanten (Typed Literals)

Mit Ausnahme von REAL/LREAL-Konstanten (hier wird immer LREAL verwendet) wird beim Rechnen mit IEC-Konstanten der kleinstmögliche Datentyp verwendet. Soll ein anderer Datentyp verwendet werden, kann dies mithilfe von Typed Literals (Getypte Konstanten) erreicht werden, ohne dass die Konstante explizit deklariert werden muss. Die Konstante wird hierbei mit einem Prefix versehen, welches den Typ festlegt:

Die Schreibweise ist: <Type>#<Literal>

<Type> gibt den gewünschten Datentyp an, mögliche Eingaben: BOOL, SINT, USINT, BYTE, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, LREAL. Der Typ muss in Großbuchstaben geschrieben werden.

<Literal> gibt die Konstante an. Die Eingabe muss zum unter <Type> angegebenen Datentypen passen.

Beispiel:

var1:=DINT#34;

Kann die Konstante nicht ohne Datenverlust in den Zieltyp überführt werden, so wird eine Fehlermeldung ausgegeben:

Typed literals können überall dort verwendet werden, wo normale Konstanten verwendet werden können.

10.11 Variablen...

Variablen werden entweder lokal im Deklarationsteil eines Bausteins deklariert oder in den globalen Variablenlisten.

Hinweis: Es ist möglich, eine lokale Variable mit gleichem Namen wie eine globale zu definieren. Innerhalb eines Bausteins hat stets die lokal definierte Variable Vorrang. Es ist nicht möglich zwei global definierte Variablen gleich zu benennen; beispielsweise wird ein Übersetzungsfehler ausgegeben, wenn sowohl in einer globalen Variablenliste als auch in der Steuerungskonfiguration je eine Variable "var1" definiert sind.

Für den Bezeichner von Variablen ist zu beachten, dass sie keine Leerstellen und Umlaute enthalten dürfen, sie dürfen nicht doppelt deklariert werden und nicht identisch mit Schlüsselwörtern sein. Groß- /Kleinschreibung bei Variablen wird nicht beachtet, das heißt VAR1, Var1 und var1 sind keine unterschiedlichen Variablen. Unterstriche sind in Bezeichner signifikant, z.B. werden "A_BCD" und "AB_CD" als unterschiedliche Bezeichner interpretiert. Mehrfach aufeinander folgende Unterstriche am Anfang eines Bezeichners oder in einem Bezeichner sind nicht erlaubt. Die Bezeichnerlänge sowie der signifikante Bereich. Variablen können überall verwendet werden, wo der deklarierte Typ es erlaubt.

Die verfügbaren Variablen können Sie über die Eingabehilfe abrufen.

CoDeSys V2.3

10-27

Variablen...

Systemflags

Systemflags sind implizit deklarierte Variablen, die von Ihrer speziellen Steuerung abhängig sind. Um herauszufinden, welche Systemflags Ihr System besitzt, wählen Sie den Befehl 'Einfügen' 'Operand', es erscheint der Eingabehilfedialog, hier wählen Sie die Kategorie System Variable.

Zugriff auf Variablen von Arrays, Strukturen und Bausteinen

Auf Komponenten von zweidimensionalen Arrays greift man mit folgender Syntax zu:

<Feldname>[Index1, Index2}]

Auf Variablen von Strukturen greift man mit folgender Syntax zu:

<Strukturname>.<Variablenname>

Auf Variablen von Funktionsblöcken und Programmen greift man mit folgender Syntax zu:

<Bausteinname>.<Variablenname>

Adressierung von Bits in Variablen

In ganzzahligen Variablen können einzelne Bits angesprochen werden. Dazu wird an die Variable mit einem Punkt abgetrennt der Index des zu adressierenden Bits angehängt. Der Bit-Index kann durch eine beliebige Konstante gegeben werden. Die Indizierung ist 0-basiert.

Beispiel:

a : INT; b : BOOL;

...

a.2 := b;

Das dritte Bit der Variablen a wird auf den Wert der Variable b gesetzt.

Ist der Index größer als die Bit-Breite der Variablen so wird folgender Fehler ausgegeben: Index '<n>' außerhalb des gültigen Bereichs für Variable '<var>'!

Die Bitadressierung ist bei folgenden Variablentypen möglich: SINT, INT, DINT, USINT, UINT, UDINT, BYTE, WORD, DWORD.

Ist der Typ der Variablen nicht zulässig, so wird folgende Fehlermeldung ausgegeben: Unzulässiger Datentyp '<Typ>' für direkte Indizierung".

Ein Bit-Zugriff darf nicht einer VAR_IN_OUT-Variablen zugewiesen werden!

Bitzugriff mit Hilfe einer globalen Konstante:

Wird eine globale Konstante deklariert, die die Bitnummer definiert, kann diese Konstante für den Bitzugriff verwendet werden.

Bitte beachten: Die Projektoption 'Konstanten ersetzen' (Kategorie Übersetzungsoptionen) muss aktiviert sein !

Sehen Sie im folgenden Beispiele für einen solchen Bitzugriff auf eine normale Variable bzw. eine Strukturvariable:

Deklaration in globaler Variablenliste für beide Beispiele:

Variable enable gibt an, auf das wievielte Bit zugegriffen werden soll:

VAR_CONSTANT GLOBAL enable:int:=2;

END_VAR

10-28

CoDeSys V2.3

10 - ANHANG

Beispiel 1, Bit-Zugriff auf ganzzahlige Variable:

Deklaration in Baustein:

VAR

xxx:int;

END_VAR

Bitzugriff:

xxx.enable:=true; -> das 2. Bit in Variable xxx wird TRUE gesetzt

Beispiel2, Bit-Zugriff auf ganzzahlige Strukturkomponente:

Deklaration der Struktur stru1:

TYPE stru1 :

STRUCT bvar:BOOL; rvar:REAL; wvar:WORD;

{bitaccess enable 42 'Antrieb freigeben'} END_STRUCT

END_TYPE

Deklaration in Baustein:

VAR

x:stru1;

END_VAR

Bitzugriff:

x.enable:=true;

Dadurch wird das 42. Bit in Variable x auf TRUE gesetzt. Da bvar 8 Bit und rvar 32 Bit enthalten, erfolgt dieser Zugriff auf das 2.Bit in der Variable wvar, die somit den Wert 4 erhält..

Achtung: Um eine Variable, die den Bitzugriff auf eine Strukturvariable mit Hilfe einer globalen Konstante durchführt, beim Monitoring, in der Eingabehilfe und in der Intellisense-Funktion korrekt darzustellen, verwenden Sie bitte das im Beispiel gezeigte Pragma {bitaccess} (siehe Kapitel 5.2.3). Dann wird ausserdem beim Monitoring im Deklarationsfenster die globale Konstante unterhalb der Strukturvariable angezeigt:

CoDeSys V2.3

10-29

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