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

10 - ANHANG

Anhang D CoDeSys Bibliotheken

10.16 Die Bibliothek Standard.lib

Standardbibliothek

Die Bibliothek 'standard.lib' steht Ihnen standardmäßig zur Verfügung. Sie enthält alle Funktionen und Funktionsbausteine, die von der IEC61131-3 als Standardbausteine für ein IEC-Programmiersystem gefordert werden. Der Unterschied zwischen einer Standardfunktion und einem Operator ist, dass der Operator implizit dem Programmiersystem bekannt ist, während die Standardbausteine als Bibliothek an das Projekt gebunden werden müssen (standard.lib).

Der Code zu diesen Bausteinen liegt als C-Bibliothek vor und ist Bestandteil von CoDeSys.

10.16.1String Funktionen...

Bitte beachten: String-Funktionen sind nicht "thread-safe" ! Bei der Verwendung von Tasks dürfen StringFunktionen nur in einer Task eingesetzt werden. Wird die gleiche Funktion in verschiedenen Tasks benützt, besteht die Gefahr des Überschreibens. Die erlaubte String-Länge beim Verwenden der Funktionen ist 1-255.

LEN

Die Funktion LEN gibt die Länge eines Strings aus.

Der Eingang STR ist vom Typ STRING, der Rückgabewert der Funktion vom Typ INT.

Beispiel in AWL:

LD 'SUSI'

LEN

ST VarINT1 (* Ergebnis ist 4 *)

Beispiel in FUP:

Beispiel in ST:

VarSTRING1 := LEN ('SUSI');

LEFT

Die Funktion LEFT liefert einen linken Anfangsstring eines Strings.

Der Eingang STR ist vom Typ STRING, SIZE vom Typ INT, der Rückgabewert der Funktion vom Typ STRING.

LEFT (STR, SIZE) bedeutet: Nehme die ersten SIZE Zeichen von links im String STR.

Beispiel in AWL:

LD 'SUSI'

LEFT 3

ST VarSTRING1 (* Ergebnis ist 'SUSI' *)

Beispiel in FUP:

CoDeSys V2.3

10-41

Die Bibliothek Standard.lib

Beispiel in ST:

VarSTRING1 := LEFT ('SUSI',3);

RIGHT

Die Funktion RIGHT liefert einen rechten Anfangsstring eines Strings.

Der Eingang STR ist vom Typ STRING, SIZE vom Typ INT, der Rückgabewert der Funktion vom Typ STRING.

RIGHT (STR, SIZE) bedeutet: Nehme die ersten SIZE Zeichen von rechts im String STR.

Beispiel in AWL:

LD

'SUSI'

RIGHT

3

ST

VarSTRING1 (* Ergebnis ist 'USI' *)

Beispiel in FUP:

Beispiel in ST:

VarSTRING1 := RIGHT ('SUSI',3);

MID

Die Funktion MID liefert einen Teilstring eines Strings.

Der Eingang STR ist vom Typ STRING, LEN und POS vom Typ INT, der Rückgabewert der Funktion vom Typ STRING.

MID (STR, LEN, POS) bedeutet: Hole LEN Zeichen aus dem String STR, beginnend mit dem Zeichen an der Stelle POS.

Beispiel in AWL:

LD 'SUSI'

MID 2,2

ST VarSTRING1 (* Ergebnis ist 'US' *)

Beispiel in FUP:

Beispiel in ST:

VarSTRING1 := MID ('SUSI',2,2);

CONCAT

Die Funktion CONCAT liefert die Konkatenation (Aneinanderhängen) von zwei Strings. Die Eingänge STR1 und STR2 und der Rückgabewert der Funktion sind vom Typ STRING.

Beispiel in AWL:

LD 'SUSI'

CONCAT 'WILLI'

ST

VarSTRING1 (* Ergebnis ist 'SUSIWILLI' *)

10-42

CoDeSys V2.3

10 - ANHANG

Beispiel in FUP:

Beispiel in ST:

VarSTRING1 := CONCAT ('SUSI','WILLI');

INSERT

Die Funktion INSERT fügt einen String ab einer bestimmten Stelle in einen anderen ein.

Die Eingänge STR1 und STR2 sind vom Typ STRING, POS vom Typ INT, der Rückgabewert der Funktion vom Typ STRING.

INSERT(STR1, STR2, POS) bedeutet: Füge STR2 in STR1 nach der POS-ten Stelle ein.

Beispiel in AWL:

LD

'SUSI'

INSERT 'XY',2

ST

VarSTRING1 (* Ergebnis ist 'SUXYSI' *)

Beispiel in FUP:

Beispiel in ST:

VarSTRING1 := INSERT ('SUSI','XY',2);

DELETE

Die Funktion DELETE löscht ab einer bestimmten Stelle einen Teilstring aus einem String.

Der Eingang STR ist vom Typ STRING, LEN und POS vom Typ INT, der Rückgabewert der Funktion vom Typ STRING.

DELETE(STR, LEN, POS) bedeutet: Lösche LEN Zeichen aus STR, beginnend mit dem POS-ten.

Beispiel in AWL:

LD

'SUXYSI'

DELETE 2,3

 

ST

Var1

(* Ergebnis ist 'SUSI' *)

Beispiel in FUP:

Beispiel in ST:

Var1 := DELETE ('SUXYSI',2,3);

REPLACE

Die Funktion REPLACE ersetzt einen Teilstring eines Strings durch einen anderen String.

Die Eingänge STR1 und STR2 sind vom Typ STRING, LEN und POS vom Typ INT, der Rückgabewert der Funktion vom Typ STRING.

CoDeSys V2.3

10-43

Die Bibliothek Standard.lib

REPLACE(STR1, STR2, L, P) bedeutet: Ersetze L Zeichen aus STR1 durch STR2 beginnend mit dem P-ten Zeichen.

Beispiel in AWL:

LD

'SUXYSI'

REPLACE

'K',2,2

ST

VarSTRING1 (* Ergebnis ist 'SKYSI' *)

Beispiel in FUP:

Beispiel in ST:

VarSTRING1 := REPLACE ('SUXYSI','K',2,2);

FIND

Die Funktion FIND sucht einen Teilstring in einem String.

Die Eingänge STR1 und STR2 sind vom Typ STRING, der Rückgabewert der Funktion vom Typ INT.

FIND(STR1, STR2) bedeutet: Finde die Position des ersten Zeichens des ersten Vorkommens von STR2 in STR1. Wenn STR2 in STR1 nicht vorkommt, dann gilt OUT := 0.

Beispiel in AWL:

LD

'SUXYSI'

FIND

'XY'

ST

VarINT1 (* Ergebnis ist '3' *)

Beispiel in FUP:

Beispiel in ST:

VarINT1 := FIND ('SUXYSI','XY');

10.16.2Bistabile Funktionsblöcke...

SR

Bistabilen Funktionsblock dominant setzen : Q1 = SR (SET1, RESET) bedeutet:

Q1 = (NOT RESET AND Q1) OR SET1

Die Eingänge SET1 und RESET und der Ausgang Q1 sind vom Typ BOOL. Deklarationsbeispiel:

SRInst : SR;

Beispiel in AWL:

CAL SRInst(SET1 := VarBOOL1, RESET := VarBOOL2)

LD SRInst.Q1

ST VarBOOL3

10-44

CoDeSys V2.3

10 - ANHANG

Beispiel in FUP:

Beispiel in ST:

SRInst(SET1:= VarBOOL1 , RESET:=VarBOOL2 );

VarBOOL3 := SRInst.Q1 ;

RS

Bistabilen Funktionsblock zurücksetzen : Q1 = RS (SET, RESET1) bedeutet:

Q1 = NOT RESET1 AND (Q1 OR SET)

Die Eingänge SET und RESET1 und der Ausgang Q1 sind vom Typ BOOL. Deklarationsbeispiel:

RSInst : RS ;

Beispiel in AWL:

CAL RSInst(SET:= VarBOOL1,RESET1:=VarBOOL2)

LD RSInst.Q1

ST VarBOOL3

Beispiel in FUP:

Beispiel in ST:

RSInst(SET:= VarBOOL1 , RESET1:=VarBOOL2 );

VarBOOL3 := RSInst.Q1 ;

SEMA

Ein Software-Semaphor (unterbrechbar).

BUSY = SEMA(CLAIM, RELEASE) bedeutet:

 

BUSY := X;

 

 

 

 

 

 

 

 

 

IF CLAIM THEN X:=TRUE;

 

 

 

 

 

 

 

 

ELSIF RELEASE THEN BUSY := FALSE; X:= FALSE;

 

 

 

 

 

 

END_IF

 

 

 

 

 

 

 

 

 

X

ist

eine

interne

BOOL

Variable,

die

mit

FALSE

initialisiert

ist.

Die Eingänge CLAIM und RELEASE und der Ausgang BUSY sind vom Typ BOOL.

Wenn SEMA aufgerufen wird und BUSY ist TRUE, dann bedeutet das, dass SEMA bereits vorher belegt wurde (SEMA wurde mit CLAIM = TRUE aufgerufen). Wenn BUSY FALSE ist, dann wurde SEMA noch nicht auf gerufen, oder es wurde freigegeben (Aufruf mit RELEASE = TRUE).

Deklarationsbeispiel:

SEMAInst : SEMA;

Beispiel in AWL:

CAL SEMAInst(CLAIM:=VarBOOL1,RELEASE:=VarBOOL2)

LD SEMAInst.BUSY

CoDeSys V2.3

10-45

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