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