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

Die Bibliothek Standard.lib

ST VarBOOL3

Beispiel in FUP:

Beispiel in ST:

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

VarBOOL3 := SEMAInst.BUSY;

10.16.3Flankenerkennung...

R_TRIG

Der Funktionsblock R_TRIG detektiert eine ansteigende Flanke.

FUNCTION_BLOCK R_TRIG

VAR_INPUT

CLK : BOOL;

END_VAR

VAR_OUTPUT

Q : BOOL;

END_VAR

VAR

M : BOOL := FALSE;

END_VAR

Q := CLK AND NOT M;

M := CLK;

Solange die Eingabevariable CLK FALSE liefert, solange werden die Ausgabe Q und die Hilfsvariable M FALSE sein. Sobald CLK TRUE liefert, wird zuerst Q TRUE liefern, und dann M auf TRUE gesetzt. D.h.: bei jedem weiteren Aufruf der Funktionsblockinstanz wird Q wieder FALSE liefern, bis CLK eine fallende und wieder eine steigende Flanke hat.

Deklarationsbeispiel:

RTRIGInst : R_TRIG ;

Beispiel in AWL:

CAL RTRIGInst(CLK := VarBOOL1)

LD RTRIGInst.Q

ST VarBOOL2

Beispiel in FUP:

Beispiel in ST:

RTRIGInst(CLK:= VarBOOL1);

VarBOOL2 := RTRIGInst.Q;

F_TRIG

Der Funktionsblock F_TRIG detektiert eine fallende Flanke.

FUNCTION_BLOCK F_TRIG

VAR_INPUT

CLK: BOOL;

END_VAR

10-46

CoDeSys V2.3

10 - ANHANG

VAR_OUTPUT

Q: BOOL;

END_VAR

VAR

M: BOOL := FALSE;

END_VAR

Q := NOT CLK AND NOT M;

M := NOT CLK;

Solange die Eingabevariable CLK TRUE liefert, solange werden die Ausgabe Q und die Hilfsvariable M FALSE sein. Sobald CLK FALSE liefert, wird zuerst Q TRUE liefern, und dann M auf TRUE gesetzt. D.h.: bei jedem weiteren Aufruf der Funktionsblockinstanz wird Q wieder FALSE liefern, bis CLK eine steigende und wieder eine fallende Flanke hat.

Deklarationsbeispiel:

FTRIGInst : F_TRIG ;

Beispiel in AWL:

CAL FTRIGInst(CLK := VarBOOL1)

LD FTRIGInst.Q

ST VarBOOL2

Beispiel in FUP:

Beispiel in ST:

FTRIGInst(CLK:= VarBOOL1);

VarBOOL2 := FTRIGInst.Q;

10.16.4Zähler...

CTU

Der Funktionsblock Aufwärtszähler :

Die Eingänge CU und RESET und der Ausgang Q sind vom Typ BOOL, der Eingang PV und der Ausgang CV sind vom Typ INT.

Wenn RESET TRUE ist, wird die Zählvariable CV mit 0 initialisiert. Wenn CU eine steigende Flanke von FALSE auf TRUE hat, dann wird CV um 1 erhöht.

Q liefert TRUE, wenn CV größer oder gleich der Obergrenze PV ist. Deklarationsbeispiel:

CTUInst : CTU ;

Beispiel in AWL:

CAL CTUInst(CU := VarBOOL1, RESET := VarBOOL2, PV := VarINT1)

LD CTUInst.Q

ST VarBOOL3

LD CTUInst.CV

ST VarINT2

CoDeSys V2.3

10-47

Die Bibliothek Standard.lib

Beispiel in FUP:

Beispiel in ST:

CTUInst(CU:= VarBOOL1, RESET:=VarBOOL2 , PV:= VarINT1);

VarBOOL3 := CTUInst.Q ;

VarINT2 := CTUInst.CV;

CTD

Der Funktionsblock Abwärtszähler :

Die Eingänge CD und LOAD und der Ausgang Q sind vom Typ BOOL, der Eingang PV und der Ausgang CV vom Typ INT.

Wenn LOAD TRUE ist, wird die Zählvariable CV mit der Obergrenze PV initialisiert. Wenn CD eine steigende Flanke von FALSE auf TRUE hat, wird CV um 1 erniedrigt, solange CV größer als 0 ist (Wenn also kein Unterlauf verursacht wird).

Q liefert TRUE, wenn CV gleich 0 ist. Deklarationsbeispiel:

CTDInst : CTD ;

Beispiel in AWL:

CAL

CTDInst(CD := VarBOOL1, LOAD := VarBOOL2, PV := VarINT1)

LD

CTDInst.Q

ST

VarBOOL3

LD

CTDInst.CV

ST

VarINT2

Beispiel in FUP:

Beispiel in ST:

CTDInst(CD:= VarBOOL1, LOAD:=VarBOOL2 , PV:= VarINT1);

VarBOOL3 := CTDInst.Q ;

VarINT2 := CTDInst.CV;

CTUD

Der Funktionsblock Aufund Abwärtszähler :

Die Eingänge CU, CD, RESET, LOAD und die Ausgänge QU und QD sind vom Typ BOOL, PV und CV sind vom Typ INT.

Wenn RESET gilt, dann wird die Zählvariable CV mit 0 initialisiert. Wenn LOAD gilt, dann wird CV mit PV initialisiert.

Wenn CU eine steigende Flanke von FALSE auf TRUE hat, dann wird CV um 1 erhöht. Wenn CD eine steigende Flanke von FALSE auf TRUE hat, dann wird CV jeweils um 1 erniedrigt, solange CV keinen Unterlauf verursacht.

QU liefert TRUE, wenn CV größer oder gleich PV geworden ist.

10-48

CoDeSys V2.3

10 - ANHANG

QD liefert TRUE, wenn CV gleich 0 geworden ist

Deklarationsbeispiel:

CTUDInst : CUTD ;

Beispiel in AWL:

CAL

CTUDInst(CU:=VarBOOL2, RESET:=VarBOOL3, LOAD:=VarBOOL4, PV:=VarINT1)

LD

CTUDInst.Q

ST

VarBOOL5

LD

CTUDInst.QD

ST

VarBOOL5

LD

CTUInst.CV

ST

VarINT2

Beispiel in FUP:

Beispiel in ST:

CTUDInst(CU := VarBOOL1, CU:= VarBOOL2, RESET := VarBOOL3, LOAD:=VarBOOL4 , PV:=

VarINT1);

VarBOOL5 := CTUDInst.QU ;

VarBOOL6 := CTUDInst.QD ;

VarINT2 := CTUDInst.CV;

10.16.5Timer...

TP

Der Funktionsblock TP ist ein Pulsgeber. TP(IN, PT, Q, ET) bedeutet:

IN und PT sind Eingabevariablen vom Typ BOOL bzw. TIME. Q und ET sind Ausgabevariablen vom Typ BOOL bzw. TIME. Wenn IN FALSE ist, sind die Ausgaben FALSE bzw. 0.

Sobald IN TRUE ist, wird in ET die Zeit in Millisekunden hochgezählt, bis der Wert gleich dem in PT ist, dann bleibt er gleich.

Q ist TRUE wenn IN TRUE und ET kleiner gleich PT ist. Andernfalls ist es FALSE. Q liefert somit für den in PT angegebenen Zeitraum ein Signal.

Graphische Darstellung des zeitlichen Ablaufs von TP:

CoDeSys V2.3

10-49

Die Bibliothek Standard.lib

Deklarationsbeispiel:

TPInst : TP ;

Beispiel in AWL:

CAL TPInst(IN := VarBOOL1, PT := T#5s)

LD TPInst.Q

ST VarBOOL2

Beispiel in FUP:

Beispiel in ST:

TPInst(IN := VarBOOL1, PT:= T#5s);

VarBOOL2 :=TPInst.Q;

TON

Der Funktionsblock Timer on-delay realisiert eine Einschaltverzögerung. TON(IN, PT, Q, ET) bedeutet:

IN und PT sind Eingabevariablen vom Typ BOOL bzw. TIME. Q und ET sind Ausgabevariablen vom Typ BOOL bzw. TIME. Wenn IN FALSE ist, sind die Ausgaben FALSE bzw. 0.

Sobald IN TRUE ist, wird in ET die Zeit in Millisekunden hochgezählt, bis der Wert gleich dem in PT ist, dann bleibt er gleich.

Q ist TRUE wenn IN TRUE und ET gleich PT ist. Andernfalls ist es FALSE.

Q hat somit eine steigende Flanke, wenn die in PT in Millisekunden angegebene Zeit abgelaufen ist. Graphische Darstellung des zeitlichen Verhaltens von TON:

Deklarationsbeispiel:

TONInst : TON ;

Beispiel in AWL:

CAL TONInst(IN := VarBOOL1, PT := T#5s)

LD TONInst.Q

ST VarBOOL2

Beispiel in FUP:

10-50

CoDeSys V2.3

10 - ANHANG

Beispiel in ST:

TONInst(IN := VarBOOL1, PT:= T#5s);

VarBOOL2 :=TONInst.Q;

TOF

Der Funktionsblock Timer off-delay realisiert eine Ausschaltverzögerung. TOF(IN, PT, Q, ET) bedeutet:

IN und PT sind Eingabevariablen vom Typ BOOL bzw. TIME. Q und ET sind Ausgabevariablen vom Typ BOOL bzw. TIME. Wenn IN TRUE ist, sind die Ausgaben TRUE bzw. 0.

Sobald IN FALSE ist, wird in ET die Zeit in Millisekunden hochgezählt, bis der Wert gleich dem in PT ist, dann bleibt er gleich.

Q ist FALSE wenn IN FALSE und ET gleich PT ist. Andernfalls ist es TRUE.

Q hat somit eine fallende Flanke, wenn die in PT in Millisekunden angegebene Zeit abgelaufen ist. Graphische Darstellung des zeitlichen Verhaltens von TOF:

Deklarationsbeispiel:

TOFInst : TOF ;

Beispiel in AWL:

CAL TOFInst(IN := VarBOOL1, PT := T#5s)

LD TOFInst.Q

ST VarBOOL2

Beispiel in FUP:

Beispiel in ST:

TOFInst(IN := VarBOOL1, PT:= T#5s);

VarBOOL2 :=TOFInst.Q;

RTC

Der Funktionsblock Runtime Clock gibt ab einem vorgegebenen Startzeitpunkt die fortlaufende Datumsund Uhrzeit wieder.

RTC(EN, PDT, Q, CDT) bedeutet:

CoDeSys V2.3

10-51

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