Servomotor auf richtige Geschwindigkeit bringen

Koernerbrot

Level-2
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe ein Problem, ich möchte inn TwinCAT 3 meinen Servomotor der Marke Baumüller genau auf 1 Umdrehung pro Sekunde bringen, dabei war mein bisheriges Vorgehen im Encoder die Parameter für die Grad/INC so zu verändern das ich bei der Gesamtzahl an Inkrementen bei 360 Grad lande. Also 360/Ges-Ink. Dass hat aber bisher null geklappt und ich zweifel auch an der Anzahl an Inkrementen, da ich keine Daten habe zu dem Motor ist meine einzigste Möglichkeit den Driver mit ProDrive auszulesen, aber eine Gesamtzahl an Inkrementen pro Umdrehung habe ich auch nicht gefunden.

Geht das in TwinCAT irgendwie einfacher? Mach ich irgendwas grundsätzlich falsch oder habe ich bisher einfach nicht die richtige Anzahl Inkremente benutzt?
 
Moin,
du willst also einen Servomotor von Baumüller konstant mit 60U/min drehen lassen.
Da du ProDrive erwähnst ist der Antrieb(Driver) wohl auch von Baumüller?

Angesteuert wird das ganze über eine SPS die mit TwinCAT bewegt wird?
Wie ist die SPS mit dem Antrieb verbunden (Busverbindung)?

Den Antrieb mit ProDrive auszulesen ist schonmal ein guter Start, aber an den Inkrementen des Motor-Encoders rumzuspielen ist nicht richtig.

Wie ist denn nun der genaue Aufbau, dann kann man dir besser helfen.

Gruß TSM
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin TSM,

Also ich habe von Beckhoff einen IPC, welcher als SPS fungiert, also darauf läuft TwinCAT Runtime. Daran sind mit EtherCAT die Driver, woran direkt die Motoren montiert sind, dieses Modell ist auch Firmeneigen, somit keine Doku im Internet und Doku intern Fehlanzeige. Ich habe aber die Inkrementanzahl pro Umdrehung gefunden, die wäre 65536. Programmiert wird auf meinem eigenen Laptop welcher mit dem IPC verbunden ist.

Programm funktioniert grob halt schon, nun möchte ich aber halt die Geschwindigkeiten einstellen, dass ich weiß, dass der Ablauf auch Zeitlich passt. Ablauf ist mit Camming, wobei ich den Master gerade auf 1/sek Umdrehung setzen möchte und von dort aus weiter arbeiten möchte.
 
Für die Driver gibt es auf der Baumüller-Seite Handbücher zum Downloaden.

dieses Modell ist auch Firmeneigen
Das heißt das Modell war schonmal in Betrieb und hat funktioniert?

Wenn ja, gibt es ja schon ein Telegramm/Protokoll, worüber dein IPC und der Driver kommunizieren.
Du musst darüber die richtige Betriebsart (Drehzahlregelung) und Sollwert vorgeben und einschalten...
 
Ähm ich muss zugeben das ich das noch nie gehört habe, bin da leider erst Einsteiger, das einzige was ich habe wo ich Betriebsarten einstellen kann ist im Prodrive, dort habe ich verschiedene Betriebsarten und habe diese auf Position Control Mode gesetzt. Außerdem könnte ich hier auch Parameter verändern, aber im TwinCAT kann ich nur unter Achsen Parameter einstellen.

Die Motoren waren schonmal in Benutzung, wir möchten aber jetzt andere Bewegungsabläufe durchlaufen lassen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn du mit 60 U/min fahren willst brauchst du die Parameter für Betriebsart, Hochlaufgeber, Steuerwort usw.
Ich kann dir zeigen wie es in TIA aussieht, kenne mich mit TWINCAT noch nicht aus.
Anhand des Betriebshandbuchs, musst dir halt eine Ansteuerung programmieren.
Zudem musst du dann eine Skalierung für Para. 110.5 programmieren.


1758807112979.png

1758807322615.png


1758807538042.png
 
Lass dieses ganze PDO-Getöns weg, nimm NC-Achsen....

Schon mal folgendes probiert:
- Baumüller ESI-Datei in Config/IO/EtherCAT sicherstellen
- Runtime in Config-Mode
- EtherCAT scannen
- Frage nach "NC-Achse anlegen" mit Ja beantworten
- NC-Skalierung einstellen (Deine 360° Vorschubkonstante)
- Konfiguration übertragen
- Runtime in Run-Mode stellen
- NC-Achse öffnen und alle Freigaben und Overdrive 100% setzen
Jetzt sollte sich der Umrichter bereits von der NC-Achse aus bereits ohne SPS-Programm voll ansteuern lassen
Davon können die Siemens-Jünger nur träumen, Dauer 2 Minuten und das sollte mit einem Baumüller-Antrieb auch gehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lass dieses ganze PDO-Getöns weg, nimm NC-Achsen....

Schon mal folgendes probiert:
- Baumüller ESI-Datei in Config/IO/EtherCAT sicherstellen
- Runtime in Config-Mode
- EtherCAT scannen
- Frage nach "NC-Achse anlegen" mit Ja beantworten
- NC-Skalierung einstellen (Deine 360° Vorschubkonstante)
- Konfiguration übertragen
- Runtime in Run-Mode stellen
- NC-Achse öffnen und alle Freigaben und Overdrive 100% setzen
Jetzt sollte sich der Umrichter bereits von der NC-Achse aus bereits ohne SPS-Programm voll ansteuern lassen
Davon können die Siemens-Jünger nur träumen, Dauer 2 Minuten und das sollte mit einem Baumüller-Antrieb auch gehen.
Ich glaube du meinst Override 100% aber ja genau das ist mein Ablauf bisher gewesen, dann hat sich immer alles schön im Takt bewegt, aber der Takt war halt irgendwas. Ich habe somit denke ich nie Schritt "NC Skalierung einstellen" gemacht und wüsste jetzt auch nicht welche Einstellungen genau damit gemeint sind. Könntest du den Punkt nochmal ein bisschen auffächern?
 
Ich selbst habe noch nie einen Baumüller-Antrieb eingerichtet. Ich würde erwarten, dass es von Baumüller entsprechende Inbetriebnahmehinweise für TwinCAT NC-Achsen gibt.
Aber ich habe Zugriff auf ein Projekt, dass einen Baummüller-Antrieb enthält. Und dort ist folgendes eingestellt:

1758870119660.png

1758870277408.png

Vielleicht hilft es.
 
Man ändert bei einer Achse/Servo nicht irgendwelche Motordaten, damit dieser irgendein bestimmtes Verhalten erzeugt. Die Achse ist entsprechend der Motorkonfiguration eingestellt. Beispiel: Encoder gibt 3600 Inc/U aus. Das heißt bei 3600 Inc/min bewegt sich der Motor mit einer Umdrehung pro Minute. Fährt man nun mit 2000 Umdrehungen pro Minute, erhält man vom Encoder 3600 * 2000 = 7,2 Millionen Inkremente pro Minute. Das alles regelt die Achse und damit hast du nichts zu tun. Nun sagst du der Achse, du möchtest mit 60 U/min laufen (Sollwert Geschwindigkeitsvorgabe), dann weißt die Achse, sie muss den Motor so regeln, das du 216.000 Inc/min zurück erhältst. Das regelt alles die Achse, du sagst ihr lediglich wie schnell sie laufen soll, wie stark sie bescheunigen und bremsen soll. Wirst du zu langsam, wird der Motor irgendwann ruckeln, da der Regler die Drehzahl nicht mehr sauber halten kann. Wirst du zu schnell, wird dein Motor irgendwann nicht mehr richtig dem Achssignal folgen können und aussteigen.
Vorgehen ist also: Achse korrekt nach den physikalischen Gegebenheiten einstellen (Trick: Motor per Hand eine Umdrehung drehen, schauen um wieviel sich der Encoder Wert verändert hat), Achse einschalten, Geschwindigkeit vorgeben, Go!

Und lass ja den Krampf mit der PDO Kommunikation....!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man ändert bei einer Achse/Servo nicht irgendwelche Motordaten, damit dieser irgendein bestimmtes Verhalten erzeugt. Die Achse ist entsprechend der Motorkonfiguration eingestellt. Beispiel: Encoder gibt 3600 Inc/U aus. Das heißt bei 3600 Inc/min bewegt sich der Motor mit einer Umdrehung pro Minute. Fährt man nun mit 2000 Umdrehungen pro Minute, erhält man vom Encoder 3600 * 2000 = 7,2 Millionen Inkremente pro Minute. Das alles regelt die Achse und damit hast du nichts zu tun. Nun sagst du der Achse, du möchtest mit 60 U/min laufen (Sollwert Geschwindigkeitsvorgabe), dann weißt die Achse, sie muss den Motor so regeln, das du 216.000 Inc/min zurück erhältst. Das regelt alles die Achse, du sagst ihr lediglich wie schnell sie laufen soll, wie stark sie bescheunigen und bremsen soll. Wirst du zu langsam, wird der Motor irgendwann ruckeln, da der Regler die Drehzahl nicht mehr sauber halten kann. Wirst du zu schnell, wird dein Motor irgendwann nicht mehr richtig dem Achssignal folgen können und aussteigen.
Vorgehen ist also: Achse korrekt nach den physikalischen Gegebenheiten einstellen (Trick: Motor per Hand eine Umdrehung drehen, schauen um wieviel sich der Encoder Wert verändert hat), Achse einschalten, Geschwindigkeit vorgeben, Go!

Und lass ja den Krampf mit der PDO Kommunikation....!
Also sagst du ich soll gar nichts am Encoder ändern, wie es bei "asci25" auf den Screenshots ist, sondern die Defaultwerte, welche ich schon bei der Motorintegrierung bekommen habe, so lassen und nur die Geschwindigkeit so einstellen bis es passt? Aber warum gibt es dann die Maßeinheiten, wenn ich danach eh den Motor von Hand aus einstellen muss? Weil bei Default, als auch jetzt mit den Skalirungsfaktor auf meine Inkrementanzahl ausgelegt, fährt der Motor keine 360°/s wenn ich das einstelle, sondern ist viel schneller.
 
Also es gibt keinen "Default-Wert", es gibt einen richtigen Wert und sonst nur "falsche".
Der Wert ist als Zähler/Nenner angegeben in Grad/Inc.
bleiben wir bei unseren 3600 Inc pro Umdrehung, dann wäre das also pro Umdrehung (360 Grad) 3600 Inkremente. Im Zähler muss also stehen 360° und im Nennen 3600 Umdrehungen. Natürlich kann man das auch auf ein Grad umrechnen, dann sind es eben pro 1° nur noch 10 Inkremente. Du kannst also auch in den Zähler 1 schreiben und in den Nenner 10. Ist absolut exakt das gleiche. Wenn wir nun beispielsweise 0,25 Inc pro Grad hätten, könnten wir das nicht mehr rein schreiben, da nur Ganzzahlen zulässig sind. Hier müssten wir dann angeben Zähler 4°, Nenner 1 Inc. Oder 360° 90 Inc.
Wieder zurück zu den 3600 Inc pro Umdrehung. Wenn du da nun anstelle von 360° / 3600 INC rein schreibst 720° / 3600 INC, dann wird die Achse denken sie macht pro 3600 INC 2 Umdrehungen und wird ihre Geschwindigkeit entsprechend ändern. Das geht, ist aber der falsche Weg. Schreib da einfach rein, was real der Fall ist, und dann sagst du zu dem Motor er soll mit 360° / Sekunde fahren und dann wird er exakt genau das tun. Dazu musst du aber wissen welche Werte der Encoder hat (wie gesagt, einfach mal den Encoder um 90/180/360° drehen und kucken wie sich der Encoder Rohwert verändert).
 
Ich möchte mal anmerken, dass Umrichter auch eigene Encoderwerte übermitteln, die nicht mit der Strichanzahl des echten Encoder übereinstimmen müssen. Genaueres steht im Handbuch des Umrichters. Oder, wie @Parallax beschrieben hat, kann man das auch von Hand austüfteln, wenn sich die Motorwelle von Hand drehen lässt. Dann sollte man aber wissen, dass sich die Strichzahl entweder durch 100 teilen lässt oder ein Wert von 2^x ist. Also 1024 oder 4096 usw. Am besten 10 Umdrehungen drehen und dann das Ergebnis durch 10 teilen für eine höhere Genauigkeit. Dann muss man ggf. noch die Antriebsausgabe und Bezugsgeschwindigkeit noch austüfteln.

Da würde ich aber lieber nach der Beschreibung von Baummüller suchen. Oder, wie ich eingangs beschrieben habe über den Scan. Dann werden die richtigen Werte oft bereits eingestellt, so dass Du nur noch die Vorschubkonstante 360.0 einstellen musst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also es gibt keinen "Default-Wert", es gibt einen richtigen Wert und sonst nur "falsche".
Der Wert ist als Zähler/Nenner angegeben in Grad/Inc.
bleiben wir bei unseren 3600 Inc pro Umdrehung, dann wäre das also pro Umdrehung (360 Grad) 3600 Inkremente. Im Zähler muss also stehen 360° und im Nennen 3600 Umdrehungen. Natürlich kann man das auch auf ein Grad umrechnen, dann sind es eben pro 1° nur noch 10 Inkremente. Du kannst also auch in den Zähler 1 schreiben und in den Nenner 10. Ist absolut exakt das gleiche. Wenn wir nun beispielsweise 0,25 Inc pro Grad hätten, könnten wir das nicht mehr rein schreiben, da nur Ganzzahlen zulässig sind. Hier müssten wir dann angeben Zähler 4°, Nenner 1 Inc. Oder 360° 90 Inc.
Wieder zurück zu den 3600 Inc pro Umdrehung. Wenn du da nun anstelle von 360° / 3600 INC rein schreibst 720° / 3600 INC, dann wird die Achse denken sie macht pro 3600 INC 2 Umdrehungen und wird ihre Geschwindigkeit entsprechend ändern. Das geht, ist aber der falsche Weg. Schreib da einfach rein, was real der Fall ist, und dann sagst du zu dem Motor er soll mit 360° / Sekunde fahren und dann wird er exakt genau das tun. Dazu musst du aber wissen welche Werte der Encoder hat (wie gesagt, einfach mal den Encoder um 90/180/360° drehen und kucken wie sich der Encoder Rohwert verändert).
Ich danke dir, ich habe es jetzt alles richtig verstanden und es hat jetzt auch auf Anhieb geklappt, ich muss aber auch dazu sagen das ich die Einstellung dort bisschen verwirrend finde, ich habe nämlich vorher immer schon das Ergebnis von Grad/INC (also 360/65536) oben reingeschrieben gehabt, da als Einheit bei Zähler Grad/INC steht, aber dem ist wohl nicht so.
 
Gern geschehen. Ja, muss man sich ein bisschen reinarbeiten in diese Begrifflichkeiten, aber wenn man es einmal verstanden hat, ist es ganz logisch.
 
Zurück
Oben