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

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

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