PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ansteuerung von 2 Asynchronmaschinen



Bambi128
21.04.2007, 12:57
Moin Leute!

Ich habe ein zweidimensionales Wegesystem, das einen über Stützpunkte vorgegebenen Weg abfahren soll. Den Weg berechne ich bereits mittels kubischer Splines. Ich habe also beliebig viele Zwischenpunkte zur Verfügung. Allerdings habe ich keine Schrittmotoren sondern einfache Asynchronmaschinen mit Impulsgebern, die über Frequenzumrichter angesteuert werden. Ich muss also nicht eine Anzahl von Schritten vorgeben, sondern eine Drehzahl! Das bedeutet, den guten alten Bresenham kann ich vergessen. :-( Bisher habe ich beide Antriebe einzeln über PD-Regler angesteuert. Das ist allerdings Suboptimal, weil jede Achse für sich versucht, den Punkt schnellstmöglich zu erreichen. Dadurch erreichen sie zu unterschiedlichen Zeitpunkten ihre Zielposition.
Kennt einer von euch vielleicht eine bessere Art die Antriebe anzusteuern. Am Besten wäre ein Algorithmus der beide synchron ansteuert, sodass sie nicht einzeln für sich geregelt werden.
Ich freue mich über jede Anregung!

user529
21.04.2007, 13:12
was du brauchst ist die geschwindigkeit und somit die erste ableitung (geil, das macht bei splines laune) der funktion. diese kannst du dann den motoren vorgeben und abweichungen über die regler korrigieren lassen.

keine ahnung ob es dazu schon fertiges gerät gibt, konnte auf die schnelle nichts finden

Yossarian
21.04.2007, 13:56
Hallo
mit Impulsgeber meinst Du einen Encoder?
Dann kannst Du ganz getrost mit Bresenham arbeiten. Es spielt keine Rolle ob ein Schrittmotor oder ein Servomotor die Bewegung umsetzt.Allerdings funktioniert das nicht mit FU, sondern mit Servoreglern.
Mit freundlichen Grüßen
Benno

Bambi128
21.04.2007, 17:12
@Benno: Genau genommen ist es ein Inkremental Encoder mit 5000 Inkrementen pro Umdrehung. Der geht auf die Zählerkarte meiner S7-300, mit der ich die Regelung vornehme. Somit kenne ich die aktuelle Position. Tja leider sinds FU's und keine Servoregler! Gruß zurück!

@User529: Wenn ich dich richtig verstanden habe muss ich die Splines ableiten um die Geschwindigkeit in jedem Punkt zu erhalten. UIUIUIhh mit ner S7-300? 8-[ Aber das wäre dann doch die Bahngeschwindigkeit, oder? Ich brauche aber die Geschwindigkeiten für beide Achsen.

Ich meine, wenn die Interpolationsschrittweite klein genug ist, dann ist es nicht sooo schlimm, wenn die Wege für beide Achsen sehr unterschiedlich sind, da erst der nächste Zwischenpunkt angefahren wird, wenn BEIDE Achsen ihr Ziel (+- Toleranz) erreicht haben. Es ist keine Präzisionsaufgabe.
Gibt es denn eine Alternative zum PID-Regler? Der gibt nämlich im ersten Moment voll Power und bremst dann rechtzeitig ab. Das hat stark schwankende Beschleunigungen zur Folge. Ich möchte aber den Ruck möglichst klein halten.

(Mein Problen von oben soll natürlich mit diesem Beitrag nicht beiseite gesetzt sein)

user529
21.04.2007, 17:35
spline weils sein muss oder weils gut klingt (willst du nur kreise rechtecke... oder eine echte spline)?

wenn du die funktion ableitest erhältst du die geschwindigkeit in x, wenn du deine zweite funktion ableitest die in y, da diese beiden ja über eine konstante (position der motoren) verknüpft sind kannst du entscheiden was konstant gehalten werden soll: v in x, v in y, oder v sqrt(vx²+vy²)=bahngeschwindigkeit.

wenn immer nur konstante bahnen gefahren werden sollen kannst du dir ja entweder die ableitungen in den speicher legen, oder dir gleich 1000 geschwindigkeitswerte speichern.

hatte mir vorgestellt die drehzahl als sollwert in abhängigkeit der position) dem regler vorzugeben (ob aus speicher oder gerechnet), dieser vergleicht diese mit der drehzahl des motors und korrigiert nach.


zum pid regler gibt es natürlich alternativen (rampen, mit totstellungen...), wobei ein gut eingestellter PID regler butterwich fährt ohne zu zucken.

mfg clemens

Yossarian
21.04.2007, 20:44
Hallo
gerade stark schwankende Abweichungen vom Sollwert werden durch den PID Regler vermieden, wenn er denn richtig eingestellt ist.
Ich kann mir aber nicht vorstellen , daß eine Lageregelung durch eine Drehzahlregelung vernünftig realisiert werden kann.
Mit freundlichen Grüßen
Benno

Bambi128
22.04.2007, 20:05
Hallo Clemens!
Spline-Interpolation sollte es schon sein. (Es geht um den Weg eines Palletiersystems). Ich habe eine Reihe von Stützpunkten P(x,y), daraus berechne ich die Krümmung der Splines in jedem Punkt. Ich habe also als Ergebnis einen Vektor mit n Krümmungswerten. Daraus lassen sich die Koeffizienten (a..d) für die Spline-Funktion S(x)=a(x-xn)^3 + b(x-xn)^2 + c(x-xn) + d berechnen. Somit habe ich eine Funktion y(x) und nicht, wie du vielleicht angenommen hast die Parameterdarstellung x(t) und y(t). (Wenn ich das recht verstanden habe)

Mit dem PID-Regler ist es zurzeit so: Eingangsgrößen: Istposition; Sollposition, Ausgangsgröße: Solldrehzahl. Wird also eine neue Sollposition vorgegeben, ist natürlich im ersten Moment eine große Soll- Istabweichung gegeben und die Solldrehzahl ist 100%. (Das sieht man doch auch schon an der Sprungantwort, oder versteh ich da was falsch?) Wäre im FU keine Startrampe vorgegeben, würde der sofort abschalten wegen Überstrom. Deswegen bevorzuge ich auch die Rampensteuerung (muss ich mir allerdings noch bauen).
Was meinst du mit "mit Totstellungen"?
MFG Reinhold

user529
22.04.2007, 20:54
wenn du die punkte hast Pn(xn/yn)
und die daraus errechnete funktiony(x) hast kannst du diese auftrennen und in parameterdarstellung von einer zählvariable (=eine der beiden inkremantalgeber) abhängig machen.
soll die kurve immer über gleich viele punkte gelegt werden oder müssen immer neue+unterschiedliche punkte implementiert werden?

meine idee wäre gewesen:

http://img461.imageshack.us/img461/3130/roboternetznp9.jpg

diese ist wohl gestorben da weder rechenleistung noch genügend speicher auf dieser steuereinheit zur verfügung stehen.


mit totstellung war ein regler gemeint, bei dem eine bleibende regeldifferenz in kauf genommen wird, innerhalb dieser keine korrektur mehr vorgenommen wird (die regelkurven werden zu polygonzügen vereinfacht)

Yossarian
22.04.2007, 21:06
Hallo
ein FU stellt Spannung und Frequenz ein.Der Asynchronmotor folgt der Frequenz mit Schlupf(ohne Schlupf kein Drehmoment), was zu ungenauem positionieren führt. Ein Servoregler regelt über den Strom das Drehmoment des Motors.Es wird also nur Drehmoment bereitgestellt, wenn eine Sollwertabweichung vorliegt.
Mit freundlichen Grüßen
Benno

Bambi128
23.04.2007, 14:59
Hallo Clemens!

Die Punkte werden einmalig (z.B. bei Inbetriebnahme) festgelegt!
Ich habe einen Aufbau (seit heute mit Rampenregler), der deiner Idee ziemlich ähnelt (siehe Anhang). Allerdings geb ich dem Regler die Sollposition vor. Die Spline-Interpolation ist noch nicht implementiert - das versuche ich in den nächsten Tagen. Dann will ich mal sehen wie das Ergebnis so ist. Vor der Ableitung der Splines will ich mich noch ein bisschen drücken ;-). Aber so richtig Alternativen gibts dann ja nicht mehr...

Den PID-Regler habe ich auch deshalb nicht so gerne, weil man zum Einstellen immer geeignetes Personal benötigt.

Gruß

Bambi128
26.04.2007, 15:47
So, ich habe die Spline-Interpolation implementiert. Die Berechnung klappt wunderbar. Ich erhöhe jeweils den X-Wert um einen vorgegebenen Wert "Delta X" und erhalte den zugehörigen Y-Wert. Beides Positionswerte, die ich über meinen Rampenregler (wahlweise auch PID-Regler) auf die Antriebe gebe.
Und da fangen die Probleme an: Die Geschwindigkeit der Antriebe ist total langsam, da der Rampenregler vor jedem Zwischenpunkt wieder bremst! :cry: Wie kommt man da raus?

Bambi128
07.05.2007, 10:06
Ich habe eine Lösung gefunden: Ich berechne die Geschwindigkeiten, die gefahren werden müssen, um von der aktuellen Position zum nächsten interpolierten Punkt zu kommen und gib sie auf die Antriebe. Das Ergebnis ist relativ gut.