FB_Encoder_M262 : activer et surveiller le codeur
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 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. |