WikiPrépaLivrets

Agrégation sciences industrielles de l'ingénieur interne 2020, épreuve 2, option ingénierie électriqueSujet et rapport du jury

Agrégation interne section sciences industrielles de l'ingénieur option sii et ingénierie électrique - Sujet de la deuxième épreuve écrite de la session 2020

Pas encore noté

Téléchargements

  • Corrigé : pas encore disponible

Description

Sujet officiel Agrégation interne en sciences industrielles de l'ingénieur, session 2020.

Ces sujets peuvent vous intéresser

Pas encore de corrigé pour ce sujet : voici des sujets proches corrigés.

Lecture du sujet en ligne

L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.
Afficher ou masquer la section

AGREGATION CONCOURS INTERNE ET CAER

Section : SCIENCES INDUSTRIELLES DE L'INGÉNIEUR

Option : SCIENCES INDUSTRIELLES DE L'INGÉNIEUR ET INGÉNIERIE ÉLECTRIQUE

ÉTUDE D'UN SYSTÈME, D'UN PROCÉDÉ OU D'UNE ORGANISATION

Durée : 4 heures
Calculatrice électronique de poche - y compris calculatrice programmable, alphanumérique ou à écran graphique - à fonctionnement autonome, non imprimante, autorisée conformément à la circulaire n ° 99-186 du 16 novembre 1999.
L'usage de tout ouvrage de référence, de tout dictionnaire et de tout autre matériel électronique est rigoureusement interdit.
Si vous repérez ce qui vous semble être une erreur d'énoncé, vous devez le signaler très lisiblement sur votre copie, en proposer la correction et poursuivre l'épreuve en conséquence. De même, si cela vous conduit à formuler une ou plusieurs hypothèses, vous devez la (ou les) mentionner explicitement.
NB : Conformément au principe d'anonymat, votre copie ne doit comporter aucun signe distinctif, tel que nom, signature, origine, etc. Si le travail qui vous est demandé consiste notamment en la rédaction d'un projet ou d'une note, vous devrez impérativement vous abstenir de la signer ou de l'identifier.

INFORMATION AUX CANDIDATS

Vous trouverez ci-après les codes nécessaires vous permettant de compléter les rubriques figurant en en-tête de votre copie.
Ces codes doivent être reportés sur chacune des copies que vous remettrez.
  • -Concours interne de l'Agrégation de l'enseignement public
  • -Concours interne du CAER / Agrégation de l'enseignement privé :

Bras manipulateur ME3

Le sujet comporte 46 pages.
  • -Questionnement : pages 1 à 23 ;
  • -Documents techniques DT1 à DT9 : pages 24 à 42 ;
  • -Documents réponses DR1 à DR4 : pages 43 à 46.
Le sujet est constitué de plusieurs parties indépendantes qui sont toutes à traiter, dans l'ordre souhaité par les candidats.
Les candidats sont invités à numéroter chaque page de leur copie et à indiquer clairement le numéro de la question traitée.
Il leur est rappelé qu'ils doivent utiliser les notations propres au sujet, présenter clairement les calculs et dégager ou encadrer tous les résultats.
Lors du passage d'une forme littérale à son application numérique, chaque grandeur est remplacée par sa valeur numérique en respectant la position qu'elle avait dans la relation puis le résultat numérique est donné sans calculs intermédiaires et sans omettre son unité.
Si le texte du sujet, de ses questions ou de ses annexes, conduit les candidats à formuler une ou plusieurs hypothèses, il leur est demandé de la (ou les) mentionner explicitement dans la copie.

Introduction

La société AMTECH (Assistance Mécanique Tuyauterie Études et Chaudronnerie), basée dans le nord Cotentin, conçoit, réalise et commercialise des solutions globales de dépollution industrielle dans les domaines du nucléaire, de la pétrochimie, etc.
Le bras manipulateur ME3 (figure n°1) étudié dans ce sujet est un bras commandé à distance. Il est destiné aux travaux de démantèlement dans le domaine du nucléaire.
Figure n°1 : bras ME3 en phase de développement et de réglage
Les objectifs des travaux proposés dans ce sujet sont :
  • -dans la partie A de vérifier la capacité de levage et le dimensionnement des alimentations ;
  • -dans la partie B d'adapter au milieu nucléaire certaines solutions technologiques au niveau du bras ;
  • -dans la partie C d'exploiter le modèle du moteur synchrone du poignet pour calculer un point de fonctionnement pour une charge mécanique donnée en régime sinusoïdal permanent ;
  • -dans la partie D d'établir un modèle de simulation de l'onduleur à commande M.L.I. sinusoïdale ;
  • -dans la partie E de dimensionner les paramètres du correcteur proportionnel et intégral de la boucle de contrôle des courants du moteur synchrone, de comparer les résultats analytiques aux résultats de simulation et de réaliser une analyse critique des performances de la boucle ;
  • -dans la partie F de modifier un script Python3 ou Scilab afin de calculer la position angulaire du flux statorique à partir des relevés des courants dans les phases du moteur et de valider la quadrature entre le flux rotorique et le flux de réaction magnétique d'induit ;
  • -dans la partie G de gérer les positions des articulations en phase d'exploitation et lors des coupures d'alimentation de l'appareil.

Caractéristiques du système

  • -Alimentation : coffret d'alimentation 230 V (prise ménagère ou Maréchal).
  • -Commande : joysticks ; longueur de câble du coffret au bras de 10 m.
  • -Motorisation : électrique.
  • -Capacité de levage toutes positions : 20 kg en fonctionnement normal.
  • -Poids du bras : 150 kg.
  • -Diamètre de passage du fourreau : 254 mm.
La partie opérative permet de réaliser 5 rotations et 2 translations présentées figure n°2.
Figure n°2 : mouvements de la partie opérative

Structure et fonctionnement du bras ME3

Le pilotage du bras est assuré par deux joysticks analogiques intégrant des commandes logiques.
Un premier joystick (figure n°3) commande les mouvements du poignet ainsi que les mouvements du télescope et de la pince, tandis que le second joystick (figure n^∘4 ) commande les trois mouvements liés à l'épaule.
Figure n°3 : schéma électrique de la commande de poignet, du télescope et de la pince
Figure n°4 : schéma électrique de la commande d'épaule
Le poignet et l'épaule ont une structure de différentiel inversé (figures n^∘5 et 6 ) qui permet de contrôler une rotation sur deux axes à partir de la commande de deux moteurs. Un calcul permet de combiner les mouvements sur les deux axes en fonction de la position des joysticks.
Les couleurs des figures 5 et 6 sont en correspondance.
Figure n°5 : détail du poignet vu de dessus
Figure n°6 : schéma cinématique du poignet
Les mouvements du différentiel inversé sont contrôlés selon le principe suivant :
  • -lorsque les deux moteurs sont pilotés dans le même sens et à la même vitesse, l'articulation est en rotation autour de l'axe X_4;
  • -lorsque les deux moteurs sont pilotés dans le sens inverse et à la même vitesse, l'articulation est en rotation autour de l'axe Y_4;
  • -toute autre combinaison de rotation des moteurs permet des mouvements combinés selon les axes X_4, Y_4.
La position de chaque axe moteur est acquise par des capteurs incrémentaux. Des compteurs internes aux contrôleurs moteurs permettent de connaitre la position des moteurs afin de calculer la position du bras.
Une alimentation de secours est utilisée pour chaque contrôleur moteur. Elle permet, en cas de coupure d'alimentation, d'assurer la sauvegarde des positions de chaque articulation et les échanges sur le bus CAN.

A. Vérification de la capacité de levage et du dimensionnement des alimentations

On souhaite vérifier au niveau du poignet que la capacité de levage en position horizontale est supérieure à 20 kg en fonctionnement normal.
Le document technique DT1 contient les éléments nécessaires pour traiter cette partie.
Figure n°7 : vue modélisée du bras en position horizontale
Hypothèses :
  • -le poignet est en position horizontale, pince à plat (figure n°7) ;
  • -l'effort de levage au point C selon l'axe (vertical) Z_4 est notée F_C;
  • -les efforts se répartissent équitablement sur les deux moteurs. Chaque réducteur moteur est capable d'appliquer en sortie un couple C_(sr) nominal de 15 Nm ;
  • -les réducteurs sont considérés comme parfaits ;
  • -les mouvements sont suffisamment lents pour que l'on fasse une étude en statique ;
  • -la distance entre l'axe de l'engrenage n^∘5 (figure n°8) et le point C est de 29 cm.
On applique une charge de 20 kg au point C.
Question 1 : calculer la norme des actions mécaniques F_C, F_B puis F_A, selon l'axe Z_4, aux points C, B et A repérés sur la figure n°8.
Figure n°8 : points d'application des efforts et repérage des pignons d'un demi-poignet
Numéro de pignon Nombre de dents Rayon (mm)
1 15 11,25
2 30 22,5
3 12 9
4 40 30
5 30 22,5
Figure n°9 : caractéristiques des engrenages
Question 2 : conclure sur le dimensionnement du réducteur (référence 203125) associé au moteur.
Question 3 : vérifier que le moteur de poignet (référence EC40, DT1) est capable de fournir le couple nécessaire au réducteur (référence 203125). Conclure sur la capacité de levage.
L'épaule a une capacité de levage de 74,6 kg, ce qui correspond à un couple de 2,1 Nm appliqué aux axes moteurs (référence moteur BL210.480).
Question 4 : en déduire la puissance mécanique P_(méca) délivrée lorsqu'un moteur d'épaule est alimenté sous sa tension nominale.
Question 5 : vérifier que l'alimentation continue 48 V, 2 kW est bien dimensionnée pour la commande des 3 moteurs d'épaule (figure n°4). On prendra une valeur de rendement de 90 % pour l'ensemble moteur-contrôleur.
  • B.Adaptation au milieu nucléaire des solutions technologiques au niveau du bras
La durée de vie des capteurs à effet Hall des moteurs brushless étant limitée dans un environnement radioactif, il a été décidé d'utiliser des résolveurs Maxon 133405 pour le poignet (document technique DT2). Cette partie permet d'étudier les modifications à apporter au système pour les intégrer.
Le bureau d'étude de la société a développé une carte d'acquisition qui permet d'envoyer les informations de position - vitesse sous forme numérique au contrôleur.
Ces cartes d'acquisition exploitent des encodeurs Tamagawa AU6805 (document technique DT2) qui permettent de délivrer des signaux numériques de type A-B dont les impulsions, équivalentes à des impulsions issues d'un codeur incrémental, seront comptées-décomptées par les compteurs internes des contrôleurs moteurs (entrées ENC1A/B et ENC2A/B du contrôleur).
Le fonctionnement du circuit encodeur AU6805 est optimal lorsque certaines conditions de déphasage et de niveau de tension sont respectées. La documentation technique DT2 du circuit explicite et quantifie ces contraintes. L'objectif de cette partie est de vérifier que les composants et les structures définies à l'aide des notes d'application permettent bien de respecter ces critères.
Figure n°10 : structure de la carte d'acquisition
Le circuit d'excitation intègre un filtrage passe-bas de type Butterworth du troisième ordre. Ce dernier permet d'éliminer les fréquences indésirables supérieures à la fréquence d'excitation du résolveur notée F_(excitation). Le filtre est constitué d'un filtre MFB (Multiple Feed Back) du second ordre associé à une cellule RC.
Figure n°11 : filtre d'excitation
Question 6 : proposer un couple de valeurs pour R4 et C3 afin de caler la fréquence de coupure de cette cellule RC sur la fréquence propre du filtre MFB.
Les diagrammes de Bode du filtre MFB sont disponibles sur le document technique DT3.
Question 7 : préciser l'influence du filtre global ainsi réalisé sur le signal d'excitation du résolveur (atténuation et déphasage) ainsi que sur les signaux de fréquence égale à 10 ⋅ F_(excitation).
Question 8 : calculer le gain G_a des amplificateurs à associer aux filtres d'excitation et déterminer la valeur de la tension V_(cc) à utiliser pour alimenter les amplificateurs AD8397 afin d'optimiser le rapport Signal/Bruit.
Question 9 : calculer la valeur maximale du gain G_(rMax) du circuit de retour, formé par les amplificateurs ajustables (1/4 AD8694) associés aux filtres de butterworth d'entrée (1/4 AD8694) afin que l'amplitude du signal d'entrée du circuit d'encodage AU6805 ne soit pas supérieure à sa valeur maximale, soit 2,3 Vp-p.
Il est précisé dans la documentation technique du circuit encodeur qu'afin de supprimer la procédure d'ajustement de déphasage entre les signaux d'excitation et ceux de retour Sin/Cos, la limite du déphasage entre ces deux signaux est de ±45 °.
Question 10 : le circuit de retour Sin/Cos induit un déphasage de -18,8 ° à 10 kHz ; en déduire le déphasage maximal admissible φ_(exMax) pour l'amplificateur d'excitation.
La faible impédance Z_–_(ex) de la bobine d'excitation du résolveur ( Z_–_(ex) = 70 + j ⋅ 100 à 10 kHz ) impose de vérifier que la puissance maximale dissipable par les circuits AD8397 n'est pas dépassée.
Figure n°12 : schéma d'excitation équivalent et allure des courants d'alimentation
Remarques :
  • - V_(CC) = 24 V pour les applications numériques ;
  • -la résistance thermique du boitier Rth_(j − a) vaut 47,2 °C/W pour le type 8 broches SOIC EP ;
  • -la température maximale de jonction pour les boitiers plastiques est d'environ 150 °C.
Question 11 : calculer la puissance active P_(load) dissipée par le résolveur.
Hypothèse : on considère que le courant débité par l'alimentation est en tout instant égal au courant dans la charge.
Question 12 : calculer la valeur du courant d'alimentation moyen, qui sera noté I_(supply), du circuit intégré AD8397.
Question 13 : calculer la puissance P_(supply) délivrée par l'alimentation au circuit intégré AD8397 puis en déduire la puissance P_(amp) dissipée par ce dernier.
Question 14 : vérifier que le circuit intégré AD8397 est en mesure de dissiper cette puissance si l'on considère une température ambiante θ_A de 25°C.
Question 15 : conclure sur l'adéquation entre la carte d'acquisition utilisée et les contraintes imposées par le circuit encodeur.
  • C.Détermination d'un point de fonctionnement de la boucle de contrôle de couple des moteurs synchrones du poignet
La complexité de la partie commande du poignet du bras manipulateur ME3 a nécessité l'utilisation d'un modèle numérique associant modèle mécanique du poignet et modèle de la chaîne de commande des moteurs synchrones. L'étude du modèle est ici limitée à la commande des moteurs synchrones MAXON et plus particulièrement à la boucle de contrôle des courants d'induit. Un modèle de simulation Scilab/Xcos sert de support à l'étude de la boucle de contrôle de courant. Le document technique DT4 fournit une représentation schématique de la seule boucle de contrôle de courant. Le document technique DT5 décrit le modèle de simulation Scilab/Xcos.
La partie C du sujet exploite le modèle du moteur synchrone pour calculer un point de fonctionnement pour une charge mécanique donnée en régime sinusoïdal permanent, étape préalable à l'étude critique des résultats de simulation du modèle Scilab/Xcos.
Les moteurs utilisés dans la commande du poignet sont référencés EC 393025 (document technique DT6). Ces moteurs synchrones sont alimentés par des onduleurs triphasés commandés en modulation de largeur d'impulsions sinusoïdale. Le schéma simplifié de la partie puissance est donné à la figure n°13. On utilise le repérage des grandeurs physiques suivant :
  • - v_1(t), v_2(t) et v_3(t) : tensions simples d'alimentation du moteur synchrone ;
  • - v_f(t) : fondamental de la tension v_1(t), valeur efficace V_(fEFF);
  • - u_(1 − 2)(t), u_(2 − 3)(t) et u_(3 − 1)(t) : tensions composées d'alimentation du moteur synchrone ;
  • - i_1(t), i_2(t) et i_3(t) : courants de ligne du moteur synchrone ;
  • - i_f(t) : fondamental du courant i_1(t), valeur efficace I_(FEFF);
  • - U_c, I_c : grandeurs en entrée de l'onduleur triphasé.
On exploite le modèle monophasé de la figure n°14. Les paramètres linéaires du moteur synchrone sont définis en régime de fonctionnement sinusoïdal. On considère les valeurs numériques suivantes : R_m = 0, 4Ω, L_m = 0, 17mH, k_(fe) = 12mV/rd/s, k_(fe) étant le rapport entre la valeur efficace de la f.e.m. induite e_f(t) et la vitesse angulaire du rotor Ω_m.
Figure n°13 : onduleur triphasé
Figure n°14 : modèle monophasé en régime sinusoïdal permanent
Figure n°15 : diagramme vectoriel de Behn-Eschenburg du moteur synchrone
Rappel sur l'autopilotage du moteur synchrone : la commande de l'onduleur triphasé contrôle les courants statoriques i_1(t) à i_3(t) permettant de maintenir en quadrature le champ magnétique de réaction d'induit Φ_s et le champ magnétique Φ_r créé par les aimants permanents du rotor. On parle de commande autopilotée ou d'autopilotage.
On associe au flux de réaction d'induit et au flux rotorique les grandeurs complexes suivantes : Φ_–_s et Φ_–_r.
On considère ici que la commande d'autopilotage n'est pas active. Le diagramme vectoriel de la figure n°15 est donc tracé pour un point de fonctionnement en régime sinusoïdal permanent quelconque. Les vecteurs sont repérés par la variable complexe associée.
Question 16 : placer, sur la figure n°34 du document réponse DR1, les vecteurs associés aux deux grandeurs complexes Φ_–_s et Φ_–_r. Justifier le tracé de ces deux grandeurs vectorielles.
Question 17 : réaliser un bilan de puissance et montrer que l'on peut exprimer le couple électromagnétique sous la forme C_(em) = 3 ⋅ k_(fe) ⋅ l_(fEFF) ⋅ cos(Ψ). Justifier que la commande d'autopilotage optimise le couple délivré par la machine.
On considère maintenant que la commande d'autopilotage est active.
Question 18 : tracer, sur la figure n°35 du document réponse DR1, un diagramme de Behn-Eschenburg dans une stratégie de commande d'autopilotage. Faire apparaître les vecteurs associés au courant I_f et aux chutes de tension dans R_m et L_m. Exprimer la valeur complexe de ces chutes de tension en fonction de I_–_(f.)
Le modèle de simulation Scilab/Xcos de la boucle de courant (document technique DT5) comporte une perturbation modélisée par un couple résistant de type frottement visqueux : C_r = K_(FV)Ω_m avec K_(FV) = 172 ⋅ 10^(− 6)Nm ⋅ s. La consigne de courant impose une valeur I_(FEFF) = 2, 8 A dans les enroulements d'induit. On suppose la boucle de contrôle du courant sans erreur. On considère le moteur sans pertes mécaniques.
Question 19 : pour le régime de fonctionnement et les paramètres de simulation décrits cidessus, déterminer l'expression littérale de Ω_m en fonction de k_(fe), K_(FV) et l_(fEFF). Calculer les valeurs numériques de Ω_m et C_(em).
Question 20 : pour le même point de fonctionnement, déterminer l'expression littérale de V_(fEFF) en fonction de R_m, L_m, Ω_m, I_(FEFF), k_(fe) et p (nombre de paires de pôles du moteur, voir document technique DT6). Calculer la valeur numérique de la tension V_(fEFF.)
Les résultats des deux questions précédentes seront exploités ultérieurement pour une analyse critique des résultats de simulation du modèle Scilab/Xcos.

D. Élaboration d'un modèle de simulation de l'onduleur triphasé

Dans cette partie de l'étude, nous allons définir le modèle Scilab/Xcos de l'onduleur triphasé en établissant les relations liant les trois tensions simples d'alimentation du moteur aux signaux de commande binaires des interrupteurs de l'onduleur triphasé. La figure n°16 illustre l'association des modèles du moteur synchrone et de l'onduleur. La figure n°17 décrit la structure interne du modèle de l'onduleur triphasé où trois expressions sont à définir pour valider ce modèle. Aucune connaissance sur la sémantique graphique Scilab/Xcos n'est demandée dans cette partie.
Figure n°16 : modèles de l'onduleur triphasé et du moteur synchrone
Figure n°17 : blocs internes de l'onduleur triphasé
Fonction de l'onduleur triphasé de tension : transformer la tension continue U_c en un système de tensions triphasées. Si l'on ne s'intéresse qu'au fondamental des tensions simples triphasées, on peut les exprimer en régime permanent sous la forme :
v_(f1)(t) = V_(fEFF) ⋅ √2 ⋅ sin(2 ⋅ π ⋅ f_s ⋅ t); v_(f2)(t) = V_(fEFF) ⋅ √2 ⋅ sin(2 ⋅ π ⋅ f_s ⋅ t − (2.π)/3); v_(f3)(t) = V_(fEFF) ⋅ √2 ⋅ sin(2 ⋅ π ⋅ f_s ⋅ t − (4.π)/3)
La commande M.L.I. sinusoïdale de l'onduleur triphasé permet de régler la fréquence f_s et la valeur efficace V_(fEFF) des tensions.
Figure n°18 : onduleur triphasé
Figure n°19 : bras d'onduleur
Figure n°20 : commande de l'interrupteur K_(iu)
Constitution de l'onduleur triphasé : la figure n°18 précise la structure de l'onduleur triphasé constitué de trois bras numérotés i ( i varie de 1 à 3 ). Chaque bras est constitué de deux interrupteurs K_(iu) et K_(il). Le système de tensions triphasées et le réglage de ses paramètres
(tension efficace, phase et fréquence) est obtenu par la synthèse des six signaux de commande binaires : signaux f_(iu) et f_(il) pour le bras n°i.
Commande de l'interrupteur K_(iu) (voir figures n°19 et n°20) :
  • - f_(iu) = 0, interrupteur K_(iu) ouvert, l_(iu) = 0;
  • - f_(iu) = 1, interrupteur K_(iu) fermé, V_(iu) = 0.
La commande des deux interrupteurs d'un même bras étant complémentaire on utilise dans les questions suivantes la relation arithmétique : f_(il) = 1 − f_(iu).
On cherche à établir les relations liant tensions composées et tensions simples avec les trois signaux de commande f_(1u), f_(2u) et f_(3u). Toutes les tensions sont repérées sur la figure n°18.
La tension v_(iN)(t) est repérée sur la figure n^∘19.
Question 21 : exprimer v_(iN)(t) en fonction de f_(iu), f_(il) et U_c puis exprimer v_(iN)(t) en fonction def_(iu) seul et U_c.
Question 22 : exprimer u_(1 − 2)(t), u_(2 − 3)(t) et u_(3 − 1)(t) en fonction de f_(1u), f_(2u), f_(3u) et U_c.
On s'appuie sur le schéma de la figure n°18. On considère que toutes les composantes harmoniques des tensions sont triphasées et équilibrées. Les expressions déterminées à la question suivante servent à l'élaboration du modèle Scilab/Xcos de la figure n°17.
Question 23 : exprimer v_1(t), v_2(t) et v_3(t) en fonction de f_(1u), f_(2u), f_(3u) et U_c.
  • E.Étude analytique de la boucle de contrôle de courant et analyse critique du modèle de simulation
L'étude analytique de la boucle de contrôle de courant est ici menée afin de définir les valeurs numériques du correcteur P.I. du modèle de simulation Scilab/Xcos et réaliser une analyse critique des performances de la boucle.
Dans cette partie, p représente l'opérateur de Laplace. La figure n°21 représente le diagramme fonctionnel simplifié de boucle de contrôle du courant. Dans un premier temps par souci de simplification, on ne prend pas en compte l'influence de la f.e.m. induite E_f(p).
Figure n°21 : boucle de contrôle du courant
  • - I_(cf)(p) : consigne de courant pour une phase ; en régime de rotation permanent cette consigne est sinusoïdale.
  • - U_(mod)(p) : entrée du modulateur M.L.I.
  • - V_f(p) : fondamental de la tension simple.
  • - I_f(p) : courant dans une phase de moteur.
Pour le dimensionnement des paramètres du correcteur P.I. (constante proportionnelle K_p et constante d'intégration τ_i ), on considère la transmittance H_(ond)(p) constante telle que H_(ond)(p) = H_(ond) = 2, 4.
Question 24 : dimensionner l'un des paramètres du correcteur P.I. afin d'annuler l'effet du pôle non nul de la transmittance en boucle ouverte du diagramme la figure n°21. Donner la valeur numérique de ce paramètre.
Question 25 : dimensionner le deuxième paramètre du correcteur P.I. pour qu'au point de fonctionnement nominal du moteur synchrone (document technique DT6, référence EC 393025), l'erreur sur l'amplitude du courant de ligne soit inférieure à 5%.
Pour la suite des questions, on prend K_p = 0, 206.
Question 26 : pour le point de fonctionnement nominal du moteur, donner l'expression, en fonction de H_(ond), K_p, L_m et Ω_m, de l'écart de phase entre i_(1f)(t), fondamental du courant dans la phase n°1, et i_(1cf)(t) consigne de la boucle de courant pour la phase n°1. Calculer la valeur numérique de cet écart de phase en radian et en degré.
En analysant l'élaboration des consignes de courant sur le schéma de la figure n°30 (document technique DT4) on peut montrer qu'en régime sinusoïdal permanent les grandeurs I_(cf)(j ⋅ ω) et E_f(j ⋅ ω) sont en phase ( p = j ⋅ ω en régime sinusoïdal).
Question 27 : en exploitant la remarque précédente et le résultat de la question 17, déterminer si l'écart de phase entre i_(1f)(t) et i_(1cf)(t) a une influence sur la valeur du couple électromagnétique C_(em) développé par le moteur.
Dans le modèle de simulation Scilab/Xcos exploité dans les questions qui suivent, l'onduleur triphasé associé à sa commande M.L.I. sinusoïdale est remplacé par la transmittance H_(ond)(p) = H_(ond). Le modèle de simulation Scilab/Xcos de contrôle du courant moteur fournit les résultats présentés sur la figure n°22, consigne de courant de la phase n°1 et les trois courants de ligne en régime établi. La consigne de courant maximale est fixée à la valeur de I_(cMAX) = 2, 8 ⋅ √2 A.
Question 28 : analyser les graphes de la figure n°22 et réaliser une étude critique de l'évolution des courants de ligne i_1(t), i_2(t) et i_3(t). Déterminer si ces évolutions sont compatibles avec le modèle de la figure n°21.
Question 29 : conclure sur la pertinence de négliger l'influence de la f.e.m. induite E_f(p) dans le modèle de la figure n°21.
Figure n°22 : courants dans les phases du moteur en régime de vitesse établi
Dans un deuxième temps, on prend en compte la f.e.m. induite E_f(p) afin de mettre en évidence son influence sur la boucle de contrôle des courants d'induit.
Remarque : l'un des paramètres du correcteur P.I. annule toujours l'effet du pôle non nul de la transmittance en boucle ouverte.
Question 30 : compléter le diagramme fonctionnel de la figure n°36 du document réponse DR1 afin de prendre en compte la f.e.m. E_f(p). Déterminer l'expression de I_f(p) en la mettant sous la forme : I_f(p) = H_1(p) ⋅ I_c(p) + H_2(p) ⋅ E_f(p). Déterminer H_1(p) et H_2(p). Montrer que l'on peut mettre l'expression sous la forme :
I_f(p) = 1/(1 + τ_n ⋅ p) ⋅ (I_c(p) − 1/(R_m) ⋅ (τ_n ⋅ p)/(1 + τ_m ⋅ p) ⋅ E_f(p))
avec τ_n = 344μs et τ_m = 425μs.
Donner les expressions littérales de τ_n et τ_m en fonction de K_p, τ_i, R_m, L_m et H_(ond).
Question 31 : en exploitant la figure n°22, estimer la vitesse en régime établi Ω_m (rad/s).
En régime de vitesse établi, les grandeurs physiques sont à variation sinusoïdale ; on remplace donc l'opérateur de Laplace p par j ⋅ ω.
Question 32 : justifier que l'écart de phase en régime sinusoïdal établi entre I_c(j ⋅ ω) et E_f(j ⋅ ω) est nul.
Dans les deux questions suivantes, on utilise la coïncidence de phase entre I_c(j ⋅ ω) et E_f(j ⋅ ω).
Question 33 : exprimer et calculer l'écart de phase entre i_(1f)(t), le fondamental du courant dans la phase n°1, et i_(1cf)(t), la consigne de la boucle de contrôle de courant pour la phase n°1, pour le point de fonctionnement en régime établi des graphes de la figure n°22. Commenter le résultat en comparant avec l'écart de phase relevé sur les graphes de la figure n°22.
Question 34 : exprimer et calculer la valeur efficace de i_(1f)(t) pour le point de fonctionnement en régime établi des graphes de la figure n°22. Comparer avec les résultats de simulation des graphes de la figure n°22. Conclure sur la pertinence de prendre en compte la f.e.m. induite E_f(p) dans le modèle de la boucle de contrôle de courant.
On peut constater que l'écart entre la consigne de courant et le courant dans la phase du moteur est significative, particulièrement pour la phase.
Question 35 : indiquer sur quel paramètre on peut agir pour réduire cette erreur. Exploiter l'expression de I_f(p) de la question 30 pour justifier la réponse en analysant la (ou les) constante(s) de cette expression modifiée(s) par ce changement de paramètre.
Pour les questions suivantes le modèle de simulation Scilab/Xcos inclut l'onduleur triphasé associé à sa commande M.L.I. sinusoïdale (bruit de découpage sur les courants). Les résultats de simulation présentés sur la figure n°23 sont obtenus avec une forte augmentation du paramètre évoqué à la question précédente, d'un facteur multiplicatif 25 environ.
Figure n°23 : courants dans les phases du moteur en régime de vitesse établi
Question 36 : analyser les graphes de la figure n°23, déterminer la vitesse Ω_m et commenter l'évolution des courants lignes i_1(t), i_2(t) et i_3(t). Comparer avec les résultats de la question 19 et conclure sur les performances de la boucle de contrôle des courants du moteur synchrone.

F. Modification et exploitation d'un script pour calculer la position du flux statorique et valider la quadrature des flux

Des feuilles de calculs Python3 ou Scilab sont utilisées afin de calculer la position angulaire du flux Φ_s à partir des relevés des courants dans les phases du moteur. Il s'agit de valider que la boucle de courant assure la quadrature entre le flux rotorique et le flux de réaction magnétique d'induit.
L'ensemble des résultats de simulation du modèle Scilab/Xcos est disponible dans un seul fichier texte (format CSV). L'affichage de certains résultats nécessite un traitement préalable
sur les données du fichier, en particulier la détermination de la position angulaire du flux Φ_s de réaction magnétique d'induit afin de vérifier la quadrature avec la position du flux rotorique Φ_r. La figure n°25 illustre l'affichage dans un diagramme polaire des positions angulaires de Φ_s et Φ_r à l'instant repéré par le curseur en pointillé de la figure n°24.
Figure n°24 : évolution des trois courants d'induit lors d'un démarrage
Figure n°25 : positions angulaires de Φ_s et Φ_r à l'instant repéré par le curseur
Le flux de réaction magnétique d'induit Φ_s est maximal dans un bobinage statorique lorsque le courant dans ce bobinage est maximal, ou encore que l'axe du champ de réaction magnétique d'induit Φ_s est en coïncidence avec l'axe du bobinage lorsque le courant est maximal dans ce bobinage (champ tournant). Pour déterminer la position de cet axe et la valeur du champ de réaction magnétique d'induit Φ_s, il suffit d'exploiter les courants d'induit i_1(t) à i_3(t) et calculer la valeur du flux suivant deux axes orthogonaux de la machine, ce qui revient à trouver deux bobinages en quadrature spatiale équivalents à trois bobinages décalés de 2 ⋅ π/3 (figure n^∘26 ). La relation matricielle ci-dessous permet la détermination des composantes Φ_d et Φ_q.
[Φ_d; Φ_q] = [1, cos((2.π)/3), cos((4.π)/3); 0, sin((2.π)/3), sin((4.π)/3)] ⋅ [Φ_1; Φ_2; Φ_3]
Figure n°26 : bobinages en quadrature équivalents
Suivant le langage à script choisi pour répondre aux questions suivantes, Python3 ou Scilab, consulter le document technique DT7 ou DT8 pour prendre connaissance de quelques méthodes des bibliothèques mathématiques de ces langages. Le document réponse DR2 ou le document réponse DR3 est à exploiter ; ces documents présentent le script à modifier. Les commentaires du script sont à analyser pour identifier les actions des lignes d'instructions ainsi que les différents tableaux exploités dans celui-ci.
Question 37 : compléter le script du document réponse DR2 ou DR3 dans la zone située après le bloc de commentaires débutant par " # Partie à modifier : " pour le script Python ou par " // Partie à modifier : " pour le script Scilab; la boucle à compléter doit calculer toutes les valeurs du tableau tetaPhis décrivant l'évolution de la position angulaire du flux Φ_s en degré.
La figure n°27 représente l'évolution de la position du rotor en radian, lors d'une phase de démarrage du moteur, courbe résultant d'une simulation du modèle Scilab/Xcos de l'étude. Les courbes de la figure n°28 représentent l'évolution des positions angulaires de Φ_s (courbe bleue) et Φ_r (courbe verte), résultat de l'exécution du script étudié dans cette partie du sujet. Les positions angulaires de la figure n°28 sont tracées modulo 360^∘, dans l'intervalle [ − 180^∘, + 180^∘].
Pour valider la quadrature des flux rotorique et statorique, il faut que les deux positions angulaires aient le même intervalle de variation. Le tableau tetaRotor du script est initialisé avec les valeurs décrivant la courbe de la figure n°27.
Question 38 : sur le document réponse DR2 ou DR3, proposer une ou des lignes d'instructions à inclure dans la boucle de la question précédente pour que le tableau tetaRotor ait le même intervalle de variation que le tableau tetaPhis en degré. Exploiter et
commenter les courbes de la figure n°28 pour valider ou non la quadrature des deux champs Φ_s et Φ_r. Apporter une conclusion sur la commande d'autopilotage abordée dans cette étude.
Figure n°27 : résultat de simulation Scilab/Xcos de l'évolution de la position du rotor
Figure n°28 : résultat du script de l'évolution de la position du rotor et du flux statorique

G. Étude de la gestion de la position des articulations

L'épaule a une amplitude de 125 ° en articulation et de 500 ° en rotation. Ces positions sont calculées à partir des valeurs de deux compteurs Cép _1 et Cép _2. Ces compteurs comptent respectivement les impulsions issues des encodeurs reliés aux synchro-résolveurs des moteurs M1 et M2 de l'épaule (entrées ENC1A/B et ENC2A/B du contrôleur).
Figure n°29 : détail des mouvements de l'articulation d'épaule
Convention des sens de rotation :
  • -lorsque les moteurs tournent dans le sens positif, le compteur correspondant s'incrémente (compteur Cép _1 pour moteur épaule 1, Cép _2 pour moteur épaule 2) ;
  • -lorsque les deux moteurs tournent dans le sens positif, la variable représentant l'angle de rotation selon l'axe x « Cép_ x » s'incrémente ;
  • -lorsque M1 tourne dans le sens positif et M2 dans le sens négatif, la variable représentant l'angle de rotation selon l'axe y « Cép_y » s'incrémente.
Lors des coupures d'alimentation, accidentelles ou non, il est nécessaire de mémoriser les positions de toutes les articulations afin d'éviter tout mouvement indésirable à la remise sous tension.
Lorsque la tension d'alimentation des moteurs descend en dessous du seuil défini V_(min), les moteurs sont stoppés et leur position est mémorisée.
Deux alimentations de secours alimentent les contrôleurs durant le laps de temps nécessaire à cette opération.
Les contrôleurs moteurs sont programmables en MicroBasic. Un extrait de la liste d'instruction comprenant celles nécessaires à cette application est fourni dans le document technique DT9.
Question 39 : proposer un script MicroBasic permettant de paramétrer les entrées ENCxA/B du contrôleur des moteurs d'épaule dans le bon mode.
Question 40 : proposer une solution pour quantifier, à partir des valeurs des compteurs Cép _1 et Cép _2, les positions angulaires de l'articulation selon l'axe x (Cép_x) et de la rotation de l'épaule selon l'axe y (Cép_y).
Question 41 : proposer un algorithme permettant de gérer la sauvegarde des positions des articulations lors d'une coupure d'alimentation.
Question 42 : rédiger le script MicroBasic correspondant en justifiant la solution retenue.
Remarque : on considère que le contrôleur gère la sauvegarde des variables en 32 bits.
Si une seule des deux alimentations est défaillante, les mouvements du bras pilotés par l'autre contrôleur doivent être inhibés. Pour cela, chaque contrôleur concerné par une coupure d'alimentation émet un ordre d'arrêt d'urgence à destination de l'autre contrôleur en utilisant la liaison bus CAN intégrée au contrôleur.
La phase de sauvegarde est validée lorsque le contrôleur qui a émis l'ordre d'arrêt d'urgence reçoit une trame d'acquittement émise par l'autre contrôleur.
L'exploitation de ce bus par les contrôleurs moteurs est détaillée dans le document technique DT9.
Question 43 : compléter sur le document réponse DR4 la trame émise par le contrôleur d'épaule (contrôleur n°1) lorsqu'il détecte une anomalie sur son alimentation.
Question 44 : compléter sur le document réponse DR4 la trame émise par le contrôleur de poignet (contrôleur n°2) une fois qu'il est passé avec succès en mode arrêt d'urgence.
Question 45 : conclure sur la conformité de ces solutions vis-à-vis du cahier des charges et comparer la solution retenue avec une autre solution intégrant par exemple des batteries.

Document technique DT1 : données relatives aux articulations

Réducteurs de poignet
Constructeur « MAXON »
Gearhead Data
Reduction 91 : 1
Absolute reduction 91/1
Max. motor shaft diameter 10 mm
Number of stages 3
Max. continuous torque 15 Nm
Max. intermittent torque 22 Nm
Direction of rotation, drive to output =
Max. efficiency 72 %
Average backlash no load 1^∘
Mass inertia 15gcm^2
Gearhead length (L1) 70 mm
Max. transmittable power (continuous) 140 W
Max. transmittable power (intermittent) 200 W
Values at nominal voltage
Nominal voltage 48 V
No load speed 9840 rpm
No load current 193 mA
Nominal speed 9150 rpm
Nominal torque (max. continuous torque) 165 mNm
Nominal current (max. continuous current) 3.69 A
Stall torque 2760 mNm
Stall current 59.6 A
Max. efficiency 89 %
Extrait de la note de calcul d'alimentation de contrôleur
brushless « INTECNO »
Note : dans les applications muti-axes, la puissance de l'alimentation peut être réduite de 30%. Si la puissance maximale calculée est supérieure à 6 kVA, contacter le fabricant.
Moteurs d'épaule fournisseur « Green Line » référence BL210.480
Model Poles Phases Rated voltage Rated speed Rated torque Rated power Peak torque Rated current
[V] [min^(− 1)] [Nm] [W] [Nm] [A]
BL210.480 8 3 48 3000 2.1 660 6.3 18.7
Model Peak current Line to line resistance Line to line inductance Torque constant Back EMF Rotor inertia Weight
[A] Ω [mH] [Nm/A] V/k RPM [gcm^2] [kg]
BL210.480 56 0.115 0.31 0.112 9.5 2.4 4.2
Document technique DT2 : données relatives à la mesure de la position des articulations
  • -Résolveur Maxon
  • Encodeur AU6805
L'encodeur AU6805 est un circuit de conversion R/D (Resolver to Digital). Utilisé avec un résolveur brushless (BRX) tel que Singlsyn, Smartsyn, etc. Il convertit le signal électrique correspondant à l'angle de rotation mécanique du résolveur en un signal numérique.
Ce circuit utilise une méthode de conversion R/D "Digital Tracking Method" et permet d'assurer de nombreux types de détection d'angles de rotation à bas coût et avec une grande fiabilité.
  • Conception "tout en un"
Élimine les phases d'ajustement du signal d'excitation (déphasage maximal admissible : ±45° avec une période du signal d'excitation correspondant à 360°.
-Large choix de signaux de sortie
Binary-code Parallel 12bit Bus compatible、Positive logic+A,B,Z + Serial I/F
Chronogrammes typiques des signaux de sortie d'un encodeur (type A,B,Z)

Tension d'excitation issue du circuit AU6805 (avec R = 150Ω )
Le signal d'excitation est appliqué au bobinage du rotor du résolveur, lequel est une inductance imparfaite et présente une résistance typique de 50Ω à 200Ω et une partie réactive comprise entre 0Ω et 200Ω. Par exemple, l'impédance du résolveur Tamagawa TS2620N21E11 est 70Ω + j ⋅ 100Ω à 10 kHz .
Une alimentation séparée (VEXT) est nécessaire pour l'amplificateur d'excitation, en plus de l'alimentation +5 V du AU680.
Une valeur d'alimentation d'excitation plus élevée entraine une tension de sorte du résolveur plus élevée et cela permet d'améliorer le S/N rapport signal/bruit ou l'immunité au bruit.
Cela signifie qu'il faut une alimentation DC adaptée. Par exemple, un signal d'excitation de 7Vrms(= 20Vp − p : 7 V × √2 × 2) nécessite +24 V pour une source simple ou ± 15 V pour une alimentation symétrique.
Document technique DT3 : diagrammes de Bode du filtre MFB
Figure n°30 : décomposition de la boucle de contrôle des courants d'induit du moteur synchrone autopiloté MAXON
L'onduleur de tension triphasé et la commande d'autopilotage de l'onduleur sont des sous-ensembles du contrôleur FBL 2360. Seuls le synchro-résolveur et la chaîne d'acquisition de la position angulaire du rotor sont externes au contrôleur FBL2360.

Présentation de la boucle de contrôle des courants au stator

La stratégie de commande de la boucle présentée sur la figure n°30 est de contrôler les trois courants i_1(t), i_2(t) et i_3(t) en amplitude mais aussi de garantir que le flux statorique créé par ces trois courants soit en quadrature avec le flux rotorique créé ici par des aimants permanents. Cette quadrature des flux assure un couple moteur optimum pour une valeur de courant statorique donné.
La boucle de contrôle de couple étudiée est constituée du moteur synchrone MAXON alimenté par un onduleur de tension triphasé. Une électronique de commande contrôle le courant dans les enroulements statoriques. La figure n°30 illustre la configuration de ce sous-système. Les grandeurs étudiées sont repérées sur la figure n°30.
  • - U_c : tension d'alimentation continue de l'onduleur triphasé.
  • - v_1(t) : tension simple au stator du moteur synchrone.
  • - i_1(t), i_2(t) et i_3(t) : courants lignes d'alimentation du moteur synchrone.
  • - Ω_m : vitesse angulaire du rotor.
  • - θ_m : position angulaire du rotor, grandeur obtenue par traitement des signaux issus d'un synchro-résolveur solidaire de l'axe du rotor.
  • - θ_e : angle des grandeurs électriques, θ_e = p ⋅ θ_m, p nombre de paire(s) de pôles.
  • - i_(cons 1)(t), respectivement i_(cons 2)(t) : consigne du courant de la phase 1, respectivement de la phase 2 du moteur; consignes calculées par l'électronique de commande à partir de la consigne I_(max) d'amplitude du courant et de l'angle électrique θ_e issu de la chaîne de mesure de la position angulaire du rotor θ_m.
  • - u_(mod 1)(t), u_(mod 2)(t), u_(mod3)(t) : signaux modulants de la commande M.L.I. sinusoïdale ; signaux de commande calculés à partir de la différence consigne de courant moins mesure du courant (exemple : i_(cons 1)(t) − i_1(t) pour u_(mod 1)(t) ), et de la correction proportionnelle et intégrale. Les courants sont équilibrés donc :
    u_(mod3)(t) = − u_(mod 1)(t) − u_(mod 2)(t).
  • - f_(1u), f_(11), f_(2u), f_(21), f_(3u), f_(31) : signaux de sortie de la commande M.L.I. sinusoïdale ; signaux de commande des six interrupteurs de l'onduleur triphasé représentés de façon symbolique sous forme logique.
Document technique DT5 : modèle Scilab/Xcos de la boucle de contrôle courant
Figure n°31 : modèle de simulation graphique Scilab/Xcos de la boucle de contrôle des courants du moteur synchrone autopiloté MAXON
La figure n°31 repésente le modèle de simulation Scilab/Xcos de la boucle de contrôle des courants du moteur synchrone MAXON. Ce modèle est constitué de trois blocs principaux :
  • -le moteur synchrone MAXON ;
  • -l'onduleur triphasé ;
  • -le bloc de commande en autopilotage.
Description des entrées/sorties des différents blocs
Moteur synchrone MAXON :
  • - v_1, v_2, v_3, tensions simples triphasées d'alimentation des enroulements statoriques ;
  • - C_r, couple résistant exerçé sur l'arbre moteur ;
  • - C_(em), couple électromagnétique développé par le moteur ;
  • -Omega (Ω_m), vitesse angulaire de l'arbre moteur ;
  • - i_1, i_2, i_3, courants statoriques.
Onduleur tripasé :
  • - f_(1u), f_(1l), f_(2u), signaux de commande de l'onduleur triphasé ;
  • - v_1, v_2, v_3, tensions simples triphasées d'alimentation des enroulements statoriques.
Commande d'autopilotage du moteur synchrone :
  • - I_(max), consigne d'amplitude des courants statoriques ;
  • -Phi_c , phase à l'origine des courants lignes, ici nulle ;
  • -teta_e (θ_e), angle électrique issu de la mesure de la position angulaire de rotor θ_m;
  • - i_1, i_2, i_3, mesures des courants statoriques ;
  • - f_(1u), f_(1l), f_(2u), signaux de commande de l'onduleur triphasé ;
  • - i_(cons 1), consigne de la boucle de contrôle du courant ligne i_1(t).

Document technique DT6 : documentation du moteur MAXON référencé EC 393025

EC 40∅40 mm, brushless, 170 Watt
Values at nominal voltage
1 Nominal voltage V 15 24 42 48
2 No load speed rpm 9840 9840 10100 9840
3 No load current mA 617 386 230 193
4 Nominal speed rpm 9090 9120 9380 9150
5 Nominal torque (max. continuous torque) mNm 171 165 161 165
6 Nominal current (max. continuous current) A 12.2 7.39 4.24 3.69
7 Stall torque mNm 2620 2660 2740 2760
8 Stall current A 181 115 69.1 59.6
9 Max. efficiency % 89 89 89 89
Characteristics
10 Terminal resistance phase to phase Ω 0.0829 0.209 0.608 0.806
11 Terminal inductance phase to phase mH 0.0329 0.0843 0.246 0.337
12 Torque constant mNm/A 14.5 23.2 39.6 46.4
13 Speed constant rpm/V 659 412 241 206
14 Speed/torque gradient rpm/mNm 3.77 3.71 3.7 3.57
15 Mechanical time constant ms 2.12 2.09 2.08 2.01
16 Rotor inertia gcm^2 53.8 53.8 53.8 53.8
Specifications
Thermal data
Thermal resistance housing-ambient 5.21 K/W
Thermal resistance winding-housing 1.05 K/W
Thermal time constant winding 18.7 s
Thermal time constant motor 1910 s
Ambient temperature -40...+100°C
Max. winding temperature + 155^∘C
Mechanical data (preloaded ball bearings)
23 Max. speed 18000 rpm
24 Axial play at axial load < 9 N 0 mm
> 9 N max. 0.14 mm
25 Radial play preloaded
26 Max. axial load (dynamic) 23 N
27 Max. force for press fits (static) (static, shaft supported) 106 N 5500 N
28 Max. radial load, 5 mm from flange 75 N
Other specifications
29 Number of pole pairs 1
30 Number of phases 3
31 Weight of motor 580 g
Values listed in the table are nominal.
red Motor winding 1 Pin 1
black Motor winding 2 Pin 2
white Motor winding 3 Pin 3
N.C. Pin 4
Connector Part number
Molex 39-01-2040
Connection sensors (Cable AWG 26)
yellow Hall sensor 1 Pin 1
brown Hall sensor 2 Pin 2
grey Hall sensor 3 Pin 3
blue GND Pin 4
green V_(Hal) 3... 24 VDC Pin 5
N.C. Pin 6
Connector Part number
Molex 430-25-0600
Wiring diagram for Hall sensors see p. 41
Operating Range
Connection motor (Cable AWG 16)
maxon Modular System
Comments
Overview on page 28-36
Document technique DT7 : note d'informations sur le langage à script Python3
La documentation ci-dessous est issue de l'aide Python sur les méthodes trigonométriques math.atan(x) et math.atan2(y,x).
math.atan(x)
Return the arc tangent of x, in radians.
math.atan2( y, x )
Return atan(y / x), in radians. The result is between -pi and pi. The vector in the plane from the origin to point ( x, y ) makes this angle with the positive X axis. The point of atan2() is that the signs of both inputs are known to it, so it can compute the correct quadrant for the angle. For example, atan(1) and atan2(1, 1) are both pi/4, but atan2(-1, -1) is -3*pi/4.
La copie d'écran d'une console IPython de la figure n°32 permet d'identifier l'écriture de certaines constantes mathématiques et de certaines fonctions trigonométriques.
Remarque
In [x] : est l'invite de commande d'une console IPython en attente de l'entrée d'une expression Python.
Out[x] : affiche le résultat après l'interprétation et l'exécution de cette expression par le noyau Python.
Figure n°32 : extraits d'une console Python

Document technique DT8 : note d'informations sur le langage à script Scilab

La documentation ci-dessous est issue de l'aide Scilab sur la fonction trigonométrique atan(x) et atan(y, x).
atan
    2-quadrant and 4-quadrant inverse tangent
Syntax
    phi = atan(x)
    phi = atan(y, x)
Arguments
x : a real
phi : a real
x, y : a real scalars
phi : a real scalar
Description
The first form computes the 2-quadrant inverse tangent, which is the inverse of tan (phi). For real x, phi is in the interval (− π/2, π/2). The second form computes the 4-quadrant arctangent (atan2 in Fortran), this is, it returns the argument (angle) of the complex number x+i*y. The range of atan(y, x) is (- n, n]. For real arguments, both forms yield identical values if x > 0.
La copie d'écran d'une console Scilab de la figure n°33 permet d'identifier l'écriture de certaines constantes mathématiques et de certaines fonctions trigonométriques.
Remarques
--> est l'invite de commande d'une console Scilab en attente de l'entrée d'une expression Scilab. ans = affiche le résultat après l'interprétation et l'exécution de cette expression par le noyau Scilab.
Console Scilab 6.0.2
--> %pi
    %pi =
        3.1415927
--> sqrt(2)
    ans =
        1.4142136
--> cos(%pi/4)
    ans =
        0.7071068
--> atan(-1)
    ans =
        -0-7853982
--> atan(1, -1)
    ans =
        2.3561945
--> |
Figure n°33 : extraits console Scilab

Document technique DT9 : données relatives aux contrôleurs moteurs

Configuration et utilisation des encodeurs

Sur les contrôleurs moteurs equipés d'entrées d'encodage, les encodeurs externes permettent une gamme de configurations pour le contrôle de mouvement de précision. Le diagramme ci-dessous présente la chaîne de traitement pour chaque entrée d'encodage.

Les deux signaux en quadrature de l'encodeur sont traités afin de générer un comptage / décomptage dépendant du sens de rotation du moteur. Le comptage est réalisé par un compteur 32 bits. Ce compteur peut être directement lu en utilisant les commandes série, ou utilisé comme retour de position dans la boucle du mode position.

Extrait de la liste d'instructions

BLFB - Encodeur ou capteur à effet Hall pour boucle de régulation Hexcode : 3B
Description
Ce paramètre est utilisé pour définir quel capteur de retour est utilisé pour mesurer la vitesse/position. Sur les moteurs brushless equipés d'encodeurs optiques, ce paramètre permet de choisir l'encodeur ou les capteurs brushless (ie Hall, sin/cos, or SPI) comme source du retour de vitesse/position. Les encodeurs permettent un meilleure précision et doivent être utilisés autant que possible. Le choix «Other» est aussi utilisé pour sélectioneer les impulsions « Pulse » ou un retour analogique dans certains modes « position ».
Syntax Serial: ^BLFB cc nn ~BLFB
Syntax Scripting: setconfig(_BLFB, cc, nn)
Number of Arguments: 2
Argument 1: Channel
Argument 2: Sensor
Type: Unsigned 8-bit
Min: 0 Max: 1 Default: 0 = Other Sensor
Where: cc = Motor channel
nn = 0: Other feedback 1: Brushless sensor feedback (Hall, SPI, Sin/Cos)
Description
Retourne les tensions mesurées en trois points du contrôleur : la tension de la batterie principale, la tension interne au niveau de l'étage de commande du moteur, et la tension disponible sur la sortie 5 V du connecteur SubD15 ou 25 en façade. Par sécurité, la tension au niveau de l'étage de commande du moteur doit rester en dessous de 12 V. La sortie 5 V correspondra à la tension interne de 5 V du contrôleur moins le seuil de la diode utilisée pour la protection, ce qui donnera environ 4,7 V. La tension de batterie est surveillée pour détecter des conditions de soustension ou de surtension.
Syntax Serial: ?V [ee]
Argument: SensorNumber
    Min: 1 Max: 3
Syntax Scripting: result = getvalue(_V, ee)
    result = getvalue(_VOLTS, ee)
Reply:
V=nn Type: Unsigned 16-bit
ee =
1 : Internal volts
2 : Battery volts
3 : 5V output
nn = Volts * 10 for internal and battery volts. Milivolts for 5V output
Example:
Q: ?V
R:V=135:246:4730
Q: ?V 3
R:V=4730
EX - Emergency Stop Alias : ESTOPHexcode : 0E CANOpen id : 0x200C
Description
La commande EX entrainera l'arrêt d'urgence du contrôleur de la même manière que si un arrêt d'urgence câblé était détecté sur l'entrée physique d'arrêt d'urgence. Cet état d'arrêt d'urgence sera maintenu jusqu'à ce qu'un reset ou une commande de libération « MG » soit reçu.
Syntax Serial: !EX
Syntax Scripting: setcommand(_EX, 1) setcommand(_ESTOP, 1)
Number of Arguments: 0
BEE - Stockage utilisateur dans la RAM sauvegardée sur batterie HexCode : 64
Description
Sauvegarde et récupère les données utilisateur dans la RAM sauvegardée sur batterie. Le stockage est quasi-permanent, limité seulement par la batterie embarquée (usuellement plusieurs années). Contrairement au stockage sur mémoire Flash utilisant les commandes de configuration de type EE, il n'y a pas de limite sur la quantité ou la fréquence des cycles d'écriture - lecture. Cette fonctionnalité est valable uniquement sur certains modèles, se référer à la documentation technique. Une batterie doit être installée sur le contrôleur afin de rendre ce mode de fonctionnement possible.
Syntax Serial: ^BEE aa dd ~BEE aa
Syntax Scripting: setconfig(_BEE, aa, dd)
Number of Arguments: 2
Argument 1: Address
Where: aa = Address
dd = Data
Example:
^BEE 1555 : Store value 555 in Battery Backed RAM location 1 ~BEE 1: Read data from RAM location 1
Min: 1
Max: Total Number of BEE
Argument 2: Value
Type: Signed 16-bit
Min: -32768
Max: 32767
Default: 0
EE - Sauvegarde des données utilisateur dans la mémoire Flash HexCode : 00
Description
Lit et écrit les données définies par l'utilisateur comme étant à sauvegarder dans la mémoire Flash. La capacité de stockage est typiquement de 32 mots de 16 bits mais peut varier d'un modèle à l'autre. La commande modifie les données contenues dans la zone de stockage RAM. Les commandes de type maintenance %EESAV ET celle en temps réel !EES doivent être utilisées pour copier les données de la zone de stockage RAM vers la mémoire Flash. La mémoire Flash est recopiée dans la RAM à chaque mise sous tension.
Syntax Serial: ^EE aa dd ~EE aa
Syntax Scripting: setconfig(_EE, aa, dd)
Number of Arguments: 2
Argument 1: Address
Min: 1
Argument 2: Data
Type: Signed 16-bit
Min: -32768
Max: +32767
Default: 0
Note
Ne pas transférer les données vers la mémoire Flash avec %EESAV ou !EES à haute fréquence car le nombre de cycles de la mémoire Flash est limité à environ 10000. Éviter de sauvegarder dans la Flash alors que le produit est utilisé pour des opérations critiques. Écrire dans les adresses 1 et supérieures. Écrire à l'adresse 0 remplira toute la RAM avec la valeur.

If...then traitement

If...then traitement est l'opérateur conditionnel de base. Si l'expression du If est vrai, les actions du block If sont exécutées. Si l'expression du If est fausse, chacune des expressions Eleslf est évaluée. Si seule une des expressions Elself est vraie, le block correspondant est exécuté. Si aucune expression n'est vraie et qu'il y a une expression Else, le block Else correspondant est exécuté. Une fois un block exécuté, le programme passe à la fin du lf...Then traitement.
La version en ligne du If...Then traitement a un traitement simple si l'expression est vraie, et un traitement optionnel à exécuter si l'expression est fausse.
Par exemple :
  • -Line If
If <condition> Then <stmt> [Else <stmt>]
  • Block If
If <condition> [Then]
    <block>
[ElseIf <condition> [Then]
    <block>]
[ElseIf <condition> [Then]
    <block>]
...
[Else
    <block>]
End If
Dim a As Integer
Dim b As Integer
a = 10
b = 20
' Block If statement.
If a < b Then
    a = b

Scripting

TABLE 11.
Parameter Measure Point Min Typ Max Units
Scripting Flash Memory Internal 32K Bytes
Max Basic Language programs Internal 2000 3000 Lines
Integer Variables Internal 4096 Words (1)
Boolean Variables Internal 8192 Symbols
Execution Speed Internal 50000 100000 Lines/s
Note 1: 32-bit words

Interface CANopen du contrôleur

Utilisation et intérêt de CANopen
Le protocole CANopen permet de connecter plusieurs contrôleurs sur un réseau unifié et extensible. Ses capacités souples de configuration offrent un accès facile au paramétrage des constituants du réseau un transfert de données en temps réel (cyclique ou sur commande évenementielle).
Les avantages de CANopen incluent :
  • -standard EN50325-4 ;
  • -largement implémenté et non propriétaire ;
  • -hautement extensible ;
  • -offre une structure fliexible (peut être utilisé dans de nombreux domaines d'application) ;
  • -adapté aux structures décentralisées ;
  • -large palette d'outil de monitoring et de solutions.

Connexion CAN

La connexion sur un bus CAN est aussi simple que le montre la figure ci-dessus. Les résistances de terminaison de 120 ohms doivent être insérées à chaque extrémité du câble. Le câble réseau CAN peut aller jusqu'à 120 m de long. Se référer aux spécifications CAN pour les longueurs maximales selon les débits souhaités.
Configuration du bus CAN
Pour configurer les paramètres de communition via l'utilitaire RoborunPlus PC, votre contrôleur doit être connecté à un PC via un port RS232/USB.
Utiliser le menu CAN dans la table de configuration afin d'autoriser le mode CANopen. De plus, cet utilitaire peut-être utilisé pour configurer les paramètres suivants :
  • -Node ID ;
  • -Bit rate ;
  • -Heartbeat(ms) ;
  • -Autostart ;
  • -TPDO Enable and Send rate.
Node ID
Chaque équipement du réseau doit avoir un identifiant unique Node ID, compris entre 1 et 127. La valeur 0 est utilisée pour la diffusion (broadcast) des messages et ne peut être assignée à un élément.
Bit Rate
Le bus CANopen supporte des vitesses de transmission de 10Kbps jusqu'à 1Mbps. La vitesse par défaut est réglée à 125Kbps. Les vitesses supportées par le contôleur sont :
  • -1000K
  • -800K
  • -500K
  • -250K
  • -125K
Commandes accessibles via CANopen
Presque toutes les commandes et requètes temps-réel du contrôleur accessibles via la communication série/USB sont accessibles via CANopen. Les commandes utiles pour le sujet sont listées page suivante.
Type de messages CANopen
Le contrôleur opérant en mode CANopen peut accepter les types de messages suivants :
  • -Service Data Object (SDO messages) pour écrire / lire des valeurs de paramètres ;
  • -Process Data Object (PDO messages) pour tramettre automatiquement des paramètress ET/OU accepter des commandes « runtime » ;
  • -Network Management (NMT) comme défini dans les spécifications CANopen.
Service Data Object (SDO) messages d'écriture / lecture
Les requètes et commandes temps-réel peuvent être envoyées au contrôleur en utilisant ces messages de type SDO.
La liste des commandes accessibles avec les messages SDO peut être trouvée dans le tableau « Object dictionnary » page suivante avec la description du format des données associées dans la colonne Data type :
  • -U = Unsigned ;
  • -S = Signed ;
  • -WO = Word ;
  • -n = n bits.

Object dictionnary (extrait)

TABLE 17-3. Motor Controllers Object Dictionary
Index Sub (Hex) Entry Name Data Type & Access Command Name
Runtime Commands
0x2000 01 Set Motor Command, ch1 CG CANGO
02 Set Motor Command, ch2
0x2001 01 to mm (1) Set Position, ch. 1 S32 WO P
0 × 2002 01 to mm (1) Set Velocity S16 WO S
0x2003 01 to ee (2) Set Encoder Counter S32 WO C
0x2004 01 to mm (1) Set Brushless Counter S32 WO CB
0x2005 01 -vv (3) Set User Integer Variable S32 WO VAR
0x2006 01 to mm (1) Set Acceleration S32 WO AC
0x2007 01 to mm (1) Set Deceleration S32 WO DC
0x2008 00 Set All Digital Out bits U8 WO DS
0x2009 00 Set Individual Digital Out bits U8 WO D1
0 × 200 A 00 Reset Individual Digital Out bits U8 WO D0
0x200B 01 to ee (2) Load Home Counter U8 WO H
0x200C 00 Emergency Shutdown U8 WO EX
0x200D 00 Release Shutdown U8 WO MG
0x200E 00 Stop in all modes U8 WO MS
0x200F 01 to mm (1) Set Pos Relative S32 WO PR

Détails d'un message de type SDO

La trame d'un message SDO peut facilement être créée manuellement et utilisée pour envoyer des commandes et requêtes à un appareil Robotec. Les indications ci-dessous sont une description simplifiée du mécanisme CANopen SDO.
Une requête/commande vers un appareil Robotec peut être analysée comme suit :
Header DLC Payload
Byte0 Byte1-2 Byte 3 Bytes4-7
bits 4-7 bits2-3 bits0-1
0x600+nd 8 css n xx index subindex data
  • -nd = Node Id de destination ;
  • -ccs est l'indicateur de commande (2 = commande, 4 = requète) ;
  • -n est le nombre d'octets de la partie « Data » qui ne contient pas de données ;
  • -xx n'est pas nécessaire pour les opérations basiques (cf standard CANopen) ;
  • -index est l'index du dictionnaire de la donnée à laquelle on souhaite accéder ;
  • -subindex est le subindex de la variable du dictionnaire objet ;
  • -data contient la donnée à charger.
La réponse de l'appareil Robotec est décrite ci -dessous :
Header DLC Payload
Byte0 Byte1-2 Byte 3 Bytes4-7
bits 4-7 bits2-3 bits0-1
0x580+nd 8 css n xx index subindex Data
  • -nd = Node Id de la source ;
  • -ccs est l'indicateur de commande client (4 = réponse à une requête, 6 = commande réalisée avec succès, 8 = erreur dans le mesage reçu) ;
  • -n est le nombre d'octets de la partie « Data » qui ne contient pas de données ;
  • -xx n'est pas nécessaire pour les opérations basiques (cf standard CANopen) ;
  • -index est l'index du dictionnaire de la donnée à laquelle on souhaite accéder ;
  • -subindex est le subindex de la variable du dictionnaire objet ;
  • -data contient la donnée à charger, applicable seulement si css = 4.
Exemple : positionner à la valeur 10 le compteur d'encodage 2 du node 1
Trame envoyée :
Header DLC Payload
Byte0 Byte1-2 Byte 3 Bytes4-7
bits 4-7 bits2-3 bits0-1
0x600+1 8 2 0 0 0 × 2003 0x02 0x0A
601h 8 20 0320 02 0A 000000
Analyse :
  • -nd = 1, numéro du nœud de destination ;
  • - ccs = 2, indiquant une commande ;
  • - n = 0, car les 4 octets de la donnée sont utilisés (32 bits signés)
  • -index = 0 × 2003 et subindex = 0 × 02 conformément au dictionnaire d'objet
La réponse sera :
Header DLC Payload
Byte0 Byte1-2 Byte 3 Bytes4-7
bits 4-7 bits2-3 bits0-1
0 × 580 + 1 8 6 0 0 0 × 2003 0x02 0x00
581h 8 60 0320 02 00000000

Tous les documents réponses sont à rendre, même non complétés.

Figure n°34 : diagramme vectoriel de Behn-Eschenburg du moteur synchrone à compléter
Figure n°35 : diagramme vectoriel de Behn-Eschenburg du moteur synchrone en mode autopilotage à compléter
Figure n°36 : boucle de contrôle du courant à compléter

Document réponse DR2 : script Python3 à compléter

import numpy as np
import matplotlib.pyplot as plt
import math
# Nom du fichier CSV à traiter
csvfilename = 'graphes.txt'
# Récupérer le nombre nrow de lignes du fichier CSV
with open( csvfilename, newline='') as csvfile:
    csvreader = csv.reader(csvfile)
    nrow = 0
    for row in csvreader:
        nrow += 1
# Initialiser les tableaux de nrow éléments nuls de type flottant
timex = np.zeros(nrow, dtype=float) # Tableau de l'axe des temps : "timex"
il = np.zeros(nrow, dtype=float) # Tableau des mesures du courant il
i2 = np.zeros(nrow, dtype=float) # Tableau des mesures du courant i2
i3 = np.zeros(nrow, dtype=float) # Tableau des mesures du courant i3
tetaRotor = np.zeros(nrow, dtype=float) # Tableau de la position angulaire du rotor
# Remplir les tableaux avec les mesures du fichier CSV
# Le fichier CSV comporte 10 colonnes : temps, Cem, omega, flu, vl, il, i2, i3, iconsl,
with open(csvfilename, newline='') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=' ', skipinitialspace=True, quotechar='|')
    nrow = 0
    for row in csvreader:
        timex[nrow] = float(row[0]) # colonne 0 : temps (s)
        il[nrow] = float(row[5]) # colonne 5 : courant il (A)
        i2[nrow] = float(row[6]) # colonne 6 : courant i2 (A)
        i3[nrow] = float(row[7]) # colonne 7 : courant i3 (A)
        tetaRotor[nrow] = float(row[9]) # colonne 9 : position du rotor (radian)
        nrow += 1
# Initialiser le tableau de la position angulaire du flux d'induit
tetaPhis = np.zeros(nrow, dtype=float)
# Calculer les valeurs du tableau tetaPhis de la position angulaire du flux d'induit
# Boucle de nrow itérations, l'indice de boucle i varie de 0 à nrow-l
for i in range(nrow):
# Partie à modifier : Le corps de la boucle for est constitué de toutes les instructions
# respectant la même indentation, ici une tabulation
# Afficher la position angulaire du flux d'induit et la position du rotor
plt.subplots()
plt.title('Positions du rotor et du flux statorique (deg)')
plt.grid(True)
plt.xlabel('temps (s)')
plt.ylabel('Position (deg)')
plt.plot(timex, tetaPhis, linestyle='-', marker=',')
plt.plot(timex, tetaRotor, linestyle='-', marker='.')
plt.show()

Tous les documents réponses sont à rendre, même non complétés.

Document réponse DR3 : script Scilab à compléter

// Nom du fichier CSV à traiter
chdir("D:\MyWorks\Scilab_6.0_works\AfficherGraphesAgregInt2019\");
csvfilename = 'graphes_espace.csv';
// Lecture du fichier CSV, valeurs rangées dans le tableau "Mesures"
// de nLig lignes (nombre d'instants de mesure) et nCol colonnes
// Le fichier CSV comporte 10 colonnes : temps, Cem, omega, f1u, v1, i1, i2, i3, icons1, tetam
Mesures = csvRead(csvfilename, ' ');
dimTab = size(Mesures);
nLig = dimTab(1); // Nombre de lignes du fichiers CSV
nCol = dimTab(2); // Nombre de colonnes du fichier CSV
// Initialiser les tableaux unilignes de flottants
timex = []; // Tableau de l'axe des temps : "timex"
i1 =[]; // Tableau des mesures du courant i1
i2 = []; //Tableau des mesures du courant i2
i3 = []; //]Tableau des mesures du courant i3
tetaPhis = []; // Tableau de la position du champ statorique
tetaRotor = []; //Tableau de la position angulaire du rotor
// Remplir les tableaux avec les mesures du fichier CSV présentes dans le tableau "Mesures"
// Le fichier CSV comporte 10 colonnes : temps, Cem, omega, f1u, v1, i1, i2, i3, icons1, tetam
timex = Mesures(1:nLig, 1); // colonne 1 : temps (s)
i1 = Mesures(1:nLig, 6); // colonne 6 : courant i1 (A)
i2 = Mesures(1:nLig, 7); // colonne 7 : courant i2 (A)
i3 = Mesures(1:nLig, 8); // colonne 8 : courant i3 (A)
tetaRotor = Mesures(1:nLig, 10); // colonne 10 : position du rotor (radian)
// Calculer les valeurs du tableau "tetaPhis" de la position angulaire du flux d'induit
// Boucle de nLig itérations, l'indice de boucle i varie de 1 à nLig
for i=1:nLig;
    // Partie à modifier : Le corps de la boucle "for" est constitué de toutes les instructions
    // comprises entre les deux lignes débutant par les mots clés "for" et "end"
end;
// Afficher la position angulaire du flux d'induit et la position du rotor
fig_1 = scf(1); //Création figure n°1, figure par défaut
clf;
titre_fig = strcat(["Fig n°1 : Positions du rotor et du champ statorique ", " Nbre points
string(nLig), ", ", "Te (s) = ", string(timex(1))]);
xname(titre_fig);
plot2d(timex, tetaPhis, style=[color("green")]);
plot2d(timex, tetaRotor, style=[color("red")]);

Document réponse DR4

Trame de commande d'arrêt d'urgence à compléter
Header DLC Payload
Byte0 Byte1•2 Byte 3 Bytes4-7
bits 4.7 bits2-3 bits0-1
Trame d'acquittement à compléter
Header DLC Payload
Byte0 Byte1•2 Byte 3 Bytes4-7
bits 4.7 bits2-3 bits0-1

Pas de description pour le moment