EMC FAQ
- Wie hoch ist die maximale Taktrate bei Schrittmotoransteuerung?
- In der Dokumentation steht etwas von 5KHz, was jedoch veraltet ist. Bei freqmod hängt es vom Wert des Parameters PERIOD ab. Die maximale Ausgabefrequenz scheint 1/(PERIOD * 4) zu sein. 12-15 KHz sollte mit einem 300-400 MHz schnellem Rechner möglich sein. Schnellere Rechner können nicht wesentlich mehr, hier fehlen aber bisher konkrete Erfahrungswerte. Zu kleine Werte für PERIOD frieren den Rechner ein.
- Kann man Servomotoren ansteuern?
Ja, wenn man die entsprechende Hardware hat. Hierfür gibt es die Servo2Go-Karte. Eine weitere Möglichkeit sind Servocontroller, die wie Schrittmotoren über Richtung und Takt angsteuert werden. In Deutschland sind diese bisher kaum verbreitet. In USA gibts die z.B. bei Geckodrives.com.
- Im tkemc Backplot ist nichts zu sehen, was kann ich tun?
- Size ist evtl. zu hoch gewählt. Man kann es mal auf 1 unter Setup runtersetzen, dann einmal Reset betätigen und Programm starten. Jetzt sollte es gehen. Wer nach einem Neustart einen bestimmten Wert für Size eingestellt haben möchte, editiere unter /usr/local/emc/plat/nonrealtime/bin das Programm tkbackplot. Dort findet man die Zeile "set size 40" die man z.B. in "set size 1" verändert.
- Wie starte ich die Mini Benutzeroberfläche?
- Neben dem normalen "tkemc" gibt es "mini" als Benutzeroberfläche. Diese wurde von Sherline entwickelt. Sie ist in mancherlei Hinsicht netter zu bedienen und anzusehen. Wer es mal ausprobieren will, ändere einfach in der emc.ini "Display = tkemc" auf "Display = mini"
- Ich habe merkwürdige Überschwinger bei den Fräsbahnen bei Benutzung von freqmod. Was kann das sein?
Klar ist es mir noch nicht, aber ich habe beobachtet, dass seltsame Überschwinger des PID-Reglers entstehen, wenn eine Achse mit ihrer Endgeschwindigkeit stark von den anderen abweicht (Auch im Backplot zu sehen). Im meinem Beispiel waren es X=40, Y=15, Z=40. Hier gab es Probleme. Wenn dagegen X=30, Y=20 und Z=30 eingstellt waren, gab es keine Probleme. Der Fehler zeigte sich derart, dass die Y-Achse bei einem positiven Verfahrbefehl kurz in negative Richtung fuhr. Das Problem trat nur bei recht hohen Verfahrgeschwindigkeiten auf (40mm/s, bei 20mm/s dagegen nicht.). -- WinfriedMueller
- Die parallele Schnittstelle scheint keine Signale rauszugeben...
- Es könnte sein, dass die Schnittstelle im falschen Modus betrieben wird. Dann sind die Ausgangspins auf Eingang geschaltet und EMC initialisiert die nicht korrekt. Man sollte dann schauen, im BIOS des Rechners die parallele Schnittstelle in einem anderen Modus zu betreiben. Unter welchen Modis es funktioniert, kann derzeit nicht gesagt werden. Direkt unter Linux brachte auch ein kurzes Schreiben auf lp1 mit "dd if=/dev/zero of=/dev/lp1" Erfolg (Kommando mit strg+c abbrechen).
- Warum werden manche Bahnen nicht exakt gefahren?
- Der G-Code Interpreter von EMC kennt 3 verschiedene Path-Control-Modes. Diese können durch G-Codes umgeschaltet werden. Standardmäßig wird G64 gefahren, dieser sogenannte Continuous Mode ist zwar sehr schnell, verundet jedoch scharfe Ecken. Dies trat bei Versuchen besonders dann auf, wenn nicht alle Achsen mit der gleichen Geschwindigkeit fahren. G61.1 ist der Exact Stop Mode. Hier wird nach jedem Bewegungsbefehl die Geschwindigkeit jeder Achse auf 0 gefahren, bevor der nächste Befehl ausgeführt wird. Das kostet Zeit, ist jedoch exact. Besser ist jedoch G61 zu verwenden. Hier wird versucht, die Bahn so exakt wie möglich zu fahren, ohne jedoch immer auf 0 runterzubremsen. Dies wird nur gemacht, wenn scharfe Ecken angefahren werden. Wer also genau fahren möchte, sollte G61 verwenden. Welcher Modus bei laufenden Programm aktiv ist, sieht man in der Zeile unter dem MDI-Feld (modale G-Befehlswerte).
- Warum funktioniert das Umschalten von Step (Einzelschritt) auf Run manchmal nicht?
- Hier passiert etwas nicht klar definierbares. Manchmal verhält sich EMC so: Nach dem Programm Öffnen kann man mit Step die ersten Schritte fahren. Wenn man dann auf Resume drückt, läuft das Programm automatisch los und der Status ist running. Das hört sich alles richtig und logisch an. Manchmal ist es aber auch so, dass beim betätigen von Resume der Status auf idle steht. Das Programm beginnt dann zwar auch loszufahren, hört aber nach etwa 500 Sätzen auf. Nach einigem experimentieren habe ich herausgefunden, dass es funktioniert, wenn man nach Step erstmal Pause und dann Resume betätigt.
- Was muss ich beim Öffnen sehr langer Dateien beachten?
- Wenn die G-Code Dateien über 100.000 Sätze lang sind, wird es auf z.B. einem 450 MHz Rechner in der Startphase etwas langsam bzw. es kommt zu Verzögerungen. Nach dem Öffnen einer solchen langen Datei dauert es erstmal einige Sekunden, bis das grafische Frontend wieder reagiert. Bei 100.000 Datensätzen mögen das vielleicht 30 Sekunden sein. In dem Moment, wo das Programm gestartet wird, vergehen ebenfalls nochmal 30 Sekunden oder länger, bis das grafische Frontend irgendwas anzeigt. Dies ist besonders deshalb auch unangehm, weil die Tasten wie Abort oder E-Stop nicht funktionieren. Deshalb empfiehlt sich hier folgendes Vorgehen: Programm öffnen, warten, über Step die ersten 2 Fahrbefehle im Einzelschritt abfahren, hierbei entsteht nochmal eine Wartezeit, dann Pause und dann Resume, damit das Programm automatisch weiterfährt.
- Warum fährt mir EMC bei Betätigung von Abort quer durchs Werkstück?
- Es scheint so zu sein, das bei Abort die erste G-Code Zeile im Programm abgefahren wird. Wenn man dort jedoch keinen Fahrbefehl (G01/G00) hat, sondern z.B. einen F Befehl, dann bleibt EMC bei Abort dort stehen, wo es gestoppt wurde. (Kann das jemand nochmal verifizieren? Vielleicht gibt es auch eine Möglichkeit, dass EMC eine bestimmte Bahn zum Nullpunkt zurückfährt...)
- Warum hält eine Achse beim manuellen Verfahren mit den Tasten nicht mehr an?
- Das ist ein etwas fieser Bug. Wenn man mit den Cursortasten jeweils nur eine Achse verfährt, ist alles Bestens. Sobald man jedoch z.B. X gedrückt hält und dann gleichzeitig Y verfährt, stoppt beim Loslassen der Tasten nur Y, nicht aber X. X stoppt erst dann, wenn man die Taste nochmal neu drückt und dann wieder loslässt. Werden also mehrere Tasten gleichzeitig gedrückt, geht der Loslass-Event der zuerst gedrückten Tasten verloren. Um den Fehler zu umgehen, sollte man immer nur eine Achse verfahren. Es könnte sein, dass bei neueren EMC-Versionen das Problem behoben ist (auf BDI2.20b ist das Problem vorhanden).
- Welches Timing haben Clock und Direction?
- Für die meisten Controller ist die steigende Flanke des Taktes die Entscheidende. Hier wird normal das Richtungssignal ausgewertet. Das Richtungssignal muss typisch ca. 200ns vor und nach der steigenden Clockflanke stabil sein. Weiterhin ist eine Mindest Clock-High-Pulsbreite von einer Mikrosekunde typisch. EMC erfüllt all diese Bedingungen. Es schaltet das Richtungssignal, während der Clock auf High liegt. Die High und Low-Phase des Clockes ist etwa gleich breit.
- Wozu die Fehlermeldung "A File is already open..."
- Wenn ein Programm bereits geöffnet und gestartet ist, man es dann mit abort abbricht und wieder mit "Run" startet, kommt diese Fehlermeldung. Anscheinend macht dies aber nichts und man kann sie ignorieren.
- Wie funktionieren die Endschalter?
Eine Fräse kann mit Endschaltern ausgestattet werden. Fährt die Maschine da hinein, soll EMC sofort stoppen. EMC benutzt für alle Endschalter 2 Eingänge, einen für die Min-Limits, den anderen für Max-Limit. Alle Min-Limit Schalter müssen dabei in Reihe oder parallel geschaltet werden. Ebenso alle Max-Limit Schalter. Benutzt man Öffner, was sinnvoll ist, so schaltet man sie in Reihe, benutzt man Schließer, so schaltet man sie parallel. Min-Limit wird zwischen Pin 13 LPT1 und Masse angeschlossen, Max-Limit zwischen Pin 15 und Masse. Sobald einer der Schalter auslöst, wird das Display aller Achsen in EMC rot und ein E-Stop wird ausgelöst. Ein Problem besteht jetzt, dass man die Maschine nicht mehr aus dieser Position herausfahren kann. Hierzu braucht man also einen externen Schalter, der die Fehlerbedingung überbrücken kann. Bei Reihenschaltung von Öffnern wäre das ein Schließer von Pin 13/Pin 15 gegen Masse, den man manuell kurzzeitig betätigt, um herausfahren zu können. Bei Parallelschaltung müsste dieser Schalter in Reihe zu den anderen Schaltern liegen und ein Öffner sein. Wichtig ist noch, die Variablen MIN_LIMIT_SWITCH_POLARITY und MAX_LIMIT_SWITCH_POLARITY richtig zu setzen. Bei Reihenschaltung von Öffnern müssen diese 1 sein, sonst 0. Natürlich kann man zu den Endschaltern auch ein Notaus-Schalter oder weitere Fehlerschalter einfügen. Eine Idee wären Temperatursicherungen, die durchbrennen, sobald ein Motor heißer als 70 Grad wird.
- Wo finde ich das eingebaute Digital-Oszilloskop ?
- Für den Ableich der Achsen steht ein in die Software integriertes Digital-Oszilloskop zur Verfügung. Es wird aktiviert im "Settings / logging" Menü und zeichnet Graphen aus Position, Beschleunigung und Geschwindigkeit im Bezug auf die vergangene Zeit. "Überschwinger" wegen zu straff eingestellter Antriebe können so leicht erkannt werden.
- Gibt es eine Möglichkeit die Maschine unter EMC mit dem Joystick zu verfahren ?
Jeff Epler hat eine solche Lösung unter Python entwickelt: emcjoy.tar.gz