Hi, ich möchte (bis zu) vier Schrittmotoren aus einem Mikrocontroller ansteuern (Step/Direction-Ausgangssignale und Limit/Home-Eingangssignale). Grundsätzlich wäre GRBL geeignet, allerdings suche ich nach einer Alternative weil: - GRBL bewegt auch bei G0 alle Achsen so, dass sie gleichzeitig losfahren und ankommen (das ist jetzt kein KO-Kriterium, aber schöner wäre es, wenn sich jede Achse in ihrem eigenen Tempo bewegt und diese dann ggf. zu unterschiedlichen Zeitpunkten ihre Zielposition erreichen) - GRBL kann nur drei Achsen (auf 4 zu erweitern wäre möglicherweise kein Problem) - GRBL schafft nur 30 kHz Stepfrequenz - GRBL arbeitet mit einer festen Pulsweite und passt diese nicht frequenzabhängig auf 50% Duty-Cycle an - buggy: wenn man GRBL in Grenzbereichen betreibt, zerschießt es manchmal den EEPROM-Inhalt und es gibt wohl auch dubiose Kommunikationsprobleme, bei denen Müll zurückgeschickt wird bzw. sich GRBL komplett aufhängt Was ich an GRBL mag: - einfache Kommunikation über serielle Schnittstelle - simple und billige Hardware aus Arduino/ATMega Deswegen meine Frage: was könnte ich statt GRBL verwenden um per serieller Schnittstelle gesteuert ein paar Achsen zu verfahren?
Gowron schrieb: > Deswegen meine Frage: was könnte ich statt GRBL verwenden um per > serieller Schnittstelle gesteuert ein paar Achsen zu verfahren? Ist RS485 für dich auch eine Option?
Es gibt noch Smoothieware und g2core. Gowron schrieb: > - buggy: wenn man GRBL in Grenzbereichen betreibt, zerschießt es > manchmal den EEPROM-Inhalt und es gibt wohl auch dubiose > Kommunikationsprobleme, bei denen Müll zurückgeschickt wird bzw. sich > GRBL komplett aufhängt So viel ich weiß, wird das EEPROM nur beim Start ausgelesen und bei Änderungen der Einstellungen geschrieben. Wie soll es in den Grenzbereichen also kaputt gehen??? mfg
schau mal hier: Beitrag "Re: Projekt: SerialComCNC Serielles Frontend für CNC GRBL mit ATMega" Beitrag "Re: Projekt: SerialComCNC Serielles Frontend für CNC GRBL mit ATMega" Löst zwar nicht allee deiner Wünsche aber es läuft seit langem bei mir ohne Probleme.
Gowron schrieb: > - GRBL schafft nur 30 kHz Stepfrequenz auf den AVR, es gibt aber auch Portierungen auf den STM32F103, da habe ich von 180kHz gelesen.
Mal abgesehen davon das 30KHz nicht schlecht sind. Bei den meisten Maschinen wird das sogar schon zuschnell sein, wie bei mir auch. Portiernen kann man den Code recht einfach auf jeden anderen Prozessor und ich denke das 180KHz noch locker zu topen sind. Aber was soll dahinter noch laufen? Das sind Schritte pro Sekunde und keine PWM!
Peter schrieb: > Das sind Schritte pro Sekunde und keine PWM! Naja, schätzungsweise sind es MIKROschritte je Sekunde. Da sich die Schrittmotorleute schon seit Jahrzehnten mental nicht von der dämlichen Takt-Richtungs-Schnitt- stelle lösen können, kommt dann solcher Blödsinn heraus.
Dieser Blödsinn ist halt recht einfach anzusteuern. Ich rede von Schritten, was das am Ende an Umdrehungen bedeutet liegt immer an der dahinter liegenden Steuerung und der Mechanik. Ich selber müsste gerade auch was haben um von den GRLB Motorschritte System auf einen Motor mit Encoder zu kommen. Wird wohl nicht mehr mit dem AVR gehen.
Peter schrieb: > Dieser Blödsinn ist halt recht einfach anzusteuern. Sicher, ich weiss. Das erinnert mich trotzdem immer an den, der den verlorenen Gulden unter der Straßenlaterne sucht -- und nicht in der dunklen Ecke, wo er ihn tatsächlich verloren hat. Die Mechanik macht (aufgrund der Massenträgheit) nicht wirklich Schritte, und der Motor macht nur deshalb Schritte, weil er schrittweise angesteuert wird. Das Einzige, was am Schrittmotor wirklich schrittweise geht, sind die Taktimpulse an der Schnittstelle. > Ich rede von Schritten, Du könntest auch einfach von "Taktimpulsen" reden; das wäre sachlich richtig und nicht irreführend. Du unterscheidest doch auch zwischen Meter und Mikro- meter -- warum unterscheidest Du dann nicht zwischen Schritten und Mikroschritten? Aber das führt vom Thema weg; ich will den Thread nicht kapern.
> So viel ich weiß, wird das EEPROM nur beim Start ausgelesen und bei > Änderungen der Einstellungen geschrieben. Wie soll es in den > Grenzbereichen also kaputt gehen??? Es gibt wohl auch ein paar G-Code-Kommandos, die eine Schreiboperation auf dem EEPROM ausführen. Schau mal in die (geschlossenen aber nicht behobenen) Bugs bei GRBL auf GitHub, da gibt es in der Richtung mehr Probleme - alle ungelöst. Bugs schließen kann der Maintainer wohl sehr gut - vornehmlich mit der Begründung, dass genau dass dann eine nicht normale Verwendung von gRBL ist :-D
Hallo Egon, Egon D. schrieb: > Da sich die Schrittmotorleute schon seit Jahrzehnten > mental nicht von der dämlichen Takt-Richtungs-Schnitt- > stelle lösen können, kommt dann solcher Blödsinn heraus. Wer sind denn "die Schrittmotorleute"? Im industriellen Bereich gibt es längst Alternativen. Eine Schrittmotorklemme wird z.B. bei Beckhoff genauso über EtherCAT angesteuert wie eine Servomotorklemme für einen DC-Servo oder eine AX5000 für "echte Servos". Und auch für CANopen oder andere Feldbusse gibt es entsprechende Lösungen. Leider haben sich Feldbusse bisher im Hobby-CNC Bereich nicht durchgesetzt. Das könnte auch mit den höheren Preisen und der höheren Komplexität bei der Inbetriebnahme zusammen hängen. Es gibt ja noch nicht einmal einen Standard für die externen USB-Controller (SmoothStepper und Co.), die inzwischen den Parallelport als "Taktquelle" für die Erzeugung der Takt-/Richtungssignale abgelöst haben. Da macht jeder Software-Anbieter sein eigenes Ding. Somit ist Takt-/Richtung nach wie vor die einfachste und preiswerteste Schnittstelle, zumindest solange man keine EMV-Probleme hat. Im Gegensatz zu +/-10V wie sie bei den Servoantrieben vor Einführung von BUS-System üblich war, gibt es dort auch keine Probleme mit driftenden Signalen oder Offsets. Mit freundlichen Grüßen Thorsten Ostermann
Thorsten O. schrieb: > Im > Gegensatz zu +/-10V wie sie bei den Servoantrieben vor Einführung von > BUS-System üblich war, gibt es dort auch keine Probleme mit driftenden > Signalen oder Offsets. Mal aus Interesse: nach welchem Prinzip funktionieren denn diese Servomotoren? Mit +-10V kann man ja sicher nicht einmal sehr kleine Positionsveränderungen und dann wieder sehr große Distanzen ansteuern - legt diese Spannung nur die Verfahrgeschwindigkeit fest und der Rest wird über Encoder-Feedback gemacht?
Thorsten O. schrieb: > Egon D. schrieb: > >> Da sich die Schrittmotorleute schon seit Jahrzehnten >> mental nicht von der dämlichen Takt-Richtungs-Schnitt- >> stelle lösen können, kommt dann solcher Blödsinn heraus. > > Wer sind denn "die Schrittmotorleute"? Naja... ich sehe ja von hier aus nur das, was im Hobby- sektor passiert. Ich wollte niemandem zu nahe treten, der mit Schrittantrieben sein Geld verdient. > Im industriellen Bereich gibt es längst Alternativen. Klar -- dort sind ja auch Synchronmotoren oder Servos wesentlich weiter verbreitet als im Hobbysektor. > Leider haben sich Feldbusse bisher im Hobby-CNC Bereich > nicht durchgesetzt. Hmm. Von der Seite habe ich es noch nicht betrachtet. Die Systemstruktur ist ja, soweit ich das übersehe, im Hobbybereich auch simpler. Da gibt es in der Regel den Schrittantrieb (Treiberkarte und Motor) und den PC, das war's schon. Separater Controller (Bahnsteuerung), SPS, Feldbus usw. ist ja alles nicht üblich. > Somit ist Takt-/Richtung nach wie vor die einfachste und > preiswerteste Schnittstelle, [...] Ja... naja, für sehr anspruchslose Anwendungen (Punkt- steuerung) ist die Schnittstelle extrem einfach zu verwenden, das gebe ich zu. Sobald die Anforderungen aber steigen, wird die Sache auch wieder kompliziert: Zunächst muss man beachten, dass man den Schritt-Takt nicht beliebig rabiat ändern darf, wenn der Motor nicht ausser Tritt fallen soll; da sind Grenzen zu beachten. Dann braucht man Stromchopperendstufen, wenn man echte Leistung bei höheren Drehzahlen haben will. Nachfolgend will man ziemlich bald auch die harten Sprünge bei niedrigen Drehzahlen vermeiden, also will man Mikroschrittbetrieb. Mikroschrittbetrieb treibt wieder die Schrittakte für die Bahnsteuerung in unsinnige Höhen -- alles nur, weil man an der Takt/Richtungsansteuerung festhalten will. Ein Servoantrieb mit Normsignalansteuerung hat die Probleme nicht. > Im Gegensatz zu +/-10V wie sie bei den Servoantrieben vor > Einführung von BUS-System üblich war, gibt es dort auch > keine Probleme mit driftenden Signalen oder Offsets. Das stimmt schon. Allerdings hätte +/-10V den Vorteil, dass die Bahnsteuerung nicht mit den Details der Motoransteuerung belastet wird. Ob der Schrittmotor nur 8fachen oder sogar 64fachen Mikroschritt- betrieb macht, wäre völlig wurscht, und auch eine U/f-Kennlinie ließe sich sehr leicht implementieren. Wenn der Motorcontroller ein (elektronisch erzeugtes) Encodersignal zurückliefert, wird die Bahnsteuerung auch über die aktuelle Sollposition des Motors auf dem laufenden gehalten, so dass sich eine Servoregelung aufbauen lässt. Ich will +/-10V nicht als Nonplusultra propagieren, aber meiner Meinung nach lügt man sich mit der "ganz einfachen" Takt/Richtungs-Schnittstelle nur selbst in die Tasche.
Hallo Gowron, Gowron schrieb: > Thorsten O. schrieb: >> Im >> Gegensatz zu +/-10V wie sie bei den Servoantrieben vor Einführung von >> BUS-System üblich war, gibt es dort auch keine Probleme mit driftenden >> Signalen oder Offsets. > > Mal aus Interesse: nach welchem Prinzip funktionieren denn diese > Servomotoren? Mit +-10V kann man ja sicher nicht einmal sehr kleine > Positionsveränderungen und dann wieder sehr große Distanzen ansteuern - > legt diese Spannung nur die Verfahrgeschwindigkeit fest und der Rest > wird über Encoder-Feedback gemacht? Als die Servo- und CNC-Technik noch analog war, wurde mit +/-10V ein Drehzahlsollwert vorgegeben. Drehzahl- und Stromregelung wurden im Antriebs-/Servoverstärker implementiert, der Lageregler in der zentralen CNC-Steuerung. Als Positionssollwert kann man +/-10V tatsächlich nur für kleine Strecken und bei geringer Genauigkeitsanforderung verwenden. Ich habe aber Kunden, die das in Verbindung mit frei programmuierbaren Schrittmotorsteuerungen (LAM DS30-Serie) so einsetzen. Der Sollwert kommt dann entweder von einer SPS, die keine schnellen Ausgänge hat, oder sogar nur von einem Poti. Mit freundlichen Grüßen Thorsten Ostermann
Egon D. schrieb: > Sobald die Anforderungen aber steigen, wird die Sache auch > wieder kompliziert: Zunächst muss man beachten, dass man > den Schritt-Takt nicht beliebig rabiat ändern darf, wenn > der Motor nicht ausser Tritt fallen soll; da sind Grenzen > zu beachten. Das sind aber Binsenweisheiten und ist bei Servoantrieben nicht anders. Dafür hat auch jede CNC-Steuerung, die ich kenne, entsprechende Beschleunigungsparameter, die man einstellen kann, sei es nun für Servors oder direkt Takt/Richtung. > Dann braucht man Stromchopperendstufen, wenn man echte > Leistung bei höheren Drehzahlen haben will. Die gibt es mittlerweile für nen Appel und ein Ei. > Nachfolgend will > man ziemlich bald auch die harten Sprünge bei niedrigen > Drehzahlen vermeiden, also will man Mikroschrittbetrieb. > Mikroschrittbetrieb treibt wieder die Schrittakte für die > Bahnsteuerung in unsinnige Höhen -- alles nur, weil man an > der Takt/Richtungsansteuerung festhalten will. Das spielt bei den schnellen Steuerungen heutzutage kaum noch eine Rolle. Hier kann ich bspw. problemlos 2 MHz an Taktfrequenz generieren, wenn es denn nötig sein sollte. > Ein Servoantrieb mit Normsignalansteuerung hat die Probleme > nicht. Dafür hat er andere Nachteile. Von den Preisen abgesehen ist insbesondere das Drehmoment im unteren Drehzahlbereich bei gleicher Baugröße deutlich schlechter, gerade wenn es dauerhaft sein muss. >> Im Gegensatz zu +/-10V wie sie bei den Servoantrieben vor >> Einführung von BUS-System üblich war, gibt es dort auch >> keine Probleme mit driftenden Signalen oder Offsets. > > Das stimmt schon. Und das ist ein gravierender Nachteil. > Ich will +/-10V nicht als Nonplusultra propagieren, aber > meiner Meinung nach lügt man sich mit der "ganz einfachen" > Takt/Richtungs-Schnittstelle nur selbst in die Tasche. Unterhalte Dich mit Leuten, die schon öfter beide Systeme eingesetzt haben. Hier läuft bspw. eine CNC-Fräse nur mit Schrittmotoren ganz wunderbar. Und ja: das ist mit Takt/Richtung alles sehr einfach einzurichten. Ein Servosystem so einzurichten, dass es wirklich optimal läuft, erfordert dahingegen erhebliches Wissen und Geduld. Viele, die sich ein CNC-System aufbauen, kommen anders als wir aus dem metallverarbeitenden Bereich. Dementsprechend gering ist das Wissen über Regelstrecken usw. Eine einfache Takt/Richtung-Ansteuerung kann man auch als Laie einigermaßen gut einstellen und auf Fehler überprüfen. Und die vielen, vielen, preiswerten Schrittmotorsteuerungen, die bei Hobbymenschen mit geringen Elektronikkenntnissen (und auch Leutem, die damit ihr Geld verdienen ;-) problemlos laufen, zeigen, dass das System so falsch nicht ist.
:
Bearbeitet durch Moderator
Thorsten O. schrieb: > Leider haben sich Feldbusse bisher im Hobby-CNC Bereich nicht > durchgesetzt. Leider? Ich sag mal Gott sei Dank Egon D. schrieb: > Dann braucht man Stromchopperendstufen, wenn man echte > Leistung bei höheren Drehzahlen haben will Jeder 1 Euro Schrittmotortreiber hat heutzutage eine Chopperendstufe. Was bitte ist "echte" Leistung? Der einzige Weg, Leistung bei hohen Drehzahlen zu erreichen, ist der Gegen-EMK entgegenzuwirken. Das geht nur mit Erhöhen der Spannung, egal ob Schritt- oder Servomtor. Solange Bastler natürlich Ihre Schrittmotoren an 12V betreiben, braucht man da über mangelnde Leistung nicht weiterzudiskutieren. Muss man den Motor bzw. die Motorendstufe halt an 48V, 150V oder 200V DC betreiben. Dann geht auch im oberen Drehzahlbereich was. Gruß
Egon D. schrieb: > Da sich die Schrittmotorleute schon seit Jahrzehnten > mental nicht von der dämlichen Takt-Richtungs-Schnitt- > stelle lösen können, kommt dann solcher Blödsinn heraus. Wie einfach ist es zwei Servomotoren so zu synchronisieren daß sie möglichst genau gemeinsam eine Kontur abfahren, inclusive Beschleunigungsrampen?
Gowron schrieb: > - GRBL bewegt auch bei G0 alle Achsen so, dass sie gleichzeitig > losfahren und ankommen Das ist normal so und auch so gewünscht Gowron schrieb: > - GRBL schafft nur 30 kHz Stepfrequenz Das liegt nicht an der Software, sondern der limitierten Hardware bzw. Rechenkapazität des Atmega328p. Mit einem LPC1768 schafft grbl locker 200kHz. Gowron schrieb: > - GRBL arbeitet mit einer festen Pulsweite und passt diese nicht > frequenzabhängig auf 50% Duty-Cycle an Das wäre auch Käse, da Schrittmotortreiber eben nach einer minimalen Pulsweite verlangen, denen der Dutycycle aber relativ egal ist. Gowron schrieb: > - GRBL kann nur drei Achsen (auf 4 zu erweitern wäre möglicherweise kein > Problem) Es gibt Ports von grbl auf den Arduino-Mega, sowie auf das Smoothieboard. Letzteres läuft mit erwähntem LPC1768 (Cortex M3 @ 120MHz) und bietet demnach auch eine wesentlich höhere Stepfrequenz, wofür auch immer du die brauchst. Hier ist der Branch von cprezzi: https://github.com/cprezzi/grbl-LPC/tree/more-axis
Christopher J. schrieb: >> - GRBL arbeitet mit einer festen Pulsweite und passt diese nicht >> frequenzabhängig auf 50% Duty-Cycle an > > Das wäre auch Käse, da Schrittmotortreiber eben nach einer minimalen > Pulsweite verlangen, denen der Dutycycle aber relativ egal ist. Also mein Schrittmotor hier gibt sowohl bei der steigenden als auch bei der fallenden Flanke des Pulses ein leises "Klick" von sich. Bei einer festen Pulsweite wäre dass dann eine ziemlich ungleichmäßige Bewegung. Bleiben halt immer noch die grundsätzlichen Bugs in GRBL, die im Gegensatz zu den anderen Sachen ein echtes KO-Kriterium für mich sind.
Gowron schrieb: > Also mein Schrittmotor hier gibt sowohl bei der steigenden als auch bei > der fallenden Flanke des Pulses ein leises "Klick" von sich. Was für einen Treiber benutzt du denn? Bei den 08/15-Treibern a la DRV8825 oder A4988 ist das meines Erachtens nach nicht der Fall. Hardy F. schrieb: > Gowron schrieb: >> die grundsätzlichen Bugs in GRBL > > ... die da wären ? Das würde mich allerdings auch mal interessieren. Außerdem steht es natürlich jedem frei diese Bugs zu beheben.
Noch so als Nachtrag: Quasi jede 3D-Drucker-Firmware hat mindestens vier Achsen, nämlich X,Y,Z und den Extruder. Von Marlin gibt es mittlerweile auch Ports für STM32 und andere Cortex-M, siehe https://github.com/MarlinFirmware/Marlin/tree/bugfix-2.0.x . Eine andere 3D-Druck-Firmware, die unter anderem für das Nucleo-F411 portiert ist wäre Teacup: https://github.com/Traumflug/Teacup_Firmware Einer der Entwickler (Nico aka Wurstnase) ist auch öfter mal hier im Forum unterwegs.
Ewald schrieb: > Der einzige Weg, Leistung bei hohen Drehzahlen zu > erreichen, ist der Gegen-EMK entgegenzuwirken. > Das geht nur mit Erhöhen der Spannung, egal ob > Schritt- oder Servomtor. Sicher. Genau zu diesem Zweck haben Umrichter eine U/f-Steuerung. So etwas ähnliches haben Schrittmotortreiber natürlich auch, aber erstens funktioniert es nicht ganz so gut wie eine echte U/f-Steuerung, und zweitens darf man es keinesfalls so nennen!
Bernd K. schrieb: > Egon D. schrieb: >> Da sich die Schrittmotorleute schon seit Jahrzehnten >> mental nicht von der dämlichen Takt-Richtungs-Schnitt- >> stelle lösen können, kommt dann solcher Blödsinn heraus. > > Wie einfach ist es zwei Servomotoren so zu synchronisieren > daß sie möglichst genau gemeinsam eine Kontur abfahren, > inclusive Beschleunigungsrampen? Im Prinzip genau so einfach oder schwierig wie mit Schrittmotoren. Jede industrielle CNC-Fräse beweist das. Du darfst nämlich nicht vergessen, dass das Taktsignal erstmal nur die SOLL-Position angibt -- bis zur Ist- Position müssen noch die Frage nach dem Polradwinkel und die nach eventuellen Schrittverlusten geklärt sein. Beides tritt bei Servo-Antrieben nicht auf, weil das geschlossene Regelkreise sind; die Steuerung kennt also die Ist-Position.
Egon D. schrieb: > Beides tritt bei Servo-Antrieben nicht auf, weil das > geschlossene Regelkreise sind; die Steuerung kennt also > die Ist-Position. Als gerechten Ausgleich muß der Schrittmotortreiber nicht zum Wunschstrom die richtige frequenzabhängige Spannung erraten, sondern kann den direkt auf den Sollwert regeln.
Carl D. schrieb: > Egon D. schrieb: >> Beides tritt bei Servo-Antrieben nicht auf, weil das >> geschlossene Regelkreise sind; die Steuerung kennt also >> die Ist-Position. > > Als gerechten Ausgleich muß der Schrittmotortreiber nicht > zum Wunschstrom die richtige frequenzabhängige Spannung > erraten, sondern kann den direkt auf den Sollwert regeln. Daran sind ironischweise BEIDE Teilaussagen falsch. Erstens muss der Umrichter die notwendige Spannung nicht ERRATEN, sondern sie ist durch die Motorkennlinie (die man dem Umrichter vorher mitteilt) festgelegt. Er muss nur in die Tabelle gucken und den richtigen Wert nehmen. Zweitens ist es beim Schrittantrieb sachlich FALSCH, auf den Strom zu regeln, der der neuen Zielposition entspricht. Da sich die Motorposition aus physikalischen Gründen (Trägheit) stetig ändern muss, müsste sich auch der Strom stetig ändern, damit das gewünschte konstante Drehmoment entsteht. GENAU DAZU ist der Schrittmotortreiber aber nicht in der Lage, weil er die aktuelle Geschwindigkeit nicht kennt -- er kennt nur Positionen. Und WEIL das so ist, hat man den Mikroschrittbetrieb eingeführt, bei dem das Problem nicht prinzipiell behoben ist, sondern die Sprünge nur so klein gemacht werden, dass sie nicht mehr stören. Der Preis dafür ist, dass die Steuerung die Bahnpunkte viel enger setzen muss.
Im Hobbybereich ist das doch recht einfach. Für weit unter 100€ bekommt man 4 Stepper, Treiber und Steuerung. Selbst mit 32bit. Schrittfrequenzen mit Rampen jenseits der 500kHz sind auch kein Thema mehr. Aber genauso gibt es Closed-Loop Systeme mit Steppern, wenn man es denn braucht.
Beitrag #5544929 wurde vom Autor gelöscht.
Chris D. schrieb: > Das sind aber Binsenweisheiten [...] > > Die gibt es mittlerweile für nen Appel und ein Ei. > > Das spielt bei den schnellen Steuerungen heutzutage > kaum noch eine Rolle. Ich denke, Du missverstehst mich. Zum einen: Auch eine technisch realisierbare Lösung kann sachlich und logisch blödsinnig sein. Zum anderen: Schrittmotorendstufen sind heutzutage komplette kleine Umrichter mit U/f-Steuerung und Sinuskommutierung. Man darf das aber KEINESFALLS so nennen! Das muss "Stromchopperendstufe" und "Mikroschrittbetrieb" heißen! Mich ärgert dieser Etikettenschwindel, das ist alles. > Hier kann ich bspw. problemlos 2 MHz an Taktfrequenz > generieren, wenn es denn nötig sein sollte. Das macht es nicht sinnvoller. Mein Punkt ist, dass es Prozesse in der Maschine gibt, die PHYSIKALISCH von der GESCHWINDIGKEIT (bzw. von deren Änderung) abhängen. Schrittantriebe beharren aber energisch darauf, nur POSITIONEN zu kennen. Man kann geschwindigkeits- und beschleunigungsproportionale Effekte nicht dadurch weghexen, dass man sie ignoriert. > Hier läuft bspw. eine CNC-Fräse nur mit Schrittmotoren > ganz wunderbar. Komplett andere Baustelle. Ich habe nix gegen Schrittmotoren, ich habe nichtmal wirklich etwas gegen die Takt/Richtungs-Schnittstelle, wenn mir ihre Vorzüge einleuchten. Ich habe nur etwas gegen die grob vereinfachenden (=falschen) Beschreibungen und Erklärungen. Ganz schlimm wird es, wenn solcher Mist in integrierten Schrittmotortreibern in Silizium gegossen wird. > Und ja: das ist mit Takt/Richtung alles sehr einfach > einzurichten. Ein Servosystem so einzurichten, dass es > wirklich optimal läuft, erfordert dahingegen erhebliches > Wissen und Geduld. Ich denke, Du verwechselst hier Korrelation mit Kausalität. Wenn Du die 20kW-CNC-Fräse, die ich gerade vor meinem geistigen Auge habe, bei identischer Parametern (Genauigkeit, erreichbare Geschwindigkeiten usw.) auf Schrittmotoren umrüsten wolltest, bräuchtest Du genauso ERHEBLICHES Wissen. Hobbyisten bauen nur in der Regel kleinere Maschinen und legen weniger Wert auf das Masse-Leistungs-Verhältnis, daher treten viele Probleme nicht in derselben Schärfe auf. > Viele, die sich ein CNC-System aufbauen, kommen anders als > wir aus dem metallverarbeitenden Bereich. Dementsprechend > gering ist das Wissen über Regelstrecken usw. Eine einfache > Takt/Richtung-Ansteuerung kann man auch als Laie einigermaßen > gut einstellen und auf Fehler überprüfen. Naja... Physik und Maschinendynamik bleiben gleich, egal, ob ein Laie oder ein Fachmann an der Maschine herumkonfiguriert. Ich kann euch (Thorsten und Dir) aber dennoch zu weiten Teilen folgen: Zum einen ist mir klar, dass digitale Schnittstellen praktische Vorteile haben; das ist schon mal ein Pluspunkt für die Takt/Richtungs-Schnittstelle. Zum zweiten ist, wenn man mal ruhig darüber nachdenkt, der ganze Blödsinn mit dem Mikroschrittbetrieb selbst auf Basis der Takt/Richtungs-Schnittstelle lösbar. Die Zeitabstände der letzten n Taktimpulse zueinander sind ja ein Maß für die aktuelle Drehgeschwindigkeit des Motors -- also kann eine Schrittmotorendstufe diesen Zeitabstand auch messen und daraus sowohl die notwendige Motorspannung bestimmen als auch den mutmaßlichen Verlauf den Drehfeldes in den nächsten Mikro- sekunden extrapolieren. Man muss das ganze nur (physikalisch korrekt) als elektronisch kommutierten Synchronantrieb auffassen und nicht bei der Vorstellung "es kommt ein Taktimpuls, und dann macht der Motor einen Schritt" stehenbleiben.
Nico W. schrieb: > Im Hobbybereich ist das doch recht einfach. Für weit > unter 100€ bekommt man 4 Stepper, Treiber und Steuerung. > Selbst mit 32bit. Schrittfrequenzen mit Rampen jenseits > der 500kHz sind auch kein Thema mehr. Stellt sich nur die Frage: Wozu brauche ich Schrittfrequenzen von 500kHz? Welcher Schrittmotor schafft 2500 U/sec? Jetzt redet man mir also wie einem kranken Pferd zu und erklärt mir, dass das ja gar keine "Motorschritte" sind, sondern nur "Mikroschritte". Auf meine folgerichtige Frage hin, wozu man Mikroschritte braucht, kommt dann die Erklärung, dass man die sprunghaften Stromänderungen vermeiden möchte, die die Mechanik zum Schwingen anregen. Wenn ich jetzt sage "Ach so. Ihr wollt also ein einigermaßen stetiges Drehfeld erzeugen -- aber warum bürdet ihr diese Arbeit der Bahnsteuerung auf und baut nicht statt dessen einen passenden Motor-Umrichter, der das kann?", dann werde ich angeguckt wie ein Kamel mit fünf Köpfen. Das ist keine Frage des Preises, sondern einer vernünfigen Systemstruktur.
Da kommst du aber mit 100€ nicht weit. Und es gibt auch Stepper mit mehr als 200 Schritten pro Umdrehung. Aber sicher rede ich hier von Mikroschritten. Ich hab nix gegen Servos. Ich wollte mich damit auch schonmal näher auseinander setzen. Wobei gleich ein nicht so einfach parametriebares Closed Loop System auf einen kleinen Hobby-Drucker oder ähnliches zu schmeißen?... Ich mach das nun schon seit einigen Jahren. Ich erinnere mich aber auch an meine Anfänge. Das war ich froh die richtige Mikroschrittanzahl in die Firmware einzutragen und ggf. noch einen passenden Wert für die Rampen.
So ziemlich jeder Controller für 3D Drucker hat mit Firmware wie Marlin und Repetier auch einen CNC und einen Laser Modus bekommen. Wenn Du die Endstufen schon hast, dann kauf halt irgendein ARM Board und spiel' Marlin drauf. Dann läuft die USB Verbindung direkt mit dem ARM (nicht per Umsetzung auf seriell) und mit 200kHz und problemlos vier, fünf oder sechs Achsen. Wenn's ganz was besonderes sein darf, holt man sich den Duet Controller mit 5" touch screen und hat dann mit erweiterungsboard X, Y, Z, U, V, W und noch sechs weitere Extruder/Fräsen/Laserquellen. Für Kleinkram tut's auch ein Arduino Due für 30 Euro.
Egon D. schrieb: > Zum einen: Auch eine technisch realisierbare Lösung kann > sachlich und logisch blödsinnig sein. Das mag sein - hier ist sie es nicht, einfach, weil diese Lösung um einiges günstiger ist. > Zum anderen: Schrittmotorendstufen sind heutzutage > komplette kleine Umrichter mit U/f-Steuerung und > Sinuskommutierung. Man darf das aber KEINESFALLS so > nennen! Das muss "Stromchopperendstufe" und > "Mikroschrittbetrieb" heißen! Wenn ich mir die Funktionsweise meiner Schrittmotorendstufen anschaue, dann ist das mMn keine U/f-Steuerung, denn die Ausgangsspannung der Endstufen ist immer dieselbe. Eine U/f-Steuerung hat ja den Anspruch, das Drehmoment über den kompletten Drehzahlbereich so konstant wie möglich zu halten, ohne den Motor zu überlasten. Schrittmotorendstufen haben aber genau das nicht: man hat (im Rahmen des möglichen Spannungsanstiegs) immer denselben Motorstrom, den man einprägt, egal ob bei 0Hz oder 5kHz. Daher fällt die Drehmoment/f-Kurve dann auch entsprechend ab. > Mich ärgert dieser Etikettenschwindel, das ist alles. Meiner Meinung nach ist das kein Etikettenschwindel, sondern das sind eben keine U/f-Umrichter. >> Hier kann ich bspw. problemlos 2 MHz an Taktfrequenz >> generieren, wenn es denn nötig sein sollte. > > Das macht es nicht sinnvoller. Doch, durchaus - denn damit ist bspw. das Argument hinfällig, dass die arme CNC-Steuerung in irgendeiner Art und Weise durch intelligente Servoantriebe entlastet werden müsste. Im Gegenteil macht es das einfacher, weil der komplette Antrieb innerhalb der Steuerung parametriert werden kann. > Mein Punkt ist, dass es Prozesse in der Maschine gibt, > die PHYSIKALISCH von der GESCHWINDIGKEIT (bzw. von deren > Änderung) abhängen. Schrittantriebe beharren aber energisch > darauf, nur POSITIONEN zu kennen. > > Man kann geschwindigkeits- und beschleunigungsproportionale > Effekte nicht dadurch weghexen, dass man sie ignoriert. Das tut auch niemand. Diese Dinge lassen sich bei jeder vernünftigen Bahnsteuerung einstellen, sei es für Servos, sei es für Schrittmotoren. Würde man sich gegen die Physik stellen, würden diese kleinen CNC-Maschinen nicht so einfach und problemlos laufen :-) > Wenn Du die 20kW-CNC-Fräse, die ich gerade vor meinem > geistigen Auge habe, bei identischer Parametern (Genauigkeit, > erreichbare Geschwindigkeiten usw.) auf Schrittmotoren > umrüsten wolltest, bräuchtest Du genauso ERHEBLICHES Wissen. Das ist aber nicht der Anwendungsfall für Schrittmotoren im CNC-Bereich. Niemand wird bei einer solchen Größe Schrittmotoren einsetzen oder die Maschine gar umrüsten. Weder ich noch Thorsten. > Hobbyisten bauen nur in der Regel kleinere Maschinen und > legen weniger Wert auf das Masse-Leistungs-Verhältnis, daher > treten viele Probleme nicht in derselben Schärfe auf. Genau - oft treten sie gar nicht auf. Dafür spielt der Preis und einfache Einrichtung eben eine wichtige Rolle. Dazu kommen noch andere angenehme Eigenschaften wie die deutlich kleinere Bauform bei höherer Leistung im unteren Drehzahlbereich und Selbsthemmung. Bei großen Maschinen gibt es andere Vorgaben wie maximale Geschwindigkeiten usw. >> Viele, die sich ein CNC-System aufbauen, kommen anders als >> wir aus dem metallverarbeitenden Bereich. Dementsprechend >> gering ist das Wissen über Regelstrecken usw. Eine einfache >> Takt/Richtung-Ansteuerung kann man auch als Laie einigermaßen >> gut einstellen und auf Fehler überprüfen. > > Naja... Physik und Maschinendynamik bleiben gleich, egal, ob > ein Laie oder ein Fachmann an der Maschine herumkonfiguriert. Das ändert aber nichts an der deutlich leichteren Einrichtung einer Steuerung gegenüber einer (bzw. mehreren) Regelschleife(n). Und darum geht es unter anderem. > Zum zweiten ist, wenn man mal ruhig darüber nachdenkt, der > ganze Blödsinn mit dem Mikroschrittbetrieb selbst auf Basis > der Takt/Richtungs-Schnittstelle lösbar. Die Zeitabstände der > letzten n Taktimpulse zueinander sind ja ein Maß für die > aktuelle Drehgeschwindigkeit des Motors -- also kann eine > Schrittmotorendstufe diesen Zeitabstand auch messen und daraus > sowohl die notwendige Motorspannung bestimmen als auch den > mutmaßlichen Verlauf den Drehfeldes in den nächsten Mikro- > sekunden extrapolieren. Das wird dann alles wieder teurer und man verschenkt Flexibilität. Bei 3D-Druckern bspw. fährt man bei kurzen, nicht allzu schnellen Bewegungen ganz ohne Rampe. Wie sollte ein System also erkennen, dass nach diesem Schritt einfach keiner mehr folgt, obwohl ich noch eine gewisse Geschwindigkeit habe? Das müsste man auch wieder parametrieren usw. Einfache 2A-Endstufen mit Stromchopper kosten keinen Euro mehr, die Motoren keine 10€. Da fängt niemand mit Servosystemen an.
Nico W. schrieb: > Ich mach das nun schon seit einigen Jahren. Ich erinnere mich aber auch > an meine Anfänge. Das war ich froh die richtige Mikroschrittanzahl in > die Firmware einzutragen und ggf. noch einen passenden Wert für die > Rampen. Ja, eben. Eine Vielzahl an gut funktionierenden CNC-Fräsen wäre nie zu Ende gebaut worden, wenn man dafür Servos hätte nehmen müssen. Ich sehe ja hier an meinem 3kW-Servomotor am SK30-Wechsler, dass die Einrichtung eines Servosystems erhebliches Vorwissen, Zeit und Geduld erfordert. Einen Lenze EVS9324 parametriert man nicht mal eben so, wenn man das vorher noch nie gemacht hat. Bei einem Schrittmotor stellt der Laie die Anzahl der Schritte/U ein, dann noch den Motorstrom und erstmal eine niedrige Beschleunigung, und schon läuft diese Achse - noch nicht optimal, aber sie läuft.
Egon D. schrieb: > Wenn ich jetzt sage "Ach so. Ihr wollt also ein einigermaßen > stetiges Drehfeld erzeugen -- aber warum bürdet ihr diese > Arbeit der Bahnsteuerung auf und baut nicht statt dessen einen > passenden Motor-Umrichter, der das kann?" Wird dadurch die Bahnsteuerung irgendwie einfacher? Ich denke: nein. Man braucht immer noch einen Algorithmus der die Bahn in viele winzig kleine Einzelsegmente zerlegt unter Berücksichtigung der erforderlichen Beschleunigungsrampen soundsovielter Ordnung weil der einzelne Motor das nicht selbstständig machen darf denn der wüßte ja gar nicht wo die anderen Motoren zu einen gegebenen Zeitpunkt gerade sind. Statt Schritte mit präzisem Timing hinzuschicvken schickst Du dann irgendwelche Datenpakete für jedes einzelne Segment mit gewünschter Geschwindigkeit und Zielposition und hoffst daß alle Motoren halbwegs gleichzeitig ankommen. Du verlierst völlig die Kontrolle über das Timimg.
:
Bearbeitet durch User
Bernd K. schrieb: > Egon D. schrieb: >> Wenn ich jetzt sage "Ach so. Ihr wollt also ein einigermaßen >> stetiges Drehfeld erzeugen -- aber warum bürdet ihr diese >> Arbeit der Bahnsteuerung auf und baut nicht statt dessen einen >> passenden Motor-Umrichter, der das kann?" > > Wird dadurch die Bahnsteuerung irgendwie einfacher? Nun ja. Die Bahnsteuerung muss weniger motorspezifischen Krempel erledigen und nur ungefähr ein Zehntel bis ein Hundertstel der Datenmenge durchlassen. Ob das eine Vereinfachung ist, mag jeder selbst beurteilen. > Ich denke: nein. Man braucht immer noch einen Algorithmus > der die Bahn in viele winzig kleine Einzelsegmente zerlegt > [...] Natürlich. Dem widerspreche ich gar nicht. Nur sind die Segmente eben dann nicht 50nm lang, sondern vielleicht 2µm. > Statt Schritte mit präzisem Timing hinzuschicvken schickst > Du dann irgendwelche Datenpakete für jedes einzelne Segment > mit gewünschter Geschwindigkeit und Zielposition und hoffst > daß alle Motoren halbwegs gleichzeitig ankommen. Du verlierst > völlig die Kontrolle über das Timimg. Mir ist nicht klar, warum Du hier einen solchen Pappkameraden aufbaust. Ich habe nicht gefordert, dass man die Motoren über eine Rauchzeichen-Schnittstelle mit Latenzen im Minutenbereich ansteuern soll. Meine Aussage war lediglich, dass sich meiner unmaßgeblichen Meinung nach die Bahnsteuerung nicht um die Erzeugung eines stetigen Drehfeldes kümmern sollte -- nichts anders ist nämlich der Mikroschrittbetrieb: Interpolation der Phasen- ströme zwecks Erzeugung eines stetigen Drehfeldes.
Chris D. schrieb: > Wenn ich mir die Funktionsweise meiner > Schrittmotorendstufen anschaue, dann ist das mMn > keine U/f-Steuerung, denn die Ausgangsspannung der > Endstufen ist immer dieselbe. Das sollte nicht so sein. Das offensichtlichste Gegenbeispiel ist der Stillstand. Ohne Stillstandserkennung und Stromabsenkung wird im Stillstand der Motorstrom nur durch den Wicklungswiderstand diktiert -- es liegt also im Mittel genau Nennspannung an den Wicklungen an. Die Motornennspannung ist aber i.d.R. NICHT die maximale Ausgangsspannung der Endstufe. > Eine U/f-Steuerung hat ja den Anspruch, das Drehmoment > über den kompletten Drehzahlbereich so konstant wie > möglich zu halten, ohne den Motor zu überlasten. Nee. Das ist eine U/f-Steuerung, keine I/f-Steuerung. Die Spannung bei niedrigen Drehzahlen muss (gegenüber der Nennspannung) abgesenkt werden, weil sonst der Motor überlastet wird -- aufgrund der niederigeren Frequenz wirken die Wicklungsinduktivitäten weniger strombegrenzend. Das ist beim DSAM exakt so wie beim Schrittmotor. > Schrittmotorendstufen haben aber genau das nicht: man > hat (im Rahmen des möglichen Spannungsanstiegs) immer > denselben Motorstrom, den man einprägt, egal ob bei 0Hz > oder 5kHz. Daher fällt die Drehmoment/f-Kurve dann auch > entsprechend ab. Denk da nochmal drüber nach. Das Drehmoment ist proportional zum Strom. Das Drehmoment fällt ab einer gewissen Drehzahl ab, weil die Endstufe den Strom zwar konstanthalten WILL, dies aber NICHT MEHR SCHAFFT -- da sind die Induktivitäten dagegen. > Doch, durchaus - denn damit ist bspw. das Argument > hinfällig, dass die arme CNC-Steuerung in irgendeiner > Art und Weise durch intelligente Servoantriebe entlastet > werden müsste. Im Gegenteil macht es das einfacher, > weil der komplette Antrieb innerhalb der Steuerung > parametriert werden kann. Hmm. Ich nehme Deinen Standpunkt zur Kenntnis und werde die Argumente überdenken; dennoch bin ich skeptisch. Schließlich gibt es gute Gründe dafür, warum sich außerhalb der Schrittmotorwelt EIN Umrichter nur um EINEN Motor kümmert. >> Wenn Du die 20kW-CNC-Fräse, die ich gerade vor meinem >> geistigen Auge habe, bei identischer Parametern (Genauigkeit, >> erreichbare Geschwindigkeiten usw.) auf Schrittmotoren >> umrüsten wolltest, bräuchtest Du genauso ERHEBLICHES Wissen. > > Das ist aber nicht der Anwendungsfall für Schrittmotoren > im CNC-Bereich. Niemand wird bei einer solchen Größe > Schrittmotoren einsetzen oder die Maschine gar umrüsten. > Weder ich noch Thorsten. Moment. Deine Aussage war sinngemäß, dass -- etwas überspitzt formuliert -- Schrittantriebe von jedem Laien parametriert werden könnten, wogegen Servosysteme erhebliches Fachwissen erfordern würden. Meine Entgegnung darauf ist das Beispiel mit der 20kW-Fräse: Wenn Du die auf Schrittantriebe umrüsten willst, brauchst Du GENAUSOVIEL Fachwissen. Entscheidend ist also nicht primär die Art des Antriebs, sondern die Komplexität der Maschine. > Genau - oft treten sie gar nicht auf. Dafür spielt der > Preis und einfache Einrichtung eben eine wichtige Rolle. Ja -- den Teil Deines Argumentes habe ich ja verstanden. Und auch der Einwand, dass Schrittantriebe typischerweise keine Regelkreise sind, ist ein gutes Argument. Natürlich ist eine rein gesteuerte Wirkkette leichter zu beherrschen als ein Regelkreis. > Das ändert aber nichts an der deutlich leichteren > Einrichtung einer Steuerung gegenüber einer (bzw. > mehreren) Regelschleife(n). Und darum geht es unter > anderem. Ja, das ist ein guter Punkt. Das akzeptiere ich. >> Zum zweiten ist, wenn man mal ruhig darüber nachdenkt, der >> ganze Blödsinn mit dem Mikroschrittbetrieb selbst auf Basis >> der Takt/Richtungs-Schnittstelle lösbar. Die Zeitabstände der >> letzten n Taktimpulse zueinander sind ja ein Maß für die >> aktuelle Drehgeschwindigkeit des Motors -- also kann eine >> Schrittmotorendstufe diesen Zeitabstand auch messen und daraus >> sowohl die notwendige Motorspannung bestimmen als auch den >> mutmaßlichen Verlauf den Drehfeldes in den nächsten Mikro- >> sekunden extrapolieren. > > Das wird dann alles wieder teurer und man verschenkt Flexibilität. Das sehe ich beides nicht so. Der eine zusätzliche Mikrocontroller je Endstufe fällt preislich nicht wirklich ins Gewicht, und die Flexibilität, den Motor mit völlig beliebigen Signalfolgen ansteuern zu dürfen, hat auch eine all-in-one-Steuerung nicht. Da ist eben die Physik dagegen. > Bei 3D-Druckern bspw. fährt man bei kurzen, nicht allzu > schnellen Bewegungen ganz ohne Rampe. Wie sollte ein System > also erkennen, dass nach diesem Schritt einfach keiner mehr > folgt, obwohl ich noch eine gewisse Geschwindigkeit habe? > Das müsste man auch wieder parametrieren usw. So wie jetzt auch. Jetzt parametrierst Du die Motordaten zentral in der Steuerung; bei separaten Umrichtern parametrierst Du jeden Umrichter auf seinen Motor.
Meine Fresse, was Ihr Euch alles um die Ohren haut. Es geht hier um einer GRBL Alternative! GRBL ist ein winziger g-Code interpreter, der Schrittmotore steuert. So ziemlich jede kleine CNC läuft heute im Hobbybereich mit Schrittmotoren. Endstufen gibt es inzwischen ganz phantastische, die sogar merken, wenn der Schrittmotor blockiert wird und den Schritt nicht fahren kann. Alles, was die CPU noch macht ist STEP und DIR. Und das ist für ne ARM CPU auf nem 18 Euro Arduino Due nun wirklich kein Problem. Die Berechnung der Rampen eingeschlossen, und zwar auf, vier, fünf oder sechs Achsen. Ja, dabei wird auch schon vorausschauend angepasst auf die folgenden G-Code Befehle. Un ddie Rampen sind auch schon lange nicht mehr trapezförmig, sondern wunderbare spline-Kurven. Das alles gibt es gratis als OpenSource Lösung. Das muss man echt nicht mehr neu diskutieren. Und wenn wirklich hier jemand eine CNC mit 2kW Servomotoren bewegen will, dann ist er echt im falschen Forum.
Matthias schrieb: > Ja, dabei wird auch schon vorausschauend angepasst auf die > folgenden G-Code Befehle. Un ddie Rampen sind auch schon lange nicht > mehr trapezförmig, sondern wunderbare spline-Kurven. Rein interessehalber: Bei welcher Firmware hat man was anderes als Trapez-Kurven?
Egon D. schrieb: > Meine Aussage war lediglich, dass sich meiner unmaßgeblichen > Meinung nach die Bahnsteuerung nicht um die Erzeugung eines > stetigen Drehfeldes kümmern sollte Tut sie auch nicht, wie kommst Du darauf? Sie erzeugt nur Schritte, das ist extrem einfach, das komplizierteste daran ist das Timing für die Rampen auszurechnen und das braucht man so oder so, und 1000 Schritte zu erzeugen ist kein bisschen komplizierter als nur 10 oder nur einen. Der Code dafür ist derselbe. Und wie daraus ein Drehfeld wird, darum kümmert sich der jeweilige Treiber des jeweiligen Motors. ich weiß nicht wie Du darauf kommst die Bahnsteuerung hätte irgendwas mit dem Drehfeld zu schaffen. Und es ist um Größenordnungen einfacher einen einzelnen Rechteck-Puls für das nächste Mikro-Bahnsegment auszugeben (oder auch hundert Pulse für die nächten hundert Mikrosegmente) als für jedes Segment je ein Datenpaket für jeden Servomotor vorzubereiten und mit dem richtigen Timing an alle Motoren zu schicken und dann blind zu hoffen daß die Motortreiber für die Dauer dieses Segments halbwegs so fahren wie man das vorherberechnet hat.
:
Bearbeitet durch User
Nico W. schrieb: > Smoothie z.B. ...was aber nun nicht wirklich auf einem „18 Euro Arduino Due“ läuft, afaik... g2core käme da vielleicht eher in Frage.
Auf einem AZSMZ mini für 42$ läuft Smoothie. Da muss man dann auch kein Shield mehr für zu kaufen. Anders als beim Due. Nur ein paar Treiber.
Nico W. schrieb: > Smoothie z.B. Ach daher also der Name? Ich dachte schon es wäre einfach nur wegen der potentiell höheren Stepfrequenz in Kombination mit mehr Mikroschritten pro Schritt. Muss ich mir mal anschauen wie sie das gelöst haben. Ein kubischer Spline für den Geschwindigkeitsverlauf bedeutet ja, dass der Ruck, d.h. die Ableitung der Beschleunigung, eben noch stetig ist oder irre ich da? Ansonsten gefiel mir Smoothieware vom Code her auf den ersten Blick eher nicht so gut. Da wird eben viel mit Ressourcen um sich geworfen und man merkt der Firmware an, dass die Smoothieboards eben nicht so verbreitet sind. Da hapert es an vielen Ecken. Habe aber auch so einen China-Klon rumfliegen (MKS SBASE 1.3). Hätte ich gewusst, dass es das auch gesockelt gibt, hätte ich eher das genommen.
Hier steht ein wenig drüber[1]. Ich habe mich mit Smoothi allerdings nie näher beschäftigt. Afaik haben die nicht nur Jerk. Sonder noch 3 weitere Stufen. (6th order) [1]https://github.com/KevinOConnor/klipper/issues/57#issuecomment-378426939
So wie ich das sehe hat Smoothieware eine "ganz normale" Trapezform für den Geschwindigkeitsverlauf: https://github.com/Smoothieware/Smoothieware/blob/edge/src/modules/robot/Block.cpp#L135 Höhere Ordnungen für die Beschleunigung scheinen ja laut dem Klipper-Thread nicht so wahnsinnig viel zu bringen. Schade, ich hätte mir davon mehr erhofft.
Bernd K. schrieb: > Egon D. schrieb: >> Meine Aussage war lediglich, dass sich meiner unmaßgeblichen >> Meinung nach die Bahnsteuerung nicht um die Erzeugung eines >> stetigen Drehfeldes kümmern sollte > > Tut sie auch nicht, wie kommst Du darauf? Doch, natürlich tut sie das -- zumindest zur Hälfte. Die Bahn- steuerung muss nämlich für jeden einzelnen interpolierten Phasenstrom einen Impuls ausgeben -- genau das sind ja die "Mikroschritte". > Und wie daraus ein Drehfeld wird, darum kümmert sich der > jeweilige Treiber des jeweiligen Motors. Der bestimmt die zugehörigen Stromamplituden, ja. Das ist die "andere Hälfte". Soweit stimmt das. > ich weiß nicht wie Du darauf kommst die Bahnsteuerung > hätte irgendwas mit dem Drehfeld zu schaffen. Steht oben. Du kannst aufhören, den Verständnislosen zu spielen :) > [...] als für jedes Segment je ein Datenpaket für jeden > Servomotor vorzubereiten und mit dem richtigen Timing > an alle Motoren zu schicken und dann blind zu hoffen daß > [...] So ein Unsinn. Wie Du ja zweifellos weisst, ist das Gegenteil richtig: Der Schrittantrieb ist eine offene Steuerkette, d.h. beim Schrittmotor wird "blind gehofft", dass er die geforderte Position auch einnimmt. Der Servoantrieb dagegen ist ein Regelkreis, d.h. er kämpft um die Position mit allem, was die Endstufen hergeben. Es wäre bei Bedarf auch sehr leicht möglich, eine zeitliche Synchronisation mehrerer Antriebe durch einen gemeinsamen Takt zu erreichen -- jedes Orchester macht vor, wie so etwas geht. > die Motortreiber für die Dauer dieses Segments halbwegs > so fahren wie man das vorherberechnet hat. Ganz ehrlich: Das ist FUD, das eines Technikers nicht würdig ist. Ich habe mich nur an dieser Diskussion beteiligt, weil u.a. bemängelt wurde, dass die mit GRBL erreichbaren Schritttakte nicht hoch genug sind. Dieses Problem tritt aber überhaupt NUR auf, weil die Bahnsteuerung einen Teil der Drehfeld- erzeugung (="Mikroschrittbetrieb") mit erledigen muss. Dieser Fakt stört mich schon seit langem, obwohl -- oder gerade weil -- das in der Schrittmotorwelt allgemein so üblich zu sein scheint. Dank Thorsten und Christoph ist mir inzwischen auch eine Lösung für dieses Problem eingefallen.
Ich finde nicht einmal die Erzeugung der Schrittimpulse durch die Bahnsteuerung so unglücklich, sondern viel mehr die Tatsache, dass die Motortreiber typischerweise direkt neben dem Mikrocontroller sitzen, welcher diese Impulse ausspuckt und dann Meterlange Kabel quer durch den Raum gezogen werden auf denen dann Impulsartige Ströme von mehreren Ampere fließen. Gerade aus EMV-Sicht wäre es viel besser, die Endstufe möglichst nahe am Motor anzubringen und diesem einen eigenen Controller zu spendieren, der dann etwa über CAN oder RS485 mit der Bahnsteuerung kommuniziert. Gerade mit dem CAN-Bus sollte die Synchronisierung der verschiedenen Achsen auch möglich sein. Die Kosten für einen zusätzlichen Controller halten sich auch sehr in Grenzen. Ein STM32F042F6 im TSSOP20 sollte dafür schon ausreichen und der kostet ca. 2€ in Einzelstückzahlen bei Mouser, ist also eigentlich nicht der Rede Wert, wenn man an die Gesamtkosten von typischen CNC-Maschinen denkt.
Christopher J. schrieb: > Ich finde nicht einmal die Erzeugung der Schrittimpulse > durch die Bahnsteuerung so unglücklich, sondern viel mehr > die Tatsache, dass die Motortreiber typischerweise direkt > neben dem Mikrocontroller sitzen, welcher diese Impulse > ausspuckt und dann Meterlange Kabel quer durch den > Raum gezogen werden auf denen dann Impulsartige Ströme > von mehreren Ampere fließen. Hmm. In der Tat. Das Problem hatte ich noch gar nicht auf dem Schirm. > Gerade aus EMV-Sicht wäre es viel besser, die Endstufe > möglichst nahe am Motor anzubringen und diesem einen > eigenen Controller zu spendieren, Ja. Bei anderen Antrieben macht man es ja auch so. > der dann etwa über CAN oder RS485 mit der Bahnsteuerung > kommuniziert. Ich denke inzwischen, dass das auch mit einer leicht gepimpten STEP/DIR-Schnittstelle geht. Die Idee ist aber noch nicht ganz ausgegoren. Hmm.
Egon D. schrieb: >>> Meine Aussage war lediglich, dass sich meiner unmaßgeblichen >>> Meinung nach die Bahnsteuerung nicht um die Erzeugung eines >>> stetigen Drehfeldes kümmern sollte >> >> Tut sie auch nicht, wie kommst Du darauf? > > Doch, natürlich tut sie das -- zumindest zur Hälfte. nein das tut sie offensichtlich nicht, sie erzeugt einen hoch aufgelösten Zähltakt sonst nichts. Und es ist doch für diese Betrachtung völlig belanglos wo die Schritte zum ersten Mal zu Tage treten, die Steuerung des Servomotors wird wenn sie von A nach B fahren soll auch einen Timer laufen lassen müssen der in diskreten Schritten die PWM-zeiten ändert, möglichst hoch aufgelöst. Da sind sie dann wieder Deine verhaßten Mikroschritte denn das geht alles digital und gequantelt. Nur diesmal hat die Bahnsteuerung keine Kontrolle über das Timing der Schritte, wenn sie sie selber erzeugt aber schon.
Bernd K. schrieb: > Egon D. schrieb: >>>> Meine Aussage war lediglich, dass sich meiner >>>> unmaßgeblichen Meinung nach die Bahnsteuerung >>>> nicht um die Erzeugung eines stetigen Drehfeldes >>>> kümmern sollte >>> >>> Tut sie auch nicht, wie kommst Du darauf? >> >> Doch, natürlich tut sie das -- zumindest zur Hälfte. > > nein das tut sie offensichtlich nicht, sie erzeugt > einen hoch aufgelösten Zähltakt sonst nichts. Nein, das ist natürlich falsch. Das ist nicht IRGENDEIN beliebiger Zähltakt, der da erzeugt wird. Die Bahnsteuerung erzeugt Takt für Takt EXAKT die Zeitpunkte, in denen das Drehfeld bestimmte Werte einnehmen soll. Das Timing, das die Bahnsteuerung erzeugt, ist IN JEDER EINZELHEIT das Timing, dem das Drehfehld folgt. Die korrespondierenden Phasenströme bestimmt i.d.R. der Schrittmotortreiber selbst; das hatten wir bereits geklärt. > Und es ist doch für diese Betrachtung völlig belanglos > wo die Schritte zum ersten Mal zu Tage treten, [...] Nein, das ist aus verschiedenen Gründen nicht belanglos. Spielt aber auch keine Rolle. Mir gefällt die übliche Systemstruktur nicht, und diese Diskussion hat mir geholfen, eine Abhilfe zu finden. Ich freue mich darüber, aber ich muss niemanden mit meiner Idee zwangsbeglücken. Wer nicht will, der hat schon.
Christopher J. schrieb: > Ich finde nicht einmal die Erzeugung der Schrittimpulse durch die > Bahnsteuerung so unglücklich, sondern viel mehr die Tatsache, dass die > Motortreiber typischerweise direkt neben dem Mikrocontroller sitzen, Also bei mir sind das typischerweise schwere schwarz eloxierte Aluminiumklötze mit Kühlrippen, jeder einzelne so groß wie zwei Zigarettenschachteln und die sind irgendwo neben dem Netzteil aufs Metall geschraubt. Die Platine sitzt ganz woanders und die Schritte werden mit 5V über geschirmte Leitungen an die Treiber herangeführt wo sie auf Optokoppler-Eingänge treffen. So sieht das typischerweise aus. Du kannst es nicht dem Prinzip Schrittmotor ankreiden daß irgendeiner das in einer konkreten Anwendung mit wahrscheinlich winzigen Spielzeugmotörchen zufällig mal anders konstruiert hat. Dort wo dicke Ströme fließen sitzen auch dicke Treiber an geeigneter Stelle.
:
Bearbeitet durch User
Egon D. schrieb: >> nein das tut sie offensichtlich nicht, sie erzeugt >> einen hoch aufgelösten Zähltakt sonst nichts. > > Nein, das ist natürlich falsch. > > Das ist nicht IRGENDEIN beliebiger Zähltakt, der da > erzeugt wird. Die Bahnsteuerung erzeugt Takt für Takt > EXAKT die Zeitpunkte, in denen das Drehfeld bestimmte > Werte einnehmen soll. Das Timing, das die Bahnsteuerung > erzeugt, ist IN JEDER EINZELHEIT das Timing, dem das > Drehfehld folgt. Natürlich soll es dem Timing der Schritte folgen, dazu sind sie ja da! Deshalb ist die Bahn mit Schrittmotoren auch genauer und feiner aufgelöst und die Steuerung hat weniger zu tun weil das exakte Timing als Nebenprodukt ihrer Berechnungen der Bahnsegmente sowieso anfällt. Dann muss man nur noch eine Variable ändern und die Segmente werden beliebig klein, die Berechnung wird dadurch nicht schwerer. Schrittmotorsteuerung ist einfacher zu implementieren. Das war der Streitpunkt. Du hast behauptet sie wäre schwieriger, aber das Gegenteil ist der Fall.
:
Bearbeitet durch User
Bernd K. schrieb: > Schrittmotorsteuerung ist einfacher zu implementieren. > Das war der Streitpunkt. Du hast behauptet sie wäre > schwieriger, aber das Gegenteil ist der Fall. Nun... da ich keine der Aussagen, die Du mir in den Mund legst, tatsächlich gemacht habe, hat es keinen Zweck, dass ich weiter mit Dir diskutiere.
Hallo Egon, Egon D. schrieb: > Bernd K. schrieb: > >> Egon D. schrieb: >>>>> Meine Aussage war lediglich, dass sich meiner >>>>> unmaßgeblichen Meinung nach die Bahnsteuerung >>>>> nicht um die Erzeugung eines stetigen Drehfeldes >>>>> kümmern sollte >>>> >>>> Tut sie auch nicht, wie kommst Du darauf? >>> >>> Doch, natürlich tut sie das -- zumindest zur Hälfte. >> >> nein das tut sie offensichtlich nicht, sie erzeugt >> einen hoch aufgelösten Zähltakt sonst nichts. > > Nein, das ist natürlich falsch. > > Das ist nicht IRGENDEIN beliebiger Zähltakt, der da > erzeugt wird. Die Bahnsteuerung erzeugt Takt für Takt > EXAKT die Zeitpunkte, in denen das Drehfeld bestimmte > Werte einnehmen soll. Das Timing, das die Bahnsteuerung > erzeugt, ist IN JEDER EINZELHEIT das Timing, dem das > Drehfehld folgt. Jetzt lös dich doch endlich mal von deinem Drehfeld. Der Unterschied zwischen einer "echten" CNC-Bahnsteuerung und einer Soft-CNC für Schrittmotoren lässt sich ganz einfach auf den Punkt bringen: Die Bahnsteuerung arbeitet mit einem festen Zeittakt und variablen Wegsegmenten. Die Soft-CNC mit Takt-/Richtungsausgabe arbeitet mit festen Wegsegmenten und variablen Zeitabständen. Am Ende ist das aber das gleiche. Beide Varianten sind bemüht, die Abstände so klein wie möglich zu machen, um eine hohe Positionstreue zu erreichen. Mit freundlichen Grüßen Thorsten Ostermann
Egon D. schrieb: > Nun... da ich keine der Aussagen, die Du mir in den Mund > legst, tatsächlich gemacht habe, hat es keinen Zweck, dass > ich weiter mit Dir diskutiere. Ach komm, jetzt versucht Dich nicht dreist aus der verlorenen Diskussion herauszulügen. Du hast selbst behauptet die Bahnsteuerung müsse [wörtlich zitiert] "motorspezifischen Krempel erledigen" was völliger Nonsens ist denn die Schrittmotorsteuerung hat mit dem Motor gar nichts zu schaffen, sie errechnet mit hoher zeitlicher und räumlicher Auflösung die Sollposition aller Achsen und übermittelt sie mit der selben Auflösung in Echtzeit an die Treiber. Das selbe macht die Steuerung für Servomotoren, nur das Protokoll der Übermittlung an die Treiber und dessen zeitliche Auflösung ist eine andere. Um den Inhalt einer einzigen Integer-Variablen [die Sollposition] die sich nur stetig ändern kann [keine Sprünge macht] in Echtzeit von A nach B zu übertragen gibt es keine einfachere und effektivere Schnittstelle als Takt/Richtung. Das ist nun mal so, da beißt die Maus keinen Faden ab. Dem Schrittmotortreiber steht es im Übrigen völlig frei noch einen Dreh-Encoder auszuwerten und die Ist-Position zu erfassen und mit der Soll-Position zu vergleichen. Solche Servo-Motoren mit Schrittmotor-Interface kann man fix und fertig kaufen, die lassen sich einfacher und präziser ansteuern. Antworte nicht auf das Posting denn ich werde es nicht mehr lesen, ich habe wichtigeres zu tun.
:
Bearbeitet durch User
Thorsten O. schrieb: > Jetzt lös dich doch endlich mal von deinem Drehfeld. Nein, gerade das möchte ich nicht. Seit ich bemerkt habe, dass Schrittmotoren lediglich spezielle Synchronmotoren sind, beschreibe ich sie auch mit den für Synchronmotoren üblichen Begriffen. Das liefert mir interessante Einblicke. Und -- ja, mir ist bewusst, dass das ein Außenseiter- standpunkt ist, und dass mich das gegebenenfalls zur Zielscheibe hasserfüllter Anfeindungen macht. Ich möchte TROTZDEM an meiner Betrachtungsweise fest- halten. > Der Unterschied zwischen einer "echten" CNC-Bahnsteuerung > und einer Soft-CNC für Schrittmotoren lässt sich ganz > einfach auf den Punkt bringen: Die Bahnsteuerung arbeitet > mit einem festen Zeittakt und variablen Wegsegmenten. > Die Soft-CNC mit Takt-/Richtungsausgabe arbeitet mit > festen Wegsegmenten und variablen Zeitabständen. Ja, soweit Zustimmung. > Am Ende ist das aber das gleiche. > Beide Varianten sind bemüht, die Abstände so klein wie > möglich zu machen, um eine hohe Positionstreue zu > erreichen. Jein. Das Streben nach POSITIONSTREUE endet erstmal bei Vollschritten, weil Fehler in dieser Größenordnung sowieso im System auftreten. Die weitere Zerlegung der Bahn in Mikroschritte dient primär der LAUFRUHE der Antriebe -- und diese Aufgabe ist nach meiner Ansicht besser im Motorumrichter als in der Bahnsteuerung aufgehoben. Es geht mir nicht darum, WAS im System passiert, sondern darum, WER welche Teilaufgabe übernimmt. Ich war bisher der Meinung, dass sich mein Ziel auf Basis der "dämlichen" und "blödsinnigen" STEP/DIR-Schnittstelle nicht erreichen lässt, aber das ist natürlich Unsinn. Ich war nur genauso betriebsblind wie die Schrittmotorleute, die ich kritisiere.
Hallo Egon, Egon D. schrieb: > Thorsten O. schrieb: > >> Jetzt lös dich doch endlich mal von deinem Drehfeld. > > Nein, gerade das möchte ich nicht. > Seit ich bemerkt habe, dass Schrittmotoren lediglich > spezielle Synchronmotoren sind, beschreibe ich sie > auch mit den für Synchronmotoren üblichen Begriffen. > Das liefert mir interessante Einblicke. Das kannst du gerne machen, ich sehe das durchaus ähnlich. Das hat aber trotzdem nichts mit der hier diskutierten Fragestellung und der Takt-/Richtungsschnittstelle zu tun. Du vermischt hier permanent verschiedene Themen. Mit freundlichen Grüßen Thorsten Ostermann
:
Bearbeitet durch User
Egon D. schrieb: > Die weitere Zerlegung der Bahn in Mikroschritte dient > primär der LAUFRUHE der Antriebe -- und diese Aufgabe > ist nach meiner Ansicht besser im Motorumrichter als > in der Bahnsteuerung aufgehoben. Die Zerlegung in Mikroschritte ist keine zusätzliche Aufgabe, dazu muß keine einzige zusätzliche Zeile Code geschrieben werden, nur ein Parameter wird geändert. Takt/Richtung ist die effektivste und gleichzeitig einfachste Art die errechnete Änderung der Sollposition in beliebig hoher räumlicher und zeitlicher Auflösung an den Treiber zu übermitteln, es existiert schlicht und einfach keine andere Schnittstelle die das gleiche leisten kann ohne wesentlich komplexer oder aufwendiger zu werden. Du kannst darüberhinaus auch davon ausgehen daß diejenigen die sich das ausgedacht haben durchaus nicht auf der Nudelsuppe dahergeschwommen sind und nur auf jemanden wie Dich gewartet haben.
Thorsten O. schrieb: >> Seit ich bemerkt habe, dass Schrittmotoren lediglich >> spezielle Synchronmotoren sind, beschreibe ich sie >> auch mit den für Synchronmotoren üblichen Begriffen. >> Das liefert mir interessante Einblicke. > > Das kannst du gerne machen, ich sehe das durchaus > ähnlich. Das hat aber trotzdem nichts mit der hier > diskutierten Fragestellung und der Takt-/Richtungs- > schnittstelle zu tun. Hmm... vielleicht haben wir dann unterschiedliche Fragestellungen vor Augen. Die ganz ursprünglichen Schrittantriebe waren ja, soweit ich das sehe, tatsächlich einfach und rustikal ausgeführt: Konstantspannung, vier Leistungsschalter, Blockkommutierung... das war's. Im Laufe der weiteren Entwicklung ist dann die Schritt- motorendstufe immer mehr zu einem vollwertigen Umrichter geworden: Man hat die Sternschaltung der Wicklungen ("unipolare Ansteuerung") aufgegeben, um den Motor besser auszunutzen, man hat eine U/f-Regelung eingeführt ("Stromchopperbetrieb"), um bei höheren Drehzahlen noch vernünftiges Drehmoment zu erreichen, und man geht von der Blockkommutierung ab und verwendet statt dessen eine Sinuskommutierung ("Mikroschrittbetrieb"). Das einzige, was ich mir jetzt noch wünsche, das ist, dass die Sinuskommutierung, d.h. die Erzeugung des Dreh- feldes, komplett in die Verantwortung des Umrichters gelegt wird. > Du vermischt hier permanent verschiedene Themen. Welche "verschiedenen Themen" meinst Du? Ich war bis neulich tatsächlich der Meinung, dass die STEP/DIR-Schnittstelle die Wurzel des Übels ist, weil sie (scheinbar) die zwingende Folge hat, dass die Bahn- steuerung Mikroschritte erzeugen muss. Es muss mir doch aber gestattet sein, meine Meinung aufgrund guter Argumente zu ändern :)
Bernd K. schrieb: > Egon D. schrieb: >> Die weitere Zerlegung der Bahn in Mikroschritte dient >> primär der LAUFRUHE der Antriebe -- und diese Aufgabe >> ist nach meiner Ansicht besser im Motorumrichter als >> in der Bahnsteuerung aufgehoben. > > Die Zerlegung in Mikroschritte ist keine zusätzliche > Aufgabe, dazu muß keine einzige zusätzliche Zeile Code > geschrieben werden, nur ein Parameter wird geändert. Das habe ich auch nicht behauptet. Liest Du überhaupt, was ich schreibe? Meine Aussagen waren, dass 1. mir die Systemstruktur nicht gefällt weil 2. die Bahnsteuerung ungefähr 10fach bis 100fach soviele Bahnpunkte berechnen muss als ohne Mikroschrittbetrieb. Beide Aussagen halte ich aufrecht. > Takt/Richtung ist die effektivste und gleichzeitig > einfachste Art die errechnete Änderung der Sollposition > in beliebig hoher räumlicher und zeitlicher Auflösung > an den Treiber zu übermitteln, es existiert schlicht und > einfach keine andere Schnittstelle die das gleiche leisten > kann ohne wesentlich komplexer oder aufwendiger zu werden. Liest Du überhaupt, was ich schreibe? Dir ist offenbar komplett entgangen, dass ich meine Meinung zur STEP/DIR-Schnittstelle schon vor Tagen geändert habe, und das auch in meinen Antworten an Thorsten und Christoph zum Ausdruck gebracht habe. Du kannst Dich wieder abregen. > Du kannst darüberhinaus auch davon ausgehen daß diejenigen > die sich das ausgedacht haben durchaus nicht auf der > Nudelsuppe dahergeschwommen sind und nur auf jemanden wie > Dich gewartet haben. Und Du kannst davon ausgehen, dass ich in fast fünfzig Lebensjahren gelernt habe, solche unsinnigen Anfeindungen zu ignorieren. Die Tatsache, dass auch heutzutage immer noch Erfindungen gemacht werden, beweist, dass es immer noch gute Ideen gibt, die bisher schlicht und einfach übersehen wurden. Ich freue mich, dass mir jetzt eine Lösung für ein Problem eingefallen ist, das mir schon seit Jahrzehnten im Kopf herumgeht -- aber ich werde ganz sicher nicht versuchen, sie Leuten aufzudrängen, die sie nicht haben wollen (=Dir).
Egon D. schrieb: > Meine Aussagen waren, dass > 1. mir die Systemstruktur nicht gefällt weil > 2. die Bahnsteuerung ungefähr 10fach bis 100fach soviele > Bahnpunkte berechnen muss als ohne Mikroschrittbetrieb. Die Bahnsteuerung enthält bereits den Code um Bahnpunkte zu errechnen und muß ihn auch weiterhin enthalten, Teile davon müssten im Motortreiber unnötig dupliziert werden um zwischen den Vollschritten die nun fehlenden Mikroschritte selbst zu interpolieren, das System würde insgesamt komplexer werden ohne jeglichen Vorteil. Die Bahnsteuerung möchte den Motor auch zwischen zwei Vollschritten positionieren können, das wäre unmöglich wenn Vollschritte die höchstmögliche Auflösung wären.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.