FB_CTRL_SERVO_MOTOR_OUT
Dieser Funktionsbaustein erzeugt Impulse, mit denen ein Stellmotor auf eine definierte Position gefahren werden kann.
Verhalten des Ausgangs:
VAR_INPUT
VAR_INPUT
fIn : FLOAT; (* controller output = SERVO_MOTOR_OUT input [ fCtrlOutMin ... fCtrlOutMax ] *)
bUpperLimitSwitch : BOOL;
bLowerLimitSwitch : BOOL;
fManSyncValue : FLOAT;
bSync : BOOL;
eMode : E_CTRL_MODE;
END_VAR
fIn : Stellgröße des Reglers im Intervall [ fCtrlOutMin ... fCtrlOutMax ] (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 aktuellen Motorstellung angepasst werden kann, oder auf dessen Wert im Manual-Mode gefahren wird.
bSync : Mit einer steigenden Flanke an diesem Eingang wird die interne Motorposition, die der tatsächlichen entsprechen muss, auf den Wert fManSyncValue gesetzt.
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 wird der Ausgang zum Schließen des Ventils so lange gesetzt, 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; (* PWM output bit *)
bOutBitNeg : BOOL; (* PWM output bit *)
fActualState : FLOAT; (* Actual state of the motor [ 0% ... 100%] *)
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.
fActualState : Aktuelle Motorstellung im Intervall [ fCtrlOutMin ... fCtrlOutMax ], in dem der sich der Motor aktuell befindet.
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_SERVO_MOTOR_OUT_PARAMS;
END_VAR
stParams : Parameterstruktur des Funktionsbausteins. Diese besteht aus den folgenden Elementen:
TYPE
ST_CTRL_SERVO_MOTOR_OUT_PARAMS:
STRUCT
tCtrlCycleTime : TIME := T#0ms;
(* controller cycle time [TIME] *)
tTaskCycleTime : TIME := T#0ms;
(* task cycle time [TIME] *)
tMovingTime : TIME;
(* time to move from closed (e.g. 0%) to open (e.g. 100%)*)
tSignalExtension : TIME;
(* output signal extension time *)
tAdditionalMoveTimeAtLimits : TIME;
(* add these moving time to ensure that the limits are
reached*)
tMinWaitTimeBetweenDirectionChange: TIME;
(* wait time between pos and neg output pulses and vice versa
*)
tMinimumPulseTime : TIME;
(* minimum output pulse length *)
bMoveOnLimitSwitch : BOOL;
bStopAdditionalMoveTimeIfInputValueIsChanged : BOOL;
(* if an additional move on the limits is active, this will be
stopped if the input value is changed *)
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.
tMovingTime : Die Zeit, die benötigt wird, um das Stellglied von einem Anschlag zum anderen zu fahren.
tSignalExtension : Signalverlängerung, um die jeder Ausgangsimpuls verlängert wird, um eine Totzeit zu kompensieren.
tAdditionalMovingTimeAtLimits : Signalverlängerung, die zum sicheren Erreichen der Grenzen zusätzlich ausgegeben wird, wenn das Stellglied auf +/-100% gefahren werden soll. Wirkt nur, wenn bMoveOnLimitSwitch FALSE ist.
tMinWaitTimeBetweenDirectionChange : Minimale Wartezeit zwischen positiven und negativen Ausgangsimpulsen.
tMinimumPulseTime : Minimale Länge eines Ausgangsimpulses.
bMoveOnLimitSwitch : Wenn TRUE, wird bei einer Stellgröße von fCtrlOutMin oder fCtrlOutMax solange ein Signal ausgegeben, bis der entsprechende Endschalter erreicht wird.
bStopAdditionalMoveTimeIfInputValueIsChanged : Wenn dieses Flag TRUE ist, wird das Fahren des Ventils auf die Endlage, welches durch die Zeit "Additional Moving Time At Limits" verursacht wird, gestoppt, wenn eine Eingangsgröße ungleich der Endlage vorgegeben wird. Wenn dieses Flag FALSE ist, wird bei einer Eingangsgröße, die einer Endlage entspricht, immer erst sicher auf die Endlage gefahren, bevor wieder eine andere Ventilstellung angefahren werden kann.
fCtrlOutMax : Stellgröße, bei der das Ventil auf 100% gefahren wird.
fCtrlOutMin : Stellgröße, bei der das Ventil auf 0% gefahren wird.