F168_PulseOutput_Trapezoidal

Contrôle trapézoïdal

Cette instruction exécute automatiquement un contrôle trapézoïdal 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_Trapezoidal_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

Utilisez le DUT prédéfini suivant : F168_PulseOutput_Trapezoidal_DUT

  • Code de contrôle

  • Vitesse initiale et finale

  • Vitesse de consigne

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

  • Valeur de consigne

  • Arrêt de l’impulsion (fixe)

  1.  (1) Vitesse initiale et finale
  2.  (2) Vitesse de consigne
  3.  (3) Temps d’accélération/de décélération
  4.  (4) Valeur de consigne
  5.  (5) Drapeau de contrôle de la sortie impulsionnelle
  6.  (6) Condition d’exécution

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.

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

  • 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

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si le numéro de voie ou les valeurs du tableau de données sont en dehors de l’intervalle autorisé.
  • Si la vitesse initiale est < 40

  • Si la vitesse initiale est > la vitesse maximale

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si le numéro de voie ou les valeurs du tableau de données sont en dehors de l’intervalle autorisé.
  • Si la vitesse initiale est < 40

  • Si la vitesse initiale est > la vitesse maximale

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 F168_PulseOutput_Trapezoidal_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
		dutTrapez: F168_PulseOutput_Trapezoidal_DUT:=wControlCode := 16#102,
iInitialAndFinalSpeed := 1000,
iTargetSpeed := 7000,
iAccelerationAndDecelerationTime := 300,
diTargetValue := 10000;
	END_VAR
	VAR_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		@'': @'';
		@'': @'';
	END_VAR

Corps du POU

La fonction est exécutée lorsque X0_bMotorSwitch passe à TRUE.

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_CONTACT,,X0_bMotorSwitch,4,2,6,4,R);
B(B_VARIN,,dutTrapez,11,3,13,5,);
B(B_VARIN,,0,11,4,13,6,);
B(B_F,F168_PulseOutput_Trapezoidal!,Instance,13,1,28,6,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
L(6,3,13,3);
L(1,3,4,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF DF(X0_bMotorSwitch) then
    F168_PulseOutput_Trapezoidal(s_dutDataTable := dutTrapez,
    n_iPulseOutputChannel :=0);
END_IF;

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