FB_Encoder_M262 : activer et surveiller le codeur

Description du bloc fonction

Ce bloc fonction permet d'activer et de surveiller le codeur, en mode incrémental ou SSI.

Vous ne pouvez utiliser qu'une seule instance de ce bloc fonction qui est appelé une fois.

Utilisez des appels cycliques pour actualiser les valeurs.

Représentation graphique

G-SE-0075058.2.gif-high.gif

 

 

Représentation en langage IL et ST

Pour voir la représentation générale en langage IL ou ST, consultez le chapitre Représentation des fonctions et blocs fonction.

Description des variables d'E/S

Le tableau suivant décrit les variables d'entrée :

Entrée

Type

Par défaut

Commentaires

ENC_REF_M262

ENC_REF_M262

Référence de l'instance du codeur.

xEnable

BOOL

FALSE

TRUE active le bloc fonction.

Sur un front montant, les valeurs des paramètres de mise à l'échelle suivants sont prises en compte :

oudiScaling_NbOfIncs

oudiScaling_NbOfUnits

oudiScaling_IncPerTurn

Si vous modifiez ces valeurs, déclenchez un front montant sur xEnable pour les prendre en compte.

udiScaling_NbOfIncs

UDINT

0

0 indique que la mise à l'échelle est désactivée. La valeur en unités utilisateur diCurrentValue_Unit est égale à la valeur en impulsions diCurrentValue.

> 0  indique que la mise à l'échelle est activée. La valeur en unités utilisateur est calculée à partir de la valeur en impulsions diCurrentValue, comme ceci : diCurrentValue_Unit = diCurrentValue × (udiScalingNbOfUnits / udiScalingNbOfIncs).

udiScaling_NbOfUnits

UDINT

0

0 indique que la mise à l'échelle est désactivée. La valeur en unités utilisateur diCurrentValue_Unit est égale à la valeur en impulsions diCurrentValue. En l'absence de mise à l'échelle, udiScalingNbOfUnits=udiScalingNbOfIncs

 > 0  indique que la mise à l'échelle est activée. La valeur en unités utilisateur est calculée à partir de la valeur en impulsions diCurrentValue, comme ceci : diCurrentValue_Unit = diCurrentValue × (udiScalingNbOfUnits / udiScalingNbOfIncs).

udiScaling_IncPerTurn

UDINT

0

Quand cette valeur est égale à 0, le type d'axe est associé au mode compteur linéaire. La plage de comptage est la suivante : - 2 147 483 648 à 2 147 483 647.

Si le nombre d'incréments est > 0, le type d'axe est associé au mode compteur rotatif. La valeur udiSaling_IncPerTurn définit la valeur modulo, à laquelle le compteur bascule (la valeur modulo n'est jamais atteinte). La plage de comptage est la suivante : 0 à diScaling_IncPerTurn  -1

Le tableau suivant décrit les variables de sortie :

Sortie

Type

Par défaut

Commentaire

xValid

BOOL

FALSE

TRUE indique que les valeurs de sortie du bloc fonction sont valides. Si le bloc fonction est désactivé, la sortie a la valeur FALSE .

xError

BOOL

FALSE

TRUE indique qu'une erreur est détectée.

Vous pouvez déclencher un front montant sur xEnable pour réinitialiser l'erreur.

etErrorId

ET_ENC_ERROR_M262

ENC_ERROR_NO

Indique le code de l'erreur détectée lorsque xError a la valeur TRUE.

diNbTurns

DINT

0

Indique la valeur modulo du codeur.

En mode incrémental, elle est incrémentée lorsque le compteur dépasse sa limite supérieure. Elle est décrémentée lorsque le compteur dépasse sa limite inférieure.

En mode SSI diNbTurns = valeur brute (valeur SSI - valeur prédéfinie) / udiScaling_IncPerTurn

La valeur raw SSI  est directement issue de SSI, sans aucune transformation.

diCurrentValue

DINT

0

En mode linéraire, indique la valeur de la position de l'équipement en impulsions. La plage de valeurs est : - 2 147 483 648 à 2 147 483 647.

En mode rotatif, indique la valeur de la position en impulsions pour chaque tour de la mécanique. La plage de valeurs pour diCurrentValue est 0 à diScaling_IncPerTurn - 1.

lrCurrentValue_Unit

LREAL

0

Indique la valeur du codeur en unités de tours de la mécanique. diCurrentValue_Unit = diCurrentValue / udiScaling_IncPerUnit lorsque udiScaling_IncPerUnit ≥ 1.