iHSV57-Servos parametrieren

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • iHSV57-Servos parametrieren

      Hier mal eine Zusammenfassung meiner Erfahrungen mit dem Einstellen der iHSV57-Servos. (Ist zwar größtenteils aus dem "Kraft von Servos"-Thread kopiert, aber hier kann man es wahrscheinlich besser finden)

      Zum Einstellen der Servos kann ich das folgende Tool nur empfehlen: github.com/robert-budde/iHSV-Servo-Tool
      Dort kann man wichtige Parameter in mehr oder weniger Echtzeit plotten lassen und im laufenden Betrieb die Einstellungen unten in der Tabelle vornehmen. Sobald man dort einen Wert eingetragen hat wird er in den Servo geschrieben, der das auch sofort übernimmt.

      Benötigt wird eine serielle Schnittstelle. Fest verbaute sollten eigentlich immer funktionieren. USB-RS232-Adapter laufen wohl leider nicht alle, da manche zu geringe Spannungspegel generieren.

      Generell würde ich zum Einstellen die Achse in der Mitte platzieren, so dass man genug Sicherheitsabstand zu allen Seiten hat und dann immer hin- und herfahren und dabei die Graphen vom Pos Error und einem Torque Current beobachten.

      Bei den Servos kann man extrem viele Parameter einstellen. 90% der Parameter haben bei meinen Versuchen aber keine wirkliche Änderung bewirkt (oder das Verhalten verschlechtert). Im Endeffekt habe ich nur Pp, Pd und Pf eingestellt. Ich will nicht sagen, dass man es nicht noch besser einstellen kann, aber ich bin mit dem Ergebnis so sehr zufrieden. Es ist auf jeden Welten besser als ohne Einstellung und auch deutlich besser als die Einstellungen, die ich so im Internet gefunden habe.

      Prinzipiell soll man bei einem PID-Controller ja eigentlich P so hoch stellen, dass es gerade nicht schwingt. Also bei meinen Versuchen hat es beim Maximum von Pp (2^15-1) auf keiner Achse geschwungen, d.h. einfach dort das Maximum eintragen (32767 (Auf keinen Fall höher, dann rasten die Motoren völlig aus und machen einen ordentlichen Satz in eine Richtung!))

      Bleiben also nur noch Pd und Pf. Pd hat so einen geringen Effekt, dass der genaue Wert dort nicht so wichtig sein kann. Ich habe es auf 450 bei allen Achsen stehen.

      Also bleibt zum richtigen Tunen eigentlich nur noch Pf übrig. Und das kann man mit dem Tool oben hervorragend sehen, wann es schwingt und wann es aufhört. Dann so lange Pf hochstellen bis der Torque Current oszilliert. Wenn es schlimm schwingt, dann kann man das sogar mit bloßem Auge sehen. Nun Pf so lange in 50er Schritten runterschrauben bis der Spitzenfehler beim Umkehrpunkt wieder mehr wird und dort Pf auf den Wert festsetzen, wo der Fehler am geringsten war.
      (Als kleines Bonbon kann man mit dem Torque Current beim Einrichten der Fräse auch sehen, ob die Achsen gut und gleichmäßig laufen. Wenn es irgendwo mehr Widerstand gibt, sieht man sofort, dass der Strom ansteigt). Damit habe ich ohne Beschleunigung Pos Error von <= 2 und bei harten Manövern vielleicht mal 8 für nen Bruchteil einer Sekunde. Wenn man die Beschleunigung der Fräse runterstellt, kann man den Wert aber sicherlich auch noch minimieren. Da die Fräse bei starken Beschleunigungen aber eh etwas schwingen wird, würde ich das jetzt auch nicht dramatisch sehen. Bei KUS mit 5mm Steigung und Direktantrieb sind 8/4000 = 0,01mm. Da werden andere Faktoren mehr reinspielen. (Für wen sich das "viel" anhört noch ein Vergleich zu Steppern. 8 Servo-"Schritte" entsprechen 0,4 Vollschritten eines Steppermotors (mit 200 Schritten/Umdrehung).

      Hoffe, es hilft jemandem,
      Lars

      The post was edited 1 time, last by chaotix: Pf-Einstellung geändert ().

    • Da Lars ja schon angefangen hat über die Einstellungen von Servos zu schreiben, werde ich hier meine Daten mal dazu Posten und keine neuen Thread aufmachen.
      Also wie schon einmal gesagt, die Servos laufen auch mit den Werks Einstellungen. Ich habe erst einmal die Daten Von Sebastian End übernommen.
      Ich schreib sie hier einmal rein, dann muss sie keiner suchen, ich hoffe Sebastian hat nichts dagegen.
      POS Loop
      Pp: 20000
      Pf: 1400
      POS Error: 25000
      Pd: 0
      Pos Filter: 7

      Vel Loop
      VP: 8500
      Vi: 3000
      Vd: 1800
      Aff: 0
      Vel Filter: 7
      Conti Vel: 0
      Vel Limit: 18000
      Acc: 1
      DEC: 500

      Current Loop
      Cp: 3000
      Ci: 500
      Conti Current: 6000
      Limit Current: 15000
      Aber ich habe auch noch diese Vibrationen in der Maschine, da werde ich nochmal suchen gehen, welche Einstellungen da etwas bringen.
      Außerdem habe ich noch etwas festgestellt, wenn ich mit 4000mm/min Schlichten will, werden die Kanten Rund. Bei meinen 2000mm/min die ich vorher hatte, passierte das nicht. Muss ich also auch nochmal ran.
      Gruß
      Willi
    • Zum Spaß habe ich die Werte von Dir noch mal ausprobiert (hatte die am Anfang auch mal benutzt, aber war nicht zufrieden) und bin immer 10cm in eine Richtung und ohne Pause zurück mit einer Beschleunigung von 500mm/². Dabei bin auf folgende Schleppfehler gekommen:

      Dauerhafter Fehler 40 (0,05mm), Spitze (am Umkehrpunkt): 45 (0,05625mm)

      Dann habe ich die Änderungen im Vel Loop und Current Loop wieder zurückgesetzt (d.h. auf Werkseinstellungen), da man es nach meinen Beobachtungen dort nur schlechter machen konnte oder sich nichts getan hat:

      Dauerhafter Fehler 15 (0,01875mm), Spitze: 45 (0,05625mm)

      Wenn man Pp (der Wert, der mit Abstand am meisten Einfluss hat) auf's Maximum stellt, dann hat man direkt einen dauerhaften Fehler von <= 2 (0,0025mm). Mit Pf kann man dann noch den Spitzenfehler minimieren. Habe beim Testen festgestellt, wenn ich den bei mir noch etwas senke, dann habe ich einen Spitzenfehler von ca. 8 Schritten (0,01mm).

      Ich verstehe allerdings auch nicht, wieso man dort unbedingt feste Werte eintragen will, die bei irgendjemandem irgendwie laufen, wenn man das innerhalb von 5min mehr für seine Maschine optimieren kann. Es braucht mir da ja auch niemand zu glauben, wie man das am besten macht. Einfach mit dem Tool mal ausprobieren und man der Servo sagt einem direkt, wieviel es besser geworden ist. Ich kann nur sagen, dass ich innerhalb von 5min deutlich bessere Ergebnisse erziehlt habe als alles, was ich an fertigen Werten im Netz gefunden habe (inkl. denen von Sebastian). Ich dachte ja auch am Anfang, dass ich dort eben was reinschreibe. Aber nach ein etwas Rumprobieren stellte sich heraus, dass man mit der ziemlich simplen Methode hervorragende Ergebnisse in kürzester Zeit erzielt.

      Tschüss,
      Lars
    • Hallo Lars,
      ohne dass ich die Servos kenne, aber deine Vorgehensweise macht vollkommen Sinn. Jede Fräse ist mechanisch ein klein wenig anders, selbst wenn sie gleich heissen. Der eine schleppt z.B. mehr Gewicht mit durch (mehr) Sand, oder die Spindeln verhalten sich anders etc. Damit hat man eine andere Regelstrecke und braucht andere Parameter. Und nur mit einem grafischen Tool, welches hier den Weg ausgibt, da eine Positionsregelung gemacht wird, kann man die Einstellungen vernünftig machen.
      Deshalb sollte man die im Netz zu findenden Parameter höchstens als Startwerte benutzen.
      LG Albert
      Nur Fliegen ist schöner.
    • Ich hab Win7. Habe die Software runter geladen und Phyton installiert. Wenn ich das richtig verstanden habe, reicht ein Doppelklick aus, um die Software zu starten, macht sie aber leider nicht. Die Ihsv py Datei habe ich bei Python in das Verzeichnis kopiert, wo auch die anderen py Dateien sind (bei Python). Ich bin halt so ein typischer Mausschubser. Habe es auch über CMD versucht, komme bis zum Verzeichnis von der Ihsv57 Software aber dann nicht weiter, ich kann sie nicht Starten, bzw. Ich weiß nicht wie. Fehlermeldung gibt es nicht, da ich etwas falsch mache. Achso runter geladen habe ich Anaconda Python.
      Gruß
      Willi
    • Hallo Willi.

      Rechtsklick auf die .py-Datei und dann "Öffnen mit". Dort dann "C:\tools\Anaconda3\python.exe" auswählen (oder wo immer Du es installiert hast). Wenn Du den Haken setzt, dass er ".py"-Dateien immer damit öffnen soll, geht es danach einfach mit einem Doppelklick.

      Was die Dokumentation angeht: Wenn jemand etwas in seiner Freizeit veröffentlicht und dem größtmöglichen Publikum anbieten will, dann macht er das auf Englisch. D.h. er müsste nicht statt der englischen Doku eine deutsche schreiben, sondern zusätzlich. Da die meisten Programmierer das Schreiben von Dokumentation nicht so unglaublich viel Spaß macht und sie nicht dafür bezahlt werden, sollte man das respektieren. Wenn es einen wirklich stört, dann kann man auch selber aktiv werden, die Dokumentation übersetzen und einen Pull-Request bei Github einreichen. Die meisten Programmierer wären dafür dankbar. (Evtl. vorher nachfragen, ob dieser Programmierer das auch wäre, damit man sich die Arbeit nicht umsonst macht.)

      Tschüss,
      Lars
    • Hast Du die Befehle aus der Installationsanleitung nach der Installation von Anaconda ausgeführt?

      "Anaconda Prompt" (wahrscheinlich mit Admin-Rechten) starten und Folgendes eingeben:

      Source Code

      1. conda install pyqt pyqtgraph pyserial numpy
      2. conda install -c auto minimalmodbus
      3. pip install minimalmodbus

      Falls Du das schon gemacht hast, dann müsste man wissen, was in dem schwarzen Fenster steht. Falls das zu schnell verschwindet, dann müsstest Du "python iHSV-Servo-Tool.py" in einer Eingabeauffforderung starten (im richtigen Verzeichnis). Evtl. in dem Anaconda Prompt. Das müsste ich aber selber ausprobieren, bin momentan aber nicht an einem Windows-Rechner und auf dem Sprung.

      Viel Erfolg,
      Lars
    • Wenn du runde Ecken hast, hast du dort ein Hinterherlaufen des Istwerts gegenüber der Sollposition. Fahre also mit der Fräse ruckartig hin ud her, und schaue dir im Programm den Sollwert und den Istwert an. Normalerweise werden Servos über einen PID-Regler geregelt. Nur mit dem Proportionalanteil alleine hast du immer ein Hinterherlaufen von Istwert hinter dem Sollwert. Erst der Integrationsanteil kann das korrigieren. Und der D-Anteil kann bei überraschenden Änderungen schon mal vorauseilend gegensteuern. Aber erst mal P und I abstimmen.

      Wie die Werte bei dir heissen, weiß ich nicht, ich habe ja andere Servos.
    • Istwert, D-Anteil ?( ?( ?( Ich glaub ich versuche mal, das irgendwie brauchbar hinzu wurschteln, ich kann dir null folgen. Feststeht für mich, wenn Mann das alles nicht kennt und beherrscht, so wie ich, dann sollte man bei Steppern bleiben. Gibt es was, wo man das nachlesen kann, was für was zu benutzen ist?
      Im Moment bin ich eher verwirrt.
      Mir ist auch nicht klar, was ist denn zu Beispiel Pf in dem Programm. Mein Ziel soll doch sein, das möglichst alle Kurven Richtung Null gehen oder?
      Gruß
      Willi
    • Bastlerhh wrote:

      Gibt es was, wo man das nachlesen kann, was für was zu benutzen ist?
      Speziell:
      Welcher Parameter wie heisst und welche Funktion hat, sollte eigentlich bei einem guten Produkt in der Anleitung stehen. Bei meinen Delta-Servos ist die z.B. über 200 Seiten dick, was auch wieder unübersichtlich ist, aber es werden halt alle Parameter beschrieben. Aber man muß schon ungefähr wissen, nach was man sucht.

      Reglerabstimmung allgemein:
      Man schaut sich die Antwort der Fräse auf eine "Sprungfunktion" an. Also eine kurze Strecke, die ruckartig gefahren wird. In der Oszi-Funktion deines Servo-Tools siehst du dann zwei Kurven: 1) den Sollwert, also die Wegstrecke, die z.B. Mach3 der Fräse vorgibt zu fahren. Und 2) die tatsächliche Strecke, die die Fräse gefahren ist (Istwerte). Vielleicht wird statt "Strecke" auch "Geschwindigkeit" angezeigt. Beide Kurven sollten möglichst dicht aufeinander liegen. Tun sie das nicht, bekommst du runde Ecken, ovale Kreise und lauter so komische Sachen.

      Als erstes stellt man bei einem PID-Regler I und D auf Null und erhöht den P-Wert. Die beiden Kurven in deinem Programm nähern sich dann an, und irgendwann kann es auch zum Überschwingen kommen. Dann P wieder etwas reduzieren. Der I-Wert kann nun die verbleibende Abweichung zwischen beiden Kurven "aufintegrieren", also eliminieren. Wenn der I-Wert größer ist, geht das schneller, wenn er zu groß ist, schwingt es sich wieder auf.

      Du musst also nach und nach deine Parameter variieren und schauen, was in deinem "Oszi" passiert, und so die Auswirkungen der einzelnen Parameter kennenlernen. Der Rest geht dann mit Gefühl. Es gäbe zwar auch gute Regeln zu berechnen, welche Parameter gut wären, aber da müsste man auch die Fräse genauer kennen, und man sollte nicht wie ich in den letzten 25 Jahren fast alles aus der Regelungstechnikvorlesung vergessen haben ;)

      So ganz ins Blaue hinein, also ganz ohne Ahnung, was man tut, da wird es dann schwierig.

      The post was edited 1 time, last by lars ().

    • Hallo Lars.

      Was Du schreibst ich sicherlich ein vernünftiges Vorgehen, um einen PID-Controller gut einzustellen. Für die iHSV57-Servos bringt das allerdings leider nur recht wenig und sorgt hier evtl. nur für mehr Verwirrung. Da ist auch eher ein PD-Regler mit Feedforward für die Positionskontrolle drin. Und man kann den Regler mit dem P-Wert nicht zum Schwingen bringen, selbst auf der Maximalen Einstellung (zumindest habe ich es bei meinen Versuchen nicht geschafft). Und der D-Anteil hat eine mehr oder weniger vernachlässigenswerte Auswirkung. Das erleichtert die Einstellung meiner Meinung nach ungemein. (Was nicht heißt, dass das so besser ist. Wahrscheinlich eher das Gegenteil.)

      Daher würde ich jedem zum Starten erst mal das oben beschriebene Verfahren empfehlen: Pp auf 32767 setzten, Pd für's gute Gewissen auf 450 und dann Pf (@Bastlerhh: Das ist der Position Feedforward-Wert) wie beschrieben einstellen während man mit dem Motor mit maximaler Beschleunigung hin- und herfährt (natürlich im eingebauten Zustand). Damit habe ich sehr gute Ergebnisse bekommen und es dauert keine 5 Minuten. Wenn man das passende Kabel und das Programm hat, ist das damit kaum schwieriger oder anspruchsvoller als nen Stepper zu betreiben.

      Ich bin an Verbesserungsvorschläge dieser Methode natürlich interessiert, aber als guter Startwert kann man das so allemale benutzen. Nur leider kann man sich mit dem iHSV57 nicht an den normalen Servo-Einstell-Regeln halten. Dort würde man ja auch noch den Current und den Velocity Loop erstmal richtig einstellen, was beim iHSV57 nicht funktioniert, da man ihn nicht in den Current oder Velocity-Kontroll-Modus setzen kann. Ich habe aber natürlich nicht viel Ahnung von dem Thema, da dies meine ersten Servos sind und ich mir den Rest nur theoretisch im Internet zusammengesucht habe. Aber, wie gesagt, sind die iHSV57 aber auch keine "normalen Servos".

      Tschüss,
      Lars