Ce bloc fonction permet de contrôler un axe via un algorithme personnalisé qui calcule les valeurs cycliques de la position, la vitesse et l'accélération de l'axe dans le code de l'automate.
Le bloc fonction que vous avez créé pour programmer un profil de mouvement doit étendre FB_CustomJobBase de la bibliothèque MotionInterface. Alors le bloc fonction est fourni sous l'entrée CustomJob.
Nom de bibliothèque et espace de noms
Nom de la bibliothèque : PLCopen MC part 1
Espace de noms : PLCO
Entrée |
Type de données |
Description |
---|---|---|
Master |
Axis_Ref |
Référence à l'axe pour lequel le bloc fonction doit être exécuté. Peut rester non attribué si la tâche personnalisée (fournie à l'entrée CustomJob) n'utilise pas un axe maître. Si un axe est attribué, le rappel du bloc fonction utilisateur pour définir le profil de mouvement permet d'obtenir les valeurs de mouvement de l'axe maître. Sinon, les valeurs indiquées pour le mouvement de l'axe maître sont égales à zéro. |
Axis |
Axis_Ref |
Référence à l'axe pour lequel le bloc fonction doit être exécuté. |
Execute |
BOOL |
Plage de valeurs : FALSE, TRUE. Valeur par défaut : FALSE. Un front montant de l'entrée Execute démarre le bloc fonction. Le bloc fonction poursuit son exécution et la sortie Busy prend la valeur TRUE. Ce bloc fonction peut être redémarré en cours d'exécution. Les valeurs cibles sont remplacées par de nouvelles valeurs lorsque se produit le front montant. |
BufferMode |
Les valeurs cibles (position, vitesse, accélération) de l'axe sont remplacées par les nouvelles valeurs dans le cycle de tâche de mouvement lorsque le bloc fonction est activé sur l'axe. Valeur par défaut : Aborting Mode de tampon. Valeurs possibles : oValeur Aborting oValeur Buffered Voir la description des valeurs dans MC_Buffer_Mode. |
|
CustomJob |
MOIN.FB_CustomJobBase |
Instance de bloc fonction créé par l'utilisateur qui doit être dérivé de FB_CustomJobBase. Vous pouvez configurer l'instance de bloc fonction avec des paramètres supplémentaires (par exemple : position cible, vitesse, accélération, jigue, etc.) selon les exigences de l'algorithme utilisé par la tâche personnalisée. Remplacer les méthodes suivantes : oCalculateMovement oPrepare oResetJob Ne remplacez-pas les autres méthodes de ce bloc fonction. |
Sortie |
Type de données |
Description |
---|---|---|
InSteadyState |
BOOL |
Plage de valeurs : FALSE, TRUE. Valeur par défaut : FALSE, comme indiqué par la tâche personnalisée oFALSE : l'état stable n'est pas encore atteint ou une erreur a été détectée. oTRUE : état stable atteint. De cette façon, la tâche personnalisée signale qu'une tâche en mémoire tampon peut devenir active. |
Busy |
BOOL |
Plage de valeurs : FALSE, TRUE. Valeur par défaut : FALSE, comme indiqué par la tâche personnalisée oFALSE : le bloc fonction n'est pas exécuté. oTRUE : le bloc fonction est en cours d'exécution. |
Active |
BOOL |
Plage de valeurs : FALSE, TRUE. Valeur par défaut : FALSE. oFALSE : le bloc fonction ne contrôle pas le mouvement de l'axe. oTRUE : le bloc fonction contrôle le mouvement de l'axe. |
CommandAborted |
BOOL |
Plage de valeurs : FALSE, TRUE. Valeur par défaut : FALSE. oFALSE : l'exécution n'a pas été interrompue. oTRUE : l'exécution a été interrompue par un autre bloc fonction. |
Error |
BOOL |
Plage de valeurs : FALSE, TRUE. Valeur par défaut : FALSE. oFALSE : bloc fonction en cours d'exécution, aucune erreur détectée durant l'exécution. oTRUE : une erreur a été détectée pendant l'exécution du bloc fonction. |
ErrorID |
ET_Result |
Cette énumération fournit des informations de diagnostic. |
Si un axe est fourni pour l'entrée maître, les nouvelles valeurs cibles ou les valeurs de référence de l'axe maître du cycle temps réel sont calculées avant le déclenchement de MC_CustomJob. Cela signifie que l'implémentation de la tâche personnalisée obtient des valeurs mises à jour (recalculées du cycle temps réel) à partir de l'axe maître lorsqu'il est appelé pour calculer les valeurs de l'axe esclave.
Valeurs possibles de ET_Result
ErrorId |
Cause |
Correctif |
---|---|---|
AxisInErrorStop |
Le bloc fonction ne peut pas être exécuté car une erreur d'axe a été détectée et l'axe est à l'état ErrorStop. |
Vérifiez que l'axe n'est pas à l'état ErrorStop lors de la tentative de lancement d'un nouveau bloc fonction. |
AxisIsDisabled |
Le bloc fonction ne peut pas être exécuté car l'axe est à l'état Disabled. |
Vérifiez que l'axe n'est pas à l'état Disabled lors de la tentative de lancement d'un nouveau bloc fonction. |
AxisIsStopping |
Le bloc fonction ne peut pas être exécuté car un bloc fonction MC_Stop est actif et l'axe est à l'état Stopping. |
Vérifiez que l'axe n'est pas à l'état Stopping lors de la tentative de lancement d'un nouveau bloc fonction. |
AxisNotHomed |
L'axe n'est pas en position d'origine (indicateur xHomed de l'axe : FALSE). |
Mettez l'axe en position d'origine pour obtenir un point zéro valide pour démarrer un mouvement par rapport au point zéro. |
BufferModeInvalid |
Une valeur différente de MC_Buffer_Mode.Aborting ou MC_Buffer_ModeBuffered a été fournie à l'entrée BufferMode. |
Indiquez la valeur BufferModeInput pour MC_Buffer_Mode.Aborting ou MC_Buffer_Mode.Buffered (si aucune valeur n'a été fournie, MC_Buffer_Mode.Aborting est utilisé). |
BufferSaturated |
Le nombre maximal de blocs fonction pouvant être placé en mémoire tampon pour l'axe est atteint. |
Mettez en mémoire cache un seul bloc pour un axe en tout point dans le temps. |
InternalErrorInCyclicCalculation |
FB_CustomJobBAse a renvoyé une valeur LREAL non valide. |
Corrigez votre implémentation de FB_CustomJobBAse afin qu'il ne renvoie pas de valeur LREAL non valide (l'infini et NaN (Not a Number) ne sont pas des valeurs LREAL valides). |
NoBusCommunication |
Le bus de terrain n'est pas à l'état Operational (Sercos : phase 4). |
Vérifiez que le bus de terrain est à l'état Operational (Sercos : phase 4) au front montant de l'entrée Execute et durant l'exécution. |
NotSupportedWithFeedbackAxis |
Commande non autorisée durant l'exécution de travail personnalisé. |
Implémentez les fonctions pour MC_CustomJob dans l'application du contrôleur de mouvement (Motion Controller). |
OutOfMemory |
Mémoire insuffisante pour la commande de mouvement. |
Réduisez la mémoire requise par votre application. |
UnexpectedReturnValue |
Valeur de retour du système indéterminable. |
Contactez le représentant Schneider Electric. |