This documentation is no longer maintained. For documentation of the current version of emc2, please see http://www.linuxcnc.org/docview/html

Table des matières

Liste des figures

1 EMC le Enhanced Machine Control

1.1 Introduction

Pour les installations basées sur des moteurs pas à pas lisez le Guide du débutant. Si EMC est installé et configuré lisez le manuel de l'utilisateur pour plus d'informations sur son utilisation.

Le manuel de l'intégrateur est plutôt orienté vers des machines plus complexes, leur configuration et leur installation. Comme intégrateur système votre tâche consiste à réunir entre eux des sous-systèmes et à garantir que ces sous-systèmes fonctionnent ensembles. EMC est un de ces sous-systèmes.

1.2 Vue d'ensemble de la CNC

Le terme CNC a pris beaucoup de sens différents au cours des années. Dans les débuts, la CNC a remplacé les mains de l'opérateur par des moteurs, lesquels suivaient des commandes reproduisant au mieux les mouvements d'un opérateur tournant les manivelles. De ces premières machines, un langage de contrôle de l'outil est né, puis a grandi. Ce langage est appelé RS274 dont différentes variantes ont été proposées. Des ajouts lui ont été apportés par les fabricants de machines-outils et de contrôleurs pour répondre aux besoins spécifiques de leurs machines. Pour qu'une machine puisse changer d'outil pendant l'exécution d'un programme il est nécessaire de disposer de commandes de changement d'outil. Si un chargeur de pièces doit installer un nouveau brut, il est également nécessaire d'avoir les commandes permettant de gérer ce type de matériel. Comme tous les langages, RS274 a évolué au fil du temps. Actuellement plusieurs dialectes existent. En général, chaque fabricant de machines-outils essaie de rester cohérent avec ses lignes de produits mais il arrive que des commandes produisent des effets complétement différents d'une machine à une autre.

Très récemment le langage de CNC a été masqué derrière différents symboles de programmation se référant à un “Langage 1 de programmation conversationnel.” Une caractéristique commune de ces types de programmation est la sélection d'une forme ou d'une géomètrie et l'ajout de valeurs pour les coins, les limites, ou les caractéristiques de cette géomètrie.

L'usage du Dessin Assisté par Ordinateur a également eu un impact sur les langages de programmation CNC. Les dessins réalisés en DAO étant sauvegardés sous forme de listes de données avec les variables associées à chaque géomètrie, ces listes sont facilement interprétées dans le G-Code. Les interpréteurs qui réalisent ce travail sont appelés des programmes de CAM (Computer Aided Machining).

Ce sont des convertisseurs de DAO, l'ensemble des logiciels de dessin, comme Corel et presque la totalité des programmes graphiques, fournissent des fichiers pouvant être convertis. Ces convertisseurs ont été écrits pour lire un fichier d'une image bitmap, en trames ou vectorielle et la transformer en un fichier G-Code pouvant être lancé sur une machine CNC.

Vous vous demandez peut être, “Pourquoi ai-je besoin de savoir celà?” La réponse est que dans sa forme actuelle EMC2 ne peut utiliser directement, pour l'usinage, ni un fichier non converti issu d'une DAO, ni aucune image. EMC2 utilise une variante du premier langage CNC nommée RS274NGC. (pour Next Generation Controller). Toutes les commandes passées à EMC2 doivent l'être dans une forme reconnue par son interpréteur RS274NGC. Ce qui signifie que si vous voulez usiner une pièce dessinée dans un programme graphique ou de dessin, vous devez également utiliser un programme capable de convertir le format du fichier de sortie de ce programme en un autre fichier dans le format reconnu et accepté par l'interpréteur d'EMC2. Il existe plusieurs programmes commerciaux effectuant cette conversion. Au moins un convertisseur (Ace) a été mis sous un type de copyright le rendant disponible au public.

Il y a eu de récentes discussions à propos de l'écriture d'une interface “conversationnelle” ou géomètrique, permettant à l'opérateur d'entrer les programmes plus ou moins de la même façon que sur certains contrôleurs propriétaires modernes, mais c'est encore loin.

1.3 Système d'exploitation de l'ordinateur

Le code d'EMC2 peut être compilé sur la plupart des distributions GNU-Linux (sous réserve que son noyau ait été patché avec une extension temps réel). En plus du code source, certaines distributions binaires sont disponibles. Le dernier paquet a été créé autour d'une distribution Ubuntu qui est une ditribution GNU-Linux. Ubuntu est la distribution la plus appréciée par les utilisateurs de Linux novices elle est considérée comme étant trés facile à utiliser. En plus de celà, il existe pour elle un grand nombre de sites d'entraide dans le monde entier. Installer EMC2 cette distribution est extrêmement simple, voir sur le site.

EMC2 ne fonctionne pas sur les systèmes d'exploitation Microsoft (TM). La raison en est qu'EMC2 requiert un environnement temps réel pour son planificateur de mouvements et ses générateurs de pas. En plus, il bénéficie de l'excellente stabilité et des performances nettement meilleures du système d'exploitation Linux.

1.4 Histoire du logiciel

Le code d'EMC a été créé par la division des systèmes intelligents, à l'institut national des standards et des technologies des Etats Unis. Faciles à trouver et depuis longtemps sur le web sous le nom de NIST , voici quelques informations donnant une meilleure compréhension des raisons essentielles des liens entre ce logiciel et le NIST.

Une part de notre collaboration (le NIST) avec le groupe d'utilisateurs OMAC , a consisté à écrire des logiciels implémentants le contrôle temps réel d'équipements, tels que machines-outils, robots et machines de mesure de coordonnées. L'objectif de ce développement de logiciels est double: premièrement, fournir des implémentations logicielles complètes de tous les modules OMAC dans le but de valider la programmation d'interfaces; et deuxièmement, fournir un véhicule pour transférer le contrôle de ces technologies aux petites et moyennes industries via les extensions de partenariat industriel du NIST. Le logiciel EMC est basé sur le système de contrôle temps réel du NIST (RCS) Sa méthodologie et sa programmation utilisent les bibliothèques RCS du NIST. La bibliothèque RCS facilite le portage du code du contrôleur sur des plateformes Unix et Microsoft variées, produisant une interface programmée (API) neutre par rapport au système d'exploitation et ses ressources comme la mémoire partagée, les sémaphores et les horloges. La bibliothèque RCS implémente aussi un modèle de communication, le Neutral Manufacturing Language, qui autorise le processus de contrôle à lire et écrire des structures de données C++ au travers d'un environnement simple et homogène ou d'un environnement hétérogène mis en réseau. Le logiciel EMC est écrit en C et en C++, il a été porté sur les systèmes d'exploitation PC Linux, Windows NT et Sun Solaris. Quand il fonctionne sur les équipements actuels, une version temps réel de Linux est utilisée pour permettre les taux de calculs déterministes requis (200 microsecondes typiquement). Le logiciel peut être entièrement lancé en mode simulation, moteurs machine à l'arrêt. Ceci permet à un parc complet de machines d'être créé et réglé sur le PC et dans l'environnement de l'intégrateur.

EMC a été installé sur de nombreuses machines, certaines avec servomoteurs, d'autres des moteurs pas à pas. Voici un échantillonnage des plus anciennes applications.

Après ces premiers tests, Jon Elson a trouvé des notes de Shaver Engineering et a remplacé le contrôleur Allen Bradley 7300, de la taille d'un réfrigérateur, sur sa Bridgeport et avec EMC tournant sur une distribution de Linux Red Hat 5.2. Il a été emballé par les résultats et a parlé du logiciel sur plusieurs newsgroups. Il utilise toujours cette installation et a produit plusieurs cartes supportées par le logiciel.

Ces premières applications ont vite été connues du monde entier. Il est maintenant utilisé pour contrôler différents types de machines. Plus récemment la compagnie Sherline http://www.sherline.com a publié la première version de sa fraiseuse CNC. Elle utilise une version standard d'EMC.

Les fichiers du code source pour compiler le contrôleur sont disponibles dans le dépot sur http://git.linuxcnc.org. Ils sont disponibles à la lecture ou au téléchargement. Le code source d'EMC2 (avec quelques exceptions2) est fourni sous GNU General Public License (GPL). La GPL controle les termes sous lesquels EMC2 peut être modifié et distribué. C'est fait pour protéger les droits de gens comme vous, d'utiliser, étudier, adapter, améliorer et redistribuer ce logiciel librement, maintenant et dans le futur. Pour lire à propos de vos droits d'utilisateur d'EMC2 et les termes sous lesquels il vous est permis de distribuer n'importe quelles modifications que vous auriez pu faire, voyez la licence GPL complète à http://www.gnu.org/copyleft/gpl.html.

1.5 Comment marche EMC2

EMC2 est un peu plus que juste un autre programme de fraiseuse CNC . Il est capable de contrôler des machines-outils, des robots ou d'autres automatismes. Il est capable de contrôler des servomoteurs, des moteurs pas à pas, des relais ainsi que d'autres mécanismes relatifs aux machines-outils. Dans ce manuel nous nous concentrerons seulement sur de petites machines mais aux possibilités impressionnantes, les mini fraiseuses.

Figure: Simple machine contrôlée par EMC2

La figure [.] montre un simple diagramme bloc représentant une machine 3 axes typique comme EMC2 les aime. Cette figure montre un système basé sur des moteurs pas à pas. Le PC, tournant sous Linux contrôle les interfaces de puissance des moteurs pas à pas en leur envoyant des signaux au travers du port parallèle. Ces signaux (impulsions) font que la puissance est fournie aux moteurs. EMC2 peut également contrôler des servomoteurs via une interface de puissance pour servomoteurs ou utiliser le port parallèle étendu connecté à une carte de contrôle externe. Quand nous examinerons chacun des composants qui forment un système EMC2 nous nous référerons à cette machine typique.

Il y a quatre composants dans le logiciel EMC2: un controleur de mouvement (EMCMOT), un contrôleur d'entrées/sorties discrètes (EMCIO), un coordinateur d'exécution des tâches (EMCTASK) et une bibliothèque d'interfaces utilisateur, tant graphiques que textuelles. EMC2, pour prendre le contrôle complet d'une mini fraiseuse doit démarrer, un de chacun, de ces quatre composants. Chaque composant sera brièvement décrit ci-dessous. En plus, il existe une couche appelée HAL (la couche d'abstraction du matériel), qui permet la configuration simple d'EMC2 sans qu'il soit besoin de le recompiler.

1.5.1 Interfaces utilisateur graphiques

L'interface graphique est la partie d'EMC2 qui interragit avec l'opérateur de la machine-outil. EMC2 est fourni avec plusieurs interfaces utilisateurs graphiques:

Figure: L'interface graphique AXIS
Figure: L'interface graphique Keystick
Figure: L'interface graphique Mini
Figure: L'interface graphique TkEmc
Figure: L'interface graphique XEMC

Tkemc et Mini peuvent tourner sous Linux, Mac et Microsoft Windows si le langage de programmation Tcl/Tk a été préalablement installé. Les versions Mac et Microsoft Windows peuvent être connectées à EMC2 tournant sur une machine Linux temps réel via une connection réseau, permettant de visualiser la machine depuis un emplacement distant. Les instructions pour installer et configurer une telle connection entre un MAC ou une machine Micosoft et un PC sur lequel tourne EMC2 se trouvent dans le manuel de l'intégrateur.

1.5.2 Contrôleur de mouvement EMCMOT

Le contrôleur de mouvement gère l'échantillonage de position des axes à contrôler, calcule le prochain point sur la trajectoire, calcule l'interpolation entre ces points sur la trajectoire et calcule les valeurs de sortie vers les moteurs. Pour un système à servomoteurs, la sortie est basée sur un algorithme de régulation PID en boucle fermée. Pour un système à moteurs pas à pas, les calculs se font en boucle ouverte et les impulsions sont envoyées aux moteurs en cumulant leurs positions jusqu'à une impulsion de plus que leur position commandée. Le contrôleur de mouvement gère les limites logicielles programmables, il gère également l'interface des interrupteurs de fins de course et ceux des origines machine.

Le contrôleur de mouvement est écrit pour être assez générique. Des fichiers d'initialisation (avec la même syntaxe que les fichiers INI de Microsoft Windows ) sont utilisés pour configurer les différents paramètres tels que le nombre et le type d'axes (par exemple: linéaire ou rotatif), les facteurs d'échelle des differents capteurs (par exemple: codeurs, compteurs) et unités machine (par exemple: millimètres, pouces), le gain des servo, les temps de cycle du planificateur de trajectoire et d'autres paramètres du système. Les cinématiques complexes pour les robots peuvent être codées en C selon une autre interface remplaçant les routines des cinématiques de machines cartésiennes à 3 axes.

1.5.3 Contrôleur d'entrées/sorties discrètes EMCIO

Le contrôleur d'entrées/sorties est hautement spécifique à la machine, il n'est en général pas personnalisable par la technique du fichier INI utilisée pour le plus générique contrôleur de mouvement. Toutefois, depuis qu'EMC2 utilise HAL, la reconfiguration du sous-sytème d'entrées/sorties est devenu vraiment très puissant et flexible. EMC2 contient un module automate programmable (similaire à un automate matériel PLC) il peut être utilisé pour des scénarios très complexes comme des changeurs d'outils etc.

Dans EMC2 il y a seulement un gros controleur d'entrées/sorties, lequel fournit le support pour tous les types d'actions et de contrôle matériel. Toutes ses sorties et entrées sont des HAL pins (plus à ce sujet plus tard), vous pouvez donc utiliser ce sous-ensemble pour l'ajuster à votre matériel et tout le nécessaire pour votre application.

1.5.4 Coordinateur de tâches EMCTASK

Figure: Diagramme de process d'EMC2

Le coordinateur de l'exécution des tâches est responsable de l'interprétation du G-code et du M-code du programme, lequel ne varie pas beaucoup d'une machine à l'autre. Un programme en G-code est conçu pour travailler comme un opérateur pourrait travailler. Le mouvement ou les tours de manivelle étant codés dans des blocs. Si un opérateur veut que sa machine se déplace de 1 pouce dans la direction +X avec une vitesse fixe, il doit tourner lentement sa manivelle de cinq tours en sens horaire et en 20 secondes. Pour obtenir un mouvement équivalent, cet opérateur programmera sur sa machine CNC le bloc de code suivant:

G1 F3 X1.000

G1 signifie que l'outil se déplacera selon la vitesse d'avance programmée, au contraire d'une avance en vitesse aussi rapide que possible (G0 est la commande pour un mouvement en vitesse rapide, utilisée lors des déplacements en dehors de la matière qui doivent durer le moins longtemps possible puisque non productifs). Le F3 signifie que le déplacement doit se faire à 3 pouces par minute, ou 3 millimètres par minute si on travaille en unités métriques! Le X1.000 (en supposant que l'axe X démarre de zéro) demande que l'outil se déplace d'un pouce dans la direction de X positive. Vous aurez beaucoup de lecture à propos du G-code dans les chapitres sur la programmation.

La figure [.] est un diagramme bloc montrant comment ordinateur avec EMC2 est utilisé pour contrôler une machine avec un programme en G-code. Un G-code peut être envoyé en l'entrant au clavier dans la zone de données manuelles (MDI) (Machine Device Interface) ou, il peut être envoyé à partir d'un fichier quand la machine est en mode Auto . Ces choix sont faits par l'opérateur et entrés en utilisant une des interfaces utilisateur disponibles.

Le G-code est envoyé à l'interpréteur qui compare le nouveau bloc avec les données qu'il a reçu précédemment. Il connait alors les besoins pour effectuer le mouvement ou pour positionner les sorties ou les entrées du système et envoyer les blocs de commandes au planificateur de mouvement et au contrôleur de tâches.

1.5.5 Modes opératoires

Quand EMC2 fonctionne, il existe trois différents modes majeurs pour entrer des commandes. Les modes Manuel, Auto et MDI. Passer d'un mode à un autre marque une grande différence dans le comportement d'EMC2. Des choses spécifiques à un mode ne peuvent pas être faites dans un autre. L'opérateur peut faire une prise d'origine sur un axe en mode manuel mais pas en mode auto ou MDI. L'opérateur peut lancer l'exécution complète d'un programme de G-codes en mode auto mais pas en mode manuel ni en MDI.

En mode manuel, chaque commande est entrée séparément. En termes humains une commande manuelle pourrait être “active l'arrosage” ou “jog l'axe X à 250 millimètres par minute.” C'est en gros équivalent à basculer un interrupteur ou à tourner la manivelle d'un axe. Ces commandes sont normalement contrôlées en pressant un bouton de l'interface graphique avec la souris ou en maintenant appuyée une touche du clavier. En mode auto, un bouton similaire ou l'appui d'une touche peuvent être utilisés pour charger ou lancer l'exécution complète d'un programme de G-codes stocké dans un fichier. En mode d'entrée de données manuelles (MDI) l'opérateur peut saisir un bloc de codes et dire à la machine de l'exécuter en pressant la touche <Return> ou <Entrée> du clavier.

Certaines commandes de mouvement sont disponibles et produisent les mêmes effets dans tous les modes. Il s'agit des commandes abort, estop et feed rate override. Ces commandes se dispensent d'explications.

L'interface utilisateur graphique AXIS supprime certaines distinctions entre Auto et les autres modes en rendant automatique la disponibilité des commandes, la plupart du temps. Il rend également floue la distinction entre Manuel et MDI parce que certaines commandes manuelles comme Toucher, sont également implémentées en envoyant une commande MDI.

1.5.6 Informations affichées

Quand EMC2 fonctionne, chacun de ses modules maintient la conversation avec les autres et avec l'interface graphique. C'est à la charge de l'affichage de sélectionner quel flux d'information l'opérateur doit voir et de l'arranger sur son écran pour le rendre facile à comprendre par l'opérateur. Le point le plus important de l'affichage est peut être la possibilité de voir le fonctionnement interne d'EMC2. Vous devrez garder un oeil sur le mode d'affichage.

L'affichage du mode actif permet de savoir si il y a cohérence entre l'affichage et la position de chaque axe. La plupart des interfaces permettent à l'opérateur de lire la position actuelle ou commandée ainsi que la position machine ou relative.

Machine
C'est la position d'un axe par rapport à l'origine machine, après que la POM a été faite.
Relative
C'est la position relative d'un axe après qu'un ou plusieurs décalages aient été appliqués (pièce, outil, etc).
Actuelle
C'est la position réelle d'un axe en coordonnées machine ou relatives.
Commandée
C'est la position commandée sur laquelle l'axe doit aller.

Elles sont toutes exactement les mêmes si aucun décalage n'a été appliqué et qu'aucune bande morte n'a été paramètrée dans le fichier INI. La bande morte (Deadband) est une toute petite distance, supposée très proche -- peut être une impulsion de pas ou un point de codeur.

Il est également important de voir tous les messages ou les codes d'erreur envoyés par EMC2. Ceux-ci sont utilisés pour demander que l'opérateur change l'outil, pour décrire les problèmes dans les programmes G-code ou dire pourquoi la machine s'est arrêtée.

Vous modifierez votre façon de travailler avec ces petits textes, vous apprendrez, petit à petit, comment ajuster et faire fonctionner votre machine avec le logiciel EMC2. Pendant que vous apprendrez à affiner les réglages, que vous travaillerez ici avec votre mini fraiseuse, vous penserez à d'autres applications et à d'autres possibilités. Ce seront les sujets d'autres manuels de linuxcnc.org.

1.6 Penser comme un intégrateur

La tâche principale d'un intégrateur consiste à imaginer comment connecter un PC sur lequel fonctionnera EMC2 avec une machine et à configurer le logiciel pour qu'il pilote correctement la machine.

1.6.1 Unités

Les unités peuvent prêter à confusion. Vous pouvez vous demander, “Vaut-il mieux travailler en pouces, en pieds, en centimètres, millimètres ou autre?” Plusieurs réponses sont possibles à cette question mais la meilleure est que ça marchera mieux dans l'unité avec laquelle vous avez choisi de configurer la machine.

Au niveau de la machine, chacun des axes est réglé avec une unité fixée dans une variable du fichier INI. Cette variable ressemble à ceci:

UNITS = inch

ou

UNITS = mm

Après avoir décidé de l'unité utilisée sur les axes, il faut indiquer à EMC2 combien d'impulsions moteur, ou de codeur, il doit envoyer ou lire pour produire un déplacement pour chaque unité de distance. Après celà, EMC2 sait compter les unités de distance. Cependant il est très important de comprendre que ce calcul de distance pour les axes est différent de la distance commandée dans le programme. Vous pouvez commander une distance en millimètres ou en pouces sans même penser aux unités car il existe des G-code permettant de basculer d'une unité métrique à une unité impériale.

Index

Pieds de page

1   Un fabricant de machines, Hurco, clame avoir seul les droits de l'usage de ces symboles en programmation ainsi que de l'usage du terme conversationnel utilisé dans ce contexte. Retour

2   Certaines parties d'EMC2 sont fournies sous license “Lesser” GPL (LPGL), qui lui permet d'être utilisé dans des logiciels propriétaires sous réserve de l'observation de certaines restrictions. Retour