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