FB_CTRL_3PHASE_SETPOINT_GENERATOR
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. |
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 |
bStop | BOOL | Mit einer positiven Flanke am Eingang |
bReset | BOOL | Reset des Sollwertgenerators - eine eventuell aktive Positionierung wird sofort abgebrochen, die Ausgänge |
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%. |
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], |
bCommandBuffered | BOOL | Dieser Ausgang signalisiert mit einem TRUE, dass ein Fahrauftrag gespeichert ist, der nach dem aktuellen Auftrag gestartet wird. fAcceleration := 0.0; |
bDone | BOOL | Dieser Ausgang wird TRUE, wenn die Bewegung abgeschlossen ist und die Zielposition erreicht wurde. |
bCommand | BOOL | Dieser Ausgang wird TRUE, wenn die aktuelle Bewegung abgebrochen wurde. Dieses kann beispielsweise durch eine steigende Flanke am Eingang |
eErrorId | E_CTRL_ERRORCODES | Liefert bei einem gesetzten |
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_ | 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. |
fAcceleration | LREAL | Beschleunigung in Einheiten / Sekunde2 |
fDeceleration | LREAL | Verzögerung in Einheiten / Sekunde2 |
eNewParameterType | E_CTRL_NEW_ |
und
|
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; |
| |
| |
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; |
| |
| |
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; |
| |
| |
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; |
| |
| |
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: |
|
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.