PulseOutput_Pass_FB

Kreisinterpolation (Drei-Punkte-Verfahren)

Durch eine zweikanalige Pulsausgabe wird eine bogenförmige Verfahrstrecke erzeugt. Die Parameter für die Pulsausgabe werden in einem Funktionsbaustein und einem SDT festgelegt. Der Radius des Kreisbogens wird aus dem angegebenen Mittelpunkt und der Endposition berechnet. Die Pulse werden vom angegebenen Kanal ausgegeben, wenn der Kontrollmerker für diesen Kanal FALSE und die Ausführungsbedingung TRUE ist.

Parameter

Eingang

bExecute (BOOL)

Aktivierung des Funktionsbausteins

bAbsolute (BOOL)

Absolutwertpositionierung = TRUE, Relativwertpositionierung = FALSE

bReverse (BOOL)
  • TRUE=Drehrichtung: rückwärts

    Von Kanal 0 (x-Achse) zu Kanal 2 ( y-Achse) (bei positiver Drehrichtung auf beiden Kanälen)
  • FALSE=Drehrichtung: vorwärts

    Von Kanal 2 (y-Achse) zu Kanal 0 (x-Achse) (bei positiver Drehrichtung auf beiden Kanälen)
diTargetSpeed (DINT)

Sollgeschwindigkeit: Resultierende Geschwindigkeit an beiden Achsen = 100–20000 (100Hz–20kHz)

diTargetValue_X (DINT)

Sollwert [Pulse]: -8388608–8388607

diTargetValue_Y (DINT)

Sollwert [Pulse]: -8388608–8388607

diPassValue_X (DINT)

Sollwert [Pulse]: -8388608–8388607

diPassValue_Y (DINT)

Sollwert [Pulse]: -8388608–8388607

dutChannelConfiguration_X_Y

Vordefinierter System-SDT für die Kanalkonfiguration: PulseOutput_Channel_Configuration_DUT

Kanal: 0, 2

Ausgang

bError (BOOL)

TRUE, wenn ein zugewiesener Eingangswert falsch ist. Der Funktionsbaustein wird nicht weiter ausgeführt.

diRadius (DINT)

Radius [Pulse]

diCenterValue_X (DINT)

Mittelpunkt (x-Achse) [Pulse] = -8388608–8388607

diCenterValue_Y (DINT)

Mittelpunkt (y-Achse) [Pulse] = -8388608–8388607

Anmerkungen

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 : F176_PulseOutput_Pass

Prüfen Sie mit PulseInfo_IsActive, ob der Kontrollmerker für den gewählten Kanal FALSE ist.

Beispiel

SDT

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.

POE-Kopf

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_Pass: PulseOutput_Pass_FB;
		bExecute: BOOL:=FALSE;
		bAbsolute: BOOL:=FALSE;
		bContinueAfterDone: BOOL:=FALSE;
		bCounterclockwise: BOOL:=FALSE;
		ChannelConfiguration_XY_DUT: PulseOutput_Channel_Configuration_DUT;
		bError: BOOL:=FALSE;
		diRadius: DINT:=0;
		diCenterValue_X: DINT:=0;
		diCenterValue_Y: DINT:=0;
		bConfigureDUT: BOOL:=FALSE;
		@'': @'';
	END_VAR

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 28 ;
        NETWORK_BODY
B(B_CONTACT,,bConfigureDUT,6,1,8,3,);
B(B_F,E_MOVE!,,17,0,23,4,,?DEN?D?AENO?C);
B(B_VARIN,,1,15,2,17,4,);
B(B_F,E_MOVE!,,17,8,23,12,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,15,10,17,12,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardFalse,23,10,25,12,);
B(B_F,E_MOVE!,,17,12,23,16,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,17,4,23,8,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,15,6,17,8,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardTrue,23,6,25,8,);
B(B_VARIN,,TRUE,15,14,17,16,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.iChannel,23,2,25,4,);
B(B_F,E_MOVE!,,17,16,23,20,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,15,18,17,20,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bDutyRatio25,23,18,25,20,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bAccelerationSteps60,23,14,25,16,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bFrequencyRange_191Hz_100kHz,23,22,25,24,);
B(B_VARIN,,TRUE,15,22,17,24,);
B(B_F,E_MOVE!,,17,20,23,24,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,17,24,23,28,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,15,26,17,28,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bExecuteInInterrupt,23,26,25,28,);
L(8,2,17,2);
L(12,18,17,18);
L(12,14,17,14);
L(12,10,17,10);
L(12,6,17,6);
L(12,2,12,18);
L(12,18,12,22);
L(12,22,17,22);
L(12,22,12,26);
L(12,26,17,26);
L(1,2,6,2);
L(1,0,1,28);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 13 ;
        NETWORK_BODY
B(B_VARIN,,bCounterclockwise,12,5,14,7,);
B(B_VARIN,,10000,12,6,14,8,);
B(B_VARIN,,6000,12,7,14,9,);
B(B_VARIN,,5000,12,8,14,10,);
B(B_VARIN,,500,12,9,14,11,);
B(B_VARIN,,500,12,10,14,12,);
B(B_VARIN,,ChannelConfiguration_XY_DUT,12,11,14,13,);
B(B_VAROUT,,diCenterValue_Y,29,5,31,7,);
B(B_VARIN,,bExecute,12,3,14,5,);
B(B_VARIN,,bAbsolute,12,4,14,6,);
B(B_VAROUT,,bError,29,3,31,5,);
B(B_VAROUT,,diRadius,29,4,31,6,);
B(B_FB,PulseOutput_Pass_FB!,PulseOutput_Pass,14,2,29,13,,?BbExecute?BbAbsolute?BbReverse?BdiTargetSpeed?BdiTargetValue_X?BdiTargetValue_Y?BdiPassValue_X?BdiPassValue_Y?BdutChannelConfiguration_X_Y?AbError?AdiRadius?AdiCenterValue_X?AdiCenterValue_Y);
L(1,0,1,13);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

(* Used DUT parameters *)
ChannelConfiguration_XY_DUT.iChannel := 1;
ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardTrue := TRUE;
ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardFalse := FALSE;
ChannelConfiguration_XY_DUT.bAccelerationSteps60 := FALSE;
ChannelConfiguration_XY_DUT.bDutyRatio25 := TRUE;
ChannelConfiguration_XY_DUT.bFrequencyRange_191Hz_100kHz := TRUE;
ChannelConfiguration_XY_DUT.Jog_bNoCountingInCWCCWNoTargetValueMatch := FALSE;
ChannelConfiguration_XY_DUT.bExecuteInInterruptProgram := FALSE;
(* FB *)
PulseOutput_Pass(bExecute := bExecute,
         bAbsolute := bAbsolute,
         bContinueAfterDone := bContinueAfterDone,
         bCounterclockwise := bCounterclockwise,
         diTargetSpeed := 10000,
         diTargetValue_X := 6000,
         diTargetValue_Y := 5000,
         diPassValue_X := 500,
         diPassValue_Y := 500,
         dutChannelConfiguration_X_Y := ChannelConfiguration_XY_DUT,
         bError => bError,
         diRadius => diRadius,
         diCenterValue_X => diCenterValue_X,
         diCenterValue_Y => diCenterValue_Y);

Letzte Änderung am: 2022-11-11Feedback zu dieser SeitePanasonic Hotline