Generelle Funktionsweise

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

Diskretisierung

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

Tustin-Formel:

Generelle Funktionsweise 1:

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 zweiten 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 fünften 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 angegebenen Zykluszeiten bezogen werden. Die Verwendung der Base-Time wird in den folgenden Beispielen erläutert.

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 ist 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 im 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_...

Eventuelle 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

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, sodass der Regelkreis mit einer Abtastzeit von 800µs arbeitet, also in jedem zweiten SPS-Zyklus bearbeitet wird.