Tipp-Betrieb und Positionierung
Dieser Befehl wird für den Tipp-Betrieb verwendet. Wenn der Positionierungstrigger-Eingang auf TRUE gesetzt wird, wird die zuvor festgelegte Zahl von Pulsen ausgegeben. Ehe der Sollwert erreicht ist und die Pulsausgabe endet, wird eine Abbremsung ausgeführt. Die Pulse werden vom angegebenen Kanal ausgegeben, wenn der Kontrollmerker für diesen Kanal FALSE und die Ausführungsbedingung TRUE ist.Die Sollgeschwindigkeit lässt sich einmal ändern, wenn der Positionierungstrigger-Eingang auf TRUE gesetzt wird.
Eingang
Die Ausführungsbedingung kann sein:
mit Flankentrigger
dauerhaft, wenn eine Änderung der Geschwindigkeit erforderlich ist
Nur Relativwertpositionierung möglich; muss immer FALSE sein, andernfalls wird ein Fehler ausgegeben.
Anfangs- und Restgeschwindigkeit = 1–50000 (1Hz–50kHz)
Sollgeschwindigkeit = 1–50000 (1Hz–50kHz)
Beschleunigungszeit= 1ms–32760ms
Sollgeschwindigkeit = 1–50000 (1Hz–50kHz)
Wechselzeit = 1–32760ms
Bremszeit = 1–32760ms
Sollwert [Pulse]: -2147483648–2147483647
Ausgang
TRUE, wenn ein zugewiesener Eingangswert falsch ist. Der Funktionsbaustein wird nicht weiter ausgeführt.
TRUE, wenn der zugewiesene Kanal nicht in den Systemregistern aktiviert ist, oder wenn bAbsolute TRUE ist
Dieser Nicht-Inline-Befehl ist Teil der Tool-Befehle für die Pulsausgabe. Eine ausführliche Beschreibung der intern verwendeten Befehle finden Sie in der :F171_PulseOutput_Jog_Positioning
Prüfen Sie mit PulseInfo_IsActive, ob der Kontrollmerker für den gewählten Kanal FALSE ist.Mit PulseControl_PulseOutputStop beenden Sie die Pulsausgabe am angegebenen Kanal. Mit PulseControl_DeceleratedStop führen Sie einen gebremsten Halt durch.
Mit einem strukturierten Datentyp (SDT) können zusammengesetzte Datentypen definiert werden. Ein SDT wird zunächst im SDT-Pool angelegt und dann wie die Standardtypen (BOOL, INT usw.) in der globalen Variablenliste oder im POE-Kopf verarbeitet.
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
PulseOutput_Jog_Positioning1: PulseOutput_Jog_Positioning1_FB;
bExecute: BOOL:=FALSE;
ChannelConfiguration_DUT: PulseOutput_Channel_Configuration_DUT;
bError: BOOL:=FALSE;
bConfigureDUT: BOOL:=FALSE;
bAbsolute: BOOL:=FALSE;
@'': @'';
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 24 ;
NETWORK_BODY
B(B_CONTACT,,bConfigureDUT,4,1,6,3,);
B(B_F,E_MOVE!,,15,0,21,4,,?DEN?D?AENO?C);
B(B_VARIN,,1,13,2,15,4,);
B(B_F,E_MOVE!,,15,8,21,12,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,13,10,15,12,);
B(B_VAROUT,,ChannelConfiguration_DUT.bOutput_Pulse_ForwardFalse,21,10,23,12,);
B(B_F,E_MOVE!,,15,12,21,16,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,15,4,21,8,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,13,6,15,8,);
B(B_VAROUT,,ChannelConfiguration_DUT.bOutput_Pulse_ForwardTrue,21,6,23,8,);
B(B_VARIN,,TRUE,13,14,15,16,);
B(B_VAROUT,,ChannelConfiguration_DUT.iChannel,21,2,23,4,);
B(B_F,E_MOVE!,,15,16,21,20,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,13,18,15,20,);
B(B_VAROUT,,ChannelConfiguration_DUT.bDutyRatio25,21,18,23,20,);
B(B_VAROUT,,ChannelConfiguration_DUT.bAccelerationSteps60,21,14,23,16,);
B(B_VAROUT,,ChannelConfiguration_DUT.bFrequencyRange_191Hz_100kHz,21,22,23,24,);
B(B_VARIN,,TRUE,13,22,15,24,);
B(B_F,E_MOVE!,,15,20,21,24,,?DEN?D?AENO?C);
L(1,2,4,2);
L(6,2,15,2);
L(10,18,15,18);
L(10,14,15,14);
L(10,10,15,10);
L(10,6,15,6);
L(10,2,10,18);
L(10,18,10,22);
L(10,22,15,22);
L(1,0,1,24);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 13 ;
NETWORK_BODY
B(B_VARIN,,600,10,4,12,6,);
B(B_VARIN,,10000,10,5,12,7,);
B(B_VARIN,,300,10,6,12,8,);
B(B_VARIN,,25000,10,7,12,9,);
B(B_VARIN,,1200,10,8,12,10,);
B(B_VARIN,,600,10,9,12,11,);
B(B_VARIN,,90000,10,10,12,12,);
B(B_VARIN,,ChannelConfiguration_DUT,10,11,12,13,);
B(B_VARIN,,bExecute,10,2,12,4,);
B(B_VAROUT,,bError,28,2,30,4,);
B(B_FB,PulseOutput_Jog_Positioning1_FB!,PulseOutput_Jog_Positioning1,12,1,28,13,,?BbExecute?BbAbsolute?BdiInitialAndFinalSpeed?BdiTargetSpeed1?BdiAccelerationTime?BdiTargetSpeed2?BdiChangeTime?BdiDecelerationTime?BdiTargetValue?BdutChannelConfiguration?AbError);
B(B_VARIN,,bAbsolute,10,3,12,5,);
L(1,0,1,13);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(* Used DUT parameters *)
ChannelConfiguration_DUT.iChannel := 1;
ChannelConfiguration_DUT.bOutput_Pulse_ForwardTrue := TRUE;
ChannelConfiguration_DUT.bOutput_Pulse_ForwardFalse := FALSE;
ChannelConfiguration_DUT.bAccelerationSteps60 := FALSE;
ChannelConfiguration_DUT.bDutyRatio25 := TRUE;
ChannelConfiguration_DUT.bFrequencyRange_191Hz_100kHz := TRUE;
ChannelConfiguration_DUT.bExecuteInInterrupt := FALSE;
(* FB *)
PulseOutput_Jog_Positioning1(bExecute := bExecute,
bAbsolute := bAbsolute
diInitialAndFinalSpeed := 600,
diTargetSpeed1 := 10000,
diAccelerationTime := 300,
diTargetSpeed2 := 25000,
diChangeTime := 1200,
diDecelerationTime := 600,
diTargetValue := 90000,
dutChannelConfiguration := ChannelConfiguration_DUT,
bError => bError);