Persistance d'une position d'axe
Un axe doté d'un codeur absolu peut enregistrer une position afin de conserver sa position précédente après le redémarrage du contrôleur. Le repérage n'est pas obligatoire. SMC3_PersistPosition
et SMC3_PersistPositionLogical
les blocs fonctionnels fournissent les fonctionnalités nécessaires à l'opération de sauvegarde. Les données nécessaires sont enregistrées dans SMC3_PersistPosition_Data
et SMC3_PersistPositionLogical_Data
.
Le bPositionStored
la sortie indique si le contenu de PersistentData
ont changé. Cela se produit à des moments différents selon le type de persistance.
La plage de valeurs conservée par l'encodeur doit être configurée sur SMC_PersistPosition.maxPersistedValue
entrée. Pour les codeurs multitours, la valeur est définie 16#FFFFFFFFFF
. Pour un encodeur à tour unique 12 bits, par exemple, la valeur est définie sur 2^12 = 4096
Pour plus d'informations, consultez : Persistance des données
Astuce
L'instance est rendue persistante au moyen d'une déclaration as VAR_PERSISTENT
ou le gestionnaire de persistance d'Application Composer.
Persistance de la position d'axe d'un codeur absolu multitours avec un axe physique
Condition requise : L'axe est équipé d'un codeur absolu multitour.
Utilisez le SMC3_PersistPosition
FB pour rendre persistante la position de l'axe physique. Le programme respectif s'exécute dans la tâche de mouvement.
Créez une instance de
SMC3_PersistPosition
bloc fonctionnel pour l'axe.pp: SM3_BASIC.SMC3_PersistPosition;
Instancier une structure de données persistante du
SMC3_PersistPosition_Data
taper.pp_Data: SM3_BASIC.SMC3_PersistPosition_Data1;
Prolongez le programme de la tâche de mouvement afin qu'un appel de la
SMC3_PersistPosition
instance y est implémentée.Appel implémenté dans CFC :
Le bloc fonction est appelé en cycles avec la tâche de mouvement. le
SMC3_PersistPosition
instance effectue la restauration de la position enregistrée lors de l'opération de démarrage. En fonctionnement normal, le FB enregistre la position réelle dans la structure de données correspondante.
Maintien de la position de l'axe d'un codeur absolu monotour avec axe physique
Condition préalable : L'axe physique dispose d'un codeur absolu monotour.
Utilisez le SMC3_Position persistante
bloc fonctionnel pour rendre persistante la position de l'axe. Le programme correspondant s'exécute dans la tâche de mouvement. La position n'est affichée correctement que si l'axe n'a parcouru aucune distance ou seulement une courte distance (maximum de la moitié de la distance en un tour) entre la mise hors tension et la mise en marche du contrôleur. Par exemple, vous pouvez utiliser un frein mécanique pour ce faire. Si l'axe effectue un mouvement important lorsque le contrôleur est éteint, il reçoit une position incorrecte. Il n'est pas possible de vérifier via le FB.
Créez une instance de
SMC3_PersistPosition
bloc fonctionnel pour l'axe.ppst_X: SM3_BASIC.SMC3_PersistPositionSinglturn;
Instanciez une structure de données persistante du
SMC3_PersistPosition_Data
type.ppst_Data_X: SMC3_PersistPositionSingleturn_Data;
Étendez le programme de la tâche de mouvement de sorte qu'un appel du
SMC3_PersistPosition
l'instance est implémentée et la structure de données persistante duSMC_PersistPosition_Data
le type lui est transmis.
Conserver la position d'axe d'un axe logique
Condition : L'axe est logique.
Utilisez le SMC3_PersistPositionLogique
bloc fonctionnel pour rendre persistante la position de l'axe logique. Cela ne fonctionne que si la position de l'axe physique supérieur est rendue persistante. La position d'un axe virtuel ne peut pas être rendue persistante au moyen de ces FB.
Créez une instance de
SMC3_PersistPositionLogical
bloc fonctionnel pour l'axe.ppl: SM3_BASIC.SMC3_PersistPositionLogical;
Instancier une structure de données persistante du
SMC3_PersistPositionLogical_Data
taper.ppl_Data: SMC3_PersistPositionLogical_Data;
Prolongez le programme de la tâche de mouvement afin qu'un appel de la
SMC3_PersistPositionLogical
instance est implémentée et les données persistantes de typeSMC3_PersistPositionLogical_Data
lui est transmis.