PulseOutput_Center_FB

Interpolation circulaire (position centrale)

Des impulsions sont sorties via deux voies en fonction des paramètres indiqués dans le bloc fonction et le DUT spécifié, de façon à former un arc. Le rayon du cercle est calculé en indiquant la position centrale et la position finale. Les impulsions sont renvoyées en sortie de la voie indiquée lorsque le drapeau de contrôle de cette voie est FALSE et la condition d’exécution est TRUE.

Paramètres

Entrée

bExecute (BOOL)

Active le bloc fonction (avec déclenchement permanent)

bAbsolute (BOOL)

Contrôle de la valeur absolue = TRUE, Contrôle de la valeur relative = FALSE

bReverse (BOOL)
  • TRUE=Sens de rotation : inverse

    De la voie 0 (axe x) à la voie 2 (axe y) (déplacement sens positif sur les deux voies)
  • FALSE=Sens de rotation : vers l’avant

    De la voie 2 (axe y) à la voie 0 (axe x) (déplacement sens positif sur les deux voies)
diTargetSpeed (DINT)

Vitesse de consigne : Vitesse résultante des deux axes = 100–20000 (100Hz–20kHz)

diTargetValue_X (DINT)

Valeur de consigne (axe X) [impulsions] : -8388608–8388607

diTargetValue_Y (DINT)

Valeur de consigne (axe Y) [impulsions] : -8388608–8388607

diCenterValue_X (DINT)

Valeur centrale (axe X) [impulsions] : -8388608–8388607

diCenterValue_Y (DINT)

Valeur centrale (axe Y) [impulsions] : -8388608–8388607

dutChannelConfiguration_X_Y

DUT système prédéfini pour la configuration des voies : PulseOutput_Channel_Configuration_DUT

Voie : 0, 2

Sortie

bError (BOOL)

TRUE si une valeur d’entrée appliquée est invalide. L’exécution du bloc fonction est arrêtée.

diRadius (DINT)

Rayon [impulsions]

Remarques

Cette instruction non inline fait partie des instructions Tool pour sorties impulsionnelles. Pour en savoir plus sur les instruction(s) utilisées en interne, voir : F176_PulseOutput_Center

Utilisez PulseInfo_IsActive pour vérifier si le drapeau de contrôle des voies sélectionnées est FALSE.

Exemple

DUT

Un type de données structurées (DUT) peut être composé d’autres types de données. Un DUT est tout d’abord défini dans le gestionnaire de DUT et ensuite traité comme les autres types de données standard (BOOL, INT, etc.) dans la liste des variables globales ou l’en-tête du POU.

En-tête du POU

Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU.Le même en-tête de POU est utilisé pour tous les langages de programmation.

	VAR
		PulseOutput_Center: PulseOutput_Center_FB;
		bExecute: BOOL:=FALSE;
		bAbsolute: BOOL:=FALSE;
		bContinueAfterDone: BOOL:=FALSE;
		bCounterclockwise: BOOL:=FALSE;
		ChannelConfiguration_X_DUT: PulseOutput_Channel_Configuration_DUT;
		bError: BOOL:=FALSE;
		diRadius: DINT:=0;
		bConfigure: BOOL:=FALSE;
	END_VAR

Corps en LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 25 ;
        NETWORK_BODY
B(B_CONTACT,,bConfigure,7,1,9,3,);
B(B_F,E_MOVE!,,19,0,25,4,,?DEN?D?AENO?C);
B(B_VARIN,,1,17,2,19,4,);
B(B_F,E_MOVE!,,19,8,25,12,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,17,10,19,12,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bOutput_Pulse_SignReverse,25,10,27,12,);
B(B_F,E_MOVE!,,19,12,25,16,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,19,4,25,8,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,17,6,19,8,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bOutput_Pulse_SignForward,25,6,27,8,);
B(B_VARIN,,TRUE,17,14,19,16,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.iChannel,25,2,27,4,);
B(B_F,E_MOVE!,,19,16,25,20,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,17,18,19,20,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bDutyRatio25,25,18,27,20,);
B(B_F,E_MOVE!,,19,20,25,24,,?DEN?D?AENO?C);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bAccelerationSteps60,25,14,27,16,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bFrequencyRange_191Hz_100kHz,25,22,27,24,);
B(B_VARIN,,TRUE,17,22,19,24,);
L(1,2,7,2);
L(10,2,10,6);
L(10,6,19,6);
L(9,2,10,2);
L(10,2,19,2);
L(10,10,19,10);
L(10,10,10,14);
L(10,6,10,10);
L(10,14,19,14);
L(10,14,10,18);
L(10,18,19,18);
L(10,18,10,22);
L(10,22,19,22);
L(1,0,1,25);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 13 ;
        NETWORK_BODY
B(B_FB,PulseOutput_Center_FB!,PulseOutput_Center,14,1,28,13,,?BbExecute?BbAbsolute?BbContinueAfterDone?BbCounterclockwise?BdiTargetSpeed?BdiTargetValue_X?BdiTargetValue_Y?BdiCenterValue_X?BdiCenterValue_Y?BdutChannelConfiguration_X?AbError?AdiRadius);
B(B_VARIN,,bExecute,12,2,14,4,);
B(B_VARIN,,bAbsolute,12,3,14,5,);
B(B_VARIN,,bContinueAfterDone,12,4,14,6,);
B(B_VARIN,,bCounterclockwise,12,5,14,7,);
B(B_VARIN,,15000,12,6,14,8,);
B(B_VARIN,,7000,12,7,14,9,);
B(B_VARIN,,12000,12,8,14,10,);
B(B_VARIN,,500,12,9,14,11,);
B(B_VARIN,,900,12,10,14,12,);
B(B_VARIN,,ChannelConfiguration_X_DUT,12,11,14,13,);
B(B_VAROUT,,bError,28,2,30,4,);
B(B_VAROUT,,diRadius,28,3,30,5,);
L(1,0,1,13);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

(* 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.bExecuteInInterruptProgram := FALSE;
(* FB *)
PulseOutput_Center(bExecute := bExecute,
           bAbsolute := bAbsolute,
           bContinueAfterDone := bContinueAfterDone,
           bCounterclockwise := bCounterclockwise,
           diTargetSpeed := 15000,
           diTargetValue_X := 7000,
           diTargetValue_Y := 12000,
           diCenterValue_X := 500,
           diCenterValue_Y := 900,
           dutChannelConfiguration_X_Y := ChannelConfiguration_XY_DUT,
           bError => bError,
           diRadius => diRadius);

Modifié le : 2023-03-10Commentaires sur cette pageAssistance téléphonique