FB_Drive_PosControl - Informations générales

Présentation

Type :

Bloc fonction

Disponible à partir de :

V2.5.0.0

Hérite de :

-

Implémente :

-

Tâche

Ce bloc fonction permet de contrôler la position d'un entraînement à vitesse contrôlée avec retour de position via un codeur. En général, le Motion Controller indique la position cible d'un mouvement contrôlé par la position. Les boucles de régulation du servo variateur contrôlent ensuite la position (ainsi que le courant et la vitesse) du mouvement. Ce bloc de fonction vous permet de commander un entraînement à vitesse contrôlée, tel qu'un variateur de vitesse, en utilisant le contrôle de position via le Logic/Motion Controller, et non via l'entraînement lui-même (qui peut ne pas fournir la fonctionnalité de contrôle de position requise).

Description

Présentation

Le bloc fonction utilise un axe virtuel de type MOIN.FB_ControlledAxis comme entrée. Un mouvement contrôlé par la position de cet axe virtuel (par exemple, à l'aide du bloc fonction MC_MoveAbsolute ou MC_MoveRelative) fournit la position réelle (telle que déterminée par le codeur) du mouvement à l'aide de l'entrée i_diActualPosition.

Sur la base de cette entrée de position et des paramètres d'échelle du codeur (entrées i_diIncrementalResolution et i_lrPositionResolution), le bloc fonction FB_Drive_PosControl calcule la vitesse de sortie du variateur en tr/min (sortie q_diSetVelocity) ou en unités définies par l'utilisateur toutes les secondes (sortie q_lrSetVelocity) comme valeurs de référence pour le déplacement vers la position cible.

Le générateur de profil génère les valeurs de position conformément à la norme PLCopen.

Type d'axe

L'axe à l'entrée i_ifAxis doit être de type MOIN.FB_ControlledAxis. Il doit s'agir d'un axe virtuel, c'est-à-dire qu'il ne doit pas être connecté à un variateur. Si l'axe à l'entrée i_ifAxis n'est pas de type MOIN.FB_ControlledAxis, une erreur est détectée (ET_Result est réglé sur OnlyControlledAxisSupported). Si l'axe à l'entrée i_ifAxis est de type MOIN.FB_ControlledAxis, mais qu'il ne s'agit pas d'un axe virtuel (c'est-à-dire qu'il est connecté à un variateur), une erreur est détectée (ET_Result est réglé sur ControlledAxisIsConnectedToDevice).

Boucle de régulation

Représentation de la boucle de régulation :

  • Les éléments sur fond gris sont des paramètres qui déterminent les performances de régulation.

  • Les éléments précédés de « i_ » sont des entrées du bloc fonction FB_Drive_PosControl.

  • Les éléments précédés de « q_ » sont des sorties du bloc fonction FB_Drive_PosControl.

  • lrPosition est la position cible du mouvement.

  • lrVelocity est la vitesse d'entrée de l'application.

  • i_diActualPosition est la position réelle, telle que déterminée par le codeur.

  • i_lrMaxPositionDiff est l'écart de position. L'écart de position représente la différence entre la position de référence (lrPosition de l'axe virtuel) et la position réelle du variateur au niveau de l'entrée i_diActualPosition, telle que déterminée par le codeur.

  • i_lrKp est le gain proportionnel. Le gain proportionnel de la boucle de régulation réduit l'écart de position. Il s'agit d'une correction réactive destinée à diminuer un écart de position existant.

  • i_VelocityFeedForwardControl est le gain d'anticipation de vitesse. Le gain d'anticipation de vitesse est une correction proactive visant à réduire le dépassement prévisible ou à minimiser davantage l'écart de position pendant la séquence à vitesse constante du mouvement.

En général, la boucle de régulation est réglée dans l'ordre suivant :

  • Écart de position

  • Gain proportionnel

  • Anticipation de vitesse

Comme les facteurs qui déterminent les performances de régulation sont interdépendants et que les performances de régulation requises dépendent de l'application, vous devrez peut-être augmenter ou diminuer les valeurs individuelles et en examiner les effets au moyen de tests. Les valeurs appropriées pour les entrées déterminant les performances de régulation dépendent de votre application, et notamment du variateur, du moteur, de la charge, de l'inertie et du frottement. Déterminez de manière expérimentale les valeurs qui permettent d'atteindre les performances de régulation appropriées pour votre application, par exemple, en effectuant des tests avec un oscilloscope et des traces.

Le réglage des paramètres de boucle de régulation consiste en une suite d'approximations permettant de déterminer les valeurs requises. Elle implique des tests complets de l'application, y compris des composants physiques, pendant le développement et/ou la mise en service.

 AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT
  • Ne modifiez jamais la valeur d'une entrée ou d'une propriété du bloc fonction, sauf si vous comprenez parfaitement l'entrée ou la propriété et tous les effets de cette modification.
  • Avant d'effectuer des tests pour déterminer les performances de régulation appropriées pour votre application, vérifiez l'absence de toute condition pouvant entraîner un risque, de quelque nature qu'il soit, dans votre machine/processus.
  • Vérifiez qu'aucune personne ni aucun obstacle ne se trouve dans la zone de fonctionnement lors des tests.
  • Assurez-vous qu’un bouton d'arrêt d'urgence opérationnel se trouve à la portée de toutes les personnes participant aux tests.
  • Après toute modification de quelque type que ce soit, redémarrez la machine/le processus et vérifiez le bon fonctionnement et l’efficacité de toutes les fonctions en réalisant des tests complets pour tous les états de fonctionnement, pour l’état de sécurité défini et pour toutes les situations potentiellement sources d'erreur.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels.

Réglage de la boucle de régulation par surveillance de l'écart de position

L'écart de position représente la différence entre la position de référence (lrPosition de l'axe virtuel) et la position du variateur au niveau de l'entrée i_diActualPosition, telle que déterminée par le codeur. Il s'agit d'une mesure de la capacité du variateur à suivre les positions de référence pendant le déplacement vers la position cible. Si le variateur ne peut plus suivre les positions de référence parce que l'écart de position est supérieur à la valeur définie par l'entrée i_lrMaxPositionDiff, une erreur d'écart de position (aussi appelée « erreur de poursuite » par PLCopen par exemple, ou « erreur de suivi ») est détectée. Moins l'écart de position est important, plus le système de régulation est réactif et rigide. Cependant, dans un système en boucle fermée avec retour de position, un écart de position minimal est nécessaire d'un point de vue physique.

La différence maximale entre la position de référence et la position réelle est définie par l'entrée i_lrMaxPositionDiff. Si l'écart de position dépasse cette valeur, une erreur est détectée (PositionDiffOutOfRange) et l'axe virtuel passe à l'état de fonctionnement ErrorStop. Une valeur négative au niveau de cette entrée désactive la surveillance de l'écart de position.

 AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT
  • Désactivez la surveillance de l'écart de position uniquement à des fins de test.
  • Vérifiez que la surveillance de l'écart de position est activée et que sa valeur est correcte pour votre application avant de mettre en service et d'utiliser votre machine/processus.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels.

La valeur appropriée pour l'écart de position maximal i_lrMaxPositionDiff dépend de votre application, et notamment du variateur, du moteur, de la charge et du frottement. Déterminez de manière expérimentale la valeur qui permet d'atteindre les performances de régulation appropriées pour votre application, par exemple, en effectuant des tests avec un oscilloscope et des traces. La propriété lrActualPositionDifference du bloc fonction vous permet de lire l'écart de position.

Déterminez l'écart de position maximal i_lrMaxPositionDiff avant de régler le gain proportionnel Kp et l'anticipation de vitesse.

Réglage de la boucle de régulation par gain proportionnel

Le gain proportionnel Kp de la boucle de régulation réduit l'écart de position. Il est directement proportionnel à l'ampleur de l'écart de position. Cela signifie que la valeur de l'écart de position est multipliée par le gain proportionnel pour déterminer une valeur de sortie de vitesse qui réduit cet écart. Plus le gain proportionnel est élevé, plus le contrôleur est réactif. Cependant, plus le gain proportionnel est élevé, plus la probabilité d'oscillations (accélération et décélération continues) est élevée.

Des valeurs de gain proportionnel excessivement élevées peuvent entraîner des oscillations de vitesse (alternance d'accélérations et de décélérations en continu) et des mouvements involontaires.

 AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT
  • Pour déterminer la valeur appropriée pour le gain proportionnel de l'entrée i_lrKp, commencez avec la valeur par défaut de l'entrée i_lrKp et procédez à des tests complets.
  • Augmentez la valeur de l'entrée i_lrKp par petits incréments pour déclencher une réponse indicielle, et effectuez à chaque fois des tests complets.
  • Si vous observez des oscillations à une valeur donnée, réduisez la valeur de l'entrée i_lrKp de 10 %.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels.

Détermination de la valeur appropriée pour le gain proportionnel i_lrKp :

Étape

Action

1

Testez les performances de régulation avec la valeur par défaut du gain proportionnel Kp à l'entrée i_lrKp et observez la valeur de vitesse aux sorties correspondantes dans les conditions de fonctionnement prévues.

2

Si la valeur de vitesse ne fluctue pas (vous n'observez aucune oscillation avec accélération et décélération continues), augmentez légèrement la valeur du gain proportionnel Kp pour obtenir une réponse indicielle, puis testez à nouveau les performances de régulation.

3

Augmentez la valeur du gain proportionnel Kp par petits incréments pour déclencher une réponse indicielle et testez à chaque fois les performances de régulation jusqu'à ce que vous observiez des fluctuations de la valeur de vitesse (oscillations).

4

Dès que vous observez des fluctuations de la valeur de vitesse (oscillations) avec une valeur de gain proportionnel Kp donnée, réduisez le gain proportionnel Kp de 10 %.

Résultat : Vous avez déterminé la valeur maximale du gain proportionnel Kp.

NOTE : En fonction de votre application, en particulier du type de variateur et des temps de cycle, des fluctuations mineures de la vitesse de sortie peuvent survenir. Ceci est dû au fait que le bloc fonction FB_Drive_PosControl est appelé dans la tâche utilisateur de sorte que la vitesse réelle est lue dans la tâche utilisateur (par exemple, toutes les 10 ms). La position de l'axe virtuel est calculée par le traitement en temps réel, ou Real-Time Process (RTP). Comme la fonction RTP peut interrompre la tâche utilisateur, la valeur de référence et la valeur réelle peuvent être dans des cycles différents, entraînant ainsi une augmentation de l'écart de position. Dans ce cas, réduisez le gain proportionnel Kp.

Réglage de la boucle de régulation par anticipation de vitesse

Le gain d'anticipation de vitesse est une correction proactive visant à réduire le dépassement prévisible et à minimiser davantage l'écart de position pendant la séquence à vitesse constante du mouvement. Le dépassement est la mesure dans laquelle la valeur de vitesse réelle est « en avance » sur la valeur de référence. La diminution de la valeur réduit le dépassement, en particulier vers la fin du mouvement.

Compensation du temps mort

L'entrée i_uiDeadTime permet la compensation du temps mort. Elle vous permet de spécifier le nombre d'appels de bloc fonction en fonction duquel la valeur de référence de position (lrPosition de l'axe virtuel) est retardée pour le calcul de l'écart de position. Pour déterminer la valeur correcte de cette entrée, déterminez le délai entre la position de référence et la position réelle. Divisez cette valeur par l'intervalle de temps de la tâche dans laquelle le bloc fonction est appelé de façon cyclique. Exemple : Le délai entre la position de référence et la position réelle est de 110 ms. L'intervalle de temps de la tâche dans laquelle FB_Drive_PosControl est appelé est de 10 ms. La valeur appropriée pour i_uiDeadTime est 11 (110/10).

Erreurs détectées et transitions de l'état de fonctionnement du variateur

Les entrées i_xExternalError et i_xDriveEnabled vous permettent de répondre aux erreurs détectées du variateur et de gérer le passage depuis et vers l'état de fonctionnement Operation Enabled du variateur.

Interface

Entrée

Type de données

Description

i_ifAxis

MOIN.IF_Axis

Référence à l'axe pour lequel le bloc fonction doit être exécuté.

i_xEnable

BOOL

Démarre (valeur TRUE) ou arrête (valeur FALSE) l’exécution du bloc fonction.

i_diActualPosition

DINT

La valeur de cette entrée correspond à la position réelle du variateur, telle que déterminée par le codeur.

i_lrKp

LREAL

Plage de valeurs : valeur LREAL positive et 0

Valeur par défaut : 0

La valeur de cette entrée indique le gain proportionnel Kp de la boucle de régulation.

i_uiDeadTime

UINT

Plage de valeurs : 0 à 50

Valeur par défaut : 0

La valeur de cette entrée indique le réglage de la compensation du temps mort par le nombre d'appels de bloc fonction en fonction duquel la valeur de référence de position (lrPosition de l'axe virtuel) est retardée pour le calcul de l'écart de position.

i_lrMaxPositionDiff

LREAL

Plage de valeurs : valeur LREAL

Valeur par défaut : 0

La valeur de cette entrée détermine l'écart de position maximal pour la surveillance de l'écart de position. L'écart de position représente la différence entre la position de référence (lrPosition de l'axe virtuel à l'entrée i_ifAxis) et la position réelle (au niveau de l'entrée i_diActualPosition) du variateur, telle que déterminée par le codeur.

Une valeur positive lance la surveillance de l'écart de position avec la valeur spécifiée. Une valeur négative désactive la surveillance de l'écart de position.

Si la valeur de l'écart de position dépasse la valeur de cette entrée, l'erreur PositionDiffOutOfRange est détectée. Tant que la valeur de cette entrée est égale à 0, l'erreur InvalidPositionDiff est détectée.

i_lrMaxVelocity

LREAL

Plage de valeurs : valeur LREAL

Valeur par défaut : 0

La valeur de cette entrée indique la vitesse maximale du mouvement en unités définies par l'utilisateur. Utilisez une valeur positive pour un mouvement dans le sens positif ou une valeur négative pour un mouvement dans le sens négatif.

i_lrMinVelocity

LREAL

Plage de valeurs : valeur LREAL

Valeur par défaut : 0

La valeur de cette entrée indique la vitesse minimale du mouvement en unités définies par l'utilisateur. Utilisez une valeur positive pour un mouvement dans le sens positif ou une valeur négative pour un mouvement dans le sens négatif.

i_lrVelocityFeedForwardControl

LREAL

Plage de valeurs : 0 à 1

Valeur par défaut : 1

La valeur de cette entrée indique l'anticipation de vitesse.

i_diIncrementalResolution

DINT

Plage de valeurs : valeur entière positive supérieure à 1

La valeur de cette entrée indique la résolution du codeur en incréments (nombre d'incréments par tour).

i_lrPositionResolution

LREAL

Plage de valeurs : valeur entière positive supérieure à 1

La valeur de cette entrée indique la résolution du codeur en unités définies par l'utilisateur (nombre d'unités définies par l'utilisateur par tour).

i_xInvertDirection

BOOL

Plage de valeurs : FALSE, TRUE

Valeur par défaut : FALSE

La valeur de cette entrée est utilisée pour mettre à l'échelle la lecture du codeur par i_diActualPosition.

  • FALSE : le sens du mouvement n'est pas inversé.

  • TRUE : le sens du mouvement est inversé.

i_xExternalError

BOOL

Plage de valeurs : TRUE, FALSE

Valeur par défaut : FALSE

La valeur de cette entrée indique si une erreur externe, par exemple une erreur de variateur, a été détectée. Cela vous permet de répondre aux erreurs détectées du variateur. Si la valeur est TRUE, l'erreur ExternalError est détectée.

Pour réinitialiser l'erreur détectée causée par cette entrée, définissez la valeur de l'entrée i_xEnable sur FALSE puis sur TRUE.

i_xDriveEnabled

BOOL

Plage de valeurs : TRUE, FALSE

Valeur par défaut : FALSE

Si cette entrée est réglée sur FALSE et que l'entrée i_xEnable a pour valeur TRUE, la position de référence est mise à jour en fonction des modifications apportées à la lecture du codeur au niveau de l'entrée i_diActualPosition. Cela signifie que la propriété lrPosition de i_ifAxis a la même valeur que la propriété lrActualPosition et que la valeur lrActualPositionDifference est égale à zéro. Si le variateur est désactivé (c'est-à-dire s'il n'est pas à l'état de fonctionnement Operation Enabled), la sortie q_xError est définie sur FALSE et la sortie q_etResult est réglée sur DriveNotEnabled.

Si la valeur de cette entrée est TRUE, le mouvement est contrôlé en fonction des paramètres de boucle de régulation définis. La position de l'axe virtuel n'est pas affectée si la valeur est TRUE.

Sortie

Type de données

Description

q_lrSetVelocity

LREAL

La valeur de cette sortie indique la vitesse de référence du variateur en unités définies par l'utilisateur.

q_diSetVelocity

DINT

La valeur de cette sortie indique la vitesse de référence du variateur en tr/min.

q_xActive

BOOL

Plage de valeurs : FALSE, TRUE

Valeur par défaut : FALSE

  • FALSE : le bloc fonction ne fournit pas la vitesse de sortie du variateur.

  • TRUE : le bloc fonction fournit la vitesse de sortie du variateur.

q_xError

BOOL

Indique si la dernière exécution du bloc fonction a abouti (valeur FALSE = no error detected) ou non (valeur TRUE = erreur détectée).

q_etResult

ET_Result

Fournit des informations sur l’exécution du bloc fonction.

Propriétés

Nom

Type de données

Accès

Description

lrActualPosition

LREAL

Lecture

Renvoie la position réelle du variateur (i_diActualPosition) en unités définies par l'utilisateur. Si MC_SetPosition est exécuté pour l'axe virtuel à l'entrée i_ifAxis, cette propriété fournit la valeur correspondante.

lrActualPositionDifference

LREAL

Lecture

Renvoie l'écart de position entre la position de référence et la position réelle du variateur en unités définies par l'utilisateur.

lrErrorStopDeceleration

LREAL

Lecture/écriture

Renvoie ou écrit la valeur de décélération d'un arrêt après la détection d'une erreur (la valeur de ET_Result est ErrorStopping).