F168_PulseOutput_Home

Retour à l’origine

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

s_dutDataTable (F168_PulseOutput_Home_DUT)

Adresse de départ de la zone contenant le tableau de données

n_iPulseOutputChannel (constante décimale)

Sortie impulsionnelle : 0 ou 1

Remarques

Après l’activation du servosystème, il y a une différence entre la valeur de la position initiale (valeur courante) et la position mécanique réelle de l’axe, et cette différence ne peut pas être prédéterminée. La valeur interne doit être synchronisée avec la position réelle des axes. La synchronisation est réalisée à l’aide d’un retour à l’origine pendant lequel une valeur de position est enregistrée à un point de référence connu (origine). Lorsqu’une instruction retour à l’origine est exécutée, des impulsions de sortie sont émises jusqu’à ce que l’entrée retour à l’origine soit activée. L’affectation des entrées/sorties est déterminée par la voie utilisée. Pour décélérer le mouvement à l’approche de la position d’origine, désignez une entrée proche de l’origine (near home) et définissez le bit 4 du registre spécial de données, dans lequel le code de contrôle de la sortie impulsionnelle (sys_wHscOrPulseControlCode) est sauvegardé, sur TRUE puis de nouveau sur FALSE. Pendant un retour à l’origine, la valeur dans la zone de la valeur courante peut différer de la valeur réelle. Lorsque le retour à l’origine est terminé, la valeur courante passe à 0.

Sélectionnez un des deux modes de fonctionnement :

  • Type 1 : L’entrée du point d’origine est activée indépendamment de la présence ou non d’une entrée proche de l’origine (near home), indépendamment du fait qu’une décélération est en cours ou qu’elle est terminée.

    • Sans entrée proche de l’origine :

    • Avec entrée proche de l’origine :

      1.  (1) Vitesse initiale et finale
      2.  (2) Vitesse de consigne
      3.  (3) Entrée proche de l’origine (near home) : TRUE
      4.  (4) Entrée du point d’origine : TRUE
      5.  (5) Entrée du point d’origine activée à tout moment.
  • Type 2 : L’entrée du point d’origine est activée uniquement lorsque la décélération (démarrée par l’entrée proche de l’origine) est terminée.

    1.  (1) Vitesse initiale et finale
    2.  (2) Vitesse de consigne
    3.  (3) Entrée proche de l’origine (near home) : TRUE
    4.  (4) Entrée du point d’origine : TRUE
    5.  (5) Entrée du point d’origine activée uniquement après la décélération

Utilisez le DUT prédéfini suivant :

Les paramètres suivants peuvent être indiqués dans le DUT : F168_PulseOutput_Home_DUT

  • Code de contrôle

  • Vitesse initiale et finale

  • Vitesse de consigne

  • Temps d’accélération/de décélération

  • Arrêt de l’impulsion (fixe)

Caractéristiques de la sortie impulsionnelle

  • La fréquence de la sortie impulsionnelle change selon les temps d’accélération et de décélération spécifiés.

  • La différence entre la vitesse de consigne et la vitesse initiale détermine la pente des rampes.

Informations générales sur la programmation

  • Définissez un des compteurs rapides affectés à une voie de sortie impulsionnelle sur "Inutilisé" dans les registres système.

  • En cas d’édition en mode RUN, la sortie impulsionnelle est interrompue mais elle reprend lorsque les modifications du programme ont été transférées.

  • Le drapeau de contrôle du compteur rapide (par ex. sys_bIsHscChannel0ControlActive) et le drapeau de contrôle de la sortie impulsionnelle (par ex. sys_bIsPulseChannel0Active) sont affectés au même drapeau interne (par ex. R903A). Par conséquent, lorsqu’une instruction du compteur rapide ou de la sortie impulsionnelle est exécutée, le drapeau de contrôle du compteur rapide (par ex. sys_bIsHscChannel0ControlActive) et le drapeau de contrôle de la sortie impulsionnelle (par ex. sys_bIsPulseChannel0Active) pour la voie utilisée sont sur TRUE. Aucune instruction du compteur rapide ou de la sortie impulsionnelle ne peut être exécutée tant que ce drapeau est sur TRUE.

  • Même lorsque l’entrée du point d’origine est activée, l’exécution de cette instruction déclenche la sortie impulsionnelle.

  • Si l’entrée proche de l’origine (near home) est activée pendant l’accélération, la décélération commence.

  • Si le programme principal et le programme d’interruption contiennent le code de la même voie, veillez à ce qu’ils ne soient pas exécutés simultanément.

  • Dans votre programme de positionnement, nous recommandons fortement de permettre un arrêt forcé.

  • L’état du drapeau de contrôle du compteur rapide ou du drapeau de la sortie impulsionnelle peut changer au cours d’une scrutation. Par exemple, si le nombre d’octets reçus est lu plusieurs fois, il peut y avoir plusieurs états au cours d’une scrutation.

Utiliser le FP0R en mode de compatibilité FP0

Pour faire fonctionner le FP0R en mode de compatibilité FP0, vous pouvez transférer un programme FP0 vers le FP0R. Veuillez noter les restrictions suivantes :

  • Le FP0R prend en charge des données 32-bits avec signe pour les valeurs courantes et les valeurs de consigne, tandis que le FP0 prend en charge des données 24-bits avec signe. En mode de compatibilité FP0, le comptage et la sortie impulsionnelle continuent même lorsque les données sont en dehors de l’intervalle FP0 autorisé.

  • Le rapport impulsion/pause est toujours de 25% quels que soient les paramètres des instructions. En utilisant le type de sortie impulsionnelle "Impulsionnnelle/sens de rotation", les impulsions sont sorties env. 300ms après que le signal du sens de rotation a été émis. Ce délai peut varier en fonction des caractéristiques du driver.

  • Le FP0R ne prend pas en charge le paramètre "Pas de comptage". Lorsque les instructions de sortie impulsionnelle FP0 sont définies sur "Pas de comptage", le FP0R exécute un comptage incrémental.

  • La fréquence de sortie impulsionnelle maximale est de 10000Hz.

  • Veillez à ce que l’instruction de sortie impulsionnelle n’utilise pas une sortie qui est également utilisée comme sortie normale.

  • Un programme FP0 ne peut être exécuté en mode de compatibilité FP0, que si les types d’automate (C10, C14, C16, C32 et T32) correspondent exactement. Le mode de compatibilité FP0 n’est pas disponible pour le FP0R de type F32.

Sorties et variables système pour les FP0, FP-e

Numéros de voies et de sorties impulsionnelles

N° de voie Sortie impulsionnelle Type de sortie impulsionnelle

0

Y0

Impulsion

Y2

Sens de rotation

1

Y1

Impulsion

Y3

Sens de rotation

Variables système pour les zones mémoires utilisées. Les valeurs entre parenthèses sont valides pour FP0 T32.

Description

Variable système

Sortie impulsionnelle : drapeau de contrôle pour la voie

0

sys_bIsPulseChannel0Active

1

sys_bIsPulseChannel1Active

Sortie impulsionnelle : valeur courante pour la voie

0

sys_diPulseChannel0ElapsedValue

1

sys_diPulseChannel1ElapsedValue

Sortie impulsionnelle : valeur de consigne pour la voie

0

sys_diPulseChannel0TargetValue

1

sys_diPulseChannel1TargetValue

Compteur rapide ou sortie impulsionnelle : code de contrôle

sys_wHscOrPulseControlCode

Entrées du point d’origine pour les FP0, FP-e

N° de voie Entrée du point d’origine

0

X0

1

X1

Exemple

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_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		dutHome: F168_PulseOutput_Home_DUT:=wControlCode := 16#102,
iInitialAndFinalSpeed := 0,
iTargetSpeed := 0,
iAccelerationAndDecelerationTime := 0;
		iInitialAndFinalSpeed: INT:=3000;
		iTargetSpeed: INT:=7000;
		iAccelerationTime: INT:=300;
		@'': @'';
	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 := 13 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,2,6,4,R);
B(B_F,E_MOVE!,Instance,17,1,23,5,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.iAccelerationAndDecelerationTime,23,3,25,5,);
B(B_F,E_MOVE!,Instance,17,5,23,9,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.iInitialAndFinalSpeed,23,7,25,9,);
B(B_F,E_MOVE!,Instance,17,9,23,13,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.iTargetSpeed,23,11,25,13,);
B(B_VARIN,,iAccelerationTime,15,3,17,5,);
B(B_VARIN,,iInitialAndFinalSpeed,15,7,17,9,);
B(B_VARIN,,iTargetSpeed,15,11,17,13,);
L(1,3,4,3);
L(6,3,17,3);
L(8,3,8,11);
L(8,11,17,11);
L(8,7,17,7);
L(1,0,1,13);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,1,6,3,R);
B(B_F,F168_PulseOutput_Home!,Instance,11,0,24,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutHome,9,2,11,4,);
B(B_VARIN,,0,9,3,11,5,);
L(1,2,4,2);
L(6,2,11,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF DF(X0_bMotorSwitch) then
    dutHome.iInitialAndFinalSpeed:=iInitialAndFinalSpeed
    dutHome.iTargetSpeed:=iTargetSpeed
    dutHome.iAccelerationAndDecelerationTime:=iAccelerationTime
END_IF;
IF DF(X0_bMotorSwitch) then
F168_PulseOutput_Home(s_dutDataTable := dutHome,
    n_iPulseOutputChannel :=0);
END_IF;

Modifié le : 2022-06-28Feedback on this pagePanasonic hotline