Skip to main content

Basculer entre les caméras

Fondamentalement, vous pouvez basculer entre différentes caméras à tout moment. Cependant, vous devriez considérer certains points:

  • Dans l'éditeur de cames, la position de l'esclave est définie uniquement comme valeur de fonction de la fonction de came. Cette fonction est définie dans la plage de valeurs pilote et peut être exprimée comme suit :

    SlavePosition = CAM( MasterPosition )

  • Étant donné que la position actuelle de l'entraînement maître s'écarte généralement de la plage de valeurs pilote, vous devez mettre à l'échelle la position maître dans la plage de définition de la fonction de came afin de représenter un argument valable :

    SlavePosition = CAM( MasterScale*MasterPosition + MasterOffset )

  • De la même manière, vous devez mettre à l'échelle la valeur de la fonction (la position de l'esclave) si le début de la came en mode Absolute conduirait à un saut:

    SlavePosition = SlaveScale*CAM( MasterPosition ) + SlaveOffset

  • Vous devrez peut-être appliquer les deux valeurs de mise à l'échelle, ce qui donne les résultats suivants :

    Slaveposition = SlaveScale*CAM( MasterScale*Masterposition + MasterOffset ) + SlaveOffset

  • Les valeurs appropriées pour les paramètres de mise à l'échelle et de décalage peuvent varier d'une période à l'autre.

  • La commutation entre les cames peut être effectuée de trois manières :

    1. Démarrez la deuxième caméra via une deuxième instance de MC_CamIn avec BufferMode = MC_BUFFER_MODE.Buffered, StartMode = relative, MasterAbsolute = FALSE, et SlaveAbsolute = FALSE.

      Important

      Dès CODESYS SoftMotion version 4.17.0.0

    2. Démarrage de la nouvelle came en affectant MC_CamIn.CamTableID à la nouvelle came (pas de redémarrage de la MC_CamIn bloc fonctionnel requis).

      Cette variante est recommandée si les points suivants s'appliquent à votre cas d'utilisation :

      • Toutes les cames suivantes doivent être exécutées relativement avec MasterAbsolute = FALSE ou SlaveAbsolute = FALSE.

      • La nouvelle came doit commencer exactement à la fin de la précédente.

      • Aucun autre paramètre n'est modifié (exemple : SlaveOffset).

        Important

        • Le saut, qui est expliqué dans l'exemple suivant pour les cames périodiques et SlaveAbsolute = FALSE, Est-ce que ne pas s'appliquent à cette variante car la came suivante est placée exactement aux fins de course de la came précédente.

        • La nouvelle came est placée exactement à la fin de la came précédente uniquement si le passage à la nouvelle came se fait dans le même cycle lorsque la came précédente signale EndOfProfile = TRUE.

    3. Démarrage de la nouvelle came en redémarrant la MC_CamIn bloc fonctionnel.

      Cette variante est recommandée si des paramètres doivent être modifiés pour le bon fonctionnement de la nouvelle came (par exemple, SlaveOffset de l'exemple suivant). Les restrictions de l'exemple suivant s'appliquent.

Exemple 9. Exemple

Dans l'exemple suivant, il passe de CAM1 à CAM2:

CAM1 se compose d'un polynôme d'ordre 5 suivi de deux segments de droite.

_sm_img_cam_switching_1.png

CAM2 se compose de deux segments de droite suivis d'un polynôme d'ordre 5.

_sm_img_cam_switching_2.png

Lorsque vous basculez entre les deux cames, vous devez tenir compte des éléments suivants :

  • Pour éviter les sauts, les valeurs de vitesse et d'accélération au point final de la première came doivent correspondre aux valeurs au point de départ de la deuxième came. Dans l'exemple, cette condition est remplie car la même vitesse (=1) et la même accélération (=0) sont affectées au point final de CAM1 et le point de départ de CAM2.

  • Vous pouvez démarrer la deuxième cam dans Relative lorsque vous avez défini la position de départ de l'esclave sur 0. Cependant, la première came doit tourner en non-periodic mode. Sinon, si CAM1 étaient périodiques, alors les Relative réglage entraînerait un saut.

_sm_img_cam_switching_3.png

Le grossissement montre la transition de CAM1 à CAM2. Les lignes bleues marquent les évaluations des fonctions de came aux positions maîtres x1 et x2.

Nous allons maintenant examiner le cas défavorable de periodic:

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=TRUE);

L'appel lance une évaluation de la came à la position maître x1, qui est inférieure à la position finale du maître de CAM1. Puis CAM1 est évalué par défaut et donne point 1 comme position pour l'esclave.

CAM(x2, CAM1, PERIODIC:=TRUE);

Pour l'appel suivant du module, la position maître x2 se trouve en dehors de la plage de valeurs pilotes de CAM1, dont la limite est marquée par la ligne pointillée verte et correspond à l'axe horizontal du point 3p. Par conséquent, la EndOfProfile est réglé. Parce que CAM1 a été commencé en periodic mode, son redémarrage s'effectue à la fin de la plage de valeurs, ce qui donne finalement le point 2p à la suite de l’appel du module.

CAM(EXECUTE:=FALSE);

Passer à la nouvelle caméra

CAM(x2, CAM2, PERIODIC:=TRUE);

Deuxième évaluation au poste de maître x2. Cette fois, le nouveau CAM2 est évalué. Après CAM2 est lancé en Relative mode, la position actuelle de l'esclave (2p) est ajouté comme décalage à l'image de la fonction came de CAM2. Cela déplace le point de départ de son graphique au point 3p et son évaluation au poste de maître x2 donne le point 4p, et donc un saut défavorable.

Sélectionnez le non-periodic mode afin d'éviter les sauts :

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=FALSE);

L'appel lance une évaluation de la came à la position maître x1, qui est inférieure à la position finale du maître de CAM1. Puis CAM1 est évalué par défaut et donne le point 1 comme position de l'esclave.

CAM(x2, CAM1, PERIODIC:=FALSE);

Pour l'appel suivant du module, la position maître x2 se trouve en dehors de la plage de valeurs pilotes de CAM1, dont la limite est marquée par la ligne pointillée verte et correspond à l'axe horizontal du point 3n. Par conséquent, la EndOfProfile est réglé. Parce que CAM1 a été commencé en non-periodic mode, position esclave (2n) affecté au poste de maître x2 est identique à la position de l'esclave à la fin de la plage de valeurs de CAM1 (3n).

CAM(EXECUTE:=FALSE);

Passez à la nouvelle caméra.

CAM(x2, CAM2, PERIODIC:=FALSE);

Deuxième évaluation au poste de maître x2. Cette fois, le nouveau CAM2 est évalué. Après CAM2 est lancé en Relative mode, la position actuelle de l'esclave (2n) est ajouté comme décalage à l'image de la fonction came de CAM2. Cela déplace le point de départ de son graphique au point 3n et son évaluation au poste de maître x2 donne le point 4n, qui est sur la ligne spécifique passant par les points 1 et 3n.

Pour démarrer la came dans Absolute mode, vous devez vous assurer que l'esclave est dans une position de départ appropriée. Si la plage de valeurs du maître concorde avec la période de l'esclave, alors la commutation entre les cames n'a pas de complications, que les cames soient périodiques ou non.

Dans l'exemple ci-dessus, vous pouvez commencer CAM2 dans Absolute mode lorsque les périodes du maître et de l'esclave correspondent à la plage de valeurs maître de CAM2 (chacun fait 360°).

Sinon, par exemple lorsque la période de l'esclave est 270° (indiqué par la ligne bleu clair), puis le Absolute option n'est pas autorisée sans prendre des mesures supplémentaires.

_sm_img_cam_switching_4.png

Dans ce cas, l'esclave est à 90° lors du passage de CAM1 à CAM2. Départ CAM2 dans Absolute mode provoque un saut à 0° (indiqué par une ligne grise).

Cependant, le saut peut être évité en réglant le décalage de l'esclave sur la valeur appropriée de 90°.