FB_CTRL_3PHASE_SETPOINT_GENERATOR (nur auf einem PC-System)

FB_CTRL_3PHASE_SETPOINT_GENERATOR (nur auf einem PC-System) 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), oder 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

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

VAR_INPUT

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

bStart : 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 : 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 : 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 : 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; (* generated setpoint position *)
    fSetVelo        : LREAL; (* generated setpoint velocity *)
    fSetAcc         : LREAL; (* generated setpoint acceleration *)
    nSetDirection   : INT;   (* generated direction *)
     bCommandBuffered       : BOOL;  
    bDone       : BOOL;
    bCommandAborted     : BOOL;

    eErrorId        : E_CTRL_ERRORCODES;
    bError      : BOOL;
END_VAR

fSetPos : Sollposition

fSetVelo : Sollgeschwindigkeit

fSetAcc : Sollbeschleunigung

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

bGeneratorActive : Signalisiert, ob der Generator aktiv ist.

bCommandBuffered : 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 : Dieser Ausgang wird TRUE, wenn die Bewegung abgeschlossen ist und die Zielpositon erreicht wurde.

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

eErrorId : Liefert bei einem gesetzten bError-Ausgang die Fehlernummer.

bError : Wird TRUE, sobald eine Fehlersituation eintritt.

VAR_IN_OUT

VAR_IN_OUT
    stParams : ST_CTRL_3PHASE_SETPOINT_GENERATOR_PARAMS;
END_VAR

stParams : Parameterstruktur des Sollwertgenerators. Diese besteht aus den folgenden Elementen:

TYPE
ST_CTRL_RAMP_GENERATOR_PARAMS :
STRUCT
    tTaskCycleTime     : TIME;  (* task cycle time [TIME]      
*)
    tCtrlCycleTime     : TIME;  (* controller cycle time [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;
END_TYPE

tCtrlCycleTime : 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.

tTaskCycleTime : 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 : Startposition des Bewegungsprofils.

fStartVelo : Startgeschwindigkeit des Bewegungsprofils.

fVelocity : Geschwindigkeit in Einheiten / Sekunde.

fTargetPos : Zielposition des Bewegungsprofils.

fTargetVelo : Zielgeschwindigkeit des Bewegungsprofils.

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

fAcceleration : Beschleunigung in Einheiten / Sekunde2.

fDeceleration : Verzögerung in Einheiten / Sekunde2.

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 (nur auf einem PC-System) 2:

 

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 (nur auf einem PC-System) 3:

 

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_NotInstant

stParams.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 (nur auf einem PC-System) 4:

 

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_Instant

stParams.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 (nur auf einem PC-System) 5:

 

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_Instant

Nachstarten 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 (nur auf einem PC-System) 6:

Hinweis

Wenn einer neuer Parametersatz mit dem Type "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ück zu führen ist, dass die Verzögerung in dem neuen Parametersatz verringert wird.

FB_CTRL_3PHASE_SETPOINT_GENERATOR (nur auf einem PC-System) 7:

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.8

PC (i386)

TcControllerToolbox.lib