Multiplicateur d'impulsion (Pulse Multiplier, PMUL)
Ces informations s’appliquent aux automates
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, CompactLogix
5380, ControlLogix
5580 et ControlLogix 5590.L'instruction PMUL fournit une interface entre un module d'entrée de position (par exemple un module résolveur ou de retour codeur) et le système numérique, en calculant la modification en entrée d'une séquence de scrutation à une autre. La sélection d'une taille de mot spécifique permet de configurer l'instruction PMUL pour une mise en exergue au niveau du seuil de réinitialisation dans un processus continu et linéaire.
Langues disponibles
Diagramme à relais
Cette instruction n’est pas disponible dans un diagramme à relais.
Bloc fonctionnel

Texte structuré
PMUL(PMUL_tag);
Opérandes
Bloc fonctionnel
Opérande | Type | Format | Description |
|---|---|---|---|
PMUL tag | PULSE_MULTIPLIER | Structure | Structure PMUL |
Texte structuré
Opérande | Type | Format | Description |
|---|---|---|---|
PMUL tag | PULSE_MULTIPLIER | Structure | Structure PMUL |
Reportez-vous à Syntaxe du texte structuré pour plus d'informations concernant la syntaxe des expressions dans le texte structuré.
Structure PULSE_MULTIPLIER
Paramètre d’entrée | Type de données | Description |
|---|---|---|
EnableIn | BOOL | Activez l'entrée. Si mis à zéro, l'instruction n'est pas exécutée et les sorties ne sont pas mises à jour. La valeur par défaut est définie. |
In | DINT | Le signal d'entrée analogique de l'instruction. Valide = tout DINT Par défaut = 0 |
Initialize | BOOL | L'entrée d'initialisation. Lorsqu'elle est définie, Out est maintenu à 0,0 et tous les registres internes sont réglés sur 0. Quand Initialize passe de défini à mis à zéro, In n-1 = InitialValue (pas valide pour le mode Absolu). Lorsqu'elle est effacée, l'instruction est exécutée normalement. |
InitialValue | DINT | Entrée de la valeur initiale. Quand Initialize passe de défini à mis à zéro, In n-1 = InitialValueValide = tout DINT Valeur par défaut = 0. |
Mode | BOOL | L'entrée mode. Définir pour activer le mode Relatif. Effacer pour activer le mode Absolu. La valeur par défaut est définie. |
WordSize | DINT | La taille du mot en bits. Préciser le nombre de bits à utiliser lors du calcule (In n -Inn-1 ) en mode Relatif.En mode Absolu, WordSize n’est pas utilisé. Lorsque la modification en In est supérieure à 1/2 * 2 (Wordsize-1) , Out change de signe.Si WordSize n'est pas valide, Out est maintenu et l’instruction définit le bit approprié dans Status. Valide = de 2 à 32 Par défaut = 14 |
Multiplier | DINT | Le multiplicateur Diviser cette valeur par 100 000 pour contrôler le rapport de In à Out. Si la valeur n'est pas valide, l'instruction limite la valeur et définit le bit approprié dans Status. Valide = de -1 000 000 à 1 000 000 Valeur par défaut = 100 000 |
Paramètre de sortie | Type de données | Description |
|---|---|---|
EnableOut | BOOL | Activer la sortie. |
Out | REAL | La sortie (Out) de l'instruction. Si le calcul Out déborde, Out est forcé sur + /– et le bit approprié est défini dans Status. Les indicateurs d'état mathématique sont définis pour cette sortie. |
Status | DINT | État du bloc fonctionnel. |
InstructFault (Status.0) | BOOL | L'instruction a détecté l'une des erreurs d'exécution suivantes. Il ne s'agit pas d'une erreur d'automate mineure ou majeure. Contrôlez les bits d'état restants pour déterminer la cause du problème. |
WordSizeInv (Status.1) | BOOL | Valeur WordSize incorrecte |
OutOverflow (Status.2) | BOOL | Le calcul de la sortie interne a débordé. |
LostPrecision (Status.3) | BOOL | Out < -2 24 ou Out > 224 . Quand l'instruction convertit Out d’un nombre entier en valeur réelle, les données sont perdues si le résultat est supérieur à |224 | car les types de données REAL sont limités à 224 . |
MultiplierInv (Status.4) | BOOL | Valeur du multiplicateur incorrecte |
Description
L’instruction PMUL fonctionne en mode Relatif ou Absolu.
En mode Relatif, la sortie de l'instruction est la différenciation de l'entrée d'une scrutation à une autre multipliée par le (Multiplicateur/100 000). En mode Relatif, l’instruction enregistre le reste éventuel après l’opération de division dans une scrutation et le rajoute lors de la prochaine scrutation. De cette manière, l’information sur la position n’est pas perdue au cours de l’opération.

En mode Absolu, l’instruction peut mettre à l’échelle une entrée, comme la position, sans perdre d’information d’une scrutation à une autre.

Calcul de la Sortie et du Reste
L'instruction PMUL utilise ces équations pour calculer Out en mode absolu ou en mode relatif :
Ans = ((DiffInput x Multiplier) + INT_Remainder)
INT_Out = Ans/100,000
INT_Remainder = Ans - (INT_Out * 100,000)
Out = INT_Out
Affecte les indicateurs d'état mathématique
Non
Conditions de défaut
Un défaut mineur se produit lorsque : | Type de défaut | Code de défaut |
|---|---|---|
Cette fonctionnalité est activée et un débordement est détecté. | 4 | 4 |
Reportez-vous à la section Attributs communs pour plus d’informations sur les défauts liés aux opérandes.
Exécution
Bloc fonctionnel
Condition | Action du bloc fonctionnel |
|---|---|
Préscrutation | Les bits EnableIn et EnableOut sont définis sur faux. |
Tag.EnableIn est faux | Les bits EnableIn et EnableOut sont définis sur faux. |
Tag.EnableIn est vrai | Les bits EnableIn et EnableOut sont définis sur vrai. L'instruction s'exécute. |
Première exécution de l'instruction | N/A |
Première scrutation de l'instruction | In n-1 = In. Outn-1 =0. Reste = 0. |
Post-scrutation | Les bits EnableIn et EnableOut sont définis sur faux. |
Texte structuré
Condition/état | Action entreprise |
|---|---|
Préscrutation | Reportez-vous à Pré-scrutation dans le tableau Bloc fonctionnel. |
Exécution normale | Reportez-vous à Tag.EnableIn est vrai dans le tableau Bloc fonctionnel. |
Post-scrutation | Reportez-vous à Post-scrutation dans le tableau Bloc fonctionnel. |
Exemples
Exemple 1
L’utilisation la plus courante de l’instruction PMUL est dans le mode de fonctionnement relatif. Dans ce mode, l'instruction PMUL sert à plusieurs fins. Tout d'abord, dans le mode relatif, l'instruction PMUL différencie les informations qu'elle reçoit à son entrée d'une scrutation à une autre. Lorsque les données sont reçues, l’instruction produit la différence de l’entrée d’une scrutation à une autre. Cela signifie que si In = 500 à la scrutation « n » et ensuite In = 600 à la scrutation « n + 1 », Out = 100 à la scrutation « n + 1 ».
En deuxième lieu, dans ce mode de fonctionnement, l'instruction PMUL compense également les valeurs de « réinitialisation » des données binaires provenant d'un module de retour. Par exemple, un module de retour du résolveur peut avoir 12 bits de résolution, représentée comme une valeur binaire, avec signe, allant de -2048 à 2047. En termes de données brutes provenant du module de retour, la rotation du dispositif de retour peut être représentée comme indiqué ci-dessous :

Dans cet exemple, comme la valeur des données de retour varie de 2047 à -2048, le changement effectif de position équivaut à un saut de 4095 comptages de position. Toutefois, dans la réalité ce changement de position est seulement de 1 partie de 4096 en termes de rotation du dispositif de retour du résolveur. En comprenant la taille de mot réelle des données entrées par le module de retour, l'instruction PMUL affiche les données de manière rotative, comme le montre le diagramme suivant :

En connaissant la taille de mot des données entrées dans ce bloc, l'instruction PMUL différencie une sortie de 1 comptage car l'entrée dans le bloc varie de 2047 à -2048, au lieu de la valeur 4095 calculée mathématiquement.
CONSEIL:
Lors de l’application de ce bloc, si la direction de rotation doit être correctement différenciée, il est important de vérifier que les données de retour n’augmentent pas plus de la moitié de la taille du mot d’une scrutation à l’autre.
Dans l'exemple ci-dessus, si le dispositif de retour se déplace dans le sens horaire, c'est-à-dire que pour la scrutation « A » il lit 0 et pour la scrutation « B » il lit -2000, le changement effectif de position équivaut à +2096 comptages dans le sens horaire. Cependant, puisque ces deux valeurs sont supérieures à la moitié de la taille des mots (ou supérieures à la moitié de la rotation du dispositif physique,) l'instruction PMUL calcule que le dispositif de retour a tourné dans la direction opposée et est revenue à une valeur de -2000 au lieu de +2096.
Le troisième attribut du bloc multiplicateur d’impulsions est qu’il conserve les composants fractionnaires d’une scrutation à une autre de n’importe quel reste existant issu du facteur de mise à l’échelle Multiplicateur/100 000. Une fois que chaque exécution du bloc est terminée, le reste de la scrutation précédente est ajouté au total de la valeur actuelle afin que tous les comptages ou « impulsions » soient pris en compte et qu’aucune donnée ne soit perdue dans le système. La sortie du bloc Out produit toujours un nombre entier dans un type de donnée à virgule flottante.
Bloc fonctionnel

En supposant Initial_Position = 0 et Multiplicateur = 2500 => (25 000/100 000)
Scanner | Position_Feedback | PMUL_02.Out | Total_Position |
|---|---|---|---|
n | 0 | 0 | 0 |
n + 1 | 1 | 0 | 0 |
n + 2 | 2 | 0 | 0 |
n + 3 | 3 | 0 | 0 |
n + 4 | 4 | 1 | 1 |
n + 5 | 5 | 0 | 1 |
Texte structuré
MUL_02.In := Position_feedback;
PMUL_02.Initalize := Initialize_Position ;
PMUL_02.WordSize := 12 ;
PMUL_02.Multiplier := 25000 ;
PMUL(PMUL_02);
UPDN_02.Initialize := Initialize_Position ;
UPDN_02.InPlus := PMUL_02.Out ;
UPDN(UPDN_02);
Total_Position := UPDN_02.Out;
Exemple 2
Dans cette application d’arbre électrique, le retour du moteur A agit comme une référence maître que le moteur B doit suivre. Le retour du moteur A est aliasé à « Position_feedback ». Le retour du moteur B est aliasé à « Follower_Position ». Les multiplicateurs des deux instructions présentant un rapport de 1/4, le moteur B doit accomplir un tour toutes les quatre révolutions du moteur A afin de maintenir une valeur cumulée de zéro dans le totalisateur UPDN. N'importe quelle valeur différente de zéro sur la sortie de l'instruction UPDN est considérée comme Position_error et peut être régulée et retournée vers le moteur B afin de maintenir un verrouillage de phase entre les deux moteurs.
Bloc fonctionnel

Texte structuré
PMUL_02.In := Position_feedback;
PMUL_02.Initalize := Initialize_Position ;
PMUL_02.WordSize := 12 ;
PMUL_02.Multiplier := 25000 ;
PMUL(PMUL_02);
PMUL_03.In := Follower_Position;
PMUL_03.Initalize := Initialize_Position;
PMUL_03.WordSize := 12;
PMUL_03.Multiplier := 100000;
PMUL(PMUL_03);
UPDN_02.Initialize := Initialize_Position ;
UPDN_02.InPlus := PMUL_02.Out ;
UPDN_02.InMinus := PMUL_03.Out;
UPDN(UPDN_02);
Position_error := UPDN_02.Out;
Fournir une réponse
et le bit approprié est défini dans Status. Les indicateurs d'état mathématique sont définis pour cette sortie.