F169_PulseOutput_Jog

Opération JOG

Cette instruction est utilisée pour l’opération JOG. Le nombre d’impulsions indiqué est sorti lorsque l’entrée déclenchement du contrôle de positionnement devient TRUE. La sortie impulsionnelle décélère jusqu’à ce que la valeur de consigne soit atteinte puis elle s’arrête. 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 (F169_PulseOutput_Jog_DUT)

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

n_iPulseOutputChannel (INT)

Sortie impulsionnelle : 0 ou 1

Remarques

  • Utilisez le DUT prédéfini suivant : F169_PulseOutput_Jog_DUT

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

    • Code de contrôle

    • Vitesse

  • Caractéristiques de la sortie impulsionnelle

    La fréquence et le rapport impulsion/pause peuvent être modifiés à chaque scrutation. (La modification devient effective avec la sortie impulsionnelle suivante.)

Informations générales sur la programmation

  • Dès que vous éditez un programme utilisant cette instruction en mode en ligne (c.à-d. en mode RUN), la sortie impulsionnelle s’arrête.

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

  • 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.

  • 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.

  • La sortie impulsionnelle s’interrompt lorsque la limite supérieure de la valeur courante interne est dépassée et lorsque la rotation est en sens unique. Comme contre-mesure, réinitialisez la valeur courante sur 0 avant d’exécuter cette instruction. La sortie impulsionnelle ne s’arrête pas lorsque le FP0R est utilisé en mode de compatibilité FP0 puisque l’intervalle de données pour la valeur courante est une valeur de 32 bits avec signe.

  • Avec un comptage incrémental, la sortie impulsionnelle s’arrête lorsque la valeur courante dépasse 2147483647.

  • Avec un comptage décrémental, la sortie impulsionnelle s’arrête lorsque la valeur courante dépasse -2147483648.

  • 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

Exemple

GVL

Dans la liste des variables globales, vous définissez des variables qui sont accessibles par tous les POU dans le projet.

DUT

Le DUT F169_PulseOutput_Jog_DUT est prédéfini dans la bibliothèque FP Library.

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;
	END_VAR
	VAR 
		dut_Jog: F169_PulseOutput_Jog_DUT:=wControlCode := 16#110,
iSpeed := 0;
			(*Digit2: 1= Duty 10%
Digit1: 1=Incremental counting
Digit0: 0=No direction output*)
		@'': @'';
	END_VAR

Corps du POU

La fonction de cet exemple est décrite dans les zones de commentaires.

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 := 6 ;
        NETWORK_BODY
B(B_COMMENT,,define frequency~ 300Hz,2,1,22,2,);
B(B_F,E_MOVE!,Instance,9,2,15,6,,?DEN?D?AENO?C);
B(B_VARIN,,300,7,4,9,6,);
B(B_VAROUT,,dut_Jog.iSpeed,15,4,17,6,);
B(B_CONTACT,,X0_bMotorSwitch,5,3,7,5,);
L(1,0,1,6);
L(1,4,5,4);
L(7,4,9,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_F,F169_PulseOutput_Jog!,Instance,12,2,25,7,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dut_Jog,10,4,12,6,);
B(B_VARIN,,0,10,5,12,7,);
B(B_CONTACT,,X0_bMotorSwitch,5,3,7,5,);
B(B_COMMENT,,start pulse output to output,2,1,22,2,);
L(1,4,5,4);
L(7,4,12,4);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF (X0_bMotorSwitch) then
    dutJog.ispeed := 300;
END_IF;
IF (X0_bMotorSwitch) then
    F169_PulseOutput_Jog(s_dutDataTable := dutJog, 
  n_iPulseOutputChannel := 0);
END_IF;
Thèmes apparentés

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