44
Résumé Dans le cadre de ce projet de fin d'études, nous allons mettre en place les solutions pratiques pour automatiser une table de découpe plasma: de la génération du code machine à la commande des mouvements moteurs à travers un Directeur de commande numérique. 1

Rapport Fnal Aevc Indexes

Embed Size (px)

Citation preview

Page 1: Rapport Fnal Aevc Indexes

Résumé

Dans le cadre de ce projet de fin d'études, nous allons mettre en place les solutions pratiques pour automatiser une table de découpe plasma: de la génération du code machine à la commande des mouvements moteurs à travers un Directeur de commande numérique.

1

Page 2: Rapport Fnal Aevc Indexes

Avant Propos

Remercier l'équipe d'emc et surtout jeff

2

Page 3: Rapport Fnal Aevc Indexes

Table des matières 1 Chapitre 1 : Génération du code machine........................................................................................6

1.1 Machine à Commande Numérique par Calculateur:.................................................................6 1.2 Procédé de découpe Plasma:.....................................................................................................7 1.3 CAO et découpe........................................................................................................................7

1.3.1 Structure d'un fichier DXF................................................................................................7 1.3.2 Lecture des Fichiers DXF:................................................................................................8

1.4 FAO et découpe:.......................................................................................................................8 1.4.1 Code-G (ISO 6983).........................................................................................................10

1.5 Optimisation du trajet :...........................................................................................................10 1.6 Optimisation du trajet:............................................................................................................11

1.6.1 Méthodes de résolution:..................................................................................................11 1.6.2 Critère de choix:..............................................................................................................13

1.7 Algorithmes Génétiques:.........................................................................................................13 1.7.1 Présentation:....................................................................................................................13 1.7.2 Principe: .........................................................................................................................14

2 Chapitre 2: Commande de la machine............................................................................................16 2.1 Type de commande:................................................................................................................16 2.2 Présentation du moteur pas à pas:...........................................................................................17

2.2.1 Type de moteur pas à pas :..............................................................................................17 2.2.2 Principe de fonctionnement:...........................................................................................18 2.2.3 Caractéristiques:..............................................................................................................20

2.3 Amélioration des performances:.............................................................................................21 2.3.1 Méthode à base de résistance (L/R):...............................................................................21 2.3.2 Méthode à base de deux alimentations:..........................................................................21 2.3.3 Méthode à base de hacheur:............................................................................................22

2.4 Directeur de Commande Numérique EMC2:.........................................................................24 2.4.1 Fonctionnalités :..............................................................................................................24 2.4.2 Interpréteur code-G:........................................................................................................26 2.4.3 Planificateur de trajectoire:.............................................................................................26 2.4.4 Couche d'abstraction matérielle HAL:............................................................................26 2.4.5 Communication NML:....................................................................................................28 2.4.6 Port de commande:..........................................................................................................28

3 Chapitre 3 :Réalisation...................................................................................................................30 3.1 Génération du code machine:.................................................................................................30

3.1.1 Envirennoment de développement:.................................................................................32 3.1.2 Interface graphique:........................................................................................................32 3.1.3 Résultats de l'algorithme génétique:...............................................................................33

3.2 Déploiement d'EMC2:............................................................................................................35 3.3 Carte électronique de commande:...........................................................................................36

3.3.1 Choix des circuits:...........................................................................................................36 3.3.2 Couple Nécessaire:..........................................................................................................37 3.3.3 Description de la carte:...................................................................................................39

3

Page 4: Rapport Fnal Aevc Indexes

Index des tablesTableau 1: Principales sections d'un fichier DXF.................................................................................8Tableau 2: Principales commandes G utilisées...................................................................................10Tableau 3: Position du point d'amorçage suivant le contour..............................................................31Tableau 4: Broche en sortie et signal correspondant..........................................................................35Tableau 5: Broche en entrée et signal correspondant.........................................................................35Tableau 6: Possibles CI de commande du moteur..............................................................................36Tableau 7: Coefficient de frottement de différents matériaux[24].....................................................37

Index des figuresfigure 1.1: Station de découpe plasma..................................................................................................7figure 1.2: De l'idée vers la pièce.........................................................................................................8figure 1.3: Étapes antérieures à l'opération de découpe.....................................................................10figure 1.4: Trajet non optimisé de l'outil.............................................................................................11figure 1.5: Problème du voyageur de commerce................................................................................12figure 1.6: Croisement simple............................................................................................................14figure 1.7: Mutation............................................................................................................................14figure 1.8: Croisement double............................................................................................................14figure 1.9: Étapes d'un algorithme génétique [9]................................................................................15figure 2.1: Moteur pas à pas à double arbre.......................................................................................17figure 2.2: Principe de commande d'un unipolaire[13]......................................................................18figure 2.3: Principe de commande d'un bipolaire[13]........................................................................18figure 2.4: Principe de commande d'un bipolaire[13]........................................................................18figure 2.5: Réalisation d'un pas en mode pas complet........................................................................19figure 2.6: Séquence de commande micro-pas (1/4 de pas)...............................................................19figure 2.7: Modèle d'un moteur pas à pas...........................................................................................20figure 2.8: Courbe de montée du courant : I=f(t) [14]........................................................................20figure 2.9: Méthode à base de deux alimentations[14].......................................................................22figure 2.10: Méthode à base de hacheur et circuit de commande correspondant [15].......................22figure 2.11: Axis, une des nombreuses interfaces d'EMC2................................................................25figure 2.12: Visiualisation des siganux avec l'oscilloscope virtuel de HAL......................................27figure 2.13: Architecture simplifiée d'EMC2.....................................................................................29figure 3.1 : Pièce avant décomposition...............................................................................................30figure 3.2: Pièce après décomposition................................................................................................30figure 3.3: Algorithme d'assemblage des contours.............................................................................30figure 3.4: Insertion des points d'amorçage........................................................................................31figure 3.5: Position du point d'amorçage suivant le contour..............................................................31figure 3.6: Résultats de l'A.G pour les longs trajets...........................................................................33figure 3.7: Résultats pour les courts trajets.......................................................................................33figure 3.8: L'interface graphique de l'application...............................................................................34figure 3.9: Séquence de commande 1/2 pas.......................................................................................35figure 3.10: Séquence de commande pas complet..............................................................................35figure 3.11: Vitesse de découpe =f (épaisseur)...................................................................................38figure 3.12: Séparation galvanique et amplification de courant.........................................................39figure 3.13: Bloc UC3770B................................................................................................................39figure 3.14: Bloc d'alimentation.........................................................................................................40

4

Page 5: Rapport Fnal Aevc Indexes

Introduction Générale

L'utilisation des Machines à commande Numérique par Calculateur (CNC) s'est nettement démocratisée dans l'industrie depuis leur apparition dans les années 50. En effet l'emploi des CNC, comme remplaçant idéal des machines à opérateur ou à base de cames, est devenu incontournable dans un large éventail de domaines où la précision et les performances sont de mise.

Dans ce contexte et dans le cadre d'une collaboration entre Tunipack et l'ENISo (École Nationale d'Ingénieurs de Sousse), on s'est vu confié la tâche de mettre en place la commande d'une station de découpe plasma.

En effet Tunipack, l'un des principaux fabricants de machines d'emballage en Tunisie, désire utiliser une station de découpe plasma, pour ne plus avoir à sous-traiter la découpe de tôle de ses machines.

Nous commencerons notre exposé par décrire le processus permettant de passer de la modélisation à la réalisation d'une pièce, tout en mettant l'accent sur les spécificités de la découpe plasma.

Nous présenterons aussi quelques méthodes d'optimisation, dont essentiellement les algorithmes génétiques, qui nous servirons durant cette étape.

Nous nous intéresserons par la suite à la commande de la table de découpe. Nous énuméreront les stratégies de commande possibles avant d'opter pour une commande en boucle ouverte à base de moteurs pas à pas. Nous développerons aussi les méthodes d'amélioration de performances de ces derniers qui seront exploités dans notre carte de commande.

Dans un second temps nous introduirons le concept de Directeur de commande numérique et on passera à une description d'EMC2 qui s'acquittera de cette tâche.

Nous présenterons dans la partie réalisation le logiciel que nous avons développé en C++ pour générer le code machine. Puis, nous détaillerons le processus de déploiement d'EMC2 suivi par une description des différents étages de la carte de commande.

Et on finira pour conclure par présenter les perspectives de notre travail.

5

Page 6: Rapport Fnal Aevc Indexes

1 Chapitre 1 : Génération du code machine

1.1 Machine à Commande Numérique par Calculateur:

L'utilisation des Machines à commande Numérique par Calculateur (Computer Numerical Controlled) s'est démocratisée dans l'industrie depuis leur apparition dans les années 50. En effet l'emploi des CNC, comme remplaçant idéal des machines à opérateurs ou à base de cames, est devenue incontournable dans un large éventail de domaines, comme:

-Usinage: tournage et fraisage.

-Découpe et poinçonnage de tôle.

-Perçage des circuits imprimés...

Avant de réaliser une pièce finie à l'aide d'une CNC, on doit suivre deux étapes complémentaires:

-Conception de la pièce à l'aide d'un logiciel de Conception Assistée par Ordinateur (CAO)comme : AutoCad, Catia, Rhino, SolidWorks...

-Génération du code machine à l'aide d'un logiciel de Fabrication Assistée par Ordinateur (FAO):Code-G, APT ou plus récemment Step-NC sur Catia, MasterCAM, SolidCAM.

1.2 Procédé de découpe Plasma:

Le découpage plasma est utilisé dans le secteur de la métallurgie pour la découpe de tôles en métal sur des épaisseurs de 0 à 70 mm avec une précision de l'ordre de 0,2 mm.

Le procédé, similaire au soudage TIG (Tungsten Inert Gas), consiste à générer un arc électrique entre une électrode interne à la torche et la pièce métallique. Ce dernier, au contact d'un gaz inerte sortant de la torche, forme le jet de plasma. Le pouvoir calorifique du jet, d'environ 18 000°C, provoque une fusion quasi instantanée qui se propage sur toute l’épaisseur de la pièce permettant ainsi sa découpe [1].

6

figure 1.1: De l'idée vers la pièce

figure 1.2: Station de découpe plasma

Page 7: Rapport Fnal Aevc Indexes

Une station de découpe plasma est une CNC composée de 3 parties comme le montre la figure 1.2:

• Mécanique: La table (notée 4) qui transporte la torche (notée 2) et maintient la feuille de tôle.

• Électronique: Poste plasma (noté 1) et cartes de commandes.

• Informatique: Directeur de commandes numériques (noté 3).

1.3 CAO et découpe

L'étape CAO consiste à modéliser la pièce à découper en 3D ou 2D à l'aide d'un logiciel CAO.

La pièce est ensuite exportée vers un format de fichier 2D, vu que la 3ème dimension, qui représente l'épaisseur de tôle, est constante.

Il existe un grand nombre de format de fichiers 2D CAO. Favoriser un format à un autre dépend essentiellement de l'application.Pour notre application, on n'a pas eu à choisir le format à utiliser. En effet, es pièces de tôle à découper sont automatiquement générées par une macro sous SolidWorks qui exporte les fichiers nativement au format DXF1.

1.3.1 Format DXF :

DXF, est un format créé par la société Autodesk en 1982 servant à échanger des fichiers CAO entre systèmes n'utilisant pas le même format de fichier. Les spécifications du format ont été publiés lors de la sortie d'AutoCAD R13 en 1994[2].DXF sous présente sous la forme d'un fichier texte subdivisé en sections, les plus importantes étant:

Section Contenu

HEADER Informations générales sur le fichier

BLOCKS Définition d'entités se répétant mais dont les coordonnées changent

ENTITIES Définition de la géométrie des entités de la pièce: Lignes, Arcs, Cercles, Splines.

Tableau 1: Principales sections d'un fichier DXF

À noter que dans un fichier DXF chaque entité est enregistrée indépendamment des autres. Ainsi, en parcourant un fichier DXF l'apparition des entités suit l'ordre dans lequel elle ont été dessinées.

Comme les libraires distribuées par Autodesk, propriétaire du format, sont payantes, nous avons opté pour dxfLib. DxfLib est une bibliothèque open source ,distribuée sous licence GPL, qui en plus de la lecture des fichiers DXF prend en charge l'écriture dans ce format.

Cette librairie est notamment utilisée par QCad l'équivalent d'Autocad sur les plate-formes Unix.

1.4 FAO et découpe:

Avant d'obtenir une pièce de tôle découpée, l'étape de génération du code machine doit tenir compte de deux spécificités de la découpe plasma:

• Il faut un certain temps au plasma pour perforer la tôle. Ce temps dépend de l'épaisseur de la pièce et de la nature du mélange utilisé. Par conséquent une zone de « bavure », dans laquelle l'arc prend le temps de faire fondre le métal, est inévitablement créée. Cette zone, doit être placée à chaque fois dans la partie « déchets » comme le montre la partie encerclée en rouge sur la figure 1.3.

1 Drawing eXchange Format

7

Page 8: Rapport Fnal Aevc Indexes

• La découpe des pièces de tôle se fait rarement à l'unité. Ainsi les pièces sont d'abord placées les unes à côtés des autres, de façon à optimiser l'espace, dans une grande feuille de tôle. Une fois l'opération de découpe terminée, chaque pièce est récupérée individuellement.

Pour tenir compte de ces deux paramètres, 2 étapes doivent donc être réalisées entre la CAO et la FAO permettant:-Le placement de plusieurs pièces les unes à côté des autres dans une feuille de tôle (nesting).Ceci peut se faire d'une façon manuelle ou automatique en utilisant un algorithme minimisant l'encombrement des pièces dans la tôle.-L'insertion de points d'amorçage (lead-in) pour faire en sorte que les bavures restent dans la zone de déchet.Finalement, le fichier créé, composé des pièces placées dans la feuille de tôle contenant les points d'amorçage, doit être traduit en code machine le code-G.

8

figure 1.5: Étapes de génération du code machine

figure 1.3: Point d'amorçage de découpe

figure 1.4: Pièces placées dans une feuille de tôle

Page 9: Rapport Fnal Aevc Indexes

1.4.1 Format Code-G (ISO 6983)

À l'origine, le langage de programmation des MOCN était le code-G, développé par l'Electronic Industries Alliance (EIA) au début des années 60.Il fut finalement normalisé par l'ISO en 1980 sous la référence RS274D/ (ISO 6983). Compte tenu de l'absence de développements ultérieurs, de la grande variété des configurations de machines-outils et surtout de la normalisation tardive, peu de contrôleurs à commande numérique respectent ce standard [3].

Pour notre application nous n'aurons pas à exploiter toutes les commandes code-G, qui dépassent la centaine et permettent un large éventail de possibilités. Nous nous limiterons aux commandes suivantes :

Code G Fonction

G0 Déplacement linéaire rapide

G1 Déplacement linéaire à la vitesse programmée

G2 Interpolation circulaire en sens horaire

G3 Interpolation circulaire en sens anti-horaire

G21 Utilisation du millimètre comme unité

G28 Retour à l'origine

G90 Programmation en coordonnées absolues

G94 Définition de l'unité de vitesse d'avance par min

M2 Fin programme

M8 Mise en route de l'arrosage (utilisé pour activer le plasma)

M9 Arrêt de l'arrosage (utilisé pour désactiver le plasma)

F Définition de la vitesse de déplacement programmée

( ) Commentaires

Tableau 2: Principales commandes G

1.5 Optimisation du trajet :

Les performances du système du découpe, en terme de temps, dépendent du trajet de l'outil.Ainsi, un choix judicieux du parcours permettrait d'éviter les déplacements inutiles. L'optimisation du trajet nous permettrait d'éviter un scénario semblable à celui illustré par la figure ci-dessous.

9

figure 1.6: Trajet non optimisé de l'outil

Page 10: Rapport Fnal Aevc Indexes

En effet,une inspection visuelle de la figure 16. permet de constater que le chemin 1-2-3-4-5-6-7-8, entraîne une perte sensible de temps. Un trajet plus adéquat serait 1-3-5-7-6-8-2-4 voir 1-5-8-2-4-6-7-3.

Il paraît donc évident que des méthodes d'optimisation doivent être utilisées pour réduire le parcours de l'outil et garantir par suite un temps de découpe minimal.

1.6 Optimisation du trajet:

Notre problème correspond à un problème connu dans la littérature sous l'appellation « Problème du voyageur de commerce » dont voici l'énoncé:

Étant donné N points et les distances les séparant, trouver un chemin de longueur totale minimale qui passe exactement une fois par chaque point et revienne au point de départ [4].

En notant ce chemin π, on cherche π tel que la distance totale parcourue, D, soit minimale avec:

D=∑i=1

N−1

[d c π i , cπ i1 d c π N , cπ 1] (1)

Dans notre application, N correspond aux points d'amorçage des contours à découper et D représente le trajet que va parcourir l'outil de découpe.

Il est à noter que lors de la découpe on ne retourne pas au point de départ du trajet. De plus, parcourir le trajet dans un sens comme dans l'autre ne change rien à la distance finale (symétrie).

1.6.1 Méthodes de résolution:

• Solution exacte :

La méthode la plus naturelle de résolution est à base de permutation. L'algorithme à utiliser doit donc passer en revue toutes les combinaisons possibles pour retenir finalement la combinaison donnant le trajet minimal. Une telle opération demande un temps de calcul assez important dès que le nombre de points devient conséquent. En effet le nombre d'itération est:

nbrit=n−1 !

2 (2)

Pour illustrer ceci, nous allons prendre comme exemple un trajet constitué de 15 points, représentant des villes allemandes comme le montre la figure 1.7. Trouver le trajet optimal revient à calculer pour chaque combinaison possible la somme des distances séparant les points.

Cela revient à calculer puis comparer 14!/2 = 43 589 145 600 valeurs.

De plus vu que le problème est de complexité exponentielle, en ajoutant un seul point au trajet, passant de 15 à 16 points, on rajoute 610 248 038 400 valeurs à évaluer puis comparer.

En terme de mémoire un tel chiffre peut, grâce aux capacités actuelles des calculateurs, être géré, mais de point de vue temps de calcul ceci est une autre histoire.

Donnons comme exemple la résolution d'un trajet passant par 2103 points soit 2101!/2 itérations.Le calcul réalisé sur 55 processeurs, cadencé chacun à 500MHZ, a pris 130 jours [5].

Comme le temps de calcul nécessaire pour trouver la solution exacte est faramineux et le devient d'autant plus que le nombre de points augmente, une solution approchée serait la bienvenue. Ceci est d'autant plus vrai que la solution optimale est désirée mais non essentielle.

10

Page 11: Rapport Fnal Aevc Indexes

En effet,être loin de 5 voir 10% de la solution idéale n'est en aucun cas catastrophique et n'a pas d'influence notable sur le temps de découpe. De plus en optant pour une solution exacte, gourmande en temps de traitement, on ramènerait tout bonnement le retard accumulé de l'étape de découpe (déplacement de l'outil) vers l'étape FAO (génération du code machine). Une solution approchée

s'impose donc.

• Solution approchée (heuristique):

Une heuristique est un algorithme qui fournit rapidement (en temps polynômial) une solution, pas nécessairement optimale, pour un problème d'optimisation. Une heuristique, ou méthode approximative, est donc le contraire d'un algorithme exact qui trouve une solution optimale pour un problème donné. Les algorithmes de résolution exacts étant de complexité exponentielle, il est généralement plus judicieux de faire appel à des méthodes heuristiques pour des problèmes difficiles [6].

La recherche locale. est une méta-heuristique utilisée pour résoudre des problèmes d'optimisation difficiles. La recherche locale peut être utilisée sur des problèmes de recherche d'une solution maximisant un critère parmi un ensemble de solutions candidates. Les algorithmes de recherche locale passent d'une solution à une autre dans l'espace des solutions candidates jusqu'à ce qu'une solution considérée comme optimale soit trouvée ou que le temps imparti soit écoulé [7].

Généralement une heuristique est conçue pour un problème particulier, en s'appuyant sur sa structure propre. Pour la résolution du problème du voyageur de commerce, plusieurs classes d'algorithmes de recherche locales peuvent être utilisées dont on peut citer:

• Algorithme de Lin-Kernighan: Consiste à échanger un nombre donné de chemins à partir d'une solution de départ pour trouver une meilleure solution.

• Algorithme de colonies de fourmis: S'inspirant du comportement des fourmis recherchant un chemin entre leur colonie et une source de nourriture.

• Le recuit simulé: Inspiré d'un processus utilisé en métallurgie qui alterne des cycles de refroidissement lent et de réchauffage (recuit) qui tendent à minimiser l'énergie du matériau.

• Algorithmes génétiques.

• Réseaux de neurone.

11

figure 1.7: Problème du voyageur de commerce

Page 12: Rapport Fnal Aevc Indexes

1.6.2 Critère de choix:

Les deux principaux paramètres qui permettront de choisir l'une de ces méthodes sont:

-Nombre de points formant le trajet.

-Erreur ou probabilité d'approcher la solution exacte.

Les résultats expérimentaux ont montré que pour les grands trajets, nombre de points entre 100.000 et le million, les algorithmes Lin-Kernighan, donnent les meilleurs résultats en terme de temps / précision, avec une erreur de l'ordre du 1.5% [8].

Pour les trajets de l'ordre du 100.000 points les algorithmes génétiques et le recuit simulé ont montré les meilleurs résultats avec un taux d'erreur entre 0.2 et 0.5% [8].

Alors que les performances médiocres des réseaux de neurones, les cantonnent aux trajets assez courts, ne dépassant pas les 30 points [8].

Dans notre application, le nombre de points dépasse rarement la centaine, les pièces contenant une vingtaine de contours en moyenne. Le temps de traitement attribué à l'optimisation du trajet doit quant à lui être raisonnable. En effet l'utilisateur ne doit pas attendre plus d'une dizaine de secondes, pour les pièces les plus complexes.

Nous avons donc choisi d'utiliser les algorithmes génétiques pour l'optimisation du parcours.

1.7 Algorithmes Génétiques:

1.7.1 Présentation:

Les algorithmes génétiques sont basés sur la théorie de l'évolution fondée par Charles Darwin.

Cette théorie stipule que les individus les plus adaptés à leur environnement ont le plus de chance de se reproduire et par conséquent de transmettre leurs caractères aux générations futurs. Le lexique de cette méthode s'apparente donc assez naturellement à la génétique. On y introduit le concept de :

-Chromosome: Maillon de base de la théorie. Dans notre application un chromosome représente le point d'amorçage du contour vu qu'on démarre la découpe à partir de ce dernier.

-Individu: Constitué d'une succession de chromosomes. On obtient un nouvel individu en changeant la disposition des chromosomes. Un individu représente un trajet potentiel de l'outil.

-Population: Ensemble d'individus. Lorsque la taille maximale de la population est atteinte, on crée une autre population qui représente une nouvelle génération.

-La sélection: Opération visant à sélectionner les meilleurs individus d'une population selon un critère donné. Dans notre application ce critère est bien entendu la distance. On procède donc à l'évaluation de toutes les distances entre les chromosomes d'un individu pour en sélectionner celle qui est minimale.

-Le croisement: Échange de chromosomes entre deux parents pour former un descendant. Le croisement peut être simple ou multiple.

Le croisement simple consiste à échanger des chromosomes, entre deux parents, en un seul point comme le montre la figure 1.8.

Par contre lors d'un croisement multiple on échange des chromosomes sur plusieurs parties comme sur la figure 1.10.

12

Page 13: Rapport Fnal Aevc Indexes

-La mutation: .On substitue à des positions aléatoires, deux chromosomes ou plus, d'un individu de la nouvelle génération comme sur la figure 1.9. La mutation permet ainsi d'éviter les optimum locaux.

1.7.2 Principe:

On commence l'algorithme génétique par créer une population initiale.

On prend en premier lieu les points d'amorçages, représentatif des contours, dans l'ordre ou ils sont organisés dans le fichier CAO. Ces chromosomes (points) ainsi organisés représentent l'individu originel.

On créé à partir de cet individu originel le premier individu de la population initiale. Ceci est fait en changeant aléatoirement les positions des chromosomes de l'individu originel.

On passe après à la sélection des meilleurs individus de cette population nouvellement créée. On sélectionne ainsi à chaque fois deux individus dont le trajet est minimal qui seront les futurs parents.

On procède ensuite au croisement simple de ces deux parents pour donner un nouvel individu (trajet).

On doit veiller à ne copier, d'un parent comme de l'autre, que les chromosomes qui n'ont pas déjà été insérés pour la création du nouvel individu pour éviter les doublons et rendre l'individu « trisomique ».

Comme la mutation se fait aléatoirement, on ne mute l'individu nouvellement créé que s'il y a lieu de l'être .

On répète la sélection, croisement et mutation pour le reste de la population jusqu'à ce que le nombre de descendants atteigne la taille de population qu'on s'est fixé.

On laisse l'algorithme génétique procéder à la création continu de nouvelles générations s'approchant ainsi de plus en plus de la solution optimale.Une fois le nombre d'itérations maximal atteint, on arrête l'algorithme.

On évalue les individus de cette dernière génération: Le meilleur individu est notre trajet optimisé.

13

figure 1.8: Croisement simple figure 1.9: Croisement doublefigure 1.10: Mutation

figure 1.11: Étapes d'un algorithme génétique [9]

Page 14: Rapport Fnal Aevc Indexes

14

Page 15: Rapport Fnal Aevc Indexes

2 Chapitre 2: Commande de la machine

2.1 Type de commande:

Pour commander le déplacement de la torche plasma suivant les trois axes on peut opter pour la:

• Boucle ouverte: En utilisant des moteurs pas à pas.

• Boucle fermée: Compatible avec tous les types de moteurs, pas à pas, à courant continu, servomoteurs...mais plus difficile à mettre en place.

Comme les moteurs pas à pas peuvent être à la fois utilisés dans les deux types de commande, nous nous somme intéressés particulièrement à ce type de moteurs. Mais un moteur pas à pas est-il en mesure de satisfaire nos besoins en terme de couple, vitesse et par dessus tout précision?

Nous présentons ci-dessous un comparatif entre les moteurs pas à pas et les servosmoteurs. Ce comparatif a été établi sur la base d'informations fournies par divers constructeurs de systèmes de découpe, dont essentiellement Torchmate spécialisé dans la fabrication de systèmes de découpe plasma/laser depuis 1980 [10] :

Moteurs pas à pas:

• Durée de vie et maintenance: Ne nécessitent quasiment pas de maintenance vu que le seul contact mécanique entraînant l'usure se produit entre l'arbre de sortie et le roulement le supportant. Ils ont donc une durée de vie assez conséquente.

• Résolution: Généralement capables de réaliser 200 à 400 pas par tour. Cette valeur change pour un même moteur suivant le type de commande et peut atteindre les 25.000 micros pas par révolution.

• Puissance: Les moteurs pas à pas fournissent une puissance constante. Leur couple diminue donc avec la vitesse. Leur couple nominal commence, en général, à chuter sensiblement dès qu'on dépasse les 600 tr/min.

• Erreur: Un moteur pas à pas bien dimensionné ne commet pas d'erreur. En effet, le seul scénario dans lequel un moteur pas à pas perd des pas se produit lorsque le couple qu'il fournit est insuffisant pour déplacer la charge. Dans ce cas, le moteur glisse et perd les pas sans se déplacer.

• Divers: Offrent un faible encombrement. Leur prix est de loin inférieur aux autres types de moteurs de même couples nominaux. Ils sont sujets à de micros vibrations, dues au passage d'un pas à un autre, qui s'accentue avec la vitesse.

Servos-Moteurs:

• Durée de vie et maintenance: La durée de vie dépend du type de moteur du servo. Les servos moteurs à balais, doivent subir un changement de balais environ toutes les 5000 heures. Par contre, ceux à base de moteurs sans balais ne nécessitent aucun entretien.

• Résolution: Elle dépend de l'encodeur embarqué. Elle est en général comprise entre 2000 à 4000 impulsions par tour. Des encodeurs de plus haute résolution, allant jusqu'à 10000 impulsions sont tout de même disponibles.

• Erreur: Comme la commande des servos se fait en boucle fermée, il est en théorie impossible qu'ils commettent d'erreur. Mais si le moteur n'est pas bien dimensionné, et qu'il reçoive un ordre de déplacement à une certaine vitesse qu'il ne peut exécuter, on risque de casser une dent du réducteur voir de provoquer la mise hors service.

15

Page 16: Rapport Fnal Aevc Indexes

• Puissance: Les servos-moteurs gardent un couple constant même à grande vitesse. Le couple ne diminue sensiblement que lorsqu'on dépasse les 5000 tr/min.

Il paraît clair que les moteurs pas à pas offrent des possibilités très prometteuses. De plus, ils peuvent tout aussi bien être utilisés dans les systèmes en boucle fermée qu'en boucle ouverte, par l'ajout d'un encodeur.

Leur seul inconvénient réside dans leur faible couple à grande vitesse. Néanmoins, pour notre application, cette propriété n'est pas contraignante, au contraire. En effet :

La majorité des mouvements de découpe se déroulent à des vitesses de déplacement inférieures à 300 tr/min. Cette faible vitesse est nécessaire pour laisser au plasma le temps de perforer la tôle.

De même les mouvements à vitesse rapide, utilisés pour le positionnement de l'outil ou le passage d'une pièce à une autre, se font à de faibles vitesses. Ceci est dû au fait que les pièces étant placées les unes aux cotés des autres dans la feuille de tôleavec un minimum d'encombrement, la distance les séparant reste très faible.

De plus et contrairement aux procédés de fraisage, les moteurs ne sont sujets à aucun effort résistant. Le couple qu'on doit fournir doit seulement servir à accélérer la masse du système et à vaincre sa friction. Donc les vitesses rapides ne sont pas convoitées d'ailleurs « The most important issue in cnc plasma applications is how slow a move a machine can make » [10].

2.2 Présentation du moteur pas à pas:

Un moteur pas à pas est un moteur électrique synchrone sans balais réalisant un tour complet en un certain nombre de « pas ».Il est composé de multiples électro-aimants dentés,arrangés autour d'une roue dentée centrale qui est reliée à l'arbre de sortie à travers un roulement. Le standard pour les dimensions et caractéristiques des moteurs pas à pas a été défini par le NEMA2 [11]..

2.2.1 Type de moteur pas à pas :

La nature différente des électro-aimants et de la roue centrale, composant le moteur pas à pas, permet de distinguer entre trois familles:

• le moteur à réluctance variable : La roue centrale est composée d'un barreau de fer doux et les électro-aimants sont des bobines.

• le moteur à aimants permanents : La roue centrale est remplacée par un aimant permanent. Ainsi le moteur maintient sa position même s'il n'est pas alimenté.

• le moteur hybride, qui est une combinaison des deux technologies précédentes.

En général les moteurs pas à pas possèdent deux phases. Selon l'arrangement des bobines on en distingue deux types :

• Unipolaire: Possède deux enroulements par phase. Ainsi, pour réaliser la commutation et commander le mouvement, il faut un seul transistor par enroulement (2 par phase). Le point milieu étant toujours alimenté, la commutation sert à fournir la masse au système comme le montre la figure 2.2.

2 National Electrical Manufacturers Association

16

figure 2.1: Moteur pas à pas avec double arbre

Page 17: Rapport Fnal Aevc Indexes

Étant donné que seul la moitié d'un enroulement est alimentée par phase, le couple des unipolaires est entre 20 à 30% moins important que celui des bipolaires de même taille [12].Il est à noter qu'un moteur bipolaire peut être converti en un moteur bipolaire en laissant le point milieu sans connexion.

• Bipolaire:Possède un enroulement par phase. Pour réaliser la commande, on change le sens du courant dans la bobine. Cela est réalisé à l'aide d'un pont-H à base de quatre transistors comme illustré par la figure 2.4.

Les moteurs bipolaires offrent un meilleur couple que les unipolaires de même dimensions, mais le circuit de commande est plus difficile à mettre en place vu qu'il nécessite l'utilisation de huit transistors par moteur.

2.2.2 Principe de fonctionnement:

Le déplacement de l'arbre moteur est réalisé en énergisant suivant une certaine séquence les phases. Suivant cette séquence de commande, on distingue trois principaux modes :

• Pas complet: La séquence de commande est composée de quatre étapes comme le montre la figure 2.5. En utilisant ce mode de commande, on atteint le couple nominal indiqué par le constructeur et le nombre de pas initial.

17

figure 2.3: Principe de commande d'un bipolaire[13]

figure 2.2: Principe de commande d'un unipolaire[13]

figure 2.4: Principe de commande d'un bipolaire[13]

Page 18: Rapport Fnal Aevc Indexes

• Demi-pas: On introduit entre les quatre séquences du mode complet, une séquence où une seule phase est alimentée. Ainsi, l'arbre se place dans une position intermédiaire et on gagne en résolution. Par exemple, un moteur d'un angle de 1.8° réalisant donc 200 pas par tour en commande pas complet, passe à 300 pas par tour en commande demi-pas.

• Micro-pas: La commande micro-pas est réalisée en changeant la valeur du courant circulant dans les bobines. Le courant dans une bobine, respectivement dans l'autre, approche la forme d'une sinusoïde comme le montre la figure 2.5. On arrive ainsi, en pratique, à insérer plus de 250 micro-pas pour passer de 200 à 51200 pas par tour [14].

Ce nombre conséquent de pas par tour garantit un mouvement « doux » (transitoire) du moteur à faible vitesse. Contrairement à une réduction mécanique, qui augmente le couple et diminue la vitesse, la commande micro-pas n'a pas d'influence sur la vitesse.

Afin d'obtenir un mouvement uniforme et éviter les saccades, on doit utiliser une commande demi-pas, à défaut d'une commande micro-pas.

De plus comme un moteur bipolaire fournit un couple plus important que celui d'un unipolaire, le choix d'un moteur bipolaire semble le plus judicieux.

18

figure 2.6: Séquence de commande micro-pas (1/4 de pas)

figure 2.5: Réalisation d'un pas en mode pas complet

Page 19: Rapport Fnal Aevc Indexes

2.2.3 Caractéristiques:

Le moteur pas à pas peut être modélisé par une bobine, alimentée avec une tension Vmot, d'inductance L et de résistance R.

La montée exponentielle du courant donnée par l'équation (3), dont la figure 2.8 est une représentation, permet de tirer la conclusion suivante:

Comme la montée du courant n'est pas instantanée, il faut veiller à ce que le signal de commande laisse le temps au courant d'atteindre IMAX. Ainsi, si le signal de commande survient avant cet instant, le courant n'atteindra pas sa valeur nominale et par suite le couple délivré sera inférieur au couple nominal.

I t =V mot

R [1−exp − Rt ⁄ L] (3)

On doit donc minimiser au maximum le temps de montée du courant pour pouvoir atteindre le couple / vitesse désirée. Ce temps de montée de courant noté tmnt est donné par la pente à l'origine de I=f(t) par l 'équation suivante:

dIdt

=Vmot

L (4)

19

figure 2.7: Modèle d'un moteur pas à pas

figure 2.8: Courbe de montée du courant : I=f(t) [14].

Page 20: Rapport Fnal Aevc Indexes

2.3 Amélioration des performances:

Pour réussir à maintenir le couple nominal à des vitesses de rotations convenables, il est essentiel de veiller à:-Énergiser rapidement les bobines du moteur pas à pas.-Inhiber le courant dans la bobine, tout aussi rapidement, pour passer à une autre séquence.

L'équation (4) permet de déduire que pour diminuer tmnt, on peut varier deux paramètres: -l'inductance de la bobine L: tmnt étant inversement proportionnel à L, plus l'inductance de la

bobine est faible, mieux c'est. Or, les contraintes physiques de construction des bobines ne permettent pas d'aller en-dessous d'une inductance de quelques mH. Il faut donc voir du côté du second paramètre.

-la tension d'alimentation Vmot : Si on augmente Vmot, on diminue le temps de montée du courant.Or en variant Vmot , on varie aussi I, au risque de dépasser Imax et d'endommager le moteur. Imax étant donné par la loi d'ohm d'équation suivante:

I max=V mot

R (5)

Dans la suite nous allons donc présenter les méthodes permettant d'augmenter Vmot tout en veillant à ne pas dépasser Imax.

2.3.1 Méthode à base de résistance (L/R):

Pour éviter de dépasser la valeur maximale du courant, une première approche consisterait à mettre une résistance de puissance en série avec chaque phase du moteur.En appliquant une tension d'alimentation V=n Vmot on doit placer une résistance de valeur Rlim=n R et on garde ainsi constant le rapport de l'équation (5).

Cependant, cette technique présente deux inconvénients:-Une perte de puissance (dissipation par effet joule dans les résistances).-Une montée du courant généralement insuffisante, à moins d'utiliser des résistances de fortes valeurs, comme le montre la courbe 2 de la figure 2.9.

2.3.2 Méthode à base de deux alimentations:

Cette méthode consiste à appliquer la tension V=n Vmot pendant une durée t, donnée par l'équation qui suit:

t min=L H /R (6)

Lorsque Imax est atteint, on commute vers l'alimentation nominale Vmot qui permet de garder le courant en dessous de Imax.

Cette méthode permet d'améliorer les performances du système de façon remarquable, comme le montre la courbe 3 de la figure 2.9, tout en utilisant toute l'énergie fournie par l'alimentation.

Mais, d'un autre côté, on doit disposer de deux alimentations indépendantes ce qui revient cher à mettre en place.

20

Page 21: Rapport Fnal Aevc Indexes

2.3.3 Méthode à base de hacheur:

Pour palier aux inconvénients des méthodes précédentes, dans la suite de notre travail, nous allons adopter la méthode à base de hacheur [15].

Cette méthode consiste à appliquer une d.d.p. aux bornes de la bobine supérieure à Vmot. Un hacheur est utilisé pour contrôler le courant et veiller à ce qu'il n'excède pas Imax, suivant le principe de la figure 2.10. Pour cela, nous aurons besoin de réaliser le circuit de la figure 2.11 constitué :

-D'une résistance de puissance Rsens de faible valeur en série avec le self jouant le rôle de miroir de courant.

-D'un comparateur, entre un voltage de référence Vref ,équivalent à la valeur Imax ,et Vrsens

-D'un monostable qui arrête d'alimenter le self pendant une durée de temps Toff lorsque la sortie du comparateur est active.

21

figure 2.10: Méthode à base de hacheur et circuit de commande correspondant [15]

figure 2.9: Méthode à base de deux alimentations[14]

Page 22: Rapport Fnal Aevc Indexes

22

Page 23: Rapport Fnal Aevc Indexes

2.4 Directeur de Commande Numérique EMC32:

Une fois le code-G généré et la carte de commande des moteurs réalisée, il faut transformer les instructions code-G en mouvements moteurs.

C'est le rôle du DCN qui interprète ces instructions, reçoit les informations des capteurs et agit sur les moteurs. Il existe plusieurs fabricants de DCN dont les plus connus sont Fanuc, Siemens et Philips [16].

Pour commander la table de découpe plasma nous pouvons soit nous procurer un DCN, à un coût exorbitant, ou bien nous pouvons mettre en place notre propre DCN en utilisant un interpréteur de code-G installé sur un micro-ordinateur.

Les interpréteurs de code G modernes possèdent des fonctionnalités avancées dont:

• La planification de trajectoire avec régulation de la vitesse.

• Le contrôle de la trajectoire en boucle fermée.

• La gestion de 3 à 6 axes.

• La gestion des signaux d'une armada de capteurs/actionneurs.

• Une interface graphique simple mais complète à la fois.

Malheureusement de tels logiciels sont propriétaires et vendus seulement avec les machines des constructeurs. Certains sont gratuits mais restent limités et non appropriés pour une utilisation professionnelle. Ce qui n'est pas le cas pour EMC2.

EMC2 est un système informatique de contrôle de machines-outils tel que les fraiseuses, les tours,...c'est un logiciel gratuit dont les codes sources sont disponibles sous licence GPL, donc modifiables à volonté [17].EMC fut créé par à la base par le NIST 4, une agence du gouvernement des États Unis. Il était destiné à tourner sous Windows NT et servait à contrôler des machines à outils de grandes dimensions.EMC2 est le descendant de EMC .Il est maintenu par une communauté active de plus 20 développeurs qui veille à éradiquer les bogues en un temps record. EMC2 se distingue d'EMC essentiellement sur deux points :-Il tourne sous une extension temps-réel de Linux.-Il sert à contrôler des machines de moins grande envergure.

2.4.1 Fonctionnalités :

Parmi les fonctionnalités d'EMC2 qu'on exploitera dans notre application on peut citer :

• Le choix entre plusieurs interfaces graphiques avec pré-visualisation de la trajectoire de l'outil en 3D.

• Un interpréteur de code-G ISO 6983 (RS-274) développé par le NIST.• Un système prédictif de planification de trajectoire.• Une gestion des organes électroniques de bas niveau, tels que les capteurs, les encodeurs, les

interfaces de commande,...• Une couche d'abstraction matérielle, qui permet à chacun de créer très facilement une

configuration complète adaptée à sa machine. • Capable de gérer les déplacements simultanés de jusqu'à 6 axes.

3 the Enhanced Machine Controller4 National Institute of Standards and Technology

23

Page 24: Rapport Fnal Aevc Indexes

• Capable de piloter les servo-moteurs avec retour en boucle fermée, ou en boucle ouverte de type "step-servo" ou encore les moteurs pas à pas.

• Réalisation de mouvements d'axes synchronisés, de vitesse d'avance adaptative et de mouvements à vitesse constante.

• Déviation de trajectoire limitée avec paramétrage des tolérances.

Et bien d'autres points à souligner qui ne seront pas exploités dans notre application:• Gestion des correcteurs d'outils; compensation de rayon et de longueur,le filetage sur tour, le

taraudage rigide,• Support des systèmes à mouvements non Cartésiens par le biais de modules cinématiques

personnalisés tel que les hexapodes et les systèmes avec articulations rotatives (robots PUMA ou SCARA).

• Un automate programmable logiciel, utilisant la programmation en langage Ladder [17].

L'architecture d'EMC2 a été pensée pour garantir un maximum de Modularité, Portabilité, d'Extensibilité et d'Évolutivité. Elle est ainsi conforme au modèle Open System Architecture Standard (NGC SOSAS), qui est la spécification résultant d'études menées par l'U. S. Air Force pour la normalisation des DCN [18].

24

figure 2.11: Axis, une des nombreuses interfaces d'EMC2

Page 25: Rapport Fnal Aevc Indexes

La séparation entre les différents composants logiciels, formant EMC, permet de modifier l'application à volonté pour épouser les besoins de l'utilisateur.

2.4.2 Interpréteur code-G:

L'interpréteur de code-G reçoit les instructions G, sous forme d'un fichier texte ou introduites par l'utilisateur dans la console. Il procède à une analyse de leur syntaxe pour vérifier qu'elle est bien conforme au standard ISO 6983.

L'interpréteur ne reconnaissant que les instructions au format ISO 6983, tout fichier généré par un logiciel FAO destiné à des DCNs non conformes à la norme ISO doit être tout d'abord traité par un post-processeur.

Une fois la validation de la syntaxe effectuée, l'interpréteur se charge de générer une liste de points de passage qui seront envoyés vers le planificateur de trajectoire en utilisant des algorithmes de simplification et d'approximation tel que Douglas-Peucker et la transformation des arcs et cercles en une succession de droites.

2.4.3 Planificateur de trajectoire:

Le planificateur de trajectoire implémente diverses transformations pour passer de la vitesse opérationnelle à la vitesse dans le domaine articulaire et vice-versa. Il permet ainsi de calculer les vitesses adéquates lors de la réalisation de trajectoires rectilignes suivant une accélération en rampe et la réalisation d'arc avec décélération aux extrémités.

Le planificateur de trajectoire s'occupe aussi de mettre à jour l'affichage des coordonnées de l'outil dans l'interface graphique en envoyant à celle-ci la position supposée de l'outil, en boucle ouverte, ou la position actuelle dans le cas d'une commande en boucle fermée.

2.4.4 Couche d'abstraction matérielle HAL:

Les commandes envoyées par le planificateur de trajectoire doivent être transformés en signaux concrets dont la fréquence, amplitude ou déphasage doivent refléter le mouvement à effectuer. Pour réaliser par exemple le déplacement d'un axe moteur en translation à une vitesse constante sur une distance X, on doit générer une séquence du signal de commande pendant une durée t correspond à la distance X.

HAL est un ensemble d'outil logiciels permettant de réaliser les connexions nécessaires entre les différents composants du système pour former proprement dit ce dernier [19].

Chaque composant de HAL défini un certains nombre d'éléments:

• Broches virtuelle: Un composant fournit des broches purement logicielles servant à être connectées avec d'autres broches virtuelles ou physiques. Par exemple, le planificateur de tâche fournit une broche logicielle qui reflète la position commandée de l'outil.

• Broche physique: Une broche physique, sert à relier les broches logicielles au monde physique. Le port parallèle par exemple est représenté par 17 broches au niveau de HAL.

• Fonction: Chaque composant peut contenir la définition d'une ou plusieurs fonctions. Par exemple le composant responsable de la génération des signaux définit une fonction pour chaque type de signal: carré, sinusoïdal, triangulaire,...

• Type: Chaque fonction d'un composant retourne un type de données qui peut être :

BIT : une simple valeur vraie ou fausse true/false ou on/off.

FLOAT : valeur codée sur de 32 bits.

25

Page 26: Rapport Fnal Aevc Indexes

U 32 : un entier non signé de 32 bits.

S 32 : un entier signé de 32 bits.

Ainsi, pour générer un signal sinusoïdal, le type retourné est FLOAT alors que pour commander l'activation de la torche plasma le signal est de type BIT.

• Paramètres: Chaque fonction d'un composant est dotée d'un ensemble de paramètres. Ainsi lors de la génération d'un signal carré on doit définir sa fréquence, son amplitude,...

• Connexion: Pour lier une broche, virtuelle ou physique, à une autre on doit utiliser une connexion. Il est à noter qu'on ne peut relier deux broches de types différents.

• Tâche (thread):Chaque composant est attaché à une tâche. Une tâche est exécutée soit dans l'espace noyau, comme la génération des signaux physiques, ou utilisateur, comme c'est le cas de l'affichage du déplacement de l'outil dans la fenêtre principale d'EMC2.

Deux tâches sont chargées par défaut dans l'espace noyau:

-Tâche de base assurant la synchronisation entre les différents éléments.

-Tâche de génération / traitement de signaux.

HAL fournit aussi les équivalents logiciels du voltmètre, de l’oscilloscope, du générateur de signaux et d'autres outils nécessaires à la mise au point et aux réglages du système [19].

EMC2 dispose par défaut d'une vingtaine de composants standards avec la possibilté de programmer ses propres composants [19]. Pour notre application nous aurons à exploiter essentiellement deux composants :

-hal_parport : Pilote pour le port parallèle.-stepgen : Générateur d'impulsions pour la commande du moteur.

EMC2 dispose aussi d'une panoplie de signaux pour contrôler les moteurs pas à pas. Chaque séquence pouvant commander une phase , deux phase et jusqu'à cinq phase. Quatorze séquences sont disponibles nativement avec, toujours, la possibilité de programmer ses propres séquences en C.

26

figure 2.12: Visiualisation des siganux avec l'oscilloscope virtuel de HAL

Page 27: Rapport Fnal Aevc Indexes

2.4.5 Communication NML5:

Pour garantir une modularité absolue, chaque élément de EMC2 est indépendant des autres.

Pour établir la communication entre les différents organes et assurer leur synchronisation, chaque partie dispose d'un tampon qui n'est accessible en lecture ou écriture qu'à une partie « légitme ».

Les opérations de lecture / écriture sont assurées par un client NML qui veille au bon déroulement des opérations à l'aide des stratégies de gestion d'erreurs et d'exclusion mutuelle.

2.4.6 Port de commande:

EMC2 offre la possibilité de communiquer avec les cartes de commande et les capteurs à travers différents ports comme le port parallèle,ISA ou PCI.

Seul le port parallèle est disponible d'emblée vu qu'il est présent dans presque tous les PC en standard, alors que les autres ports requièrent des cartes d'acquisition, souvent onéreuses.

De plus EMC2 peut gérer jusqu'à huit port parallèle, soit 136 broches numériques, de quoi pallier à tous les besoins en Entrées/Sorties. C'est pourquoi nous avons opté assez naturellement pour l'utilisation du port parallèle pour la commande.

Le port parallèle se présente sous la forme d'une prise DB25. Il possède 17 broches utilisables, les broches restantes étant reliées à la masse. Le port parallèle bi-directionnel, actuellement présent dans les PC, fut introduit dans les années 90 [20].

Configuré en sortie il permet de bénéficier de douze broches en sorties et les cinq restantes en entrées.

Configuré comme entrée il offre treize broches définies en entrée et les quatre autres en sorties.

Chaque port parallèle étant désigné par son adresse physique,de la forme 0x278, 0x378,...

Son signal de sortie est du niveau TTL. Les broches sont composées de circuits intégrés 74LS374 pouvant fournir 2.6mA et supportant un courant d'entrée de 24mA [21].

Ces données doivent être sagement prises en considération lors du dimensionnement du circuit électronique de commande des moteurs et d'adaptation du signal d'entrée. Ainsi pour commander à la fois les trois cartes des moteurs pas à pas un étage d'amplification de courant à base de transistors doit être placé après le port parallèle. De même des résistances, limitant le courant d'entrée doivent être placée en aval de chaque broche d'entrée.

5 Neutral Messanging Language

27

Page 28: Rapport Fnal Aevc Indexes

La figure 2.13 est une représentation schématique simplifiée de l'architecture d'EMC2 mettant en évidence les différents organes du système et leurs inter-connexions.

28

figure 2.13: Architecture simplifiée d'EMC2

Page 29: Rapport Fnal Aevc Indexes

3 Chapitre 3 :Réalisation

3.1 Génération du code machine:

Pour générer le code machine, cinq étapes doivent être réalisés juste après la lecture de la géométrie de la pièce inscrite dans le fichier DXF:

• Décomposition des entités :

Toutes les entités enregistrées dans le fichier DXF doivent être triées par type et les paramètres les définissant doivent être évalués:Deux points pour les lignes, centre rayon et angles pour les arcs,... Vu que ces paramètres sont déjà inscrits dans le fichier DXF de la pièce, il suffit de parcourir le fichier et de lire ces derniers.

• Recherche des contours fermés :

Pour pouvoir réaliser l'opération de découpe, il apparaît trivial que l'outil doit suivre un contour fermé. Ainsi, il serait impensable, lors de la découpe de la pièce figure 3.1, de passer de la ligne 1 vers la ligne 3 sans passer par l'arc 2.

Or les entités ne sont pas organisées suivant la géométrie de la pièce. Utiliser un algorithme de recherche de contours fermés est donc nécessaire. Ceci est réalisé par l'algorithme qui suit:

29

figure 3.1 : Pièce avant décomposition figure 3.2: Pièce après décomposition

figure 3.3: Algorithme d'assemblage des contours

Page 30: Rapport Fnal Aevc Indexes

• Recherche du contour extérieur :

Pour garantir la stabilité lors de la découpe, le contour extérieur de la pièce doit être découpé en dernier. Pour « détecter » le contour externe d'une pièce, il suffit de calculer les surfaces de tous les contours fermés. Celui dont la surface est la plus grande est notre contour extérieur.

• Placement des points d'amorçage:

Deux cas se présentent lors du placement des points d'amorçage:

-Si le contour à découper est interne à la pièce, numéroté 0 sur la figure 3.4, le point d'amorçage doit y être placé à l'intérieur.

-Si c'est le contour extérieur de la pièce, représenté en ligne discontinue sur la figure 3.4, le point d'amorçage doit être placé à son extérieur.

Le tableau suivant donne un bref aperçu de la méthode utilisée pour le placement des points d'amorçage suivant la nature du contour:

Contour Nature Position du point d'amorçage

Circulaire Externe Placé sur un des rayons R à une distance supérieure à R (figure 1.7 A)

Circulaire Interne Placé sur un des rayons R à une distance inférieure à R (figure 1.7 B)

Non circulaire Externe Placé à l'extérieur du rectangle approximant le contour (figure 1.7 C)

Tableau 3: Position du point d'amorçage suivant le contour

La situation la plus complexe se présente avec les contours internes non circulaires. En effet, dans ce cas, l'approximation rectangulaire n'est plus pertinente. Ainsi, bien que les zones coloriées en rouge sur la figure 3.5 soient à l'intérieur du rectangle, placer le point d'amorçage dans ces dernières résulterait en une pièce défectueuse.

30

figure 3.4: Insertion des points d'amorçage

figure 3.5: Position du point d'amorçage suivant le contour

Page 31: Rapport Fnal Aevc Indexes

Pour placer correctement les points d'amorçage de ce genre de contour, il faudrait affiner l'approximation du contour. Ceci pourrait être réalisé en décomposant ce dernier en polygones comme le font les logiciels utilisant la méthode des éléments finis.

Pour notre application nous nous sommes restreint à une approximation rectangulaire basique tout en laissant à l'utilisateur la possibilité de replacer les points d'amorçage incorrectement placés manuellement.

• Optimisation du trajet avec l'algorithme génétique.

Une fois toutes ces étapes réalisées on attend que l'utilisateur termine de placer toutes les pièces dans la feuille de tôle. La génération du code machine prenant lieu après appui sur le bouton d'enregistrement de l'interface graphique.

3.1.1 Envirennoment de développement:

Nous avons utilisé pour le développement le langage de programmation C++ en utilisant la bibliothèque logicielle Qt4. Qt est en effet un toolkit puissant, conçu par trolltech filiale de Nokia, disponible sous licence GPL et qui de plus est multi-platforme: Unix, Windows, Mac OS, Windows CE et linux embarqué. De plus,la nouvelle bibliothèque de modules, ayant fait son apparition avec Qt4, QGraphics apporte une panoplie de fonctions en relation avec la géométrie qui correspondaient bien à nos besoins.

Pour améliorer les performances de l'application nous avons utilisés Callgrind qui permit de construire le profil d'appel de notre application et de mettre donc en évidence les défauts de cache et d'appels. Ainsi la détection d'appels « inutiles », grâce à Callgrind, a permit de supprimer plus de 30000 appels lors de l'évolution du programme.

Pour générer la documentation de l'application, le diagramme des classes, la liste de « à faire » et de bogues,... nous avons utilisés Doxygen qui permet de générer la documentation de projets en analysant les fichiers de code source.

3.1.2 Interface graphique:

L'interface graphique de l'application que nous avons développé repose sur le principe des docks. Un dock est un conteneur qui peut soit être affiché, caché ou flottant. Sa position au sein de la fenêtre peut être changé à loisir. Les docks entourent le conteneur central, représentant la feuille de tôle, qui lui est toujours affiché.

L'interface, dont une capture d'écran est donnée sur la figure 3.1, est ainsi divisée sur quatre conteneurs:

• Explorateur de fichiers (Zone 4): Ce dock permet une exploration aisée des fichiers CAO. Ainsi, seuls les fichiers DXF y sont affichés. En double-cliquant sur un fichier celui-ci se charge dans le dock de prévisualisation. Toutes les opérations de traitement et d'optimisation, prennent alors place.

• Fenêtre de prévisualisation (Zone 1): Ce dock sert à la fois à:

-Afficher les pièces CAO.-Replacer les points d'amorçage, si besoin.-Réorganiser l'ordre de découpe, si besoin.-Afficher une animation basique de la découpe de la pièce actuelle.

• Liste des pièces (Zone 3) :Pour faciliter la gestion des pièces dans la feuille de tôle et permettre leur suivi,

31

Page 32: Rapport Fnal Aevc Indexes

chaque pièce insérée est affichée dans ce dock.

• Feuille de tôle (Zone 2) :Les pièces que l'on désire insérer dans la feuille de tôle sont copiées avec leurs paramètres vers cette fenêtre centrale. L'utilisateur procède à leurs translation ou rotation pour les placer les unes à coté des autres avec le minimum d'encombrement.

Le logiciel a été conçu pour offrir les fonctions de base des logiciels CAO du marché tel que le zoom avant et arrière, la rotation et la translation. Ces actions sont accessibles en cliquant sur les boutons correspondant dans la barre d'outils et par action sur la souris (bouton du milieu et roulette).

L'application a de plus été conçue pour être la plus générique possible. Ainsi en désactivant le placement des points d'amorçage elle pourrait tout aussi bien servir à la génération du code machine des fraises, voir des tables de découpe des usines textiles.

3.1.3 Résultats de l'algorithme génétique:

Pour montrer le rôle essentiel joué par l'algorithme génétique, nous avons procédé à des tests sur des pièces comportant différent nombre de contour. Nous avons utilisé une population de taille 10 et un nombre d'itération que nous avons fixés à 10.

Nous voyons que pour les trajets de 18 et 12 points, l'algorithme génétique a permit de diviser la distance parcourue par l'outil par trois. Sur les trajets assez courts, on arrive dans les mêmes conditions d'exécution à diviser le trajet par deux voir trois dans le cas du trajet avec 16 points.

32

figure 3.7: Résultats pour les courts trajets

0 1 2 3 4 5 6 7 8 9 10 11

0

500

1000

1500

2000

2500

3000

Résultats de l'A.G.courts trajets

34 pts 16 pts 9 pts

Dis

tanc

e

figure 3.6: Résultats de l'A.G pour les longs trajets

0 1 2 3 4 5 6 7 8 9 10 11

0

2000

4000

6000

8000

10000

12000

14000

16000

18000

20000

Résultats de l'A.G.longs trajets

18 pts 12 pts

Dis

tanc

e

Page 33: Rapport Fnal Aevc Indexes

33

figure 3.8: L'interface graphique de l'application

Page 34: Rapport Fnal Aevc Indexes

3.2 Déploiement d'EMC2:

L'installation d'EMC2 est assez simple vu que EMC2 peut être téléchargé sous la forme d'un live CD estampillé Ubuntu 8.04. De plus l'opération la plus délicate qui consiste à patcher le noyau, pour lui ajouter l'extension temps réel, y est déjà effectuée. Des connaissances rudimentaires de Linux sont suffisantes pour arriver à obtenir une station de travail opérationnelle sous EMC2.

L'adaptation d'EMC2 aux besoins de notre application passe par deux étapes:

Configuration de HAL: Consiste à spécifier les connexions entre broches virtuelles et broches physiques ainsi que les paramètres des fonctions de génération du signal de commande. Cette configuration se fait à travers un ensemble de fichiers texte qui seront chargé au démarrage de EMC2. Le plus important de ces fichiers est config.hal que vous pouvez consulter dans les annexes.

La carte électronique de commande, nécessitant deux signaux d'entrée, chacun commandant une phase du moteur, correspond à la séquence 2, illustrée ci-dessous, offerte par le composant stepgen :

Le reste des broches de sortie du port parallèle est utilisé pour la commande ¼ de pas et pour l'activation/désactivation de la torche plasma. Les tableaux ci-dessous résument les rôles attribués à chaque broche:

Broche 2 3 4 5 6 7

Signal Axe1.phaseA Axe1.phaseB Axe2.phaseA Axe2.phaseB Axe3.phaseA Axe3.phaseB

Broche 8 9 1 15 16 17

Signal Axe1.A.I0/I1 Axe1.B.I0/I1 Axe2.A.I0/I1 Axe2.B.I0/I1 Torche On/Off Aucun

Tableau 4: Broche en sortie et signal correspondant

Broche 10 11 12 13 15

Signal Butée axe 1 Butée axe 2 Torche pos Haut Torche pos bas Arrêt d'urgence

Tableau 5: Broche en entrée et signal correspondant

Configuration générale : Divers autres paramètres doivent être spécifiés pour avoir une station fonctionnelle. La saisie de la vitesse et accélération maximale, de la tolérance lors de la planification de la trajectoire. Le rapport de réduction mécanique doit aussi être tenu en compte.

Ces paramètres peuvent aussi être introduits en utilisant l'assistant de configuration stepconf d'EMC2 au lieu d'éditer manuellement le fichier texte config.ini.

34

figure 3.10: Séquence de commande pas complet figure 3.9: Séquence de commande 1/2 pas

Page 35: Rapport Fnal Aevc Indexes

3.3 Carte électronique de commande:

3.3.1 Choix des circuits:

Pour la conception de la carte électronique, nous avons eu le choix entre deux possibilités :

-Utiliser un circuit de commande qui intègre à la fois un traducteur de séquence et les transistors de puissance comme le UC3770B ou le A3977.

-Utiliser un circuit de commande qui permet de traduire la séquence de commande aux moteurs, comme le L297, et de placer en aval un pont H, comme le L298 ou carrément faire notre propre pont H avec quatre transistors de puissance (TIP).

Les recherches que nous avons effectuées nous ont permit de sélectionner les candidats possibles suivants :

Composant Boîtier I max (A) V max (V) Prix unitaire6 ($) Remarque

UC3770B PDIP ,SOIC 2 50 4 Traducteur et Pont H simple

A3977 eTSSOP 2,5 35 5 Traducteur et Pont H double

L297 DIP X X 11 Traducteur

L298 multiWatt 2 46 5 Pont H double

TIP 120 TO 220 5 50 2 Transistor de puissance

Tableau 6: Possibles CI de commande du moteur

On peut tirer une première conclusion de ce tableau. En effet on voit clairement que l'utilisation du duo L297/L298 est assez onéreuse. Ceci est d'autant plus vrai que les circuits UC3770B et A3977 assurent les mêmes fonctions, en les surpassant en performances, tout en étant trois fois moins cher.

Nous avons donc exclu d'emblée cette solution. Il est à noter cependant que l'emploi de ces circuits est très démocratisé et les projets à base de L297 / L298 sont assez nombreux ce qui nous a poussé à mettre ce duo dans ce comparatif.

La nécessite d'utiliser le L297, avec un pont à base de TIP en aval, ne voit en fait le jour que si nos besoins en courant dépassent les 2A. Dans ce cas seul la combinaison du L297 avec huit TIP par moteur nous permettrait de commander ce dernier.

Par contre si nos besoins, en courant, sont inférieurs aux 2A, l'utilisation des CI jouant à la fois le rôle de traducteur et de pont H sera la plus appropriée.

Donc, avant de pencher pour une des solutions restantes, il nous faut évaluer nos besoins en courant. Or nos besoins en courant sont liés au système mécanique de la table plasma. La détermination du moteur approprié passe donc par le calcul du couple à fournir par les moteurs pour accélérer la masse et vaincre l'effort résistant due au poids.

Le couple est donnée par la formule suivante:

T i= J (7)

Avec J l'inertie totale du système et alpha l'accélération. Nous devons donc avant tout déterminer ces deux paramètres pour notre application. Nous allons au cours de l'étude nous placer dans les cas les plus défavorable pour voir si en sur-dimmensionnant notre système d'une manière exagérée,

6 Les prix ont été consultés sur le site des constructeurs/distributeurs

35

Page 36: Rapport Fnal Aevc Indexes

nous aurons besoin d'avoir recours au duo L297 / TIP.

3.3.2 Couple Nécessaire:

• Inertie :

Nous allons supposer que notre système est relié à la masse à déplacer, que nous noterons Mc,, par un système pignon crémaillère ou vis/écrou de pas P..En notant JM l'inertie de l'arbre moteur et JC l'inertie de la masse à déplacer, l'inertie totale Jtot que doit vaincre le moteur pour réussir à accélérer ou décélérer le système est :

J tot=J M J C (8)

JC , l'inertie de la charge est donnée par [22]:

J c=M v P 2

22(9)

Pour nous placer toujours dans le cas défavorable, nous allons sur-dimensionner la masse à déplacer et la fixer à 70 kg et considérer une crémaillère/vis de pas P=5mm.

JM, l'inertie du moteur est quand à elle une donnée constructeur et change d'un moteur à un autre. Nous allons donc exploiter le fait que le standard NEMA impose une inertie du rotor inférieure à 0.7 Kg.cm² pour les moteurs de la catégorie 23 (dont le couple se situe entre 0.3 et 2.5 N.m). Nous choisirons cette inertie limite pour notre moteur.

Ce qui nous conduit à une inertie totale de J tot=0.770∗0.25

10=2 Kg cm²

• Friction:

Le moment de friction correspond à la force que l'on doit fournir pour palier à l'effort de frottement que produit le contact entre la charge à déplacer et le système de transmission. Le moment de friction est donné par :

T f =M c P

2 (10)

Avec μ le coefficient de frottement et η le rendement du système. On fixera ce denier à sa valeur minimale de 0.8 [23]

Matériaux μ

Acier / Acier 0.8

Acier / Acier (lubrifié) 0.16

Acier / Bronze 0.4

Acier / Bronze (lubrifié) 0.15

Tableau 7: Coefficient de frottement de différents matériaux[24]

On fixera la valeur du coefficient de frottement à sa plus grande valeur. On prendra donc μ=0.8.

Ce qui donne: T f =0.8∗70∗0.5

2 π∗0.8=5.8 N cm=0.06 N.m

36

Page 37: Rapport Fnal Aevc Indexes

• Accélération :

Pour calculer l'accélération approprié à laquelle on va déplacer notre table de découpe, nous avons tout d'abord fixé notre vitesse de déplacement maximale à 4m/min comme le montre la figure ci-dessous [25].

Nous fixerons aussi le temps d'accélération tacc à 17 ms. Ceci nous permet de calculer l'accélération:

=V 2

P 10 tacc (11)

Nous avons maintenant toutes les données nécessaire pour calculer le couple à fournir :C=J totC f =2∗0.9050.06=1.8 N.m

Donc, en sur-dimmensionnant le système sur toutes les étapes précédentes, nous sommes arrivés au résultat suivant; le moteur doit être capable de délivrer un couple de 1.8 N.m (en pratique un couple bien inférieur est de loin suffisant ).

Or il existe sur le marché un grand nombre de moteurs pas à pas fournissant un couple de plus de 2 N.m et nécessitant un courant de l'ordre de 2A ( voir annexes ).

Dans cette perspective, le besoin d'utiliser les transistors de puissance avec le traducteur L297 est écarté. Le A3977 est donc le meilleur candidat vu qu'il supporte un courant supérieur au UC3770B et qu'il contienne un double pont H à un prix relativement proche.

Malheureusement, comme nous ne disposons pas des moyens de souder les boîtiers du type eTSSOP, nous avons du abandonner, temporairement, l'option A3977.

Nous avons donc finalement opté pour la réalisation de la commande avec le UC3770 de Texas Instruments, qui contient un pont-H simple et supporte un courant de 2A.

3.3.3 Description de la carte:

La mise en place de la carte de commande à base de UC 3770 nécessite seulement l'ajout de quelques résistances, capacités et diodes de roues libres vu qu'il contient déjà:

37

figure 3.11: Vitesse de découpe =f (épaisseur)

Page 38: Rapport Fnal Aevc Indexes

-Un pont H à base de transistors bipolaires supportant un courant de 2A et une tension de 50V.

-Un comparateur sur 10bits pour la gestion du courant avec un monostable en aval.

-Une protection de surchauffe avec arrêt lorsque la température dépasse les 160 °C.

En travaillant à de grandes valeurs de courant (supérieur à 1A) le CI commence à dissiper plus de 1W en chaleur qui doivent être proprement évacuées à l'aide d'un radiateur.

La séparation entre la carte de commande et le port parallèle est assurée par un étage d'optocoupleurs 4N25.

En effet, vu la charge inductive que représente le moteur pas à pas, une séparation entre masse numérique et analogique est désirée, voir nécessaire.

Pour maintenir VBE inférieur à 0.5V, en absence de commande, et éviter qu'un signal parasite ne déclenche une commande inopinée, nous avons ramené l'émetteur du transistor à la masse. Ceci implique d'utiliser une commande inverse que nous avons configuré dans EMC2 ( voir config.hal ).

Comme nous l'avons signalé lors de la présentation du port parallèle, ce dernier ne peut fournir un courant supérieur à 2.5 mA. Or pour allumer la LED de l'optocoupleur, on doit fournir un courant de l'ordre de 15 mA. Un étage d'amplification de courant est donc nécessaire. Nous avons utilisé pour se faire des transistors NPN BC547.

Pour fixer la durée du monostable nous avons utilisés un circuit RC dont les valeurs sont calculés à partir de la formule ci dessous [26] :

T off =0.69 R6C 2 (12)

Nous avons aussi placé un filtre passe bas aux bornes de la résistance miroir de courant, comme le conseille le Datasheet , pour éliminer les pics qui risqueraient de déclencher malencontreusement le comparateur.

Deux résistances en parallèle ont été utilisés, comme miroir de courant, pour réduire le voltage à leurs bornes et minimiser par conséquent le voltage de référence que l'on doit fournir au comparateur..

Un régulateur de tension,LM 317, est utilisé pour alimenter à la fois les CIs et fournir la tension de référence qui permet de limiter le courant maximal. Pour garantir la flexibilité de la carte, l'ajout d'une résistance entre le connecteur I-SET permet de faire varier la valeur de Imax. de 500mA à 2A.

38

figure 3.12: Séparation galvanique et amplification de courant

figure 3.13: Bloc UC3770B

Page 39: Rapport Fnal Aevc Indexes

La carte de commande a été testée avec succès sur une plate-forme de test. La découpe simulée ( traçage sur feuille en papier) de quelques pièces s'est ainsi correctement déroulée avec respect des dimensions de ces dernières.

39

figure 3.14: Bloc d'alimentation

Page 40: Rapport Fnal Aevc Indexes

Conclusion et perspectives

Avec l'avènement des micro-ordinateurs et la montée en flèche de leurs performances, ce qui était impossible hier devient réalité aujourd'hui.

C'est ainsi que nous avons essayé d'utiliser à bon essien ces capacités de calcul pour réaliser la commande de notre station de découpe et générer un code machine exploitable.

Nous avons introduits les concepts de base de la CAO / FAO en insistant sur les spécificités de la découpe plasma.

Nous avons aussi mis en évidence la nécessité d'utiliser des méthodes d'optimisation du trajet et présenté différentes solutions possibles. C'est ainsi que nous avons découvert les algorithmes génétiques et réussi à les mettre en oeuvre. Il faut cependant noter que les performances de ces derniers peuvent être améliorés en utilisant d'autres variantes de sélection et / ou mutation.

Ensuite, nous avons passé en revue les différentes solutions de commande. L'emploi des moteurs pas à pas ayant été retenu comme solution, nous avons tenté d'exploiter au maximum les capacités de ces derniers en utilisant une commande à base de hacheur.

La commande des mouvements moteurs a été confiée à EMC2 que nous avons installé et configuré sur une station de travail Linux.

Bien que les essais effectués sur la plateforme de test se sont montrés concluant, un test réel reste nécessaire pour juger de la précision du système.

En ce qui concerne le logiciel que nous avons développés pour générer le code-G, il a remplit les principaux objectifs que nous nous sommes fixés tout en ayant une interface graphique pratique. Et bien qu'il s'acquitte parfaitement de sa tâche, deux principales fonctionnalités seraient la bienvenue. Ainsi, une meilleure approximation des contours, à base de décomposition en polygones, pourrait éviter à l'opérateur de replacer les points d'amorçage incohérents.

De plus, le placement automatique des pièces (auto-nesting) permettrait à ce dernier de rivaliser avec les logiciels commerciaux du secteur. Ceci est d'autant plus vrai que ce type de logiciels est employé dans le secteur textile et la menuiserie.

40

Page 41: Rapport Fnal Aevc Indexes

41

Page 42: Rapport Fnal Aevc Indexes

Bibliographie1: Découpage plasma, http://fr.wikipedia.org/wiki/Découpage_plasma

2: DXF, http://fr.wikipedia.org/wiki/Drawing_eXchange_Format

3: Code G, http://fr.wikipedia.org/wiki/Programmation_de_commande_numérique

4: Problème du voyageur de commerce, http://en.wikipedia.org/wiki/Travelling_salesman_problem

5: Tour de 2103 points, http://www.tsp.gatech.edu/d2103/d2103.html

6: Heuristique, http://fr.wikipedia.org/wiki/Heuristique

7: Recherche locale, http://fr.wikipedia.org/wiki/Recherche_locale

8: David S. Johnson,Lyle A. McGeoch, The Traveling Salesman Problem:A Case Study in Local

Optimization, 1997

9: Algorithme génétique, http://fr.wikipedia.org/wiki/Algorithme_génétique

10: Moteurs pas à pas VS. servo, http://www.torchmate.com/motors/electronics_selection.htm

11: Moteurs pas à pas, http://en.wikipedia.org/wiki/Stepper_motor

12: T. Kenjo, Stepping Motors and Their Microprocessor Controls, 1984

13: Schéma commande bipolaire, http://fr.wikipedia.org/wiki/Moteur_pas_à_pas

14: Yeadon and Yeadon, The Handbook of Small Electric Motors, 2001

15: Microchip Technology Inc., AN822, Stepper Motor Microstepping with PIC18C452,

16: DCN, http://fr.wikipedia.org/wiki/Programmation_de_commande_numérique

17: À propos d'EMC2, http://www.linuxcnc.org/content/view/6/5/lang,fr/

18: Fred Proctor, John Michaloski, EMC architecture overview,

19: The EMC Team, HAL User Manual,

20: port parallèle, http://www.aurel32.net/elec/port_parallele.php

21: parallel port trivia, http://www.epanorama.net/circuits/parallel_output.html

42

Page 43: Rapport Fnal Aevc Indexes

ANNEXES

43

Page 44: Rapport Fnal Aevc Indexes

Moteur I (A) C (N;M) R (ohm) L (mH) Vnom (V)

M57STH76-2808S 2 1,8 2 6,4 4

5718L-01S 1.40 2.08 4.5 15.3 2.60

5718M-04P 1.40 1.22 3.5 10.6 1.50

Sanyo 103H7126-0710 2,2 1,65 0,9 2,2 2

44