'''EMC''' steht für Enhanced Machine Controller. Hiermit kann man unter Linux CNC-Maschinen steuern. Typische Anwendungen sind CNC-Fräsmaschinen mit 3-6 Achsen, mit denen sowohl 2D wie auch 3D gefräst werden kann. '''EMC''' besteht aus einem G-Code Interpreter und diversen Motorsteuerungsmodulen, die sowohl Schrittmotoren wie auch Servomotoren ansteuern können. Damit sind auch PID-Regler und Inkrementalgeber-Feedback realisiert. Die Ausgabe der Motorsteuerung kann über ein oder mehrere Parallelports oder über spezielle Karten geschehen. Wer bisher Programme [[http://www.lewetz.de|PC-NC, WinPC-NC]], [[http://www.dakeng.com/turbocnc.html|turbocnc]], [[http://www.artofcnc.ca|Mach1, Mach2, Mach3]] oder [[http://www.trimeta.de|Trimeta EdiTasc-CNC]] einsetzt, für den könnte EMC eine freie Alternative sein. Ein Vorteil von '''EMC''' gegenüber kommerziellen Lösungen ist, daß EMC durch den offenen Quellcode problemlos an nicht-karthesische Maschinenkinematiken anpassbar ist, wie anhand dieser [[http://audiflitzer.de/mixer.html|Scherenkinematik gesteuert mit EMC2]] zu sehen ist. Homepage: http://www.linuxcnc.org/ Lizenz: [[GPL]] = Unterthemen = * [[EMC/EMC2 Installation|Installation]] * [[EMC/ServoGecko|Servo-Steuerungen]] * [[EMC/Tastaturbelegung|Tastaturbelegung]] * [[EMC/Eigene M-Funktionen|Eigene M-Funktionen]] * [[EMC/EMC2-I18N-Deutsch|EMC spricht Deutsch]] * [[EMC/EMC2 Dokumentation|Dokumentation]] * [[EMC/DokuWunschListe]] * [[EMC/KonfigParameter]] * [[EMC/Lehre&Forschung]] == Veraltete Unterthemen == * [[EMC/QuickStart]] * [[EMC/FAQ]] * [[EMC/KonfigStepper]] * [[EMC/BeispielIniFiles]] * [[EMC/PIDRegler]] * [[/Automatischer Werkzeugwechsel]] * [[EMC/WieMacheIchWas]] = Features = * Schrittmotoransteuerung über Takt/Richtung * Servoansteuerung z.B. über die [[http://www.mesanet.com/|Mesa-Karten 5i20/7i33]], [[http://www.servotogo.com|ServoToGo-Karte]] oder die [[http://vitalsystem.com/motion/index.htm|MOTENC-100 Karte]] * bis zu 6 Achsen simultan, damit auch für Hexapoden geeignet * sowohl für lineare wie für rotierende Achsen * PID-Regler mit Feed-Forward-Gain * EIA-RS 274-D GCODE kompatibel * Achsgeschwindigkeiten getrennt einstellbar * 3 Grafische Frontends (tkemc, mini, AXIS), Shell-Frontend * "Eingebautes" Digital-Oszilloskop zur Anzeige von Position, Beschleunigung, Geschwindigkeit und Zeit * Quellcode-offen, kann somit leicht angepasst werden * RTAI oder rtlinux Realtime-Interface * Konfiguration über Textdatei (Ini-File-Style) * Remote GUI von einem Linux-, Windows- oder Mac OS X Rechner, auch [[VNC]] ist möglich * externer Notaus-Schalter * Homing-Schalter mit Polaritätsauswahl * Limit-Endschalter mit Polaritätsauswahl * 2. parallele Schnittstelle für weitere Steueraufgaben * Steuerung Kühlflüssigkeit. * Spindel on/off, rechts/links, Drehzahl (mit entspr. IO-Karte). * max. Schleppabstand/Schleppfehler einstellbar * freie Auswahl IO-Adressen für parall. Schnittstellen * Vorschub-Überlagerung * manuelles Verfahren mit einstellbarem Achsvorschub * mm und Zoll als Einheiten * Backplot, Werkzeugbahnen können in verschiedenen Ansichten dargestellt werden * Spindelspielkorrektur (Backlash) * einstellbare Motordrehrichtung * 3 verschiedene Bahnsteuerungsmodis (Exakt versus Speed) * Achsbeschleunigung (ein Wert für alle Achsen) * G-Code Programme lassen sich anhalten und an beliebiger Stelle neu aufsetzen * direkte Eingabe von G-Codes zur manuellen Steuerung (G-Code Kommandozeile (MDI)) * durch Linux vollen Netzwerkzugriff zum Steuerungs-PC (nfs, samba, ftp, ssh, scp, ppp) * durch Linux Multitasking: Während der Abarbeitung des Programms kann mit anderen Applikationen gearbeitet werden. * bis zu 60 kHz Schrittfrequenz * und vieles mehr = Entwicklungs-Stand und Historie = EMC wurde am [[http://www.isd.mel.nist.gov/|National Institute of Standards & Technology (NIST)]] bereits ab etwa 1994 entwickelt. Kernstück ist der sehr gut dokumentierte Quellcode des RS274 G-Code Interpreters von [[http://www.isd.mel.nist.gov/personnel/kramer/publications.html|Thomas Kramer]]. Dieser liest den G-Code ein und erzeugt Maschinen-Steuerbefehle, die an intelligente Steuerungen direkt weitergegeben werden können. Später entstand daraus EMC, welches die Intelligenz auf den PC verlagert und somit mit einfachen Motorkarten auskommt. Bei Schrittmotoren reicht z.B. eine Steuerung, die Takt und Richtung pro Achse über den Parallelport empfängt. Im Jahr 2000 wurde EMC als Open-Source Projekt freigegeben und auf [[http://sourceforge.net/projects/emc/|Sourceforge]] gehostet. Seither entsteht eine freie Entwicklergemeinde, die dieses Projekt weiter entwickelt. Derzeit (Januar 2005) sind 44 Entwickler bei Sourceforge eingetragen. Das Projekt kam 2004 durch die Entwicklung von EMC2 wieder mehr in Fahrt. EMC ist so ausgereift, dass es in einer Vielzahl von Anwendungsfällen im echten produktivem Einsatz ist. Sowohl im kommerziellen Bereich wie auch im Hobbybereich. Und dies schon seit mehreren Jahren. Die Installation und Konfiguration des System gestaltete sich anfangs jedoch nicht gerade einfach. Damit EMC einfacher installiert werden kann und für freie Entwickler attraktiver wird, wurde sie in eine für freie Projekte konforme Struktur gebracht. Dies verfolgt der EMC2 Zweig im CVS bei Sourceforge. EMC2 beinhaltet auch einen Hardware-Abstraction-Layer (HAL). Dieser stellt eine einheitliche Schnittstelle für alle Schnittstellenhardware zur Verfügung. Damit is es sehr leicht möglich, spezielle Motorsteuerungskarten einzubinden. Auch die Pinbelegung wird so flexibel anpassbar. Man könnte z.B. für Schrittmotoren eine Digitale-IO-Karte anstatt des Parallelports verwenden. Für Servosysteme können Karten anderer Hersteller recht einfach eingebunden werden. EMC2 ist also gerade für Programmierer und Systemintegratoren eine interessante Vortentwicklung. = Hardware-Voraussetzungen = Bei aktuellen Versionen braucht die grafische Oberfläche Rechenleistung, zumal der Realtime-Kernel einem ja Rechenleistung abzieht. Ein modernes Linux mit grafischer Oberfläche (KDE/Gnome) braucht schon mindestens einen 800MHz Rechner mit 512 MB Speicher, um komfortabel arbeiten zu können. Mit EMC und Realtimekernel im Hintergrund sollten es dann schon mindestens 1 GHz sein. 512MB Speicher sollten ausreichen. Auch wenn EMC auf langsameren Rechnern prinzipiell läuft, lässt sich nicht flüssig damit arbeiten. = Weblinks = == Grundlegendes == * [[http://www.linuxcnc.org/|EMC Interneseite]] * [[http://sourceforge.net/projects/emc/|EMC auf Sourceforge]] * [[http://freenet-homepage.de/LinuxCNC|Deutsche EMC Seite]] * [[http://www.isd.mel.nist.gov/|NIST - historische Quelle von EMC]] == Handbücher und Dokumentationen == * [[http://wiki.linuxcnc.org/|EMC Wiki]] * [[http://www.linuxcnc.org/docs/|Dokumentation]] * [[http://www.isd.mel.nist.gov/documents/kramer/RS274NGC_3.pdf|NIST RS274NGC G-Code Interpreter Doku (pdf)]] * [[http://www.linuxcnc.org/handbook/RS274NGC_3/RS274NGC_3TOC.html|G-Code Interpreter (html)]] * [[http://www.linuxcnc.org/irc/irc.freenode.net:6667/emc/|EMC IRC-Logs]] * [[http://cl-manual.lonnoy.be/umanual_for_classicladder.html|ClassicLadder Manual (Handbuch für die 'eingebaute' SPS)]] == Foren == * [[http://www.cncecke.de/forum/forumdisplay.php?f=178|Deutsches EMC Forum]] == EMC Anwenderseiten == * [[http://www.fjungclaus.de/index.html?http://www.fjungclaus.de/fbms/tech_data.htm|Erfahrungen von Frank Jungclaus]] * [[http://www.lmwatts.com/cnc.html|Anwendung: lmwatts.com: Große CNC-Fräse mit EMC betrieben]] * [[http://users.pandora.be/engineering/index_files/page0001.html|Anwendung: pandora.be: Triton Shaper]] * [[http://www.sherline.com/emc|sherline.com: Kommerzielles System unter EMC Kontrolle]] * [[http://www.reintechnisch.de/pub/emc/Flanschmodell.JPG|WinfriedMueller: in EMC gefräster Getriebeflansch]] * [[http://users.erols.com/mshaver/|Matt Shaver's Bridgeport]] * [[http://pico-systems.com/Machining.html|Erfahrungen von Jon Elsons]] * [[http://www.amtsinc.com/Retro.htm|Plasma- / Autogenschneidanlage, modernisiert mit EMC BDI Live rc46]] == Linux Programme zur Erzeugung von G-Code == * [[http://www.cadcam.co.at/freiter/gCAD3D.htm|gCAD3D: Kostenlos und uneingeschränkt verwendbares 3D CAD/CAM System, leider für den Amateur schwierig zu bedienen]] * [[http://sagcad.sourceforge.jp/|SagCAD: Einfach zu bedienendes 2D CAD System mit der Möglichkeit Konturen als G-Code zu exportieren. Lizenz: GPL]] * [[http://www.ribbonsoft.com/qcad.html|QCad: Einfach zu bedienendes 2D CAD System (GPL)]] * [[http://www.gnu.org/software/hp2xx/hp2xx.html|hp2xx: Kommandozeilenprogramm mit der Möglichkeit Plotterdateien im HPGL Format in G-Code umzuwandeln. Lizenz: GPL]] * [[http://gcnccam.sourceforge.net/|gCncCam: Grafisches Linux CAM System zum wandeln von CAD Zeichnungen (DXF-Files) in G-Code, Lizenz: GPL]] * [[http://www.mgl.ca/~ecp/gobweb/cnc.c|dxf2cnc: Kommandozeilenprogramm für die Erzeugung von G-Code aus .dxf Dateien]] * [[http://web.media.mit.edu/~neilg/fab/dist/cam.py|cam.py: Python Programm mit Tkinter GUI. Erzeugt G-Code aus *.svg, *.dxf (2D Polylinien, 3D Polymeshes) *.cmp,*.sol,*.plc,*.sts,*.stc,*.gtl (Gerber) , *.jpg Dateien]] * [[http://www.dakeng.com/ace.html|ACE Converter: Konvertiert .dxf in G-Code. Müsste auf Linux anpassbar sein, da unter der GPL und mit Borland C++ Quellcode]] * [[http://www.sico.at/spce/spce.html|SPCE ist ein PHP Skript der aus *.png, *.gif und *.jpeg Bilddateien G-Code erzeugen kann. Lizenz: auf einem freien Betriebssystem GPL]] * [[http://timeguy.com/cradek/truetype|TTT TrueTypeTracer: Erzeugt EMC-optimierten G-Code aus skalierbaren TTF Schriften]] * [[http://www.chiark.greenend.org.uk/~alanb/ps2gc.html|ps2gc: Postscript zu G-Code Übersetzer. Liegt im C-Quellcode vor, Lizenz: Frei für nichtkommerzielle Anwendung]] * [[http://jelinux.pico-systems.com/gcode.html|C Quellcode für: Rechtecktasche, Rechteckausschnitt, Kreistasche, Gewindefräsen, Lochbilder etc.]] * [[http://www.ribbonsoft.com/de/camexpert.html|CAM Expert ist eine CAM Erweiterung für QCad, womit automatisch G-Code generiert werden kann. Lizenz: GPL, Erwerb aber kostenpflichtig]] * [[http://www.webersys.com/linuxsynergy.htm|Linux Synergy ist ein kommerzielles, aber sehr leistungsfähiges CAD/CAM System. 3D Fräsen in bis zu fünf Achsen ist möglich. Lizenz: Kommerziell]] * [[http://www.wikidorf.de/reintechnisch/Inhalt/RSTinys#A2005-05-24|Kleines Skript zur G-Code Erzeugung Planfräsen]] * [[http://emergent.unpy.net/stippler|Mit "Stippler" lassen sich digitale Photos in G-Code umwandeln. Lizenz: GPL]] * [[http://opencam.sourceforge.net/|OpenCAM]] ist ein CAM Programm speziell für die Herstellung von PCBs (Platinen). Es lässt sich im "piped Modus" betrieben, d.h. Ausgaben von z.B. Inkscape oder QCad werden "on the fly" in Verfahranweisungen übersetzt. OpenCAM verhält sich in diesem Fall wie ein Druckertreiber. Lizenz: GPL * [[http://gcam.js.cx/|GCAM-GNU Computer Aided Manufacturing]] ist ein CAM System basierend auf GTK+, GtkGlExt und OpenGL. Lizenz: LGPL * [[http://code.google.com/p/cam-occ/|cam-occ]] ist ein CAM System basierend auf Qt und OpenCascade. Lizenz: GPL * [[CNC-Suite]] ist ein 2D/3D-CAM System basierend auf GTK und OpenGL. Lizenz: GPL * [[http://sourceforge.net/projects/tkbacktracer/|tkBacktracer]] ist ein TCL/Tk Script zur 3D-Darstellung von Werkzeugwegen. Lizenz: GPL * [[http://pycam.sf.net|PyCAM]] ist ein 2D/3D-CAM-Programm zur Erzeugung von G-Code aus 3D-STL-Modellen oder 2D-SVG/PS/DXF-Konturen. Verschiedene Werkzeugformen und Pfadstrategien sind verfügbar. Stützbrücken und vielfältige G-Code-Parameter sind konfigurierbar. Die Oberfläche basiert auf GTK und OpenGL und wird in Python entwickelt. Lizenz: GPL3 = Bedienoberflächen = * [[http://axis.unpy.net/index.cgi/about|AXIS: Eine neue Bedieneroberfläche für EMC/EMC2, basierend auf Python und OpenGL]] * [[http://olivier.coma.free.fr/opencascade/opencascade.html|Optimal Controller for a 5-axis Machine Tool:]] Speziell für die 3D Bearbeitung auf fünfachsigen Maschinen, basierend auf QT, STL und [[http://www.opencascade.org|OpenCascade]]. '''Nicht''' auf EMC einsetzbar, aber da im Quellcode vorliegend ein hervorragendes Anschauungsobjekt für Programmierer. Lizenz: GPL = Hardware = * [[http://pico-systems.com/univpwm.html|pico-systems.com: Servocontroller für EMC]] * [[http://vitalsystem.com/motion/index.htm|vitalsystem.com: Professionelle "Motion Control" PCI Karte (8 Achsen, 100 digitale I/Os, Watchdog timer, etc., "EMC ready"]] * [[http://www.servotogo.com|servotogo.com: ServoToGo-Karte für Servosteuerung]] * [[http://www.geckodrive.com|geckodrive.com: Servosteuerung über Takt/Richtung wie Schrittmotor]] * [[http://home.t-online.de/home/uwe-wulf/cnc3d.htm|Odin Steppermotorsteuerung]] * [[http://www.mechapro.de|mechapro.de: Schrittmotorsteuerungen]] * [[http://www.grummes.de|grummes.de: Schrittmotorsteuerungen und Zubehör]] * [[http://www.mechapro.de/ncpilot.html|NC-Pilot - Die Echtzeit-Schrittmotorsteuerung am USB-Port]] * [[http://developer.berlios.de/projects/usb4rt|usb4rt - USB for Realtime, basierend auf Linux/RTAI]] * [[http://www.rw-modelltechnik.com|Servosteuerungen für DC-Servomotoren 80V/20A und 180V/40A Variante mit 32 bit PID,Auto und Manuelles Tuning des PID-Regler, Konfiguration per USB usw.]] = Sonstiges = * [[http://www.cncecke.de/|Peters CNC-Ecke: CNC-Forum mit EMC Unterforum]] * [[http://www.cnc-arena.de/cnc-arena.html|cnc-arena: CNC-Forum]] * group:alt.machines.cnc * [[http://www.aero.polimi.it/~rtai/|RTAI Realtime-Kernel]] * [[http://www.newport.com/Support/Tutorials/Motion_Control/m5.asp|Grundlagen PID-Regler und Motor-Regelungen]] * [[http://www.laboratoryformicroenterprise.org/lme/HexapodSoftwareModel.html|"Hexapod Software Model" erzeugt u.a. Kalibrierungskoeffizienten für Hexapoden]] * [[http://www.freeman-toys.com/linux/EMC-RTAI.html|Howto Install EMC auf Redhat 9.2]] * [[http://www-personal.engin.umich.edu/~ylei/|SERCANS (SERCOS Master) Treiber v0.9 für RTLinux]] * [[http://article.gmane.org/gmane.linux.kernel/442059|Userspace SERCOS-Treiber, Lizenz: GPL]] * [[http://www.alexander-bauer.info/|CNC-Master - eine weiter Linux-Alternative zu EMC (noch Alpha-Status)]] * [[http://xdobs.com/cnc/gcode-introduction.html|G-Code Introduction]] * [[http://xdobs.com/cnc/|CNC-Util Library für Ruby]] * [[http://www.cncsimulator.com/|CNC-Simulator kostenlos]] * [[http://xdobs.com/cnc/cnc-links.html|CNC-Linksammlung]] * [[http://www.tuxcnc.org/|Tuxcnc: EMC-Fork]] Paul war ein zentraler Entwickler von EMC und hat das BDI-System erstellt. Weil ihm einige Entwicklungen von EMC2 nicht gefielen, führt er nun (2006) mit Tuxcnc seinen eigenen Fork weiter, basierend auf EMC1. Bleibt zu hoffen, dass sich dadurch ein weiteres interessantes Linux-CNC-Projekt entwickelt. * [[http://www.cncecke.de/forum/showthread.php?t=10802|emcconfig - EMC-Konfigurationsassistent, mittlerweile veraltet]]