Skip to main content

Détection de la position initiale d'un axe modulo

La position réelle d'un entraînement ou d'un codeur est transmise en tant que DWORD au contrôleur.

Pour un axe modulo, la période P est définie en pas par la valeur modulo et la mise à l'échelle. La période P spécifie le nombre exact d'incréments dans une rotation. Cela signifie que les valeurs de position X, X+1*P, X+2*P, etc. décrivent la même position physique. La position X+n*P dépasse la limite de DWORD lorsque n est suffisamment grand. Cela se produit à la position 0x1 00 00 00 00. Ensuite, la première place est coupée et la valeur commence à 0. Si P n'est pas un facteur de 0x1 00 00 00 00, alors la position X ne décrit plus la même position physique avant et après l'interruption.

Si les rapports de démultiplication sont réglés de manière à ce que la période ne soit pas un facteur de 0x1 0000 0000, la position d'un axe de rotation peut être déplacée après activation.

Exemple 1. Exemple

L'axe commence à la position 0x0. Il est à 0°. Une période correspond à 360°. La mise à l'échelle est choisie de sorte qu'elle corresponde à 3600000 = 0x36 EE80 incréments. Après 1193 tours, l'axe s'arrête à 0xFFFD 7280=1193*3600000. Après une autre rotation complète, l'axe atteint la position 0x10034 6100. A l'interruption, le premier 1 est coupé et la position 0x34 6100 est formé. Si vous remettez l'axe en position 0x0, puis l'axe s'arrête à la position 16,7296°. Par conséquent, la position 0x0 correspond à la position 0°, 16,7296°, etc., selon l'interruption réelle.



Astuce

Si vous avez sélectionné la mise à l'échelle de manière à ce que l'effet ci-dessus puisse se produire et si la prise d'origine n'est pas possible ou requise au démarrage du programme, vous pouvez récupérer la position avant la dernière désactivation à l'aide de la SMC3_PersistPosition bloc fonctionnel. Vous utilisez ici un codeur de valeur absolue.