Hallo, konnte leider zu meinem Thema nichts finden. Es geht um folgendes: Schrittmotorsteuerung mit Rampenfunktion im FPGA und als Rückmeldung ein Inkrementalgeber. Nun ist mir nicht ganz klar wie ich die Regelstrecke aufbauen soll. Was ich bisher habe ist ein uC, welcher mir schon einen Schrittmotor ansteuert (Takt, Richtung und das ganze interpolierend über bisher 3 Achsen) per Interrupt. Das ganze schon einstellbar mit einer Rampenfunktion zur Beschleunigung des Motores. Nun möchte ich das ganze in einen FPGA übertragen, was mir eigentlich nicht so schwer fallen sollte. Das Problem ist nun die Regelung anhand der Rückgabe vom Inkrementalgeber. 1. Frage: Soll ich dies jeweils für jede Achse mit einem PID-Regler machen oder geht das auch einfacher indem ich dem Bresenham Algorithmus den Differenzwert übergebe. 2. Frage: Bekommt der evetuelle PID-Regeler den Takt, den auch der Motor sieht bei Hochrampen oder läuft der PID-Regler mit einem konstantem Takt. Sofern schon jemand was in diese Richtung getan hat würde ich mich über Hilfe freuen. Ist nicht gerade ein kleines Projekt, zumal das ganze noch auf mind. 4 Achsen ausgebaut werden soll. noeppkes ...
> Schrittmotorsteuerung mit Rampenfunktion im FPGA und als > Rückmeldung ein Inkrementalgeber. Ich hasse es ja so boese Gegenfragen zu stellen, aber weisst du ueberhaubt was du da machen willst? Man kann sicher auch einen Schrittmotor mit einem FPGA irgendwie regeln, aber tut da wirklich not? Es gibt auch Anwendungen wo man einen Schrittmotor mit extra Inkrementalgebern verwendet, aber normalerweise ist das Unsinn. > Das Problem ist nun die Regelung anhand der Rückgabe vom > Inkrementalgeber. Noe, das Problem ist das du noch garnicht erzaehlt hast was du da regeln willst. Ein Schrittmotor benoetigt weder einen Regler noch einen Inkrementalgeber. Du kannst dem einfach sagen mach 100Schritte nach links und dann macht er das. Und fuer bestimmte sicherheitskritische Anforderungen kann es dann Sinn machen diese Schritte mit dem Inkrementalgeber mitzuzaehlen und dann Alarm zu geben wenn der Motor nicht das macht was du ihm gesagt hast. Ueberleg doch bitte mal alleine was passieren wird wenn dein Inkrementalgebe eine halbe Schrittweite deines Motors neben seinem Sollwert liegt. > 2. Frage: Bekommt der evetuelle PID-Regeler den Takt, den auch > der Motor sieht bei Hochrampen oder läuft der PID-Regler mit > einem konstantem Takt. Bis jetzt sehe ich noch nicht was du regeln willst. Aber wenn es wirklich einen Grund fuer einen PID-Regler gaebe dann haengt die Abtastzeit deines Reglers von deiner Strecke ab. Und wenn man wirklich einen PID-Regler in einem FPGA haben will dann braucht er natuerlich einen Takt als Arbeitstakt, aehnlich wie eine CPU ja auch einen Takt benoetigt. Es gibt aber keinen Zusammenhang mit der notwendigen Regelzeit. Ich wuerde sogar sagen das die Zeiten eines Regler in den allermeisten Faellen so langsam sein werden das man nur ein FPGA nehmen wird wenn man es aus anderen Gruenden sowieso in der Schaltung hat. Olaf
Hallo. siehe zwischen den Zeilen. Olaf schrieb: >> Schrittmotorsteuerung mit Rampenfunktion im FPGA und als >> Rückmeldung ein Inkrementalgeber. > > Ich hasse es ja so boese Gegenfragen zu stellen, aber weisst du > ueberhaubt was du da machen willst? > > Man kann sicher auch einen Schrittmotor mit einem FPGA irgendwie regeln, > aber tut da wirklich not? > Es gibt auch Anwendungen wo man einen Schrittmotor mit extra > Inkrementalgebern verwendet, aber normalerweise ist das Unsinn. Fräsanlage steuern. Externer Controller für MACH3. Zuerst wird dieser Schrittmotoren ansteuern, später dann Servo-Motoren. Für die Servo-Motoren brauche ich den Inkrementalgeber und einen PID-Regler. Für die Schrittmotoren nicht unbedingt. Da hast du Recht. Man hat dann die Möglichkeit zu erkennen, wenn der Motor durch irgendwelche Gründe "hängt". Kleinere Schrittverluste könnte man dann ausgleichen. Ich vermute, dass hier die reine Abweichung in den Bresenham-Algorithmus eingerechnet funktionieren dürfte, so dass man sich bei Schrittmotoren den PID-Regler sparen und auf Differenzregelung gehen könnte. >> Das Problem ist nun die Regelung anhand der Rückgabe vom >> Inkrementalgeber. > > Noe, das Problem ist das du noch garnicht erzaehlt hast was du da regeln > willst. Ein Schrittmotor benoetigt weder einen Regler noch einen > Inkrementalgeber. Du kannst dem einfach sagen mach 100Schritte nach > links und dann macht er das. Und fuer bestimmte sicherheitskritische > Anforderungen kann es dann Sinn machen diese Schritte mit dem > Inkrementalgeber mitzuzaehlen und dann Alarm zu geben wenn der Motor > nicht das macht was du ihm gesagt hast. > > Ueberleg doch bitte mal alleine was passieren wird wenn dein > Inkrementalgebe eine halbe Schrittweite deines Motors neben seinem > Sollwert liegt. > Der Inkrementalgeber liegt nur daneben wenn ich ihn zu früh abfrage. Sofern ich diesen immer vor dem setzen des nächsten Schrittes abfrage, sollte es doch stimmen. Das hast du doch oben indirekt geschrieben. > Man kann sicher auch einen Schrittmotor mit einem FPGA irgendwie regeln, > aber tut da wirklich not? Es gibt keine Abweicheung, sofern man keine Schritte verloren hat. (Eine gewisse Abweichung lässt sich ja auch kompensieren. (halber oder ganzer Schritt wie du schon so schön sagtest.) >> 2. Frage: Bekommt der evetuelle PID-Regeler den Takt, den auch >> der Motor sieht bei Hochrampen oder läuft der PID-Regler mit >> einem konstantem Takt. > > Bis jetzt sehe ich noch nicht was du regeln willst. Aber wenn es > wirklich einen Grund fuer einen PID-Regler gaebe dann haengt die > Abtastzeit deines Reglers von deiner Strecke ab. Und wenn man wirklich > einen PID-Regler in einem FPGA haben will dann braucht er natuerlich > einen Takt als Arbeitstakt, aehnlich wie eine CPU ja auch einen Takt > benoetigt. Es gibt aber keinen Zusammenhang mit der notwendigen > Regelzeit. > Ich wuerde sogar sagen das die Zeiten eines Regler in den allermeisten > Faellen so langsam sein werden das man nur ein FPGA nehmen wird wenn man > es aus anderen Gruenden sowieso in der Schaltung hat. > Es ist mir klar, dass der PID-Regler einen Takt braucht. Die Frage war nur welcher ? Der takt von der Motoransteuerung (Drehzahltakt). D.h. jede Schrittänderung triggert auch den PID-Regler, bis dieser "auf Kurs" ist oder soll ich den Systemtakt nehmen, der konstant und ständig läuft ? noeppkes ... > Olaf
> Fräsanlage steuern. Externer Controller für MACH3. Zuerst wird dieser > Schrittmotoren ansteuern, später dann Servo-Motoren. Beides hat aber doch garnichts miteinander zutun. Warum willst du also eine Aufgabe zweimal loesen? Die Steuerung einer Fraese mit Servo-Motoren stelle ich mir im uebrigen wirklich als grosse Herausforderung vor. Nicht unmoeglich, aber sehr schwierig weil du ja wirklich genau vorgegebene Kurven sehr genau abfahren musst. Viel Spass. :-) > Für die Servo-Motoren brauche ich den Inkrementalgeber und > einen PID-Regler. Theoretisch waere es vermutlich moeglich einen Servomotor mit einem einzigen PID-Regler zu regeln, oder auch einem anderen viel komplizierterem Regler. In der Praxis ist das aber eher unueblich weil schwer beherschbar. Man nimmt da einen Kaskadenregler. Da hast als erstes einen Stromregler laufen der den Strom durch deinen Servomotor regelt. Das macht man weil das was einem eigentlich als erstes einfallen wuerde, die Spannung zu regeln, stark nichtlinear ist. Das willst du in dem Regler auf keinen Fall haben. Ausserdem kannst du an dieser Stelle auch Grenzen festlegen. Also den Maximalstrom begrenzen falls mal wieder ein Doedel den Fraeser zu feste gegen das Werkstueck knallt. Da drueber kannst du dann einen Geschwindigkeitsregler ueberlagern. Auch da wirst du es zu schaetzen wissen wenn du die Geschwindigkeit festlegen kannst, weil die ja bei dir in der Praxis stark von Fraeser, Drehzahl und Material abhaengt. Dem ueberlagerst du dann einen Lageregler. Ich gehe mal davon aus das sich der Lageregler mit den anderen Lagereglern der anderen Achsen syncronisieren muss weil du sonst keine Schraegen oder Kreise fahren kannst. Und darueber kommt dann vermutlich noch ein Regler der beliebige Freiformen abfaehrt. Klingt das einfach? Hast du den Eindruck das du da irgendwas fuer einen Schrittmotor zweitverwerten kannst? :-) > Es ist mir klar, dass der PID-Regler einen Takt braucht. Die Frage war > nur welcher ? Die Regler brauchen eine gewisse zeitliche Aufloesung. Aber keinen Takt im eigentlich sinne. Ein Regler definiert sich normalerweise ueber seine Abtastzeit und die haengt von deiner Strecke ab. Also z.B welche Masse du da bewegst und welche Zeitkonstanten ein Motor hat. Aber ganz gewiss nicht vom Takt eines Schrittmotor. Da gibt es keinerlei Zusammenhang. Der Regler in einem FPGA braeuchte hoechstens einen Takt damit er rechnen kann, und der kann beliebig schnell sein, da du die Rechenergebnisse spaeter mit der darueberliegenden Abtastzeit syncronisierst. Jetzt noch der Grund warum ich einem FPGA kritisch gegenueber stehe. Bis zum Positionsregler ist ganze "relativ" einfach. Das kann auch ein normaler Microcontroller. Evenutell mit der Einschraenkung das er schnell genug sein muss den Encoder abzutasten. Man muss sich also VORHER ueberlegen wie schnell muss der Motor maximal laufen, welche Aufloesung brauche ich, welche Abtastfrequenz (Nyquist-Frequenz). Fuer die letzte Stufe, da fehlt mir die Erfahrung, wuerde ich aber mal vermuten das man da etwas mehr Mathematik braucht. Da waere vielleicht ein DSP oder gar etwas mit Fliesskomma besser. Auf jedenfall wirst du in interessanten Zeiten leben. :-D Olaf
Hallo Olaf, danke für deine Ausführungen. Haben mir weitergehlofen. noeppkes ...
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.