Prévision
La fonction de prévision peut être utilisée pour interroger des informations sur le mouvement futur d'un axe. Une application importante de la prévision consiste à déterminer le temps nécessaire pour atteindre une position (similaire à la fonctionnalité de déclenchement). Une autre application consiste à déterminer la position et la vitesse qu'aura un axe à un instant donné. De cette manière, les temps morts peuvent être compensés lors de l'activation des actionneurs, par exemple lors de l'activation d'une buse d'encollage. Il peut également être utilisé pour contrôler avec précision les actionneurs avec temps mort, par exemple pour contrôler la sortie de collage en fonction de la vitesse de l'axe 100 ms à l'avenir.
Pour implémenter ces applications, vous pouvez utiliser le SMC_GetTravelTime et SMC_ReadSetValues blocs fonctionnels après avoir configuré la durée de prévision avec SMC_SetForecast.
Pour un exemple d'utilisation, voir : Prévision des mouvements sur un seul axe
Blocs fonctionnels de mouvement avec fonctionnalité de prévision
Bloc fonctionnel | Prévision |
---|---|
| -- |
| ✓ |
| ✓ |
| ✓ |
| ✓ |
| ✓ |
| ✓ |
| ✓ |
| -- |
| ✓ |
| ✓ |
| ✓ |
| ✓ |
| ✓ |
| -- |
| -- |
| ✓ |
| ✓ |
| ✓ |
Activation de la fonction de prévision
La fonction de prévision est désactivée par défaut. Cela signifie que SMC_ReadSetValues
renvoie des valeurs valides uniquement pour un TimeOffset
entre 0 s (début du cycle de tâche en cours) et l'intervalle de tâche (fin du cycle de tâche en cours), et SMC_GetTravelTime
renvoie une heure valide uniquement pour les positions atteintes dans ce cycle.
Le SMC_SetForecast Le bloc fonctionnel est utilisé pour configurer la durée de prévision requise et la SMC_GetForecast Le bloc fonctionnel est utilisé pour lire.
Remarques:
La durée prévisionnelle peut être modifiée à tout moment.
Évitez une durée de prévision inutilement longue car le calcul de la prévision consomme du temps de calcul. Sélectionnez la plus petite valeur suffisante pour votre application.
Si vous utilisez des blocs fonction maître/esclave (tels que
MC_CamIn
), alors la prévision doit être activée à la fois pour l'axe maître et pour l'axe esclave.
Ordre d'appel
Pour que la fonction de prévision donne les meilleurs résultats possibles, il est important de s'assurer que les blocs fonction maître/esclave sont appelés dans le bon ordre. Ceci s'applique à MC_CamIn
, MC_GearIn
, MC_GearInPos
, MC_Phasing
, SMC_BacklashCompensation
, et SMC_TrackAxis
. Le bloc fonction mouvement de l’axe maître doit être appelé avant le bloc fonction maître/esclave.
Même sans prévision, la trajectoire est meilleure lorsque l'ordre d'appel est correct. Lorsque l'ordre est erroné, le mouvement de l'esclave est retardé d'un cycle.
Pour MC_SetOverride
, ce bloc fonction doit également être appelé avant les blocs fonction de mouvement de l'axe. En modifiant la correction, le mouvement de l'axe est modifié dans le même cycle de tâche. Les valeurs précédemment déterminées sur la base des prévisions perdent ainsi leur validité. Ils sont à nouveau déterminés la prochaine fois SMC_GetTravelTime
ou SMC_ReadSetValues
est appelé.
Modes tampon
La fonction prévisionnelle ne se limite pas à un seul mouvement. Il s'étend également à tous les mouvements ultérieurs qui sont commandés avec un mode blending ou buffered buffer.
Lorsqu'un mouvement interrompu est exécuté sur un axe, cela modifie le mouvement de l'axe dans ce cycle de tâche. Les valeurs précédemment déterminées sur la base des prévisions perdent ainsi leur validité. Ils sont à nouveau déterminés la prochaine fois SMC_GetTravelTime
ou SMC_ReadSetValues
est appelé.
Prévisions/restrictions efficaces
Idéalement, la durée de prévision effective disponible est égale à la durée de prévision configurée. Cependant, certains facteurs peuvent conduire à ce que la prévision effective soit plus courte que la prévision configurée.
Lorsqu'un mouvement maître/esclave est exécuté, la prévision effective de l'esclave est le minimum de la prévision effective du maître et de la prévision configurée de l'esclave.
Pour les axes logiques et les axes codeurs, la prévision effective est toujours 0.
Si le bloc fonctionnel de mouvement actif ne prend pas en charge la fonction de prévision, la prévision effective est également 0.
Dans tous les autres cas, la prévision effective est la même que la prévision configurée.