FB_CTRL_3PHASE_SETPOINT_GENERATOR

FB_CTRL_3PHASE_SETPOINT_GENERATOR 1:

Der Funktionsbaustein stellt einen 3-Phasen Sollwertgenerator dar.

Beschreibung

Dieser Funktionsbaustein erzeugt ein 3-Phasen Sollwertprofil mit einem rechteckigen Beschleunigungsverlauf.

Während der Generator aktiv ist, ist es möglich einen neuen Parametersatz vorzugeben. Je nach angegebenem Typ des Parametersatzes wird dieser sofort zur Wirkung gebracht: eNewParameterType := eCTRL_NEW_PARAMETER_TYPE_Instant

Alternativ wird erst die aktuelle Bewegung zu Ende geführt und dann eine neue Bewegung mit dem neuen Parametersatz gestartet:
eNewPosType := eCTRL_NEW_PARAMETER_TYPE_NotInstant

Hinweis

Überfahren der Endposition

Bei Vorgabe eines neuen Parametersatzes ist es möglich, dass die alte Endposition überfahren wird. Siehe Beispiel.
Es wird im Allgemeinen immer empfohlen, dem Sollwertgenerator eine Endlagenüberwachung nachzuschalten.

FB_CTRL_3PHASE_SETPOINT_GENERATOR 2: VAR_INPUT

VAR_INPUT
    bStart       : BOOL;
    bStop        : BOOL;
    bReset       : BOOL;
    fOverride    : LREAL;
END_VAR

Name

Typ

Beschreibung

bStart

BOOL

Mit einer positiven Flanke am Eingang bStart wird die Sollwertgenerierung gestartet, wenn der Generator nicht aktiv ist und die Eingänge bStop und bReset FALSE sind.

bStop

BOOL

Mit einer positiven Flanke am Eingang bStop wird die Sollwertgenerierung gestoppt. Es wird mit der Verzögerung des aktuellen Parametersatzes gebremst und der eventuell gespeicherte Folgeauftrag gelöscht.

bReset

BOOL

Reset des Sollwertgenerators - eine eventuell aktive Positionierung wird sofort abgebrochen, die Ausgänge fSetVelo und fSetAcc werden zu 0.0, die Sollposition wird auf die Startposition gesetzt und die internen Zustände werden gelöscht.

fOverride

LREAL

Mit dem Override im Intervall [ 0 .. 100.0 % ] kann die Sollgeschwindigkeit skaliert werden. Bei einem Override von 100% wird ein Profil mit der im Parametersatz angegebenen Sollgeschwindigkeit generiert. Der hier implementierte Override berechnet bei einer Overrideänderung keine Skalierung der aktuellen Laufzeittabellen, sondern es wird ein interner Nachstartauftrag mit geänderter Sollgeschwindigkeit generiert. Die Auflösung des Overrides beträgt 0.1%.

FB_CTRL_3PHASE_SETPOINT_GENERATOR 3: VAR_OUTPUT

VAR_OUTPUT
    fSetPos           : LREAL;
    fSetVelo          : LREAL;
    fSetAcc           : LREAL;
    nSetDirection     : INT;
    bCommandBuffered  : BOOL;
    bDone             : BOOL;
    bCommandAborted   : BOOL;
    eErrorId          : E_CTRL_ERRORCODES;
    bError            : BOOL;
END_VAR

Name

Typ

Beschreibung

fSetPos

LREAL

Sollposition

fSetVelo

LREAL

Sollgeschwindigkeit

fSetAcc

LREAL

Sollbeschleunigung

nSetDirection

INT

Bewegungsrichtung [-1, 0, 1],
1 --> Bewegungsrichtung positiv
0 --> Generator inaktiv
1 --> Bewegungsrichtung negativ

bCommandBuffered

BOOL

Dieser Ausgang signalisiert mit einem TRUE, dass ein Fahrauftrag gespeichert ist, der nach dem aktuellen Auftrag gestartet wird.
Ein gespeicherter Auftrag wird gelöscht, wenn der folgende Sonderfall als Parametersatz angegeben wird.

fAcceleration      := 0.0;
fDeceleration      := 0.0;
fStartPos          := 0.0;
fStartVelo         := 0.0;
fTargetPos         := 0.0;
fTargetVelo        := 0.0;
fVelocity          := 0.0;
tCtrlCycleTime     := T#0s;
tTaskCycleTime     := T#0s;
eNewParameterType  := eCTRL
_NEW_PARAMETER_TYPE_
NotInstant;

bDone

BOOL

Dieser Ausgang wird TRUE, wenn die Bewegung abgeschlossen ist und die Zielposition erreicht wurde.

bCommand
Aborted

BOOL

Dieser Ausgang wird TRUE, wenn die aktuelle Bewegung abgebrochen wurde. Dieses kann beispielsweise durch eine steigende Flanke am Eingang bStop verursacht werden.

eErrorId

E_CTRL_ERRORCODES

Liefert bei einem gesetzten bError-Ausgang die Fehlernummer.

bError

BOOL

Wird TRUE, sobald eine Fehlersituation eintritt.

VAR_IN_OUT

VAR_IN_OUT
    stParams : ST_CTRL_3PHASE_SETPOINT_GENERATOR_PARAMS;
END_VAR

Name

Typ

Beschreibung

stParams

ST_CTRL_3PHASE_
SETPOINT_GENERATOR_PARAMS

Parameterstruktur des Sollwertgenerators

stParams besteht aus den folgenden Elementen:

TYPE ST_CTRL_RAMP_GENERATOR_PARAMS :
STRUCT
    tTaskCycleTime       : TIME;
    tCtrlCycleTime       : TIME;
    fStartPos            : LREAL;
    fStartVelo           : LREAL;
    fVelocity            : LREAL; (* >= 0.0 *)
    fTargetPos           : LREAL;
    fTargetVelo          : LREAL;
    fAcceleration        : LREAL; (* > 0.0 *)
    fDeceleration        : LREAL; (* > 0.0 *)
    eNewParameterType    : E_CTRL_NEW_PARAMETER_TYPE;
EN_STRUCT
END_TYPE

Name

Typ

Beschreibung

tTaskCycleTime

TIME

Zykluszeit, mit der der Regelkreis bearbeitet wird. Diese muss größer oder gleich der TaskCycleTime sein. Der Funktionsbaustein berechnet mit dieser Eingangsgröße intern, ob die Zustands- und Ausgangsgrößen im aktuellen Zyklus aktualisiert werden müssen.

tCtrlCycleTime

TIME

Zykluszeit, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Task-Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Task-Zyklus aufgerufen wird.

fStartPos

LREAL

Startposition des Bewegungsprofils

fStartVelo

LREAL

Startgeschwindigkeit des Bewegungsprofils

fVelocity

LREAL

Geschwindigkeit in Einheiten / Sekunde

fTargetPos

LREAL

Zielposition des Bewegungsprofils

fTargetVelo

LREAL

Zielgeschwindigkeit des Bewegungsprofils.
Hinweis: Die Zielgeschwindigkeit bleibt nach dem Erreichen der Zielposition (setzen des bDone Flags) bestehen, die Position wird aber ab diesem Zeitpunkt nicht weiter berechnet (konstante Position bei einer Geschwindigkeit ≠ 0.0).

fAcceleration

LREAL

Beschleunigung in Einheiten / Sekunde2

fDeceleration

LREAL

Verzögerung in Einheiten / Sekunde2

eNewParameterType

E_CTRL_NEW_
PARAMETER_
TYPE

eCTRL_NEW_PARAMETER_TYPE_Instant

und

eCTRL_NEW_PARAMETER_TYPE_NotInstant

Besonderheiten für eNewParameterType

TYPE E_CTRL_NEW_PARAMETER_TYPE :
(    eCTRL_NEW_PARAMETER_TYPE_NotInstant := 0,
    eCTRL_NEW_PARAMETER_TYPE_Instant := 1);
END_TYPE

eCTRL_NEW_PARAMETER_TYPE_Instant: Wenn ein Nachstartauftrag mit einem neuen Parametersatz erfolgt, wird dieser sofort übernommen. D. h., aus dem aktuellen Bewegungszustand wird eine Transition auf die Daten des neuen Parametersatzes berechnet, wobei die alten Parameter verworfen werden.

eCTRL_NEW_PARAMETER_TYPE_NotInstant: Wenn ein Nachstartauftrag mit einem neuen Parametersatz erfolgt, wird dieser nicht sofort übernommen. D. h., die aktuelle Bewegung wird erst zu Ende ausgeführt und danach wird mit den neuen Parametern auf das neue Ziel positioniert. Ein TRUE an dem Ausgang bCommandBuffered zeigt an, dass ein nicht instantaner Nachstartauftrag gespeichert ist. Ein bereits gespeicherter Auftrag kann durch einen anderen neuen nicht instantanen Parametersatz überschrieben oder gelöscht werden.

Beispielpositionierungen

Beispielpositionierung 1:

stParams.fStartPos := -500.0; stParams.fTargetPos := 2500.0; stParams.fStartVelo := 0.0; stParams.fVelocity := 1000.0; stParams.fTargetVelo := 0.0; stParams.fAcceleration := 1000.0; stParams.fDeceleration := 2000.0; fOverride := 100.0;

FB_CTRL_3PHASE_SETPOINT_GENERATOR 4:

 

Beispielpositionierung 2:

stParams.fStartPos := 1000.0; stParams.fTargetPos := -2500.0; stParams.fStartVelo := 0.0; stParams.fVelocity := 1000.0; stParams.fTargetVelo := 0.0; stParams.fAcceleration := 1000.0; stParams.fDeceleration := 2000.0; fOverride := 100.0;

FB_CTRL_3PHASE_SETPOINT_GENERATOR 5:

 

Beispielpositionierung 3:

stParams.fStartPos := -500.0; stParams.fTargetPos := 2500.0; stParams.fStartVelo := 0.0; stParams.fVelocity := 1000.0; stParams.fTargetVelo := 0.0; stParams.fAcceleration := 1000.0; stParams.fDeceleration := 2000.0; stParams.eNewParameterType := eCTRL_NEW_PARAMETER_TYPE_NotInstant; fOverride := 100.0;Parameteränderung wenn fSetPos > 1000.0, eNewPosType := eCTRL_NEW_POS_TYPE_NotInstantstParams.fTargetPos := 0.0; stParams.fStartVelo := 0.0; stParams.fVelocity := 1300.0; stParams.fTargetVelo := 0.0; stParams.fAcceleration := 1000.0; stParams.fDeceleration := 2000.0; fOverride := 100.0;

FB_CTRL_3PHASE_SETPOINT_GENERATOR 6:

 

Beispielpositionierung 4:

stParams.fStartPos := -500.0; stParams.fTargetPos := 2500.0; stParams.fStartVelo := 0.0; stParams.fVelocity := 1000.0; stParams.fTargetVelo := 0.0; stParams.fAcceleration := 1000.0; stParams.fDeceleration := 2000.0; stParams.eNewParameterType := eCTRL_NEW_PARAMETER_TYPE_NotInstant; fOverride := 100.0;Parameteränderung wenn fSetPos > 1000.0, eNewPosType := eCTRL_NEW_POS_TYPE_InstantstParams.fTargetPos := 0.0; stParams.fStartVelo := 0.0; stParams.fVelocity := 1300.0; stParams.fTargetVelo := 0.0; stParams.fAcceleration := 1000.0; stParams.fDeceleration := 2000.0; fOverride := 100.0;

FB_CTRL_3PHASE_SETPOINT_GENERATOR 7:

 

Beispielpositionierung 5:

Start auf Punkt 1: stParams.fStartPos := -100.0; stParams.fTargetPos := 200.0; stParams.fStartVelo := 0.0; stParams.fVelocity := 250.0; stParams.fTargetVelo := 150.0; stParams.fAcceleration := 500.0; stParams.fDeceleration := 400.0; stParams.eNewParameterType := eCTRL_NEW_PARAMETER_TYPE_InstantNachstarten auf Punkt 2:
stParams.fTargetPos := 400.0; stParams.eNewParameterType := eCTRL_NEW_PARAMETER_TYPE_NotInstant;Nachstarten auf Punkt 3:
stParams.fTargetPos := 200.0; stParams.eNewParameterType := eCTRL_NEW_PARAMETER_TYPE_NotInstant;Nachstarten auf Punkt 4:
stParams.fTargetPos := 600.0; stParams.fTargetVelo := 0.0; stParams.eNewParameterType := eCTRL_NEW_PARAMETER_TYPE_NotInstant;

FB_CTRL_3PHASE_SETPOINT_GENERATOR 8:

Hinweis

Überfahren der Zielposition!

Wenn ein neuer Parametersatz vom Typ "eCTRL_NEW_POS_TYPE_Instant" an den Baustein übergeben wird, in dem die Verzögerung verringert wird, ist es möglich, dass die alte Zielposition überfahren wird.

Beispiel:

stParams.fTargetPos := 1000.0;
stParams.fStartPos := 0.0;
stParams.fVelocity := 500.0;
stParams.fAcceleration := 1000.0;
stParams.fDeceleration := 1000.0;
IF fSetPos > 800.0 THEN
stParams.fTargetPos := 400.0;
stParams.fVelocity := 500.0;
stParams.fAcceleration := 1_000.0;
stParams.fDeceleration := 500.0;
stParams.eNewPosType := eCTRL_NEW_POS_TYPE_Instant;
END_IF


In der nachfolgenden Scope-Aufnahme ist deutlich zu sehen, dass die ursprüngliche Zielposition von 1000 mm überfahren wird, was darauf zurückzuführen ist, dass die Verzögerung in dem neuen Parametersatz verringert wird.

FB_CTRL_3PHASE_SETPOINT_GENERATOR 9: