Vous êtes sur la page 1sur 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
Avant Propos
Remercier l'équipe d'emc et surtout jeff

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

Index des figures


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

4
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
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.

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


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].

figure 1.2: Station de découpe plasma

6
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
figure 1.3: Point d'amorçage de découpe

• 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.

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

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.

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

8
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.

figure 1.6: Trajet non optimisé de l'outil

9
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:
N −1
D= ∑ [d c πi  , c π i 1d c π N  , c π 1 ] (1)
i =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:
n −1 !
nbr it = (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
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

figure 1.7: Problème du voyageur de commerce


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
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
figure 1.10: Mutation
figure 1.8: Croisement simple figure 1.9: Croisement double
-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 figure 1.11: Étapes d'un algorithme génétique
l'individu nouvellement créé que s'il y a lieu de l'être . [9]
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
14
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
• 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]..

figure 2.1: Moteur pas à pas avec double arbre


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
É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.

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


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

• 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.

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


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.5: Réalisation d'un pas en mode pas complet

• 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.

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

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
2.2.3 Caractéristiques:

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


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.
V mot
I t = (3)
R[1−exp − Rt ⁄ L]

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

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:

dI Vmot
= (4)
dt L

19
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:

V mot
I max = (5)
R
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
figure 2.9: Méthode à base de deux alimentations[14]
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 à V mot. 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.

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

21
22
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 Controller


4 National Institute of Standards and Technology

23
• 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].

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

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
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
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].

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


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
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
figure 2.13: Architecture simplifiée d'EMC2
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
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.

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

• 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:

figure 3.3: Algorithme d'assemblage des contours

29
• 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.

figure 3.4: Insertion des points d'amorçage

-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

figure 3.5: 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
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
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.

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


longs trajets courts trajets
20000 3000
18000
2500
16000
14000 2000
Distance

12000
Distance

10000 1500
8000
6000 1000
4000
500
2000
0 0
0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11

18 pts 12 pts 34 pts 16 pts 9 pts

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

32
figure 3.8: L'interface graphique de l'application

33
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 :

figure 3.10: Séquence de commande pas complet figure 3.9: Séquence de commande 1/2 pas
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
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
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]:


M v P2
J c= (9)
 22
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.
70∗0.25
Ce qui nous conduit à une inertie totale de J tot=0.7 =2 Kg cm²
10

• 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 :
McP
T f= (10)
 2 
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.
0.8∗70∗0.5
Ce qui donne: T f = =5.8 N cm=0.06 N.m
2 π∗0.8

36
• 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].

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


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

=V 2 (11)
P 10 t acc
Nous avons maintenant toutes les données nécessaire pour calculer le couple à fournir :
C =J tot C f =2∗0.9050.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
-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 figure 3.12: Séparation galvanique
un courant de l'ordre de 15 mA. Un étage d'amplification de et amplification de courant
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 R 6 C 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.. figure 3.13: Bloc UC3770B

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.14: Bloc d'alimentation

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
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
41
Bibliographie
1: 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
ANNEXES

43
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