FB_CTRL_STEPPING_MOTOR_OUT
Dieser Funktionsbaustein erzeugt eine Stellgröße für einen Schrittmotor.
Verhalten des Ausgangs:
VAR_INPUT
VAR_INPUT
fIn : FLOAT; (* controller output = STEPPING_MOTOR_OUT input [ fCtrlOutMin ... fCtrlOutMax ] *)
bUpperLimitSwitch : BOOL;
bLowerLimitSwitch : BOOL;
fManSyncValue : FLOAT;
bSync : BOOL;
eMode : E_CTRL_MODE;
END_VAR
fIn : Stellgröße des Reglers (Reglerausgang).
bUpperLimitSwitch : Endschalter: TRUE wenn der obere Anschlag erreicht ist.
bLowerLimitSwitch : Endschalter: TRUE wenn der untere Anschlag erreicht ist.
fManSyncValue : Eingang, mit dem der interne Zustand der Motorstellung angepasst werden kann, oder auf dessen Wert im Manual-Mode gefahren wird.
bSync : Mit einer steigenden Flanke an diesem Eingang wird der interne Schrittzähler auf den Schritt gesetzt, der dem Wert fManSyncValue entspricht.
eMode : Eingang, der die Betriebsart des Bausteins festlegt.
Dieser Baustein besitzt zur Synchronisation mit der aktuellen Ventilstellung den Mode "eCTRL_MODE_SYNC_MOVEMENT". In diesem Mode werden so lange Impulse zum Schließen des Ventils ausgegeben, bis das Ventil sicher geschlossen ist. Daran anschließend wird der Baustein auf diese Ventilstellung synchronisiert. Wenn der Synchronisierungsvorgang abgeschlossen ist, wird automatisch in den State "eCTRL_STATE_ACTIVE" geschaltet! |
VAR_OUTPUT
VAR_OUTPUT
bOutBitPos : BOOL; (* output signal to move to the maximum *)
bOutBitNeg : BOOL; (* output signal to move to the minimum*)
nActualStep : DINT; (* Actual state of the motor [ 0 ... nMaxMovingPulses ] *)
eState : E_CTRL_STATE;
eErrorId : E_CTRL_ERRORCODES;
bError : BOOL;
END_VAR
bOutBitPos : Ausgang, um den Motor in positiver Richtung zu verfahren.
bOutBitNeg : Ausgang, um den Motor in negativer Richtung zu verfahren.
nActualStep : Aktueller Schritt, in dem der Motor steht..
eState : State des Funktionsbausteins.
eErrorId : Liefert bei einem gesetzten bError-Ausgang die Fehlernummer.
bError : Wird TRUE, sobald ein Fehler eintritt.
VAR_IN_OUT
VAR_IN_OUT
stParams : ST_CTRL_STEPPING_MOTOR_OUT_PARAMS;
END_VAR
stParams : Parameterstruktur des Funktionsbausteins. Diese besteht aus den folgenden Elementen:
TYPE
ST_CTRL_STEPPING_MOTOR_OUT_PARAMS:
STRUCT
tCtrlCycleTime : TIME := T#0ms; (*
controller cycle time [TIME] *)
tTaskCycleTime : TIME := T#0ms; (* task
cycle time [TIME] *)
tOnTime : TIME; (*
impulse length *)
tOffTime : TIME; (*
delay between two impulses *)
nMaxMovingPulses : DINT; (*
necessary pulses to move from closed to open or v. v. *)
nMinMovingPulses : UINT := 0; (* min
pulses to start movement *)
bHoldWithOutputOn : BOOL; (* if
TRUE then a ouput is on when no pulses are generated *)
nAdditionalPulsesAtLimits : DINT; (* add
these pulses to ensure that the limits are reached*)
bMoveOnLimitSwitch : BOOL;
fCtrlOutMax : FLOAT := 100.0; (*
controller output to move to the max limit *)
fCtrlOutMin : FLOAT := 0.0; (*
controller output to move to the min limit *)
END_STRUCT
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 in 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 Zyklus aufgerufen wird.
tOnTime :Impulslänge.
tOffTime : Pausenlänge.
nMaxMovingPulses : Impulse, die benötigt werden, von einem Limit zum anderen zu fahren..
bHoldWithOutputOn : Wenn dieser Parameter auf TRUE gesetzt ist, bleibt im Stillstand des Antriebs ein Ausgang gesetzt. Dieser wird somit gebremst.
nAdditionalPulsesAtLimits : Impulse, die zum sicheren Erreichen der Grenzen zusätzlich ausgegeben werden.
bMoveOnLimitSwitch : Wenn TRUE, werden bei 0% oder 100% Stellgröße solange Impulse ausgegeben, bis ein Endschalter erreicht wird.
fCtrlOutMax : Stellgröße, bei der das Ventil auf 100% gefahren wird..
fCtrlOutMin : Stellgröße, bei der das Ventil auf 0% gefahren wird..
fMinCtrtlDeltaToStartMovement : Minimale Stellgrößendifferenz, die überschritten werden muss, damit der Motor verstellt wird.