PulseOutput_Home_FB

Retour à l’origine

Cette instruction exécute un retour à l’origine en fonction des paramètres du bloc fonction et du DUT indiqué. 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)

Un front montant active le bloc fonction

bReverse (BOOL)

Sens du mouvement : Avant = FALSE, Inverse = TRUE

diInitialSpeed, diTargetSpeed (DINT)

Vitesse initiale/Vitesse de consigne : Définissez cette valeur selon l’intervalle de fréquence sélectionné dans PulseOutput_Channel_Configuration_DUT :

FPS, FP-X : 1 à 9800 (1,5Hz–9,8kHz)

48 à 100000 (48Hz–100kHz)

191 à 100000 (191–100kHz)

F171_PulseOutput_Trapezoidal : 1 à 50000 (1Hz–50kHz)

FP0, F168_PulseOutput_Trapezoidal : 40 à 5000 (40Hz–5kHz)

diAccelerationTime (DINT)

Temps d’accélération/de décélération (FPS, FP-X) :

Avec 30 pas : 30ms–32760ms (indication par pas de 30)

Avec 60 pas : 60ms–32760ms (indication par pas de 60)

Temps d’accélération/de décélération (FP0, F168_PulseOutput_Trapezoidal) : 30ms–32760ms

Temps d’accélération (F171_PulseOutput_Trapezoidal) : 1ms–32760ms

diDecelerationTime (DINT)

Temps de décélération (F171_PulseOutput_Trapezoidal) : 1ms–32760ms

diCreepSpeed (DINT)

Vitesse de recherche (F171_PulseOutput_Trapezoidal) : 1 à 50000 (1Hz–50kHz)

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

Sortie

bError (BOOL)

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

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 :

  • FPS, FP-X : F171_PulseOutput_Home

  • FP-e, FP0 : F168_PulseOutput_Home

Utilisez PulseInfo_IsActive pour vérifier si le drapeau de contrôle des voies sélectionnées est FALSE. Utilisez PulseInfo_IsHomeInputTrue pour vérifier si l’entrée du point d’origine est TRUE.

NOTA

Pour éviter les dysfonctionnements ou les erreurs de fonctionnement :

  • Veillez à définir le registre système sur le mode de sortie impulsionnelle lorsque vous utilisez une entrée du point d’origine.

  • L’entrée retour à l’origine ne peut pas être occupée par d’autres instructions telles que l’entrée de capture d’impulsions, l’entrée d’interruption ou le compteur rapide.

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.

Corps du POU

	VAR
		PulseOutput_Home: PulseOutput_Home_FB;
		bExecute: BOOL:=FALSE;
		bReverse: BOOL:=FALSE;
		bError: BOOL:=FALSE;
		ChannelConfiguration_DUT: PulseOutput_Channel_Configuration_DUT;
		bConfigureDUT: 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 := 32 ;
        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_SignReverse,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_SignForward,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_F,E_MOVE!,,15,20,21,24,,?DEN?D?AENO?C);
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,24,21,28,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,13,26,15,28,);
B(B_VAROUT,,ChannelConfiguration_DUT.Home_bEnableHomeOnlyAfterNearHomeDeceleration,21,26,23,28,);
B(B_F,E_MOVE!,,15,28,21,32,,?DEN?D?AENO?C);
B(B_VAROUT,,ChannelConfiguration_DUT.Home_iDeviationCounterClearSignalOutputTime_in_0p5ms,21,30,23,32,);
B(B_VARIN,,5,13,30,15,32,);
L(10,2,10,6);
L(10,10,10,14);
L(10,6,10,10);
L(10,14,10,18);
L(10,18,10,22);
L(10,22,10,26);
L(6,2,10,2);
L(1,2,4,2);
L(10,26,10,30);
L(10,30,15,30);
L(10,26,15,26);
L(10,22,15,22);
L(10,18,15,18);
L(10,6,15,6);
L(10,14,15,14);
L(10,10,15,10);
L(10,2,15,2);
L(1,0,1,32);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 11 ;
        NETWORK_BODY
B(B_FB,PulseOutput_Home_FB!,PulseOutput_Home,15,1,28,11,,?BbExecute?BbReverse?BdiInitialAndFinalSpeed?BdiTargetSpeed?BdiAccelerationTime?BdiDecelerationTime?BdiCreepSpeed?BdutChannelConfiguration?AbError);
B(B_VARIN,,bExecute,13,2,15,4,);
B(B_VARIN,,bReverse,13,3,15,5,);
B(B_VARIN,,1500,13,4,15,6,);
B(B_VARIN,,12000,13,5,15,7,);
B(B_VARIN,,300,13,6,15,8,);
B(B_VARIN,,600,13,7,15,9,);
B(B_VARIN,,500,13,8,15,10,);
B(B_VARIN,,ChannelConfiguration_DUT,13,9,15,11,);
B(B_VAROUT,,bError,28,2,30,4,);
L(1,0,1,11);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

(* 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.Home_bEnableHomeOnlyAfterNearHomeDeceleration := FALSE;
ChannelConfiguration_DUT.Home_iDeviationCounterClearSignalOutputTime_in_0p5ms := 5;
ChannelConfiguration_DUT.bExecuteInInterrupt := FALSE;
(* FB *)
PulseOutput_Home(bExecute := bExecute,
         bReverse := bReverse,
         diInitialAndFinalSpeed := 1500,
         diTargetSpeed := 12000,
         diAccelerationTime := 300,
         diDecelerationTime := 600,
         diCreepSpeed := 500,
         dutChannelConfiguration := ChannelConfiguration_DUT,
         bError => bError);

Modifié le : 2021-08-09Commentaires sur cette pageAssistance téléphonique