Generelle Funktionsweise der FB_CTRL_... Funktionsbausteine

In den folgenden Absätzen wird die generelle Funktionsweise der Bausteine in der Controller Toolbox beschrieben.

Allgemeine Hinweise

Die TcControllerToolbox kann generell sowohl auf einem PC- als auch auf einem BX- oder BC-System eingesetzt werden. Wenn die Toolbox auf einem BC-System eingesetzt wird, ist es erforderlich, im TwinCAT PLC Control unter dem Menüpunkt Projekt, Optionen... die maximale Anzahl der POUs anzupassen.

Generelle Funktionsweise der FB_CTRL_... Funktionsbausteine 1:

Diskretisierung

Die kontinuierlichen Übertragungsfunktionen der in dieser Bibliothek zusammengestellten Übertragungsglieder sind mit der Trapezregel (Tustin-Formel) diskretisiert worden.

Tustin-Formel:

Generelle Funktionsweise der FB_CTRL_... Funktionsbausteine 2:

Eingänge der Funktionsbausteine

eMode:

Mit diesem Eingang kann die Betriebsart der meisten Bausteine ausgewählt werden. Hiermit ist es möglich, eine der folgenden Betriebsarten anzuwählen:

eCTRL_MODE_PASSIVE

Der oder die Ausgänge des Bausteins werden auf Null gesetzt, die internen Zustände bleiben aber erhalten.

eCTRL_MODE_ACTIVE

Der Baustein wird entsprechend seiner Beschreibung ausgeführt und entsprechende Ausgangsgrößen werden berechnet (Normalbetrieb).

eCTRL_MODE_RESET

In dieser Betriebsart werden alle internen Zustände zurückgesetzt und das Fehlerbit gelöscht.

eCTRL_MODE_MANUAL

Es wird am Ausgang der Wert der Eingangsgröße fManSyncValue ausgegeben (Handbetrieb).

stParams:

Mit dieser Struktur werden dem Funktionsbaustein die benötigten Parameter übergeben. In allen Parameterstrukturen sind die Variablen tTaskCycleTime und tCtrlCycleTime enthalten. Die Wirkungsweise dieser Parameter ist die Folgende:

Mit dem Parameter tTaskCycleTime wird die Zykluszeit angegeben, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Zyklus aufgerufen wird. Wird er nur in jedem 2. Zyklus aufgerufen, muss die Zeit entsprechend verdoppelt werden. Der Parameter tCtrlCycleTime gibt die Abtastzeit des Regelkreises an. Diese Zeit muss größer oder gleich des Parameters tTaskCycleTime sein. Wenn die Abtastzeit gleich der tTaskCycleTime gesetzt wird, wird der Baustein bei jedem Aufruf ausgeführt. Wenn sie um den Faktor 5 größer gewählt wird, wird der Baustein nur bei jedem 5. Aufruf bearbeitet. Somit ist es möglich, in einer schnellen Task auch langsame Regelkreise zu implementieren.

Die Parameter tTaskCycleTime und tCtrlCycleTime sind vom Typ TIME und erlauben somit keine Eingaben, die kleiner als 1ms sind. Um die Regler in einer schnellen SPS-Task mit einer Zykluszeit kleiner 1ms einsetzen zu können, kann eine globale Base-Time angegeben werden, auf die die angegeben Zykluszeiten bezogen werden. Erläuterungen zur Verwendung der Base-Time.

Beispiele:

Es wird angenommen, dass der Baustein in jedem Task-Zyklus aufgerufen wird.

Task Configuration

Parameter: tTaskCycleTime

Parameter: tCtrlCycleTime

Wirkungsweise:

T#10ms

T#10ms

T#10ms

Der Regelkreis wird mit 10ms Abtastzeit bearbeitet.

T#10ms

T#10ms

T#50ms

Der Regelkreis wird mit 50ms Abtastzeit bearbeitet.

T#100ms

T#100ms

T#100ms

Der Regelkreis wird mit 100ms Abtastzeit bearbeitet.

T#100ms

T#100ms

T#50ms

FEHLER, eine Ausführung nicht möglich!

T#100ms

T#50ms

T#50ms

FEHLER, der Baustein wird zwar ausgeführt, aber es werden falsche Ausgangsgrößen berechnet!

Ausgänge der Funktionsbausteine

eState:

Dieser Ausgang zeigt den aktuellen internen Zustand an, in dem sich der Baustein befindet.

eCTRL_STATE_IDLE

Ein Reset des Bausteins ist erfolgreich ausgeführt worden, der Baustein wartet auf eine Betriebsartenumschaltung.

eCTRL_STATE_PASSIVE

Der Baustein befindet sich im Passive-State, in dem keine Berechnungen ausgeführt werden.

eCTRL_STATE_ACTIVE

Der Baustein befindet sich in Active-State, dieses ist der normale Betriebszustand.

eCTRL_STATE_RESET

Eine Reset-Anforderung wird bearbeitet und der Reset ist noch nicht abgeschlossen.

eCTRL_STATE_MANUAL

Der Baustein befindet sich im Manual-State und die Ausgangsgröße kann manuell an dem entsprechenden Eingang vorgegeben werden.

eCTRL_STATE_...

Eventuell weitere interne Zustände werden bei den entsprechenden Bausteinen beschrieben.

eCTRL_STATE_ERROR

Es ist ein Fehler aufgetreten und der Baustein wird in diesem State nicht ausgeführt. Siehe eErrorId für weitere Informationen.

bError:

An diesem boolschen Ausgang wird mit einem TRUE ein Fehler des Bausteins signalisiert.

eErrorId:

An diesem Ausgang wird die Fehlernummer ausgegeben, wenn der Ausgang bError TRUE ist.

Verwendung der globalen Base-Time (nur auf einem PC-System)

Um die Funktionsbausteine in einer SPS-Task mit einer Zykluszeit kleiner 1ms einsetzen zu können, ist es möglich, die angegebenen Zykluszeiten als Ticks einer Basiszeit zu interpretieren. Bei dieser besonderen Parametrierung wird die Zeiteinheit 1ms als 1 Tick interpretiert. Dieses Vorgehen ist äquivalent zu der Einstellung einer SPS-Zykluszeit kleiner 1ms im TwinCAT Systemmanager.

Die Umschaltung und Angabe der Basiszeit erfolgt mit der globalen Struktur stCtrl_GLOBAL_CycleTimeInterpretation für alle Funktionsbausteine der Toolbox.

VAR_GLOBAL
    stCtrl_GLOBAL_CycleTimeInterpretation : ST_CTRL_CYCLE_TIME_INTERPRETATION;
END_VAR
TYPE ST_CTRL_CYCLE_TIME_INTERPRETATION :
STRUCT
    bInterpretCycleTimeAsTicks : BOOL;  (* e.g. 2ms -> 2ticks
*)
    fBaseTime                  : FLOAT; (* Base time in seconds,
e.g. 200µs -> 200E-6s *)
END_STRUCT
END_TYPE

Um die angegebenen Zykluszeiten als Ticks zu interpretieren, wird die Variable bInterpretCycleTimeAsTicks in der globalen Struktur stCtrl_GLOBAL_CycleTimeInterpretation auf TRUE gesetzt. In dieser Struktur muss dann auch die Basiszeiteinheit in der Variablen fBaseTime gesetzt werden.

Durch das Setzen des Flags bInterpretCycleTimeAsTicks wird die Interpretation der Parameter mit den Namen

geändert. Alle sonstigen Parameter vom Typ TIME bleiben in ihrer Interpretation und Wirkung unbeeinflusst.

Beispiel:

Die Basiszeiteinheit des TwinCAT-Systems beträgt 200µs. Die SPS-Task und somit die Bausteine der Toolbox werden zyklisch alle 400µs aufgerufen.

Setzen der globalen Struktur:

stCtrl_GLOBAL_CycleTimeInterpretation.bInterpretCycleTimeAsTicks := TRUE;
stCtrl_GLOBAL_CycleTimeInterpretation.fBaseTime          := 200E-6;

Parametrierung eines Funktionsbausteins aus der Toolbox:

stParams.tTaskCycleTime    := T#2ms;  (*2*200µs=400µs *)
stParams.tCtrlCycleTime    := T#4ms;  (*4*200µs=800µs *)
stParams. ...

Die an den Bausteinen angegebene TaskCycleTime beträgt 2•200E-6s = 400µs und entspricht somit der eingestellten SPS-Zykluszeit. Die CtrlCycleTime wird auf 800µs = 4•200E-6s gesetzt, so dass der Regelkreis mit einer Abtastzeit von 800µs arbeitet, also in jedem 2. SPS-Zyklus bearbeitet wird.