Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Roboter mit TwinCat NC

  1. #1
    Registriert seit
    14.12.2012
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo allerseits,

    ich bin neu im Forum und habe mich bereits durch einige Beiträge gelesen .

    Da ich in Sachen SPS und TwinCat noch sehr unerfahren bin habe ich eine Frage an die Profis unter euch:
    Ich arbeite an einem Roboterarm, der über Joystick ferngesteuert wird.

    Als Steuerung dient eine Beckhoff SPS. Die Steuerung programmiere ich in TwinCatPLC.
    Mit MC_MoveAbsolut fahren die Motoren aber nur die erste Position an.
    Hier im Forum und in der infosys steht, dass ich die Fahrt unterbrechen muss durch eine Funktion gleicher Instanz mit den neuen Werten.

    Meine Frage:
    Wie kann ich dem Motor jeden Zyklus (1ms) einen neuen Soll-Wert geben?
    Muss ich wirklich nach jedem Zyklus die aktuelle Instanz des MC_MoveAbsolut durch eine andere Instanz unterbrechen?
    Macht man das wirklich so oder gibt es eine elegantere Lösung?


    Viele Grüße
    Matze
    Zitieren Zitieren Roboter mit TwinCat NC  

  2. #2
    Registriert seit
    19.05.2008
    Beiträge
    651
    Danke
    118
    Erhielt 136 Danke für 105 Beiträge

    Standard

    Zitat Zitat von matzew Beitrag anzeigen
    Meine Frage:
    1) Wie kann ich dem Motor jeden Zyklus (1ms) einen neuen Soll-Wert geben?
    2) Muss ich wirklich nach jedem Zyklus die aktuelle Instanz des MC_MoveAbsolut durch eine andere Instanz unterbrechen?
    3) Macht man das wirklich so oder gibt es eine elegantere Lösung?
    Hallo Matze,

    ich kann mir nicht vorstellen, dass du jede ms deiner Achse neue Geschwindigkeiten und Positionen übertragen musst. Aber besser du schreibst erst mal, was genau umgesetzt werden soll.

    Prinzipiell kann ich dir aber empfehlen, gleich die neuere „MC Library 2“ zu verwenden.
    Die Funktion MC_Moveabsolute kann mit der steigenden Flanke an „Execute“ neu angestoßen werden, sofern der MC_BufferMode entsprechend eingestellt ist. *1

    1) In „jedem Zyklus“ kannst du natürlich keine neue Flanke erzeugen, aber wenn es sein muss in jedem zweiten. Die Frage ist, wo kommt dein neuer Sollwert her?

    2) Nein. Du hast pro Antrieb eine Instanz. In dieser Instanz kann jeweils immer nur eine Bewegungsfunktion (MC_Moveabsolute, MC_MoveRelative, MC_Jog,...) aktiv sein. Wenn es notwendig ist, kannst du aber während der Bewegung den Baustein nachtriggern. Zuerst wird dazu der „Execute“ weggenommen und die neuen Daten angelegt, im nächsten Zyklus muss der „Execute“ wieder gesetzt werden.

    3) Das kommt darauf an, was du tatsächlich vor hast. Normale Pick-and-Place- Aufgaben kann man so einfach umsetzen.
    Soll deine Applikation mit einer 3D-Delta Kinematik oder ähnlichem ausgestattet werden, ist es sehr ratsam, sich die fertige Kinematic Transformation anzusehen...

    Gruß
    Chräshe

    *1
    Um den BufferMode zu verwenden, ist immer ein zweiter Funktionsbaustein nötigt. Es ist nicht möglich, einen Move-Baustein mit neuen Parametern zu triggern, während er noch aktiv ist.
    Geändert von Chräshe (18.12.2012 um 22:28 Uhr) Grund: *1 Ergänzung

  3. #3
    matzew ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.12.2012
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Chräshe,

    danke für die schnelle Antwort.
    Die mc2 Bibliothek hab ich bereits. Dadurch kam ich auf das MC_Absolut mit zwei Instanzen.

    Zum Projekt:
    Ich möchte meine Kinematik für einen mehrachsigen SCARA Roboter umsetzen.
    Über ein Gamepad soll man den Endeffektor im Raum bewegen (x,y,z) und ausrichten.
    Wenn der Benutzer den Joystick bedient berechne ich die Sollwerte neu.
    Die Transformation zwischen Raumkoordinaten und Achskoordinaten steht bereits und liefert auch die Richtigen Werte.
    Bringt mir die Kinematic Transformation etwas wenn ich die Transformationen schon habe?

    Es scheitert bisher nur an der Motoransteuerung. Die Achsen fahren einmal in die erste Position, dann bewegen sie sich nicht mehr.
    Ich kann statt einer gezielten Bewegung sicher auch eine Endlosbewegung machen. Aber bei einer Geschwindigkeitsänderung muss ich auch hier die Bewegung anhalten, die Richtung ändern oder eben die Geschwindigkeit verringern.

    Wenn ich das mit dem Nachtriggern richtig verstanden habe heißt das:

    Bei neuer Sollposition:
    - Execute false
    - neuen Wert
    - Execute true

    Beeinflusst es nicht die Bewegung wenn ich den Motorblock kurz deaktiviere?
    Verzeiht mir mein Unwissen

    Grüße
    Matze



  4. #4
    Registriert seit
    19.05.2008
    Beiträge
    651
    Danke
    118
    Erhielt 136 Danke für 105 Beiträge

    Standard

    Hallo Matze,

    Zitat Zitat von matzew Beitrag anzeigen
    Bringt mir die Kinematic Transformation etwas wenn ich die Transformationen schon habe?
    Vermutlich nicht.

    Zitat Zitat von matzew Beitrag anzeigen
    Es scheitert bisher nur an der Motoransteuerung.
    Na ja, bei einem Roboter nicht ganz unwesentlich!

    Zitat Zitat von matzew Beitrag anzeigen
    Ich kann statt einer gezielten Bewegung sicher auch eine Endlosbewegung machen.
    Ich kenne jetzt natürlich deinen Aufbau nicht. Im Prinzip muss in Abhängigkeit vom Ausschlag des Joystick, eine Drehzahl und Richtung ausgegeben werden.

    Zitat Zitat von matzew Beitrag anzeigen

    Bei neuer Sollposition:
    - Execute false
    - neuen Wert
    - Execute true
    Genau, wobei du zwei Aktionen in einem Zyklus zusammen fassen kannst.

    Zitat Zitat von matzew Beitrag anzeigen
    Beeinflusst es nicht die Bewegung wenn ich den Motorblock kurz deaktiviere?

    Nicht den Baustein abschalten oder deaktivieren, sondern nur
    Execute für eine Zyklus auf FALSE und im nächsten, mit neuen Daten am Baustein, wieder auf TRUE.


    Sieh dir dazu das mit dem MC_BufferMode noch mal genauer an.

    Gruß
    Chräshe

  5. #5
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    Bei nem Roboter sind die Transformationen ja das Grundsätzliche. Man will sich als Anwender später programmiertechnisch im 3D-System bewegen, während die Achsen des Roboters sind völlig unterschiedliche bewegen, und dazu synchronisiert, so dass ein Punkt im Raum von allen Achsen (in ihrem eigenen Koordinatensystem) zur selben Zeit erreicht werden.
    Das wird über simple MC_MoveAbsolute nur schwer zu realisieren sein, denke ich. Denn jeder Fahrauftrag wird von der NC separat gehandhabt. Für jede Achse wird ein separater Fahrauftrag ausgeführt, mit Beschleunigungsrampe, Konstantfahrt, und Verzögerungsrampe. Aber es wird bei den Einzelaufträgen nicht danach geschaut, wie weit die anderen Achsen schon sind, also bei Bedarf nicht gebremst oder beschleunigt.

    Was du brauchst, ist eine kontinuierliche Sollwertübermittlung an die Antriebe. So etwas macht ja auch z. B. eine CNC-Steuerung. Die arbeitet auch nicht mit Fahrbefehlen, sondern man gibt das Ziel (im xD-Raum) und die resultierende BAHNgeschwindigkeit vor.

    Was für Antriebe hast du denn zur Verfügung? Die Antriebe müssen die kontinuierliche (zyklische) Sollwertübertragung unterstützen.
    Und für die Interpolation der Sollwerte gibt's mehrere Möglichkeiten: Vorgefertigte (Bei Beckhoff z.B. die "Kinematik Transformation" oder die CNC), oder du berechnest alles über die PLC und gibst die resultierenden Sollwerte einfach als zyklische Prozessdaten (nicht als Fahraufträge!) an die Antriebe. Dazu braucht man dann nicht mal die NC-Steuerung.

  6. #6
    matzew ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.12.2012
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Die Transformation hab ich in der PLC als function block. Bekomme für jede Position die im Raum die angefahren werden soll den benötigten Winkel und die Winkelgeschwindigkeit für alle Achsen.

    Genau an eine kontinuierliche Sollwertübermittlung dachte ich.
    Das ganze System war bisher als NC-Achsen eingerichtet, daher versuch ich es auch so umzusetzen.

    Ich hab Schrittmotoren von Beckhoff zur Verfügung. Mit EtherCat Schrittmotorklemmen. Die Ist-Werte werden über Potentiometer ermittelt, da zwischen Motor und Achs-Welle jeweils ein Zahnriemen mit Untersetzung ist. Das alles ist ein Eigenbau für den ich die Kinematik entworfen habe.

    Das bedeutet ich sollte lieber eine CNC-Konfiguration verwenden?
    Ich leß mich mal in die infosys dazu ein.


    Edit: Es ist eine PTP-Bewegung die ich ausführen möchte am Effektor


    Grüße
    Geändert von matzew (17.12.2012 um 13:54 Uhr)

  7. #7
    Registriert seit
    19.05.2008
    Beiträge
    651
    Danke
    118
    Erhielt 136 Danke für 105 Beiträge

    Frage

    Zitat Zitat von matzew Beitrag anzeigen
    Edit: Es ist eine PTP-Bewegung die ich ausführen möchte am Effektor
    Hallo Matze,

    bedeutet das jetzt, du hast ein ganz gewöhnliches Portal mit XYZ-Achse?
    Was soll da später gemacht werden?
    Ist das "nur" ein Schulungsmodell?

    Gruß
    Chräshe

  8. #8
    matzew ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.12.2012
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Chräshe

    Nein ich hab einen Scara, kein Portal. Es ist ähnlich wie das: http://gaullyblog.files.wordpress.co.../scara-arm.gif
    Ich kenne das als "offene kinematische Kette".
    Besteht aus 3 Hauptachsen im Arm und 2 Nebenachsen im Effektor. Insgesamt also 5 Achsen, bzw 5 Motoren.

    Das ganze ist ein Teil einer Studienarbeit an der Uni, also ein Schulungmodell
    Damit sammel ich erste praktische Erfahrung.
    Per Joystick soll eine beliebige Position im Raum (x-y-z) mit dem Effektor angefahren werden.
    Ein Joystickgesteuerter Scara. Daher dachte ich zuerst an eine simple p2p Bewegung.


    Nächtliche Grüße
    Matze

  9. #9
    Registriert seit
    15.02.2011
    Ort
    Stromness, Scotland, UK
    Beiträge
    339
    Danke
    25
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Hmm, die Aufgabe wird immer interessanter!

    Wenn ich das richtig verstehe willst du mit dem Joystick den Arm in Echteit bewegen. Du gibst ja mit den Joystick eine Soll-Geschwindigkeit in X, Y und Z vor?
    Jetzt könntest du die Achsen mit einer Soll-Geschwindigkeit versorgen, alternativ würde ich etwas mit dem MC_MovecontinuousAbsolut (Link: http://infosys.beckhoff.de/content/1...e.htm?id=14273) bauen. Bei den früheren KL-Schrittmotorklemmen konnte man direkt eine Geschwindigkeit der Klemme mitteilen, so konnte man die NC auslassen. Ich würde jedoch aus Bequemlichkeit die NC-Steuerung nutzen. Die Überwacht Endlagen und Schleppfehler, rechnet alle Kinematik-Daten und die Parameter lassen sich einfach eisntellen....

  10. #10
    matzew ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.12.2012
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    exakt! Ich möchte den Arm in Echtzeit steuern.

    @ Chräshe:
    Durch das nachtriggern von MC_MoveAbsolut funktioniert es jetzt den Motoren ständig neue Werte zu liefern.
    Das ist schon mal ein Fortschritt, danke
    Es ist noch sehr ruckelig natürlich. Auch nimmt er neue Werte nur wenn ich den Joystick wieder loslasse.

    pseudo-code:
    If Joystick And PowerOn
    Werte berechnen
    variable = true
    else
    variable = false
    end_if
    ...
    MC_MoveAbsolut (Execute := variable,...)
    Da ich die lineare Geschwindigkeit und Richtung im Raum per Joystick bekomme genügt es eigentlich die berechnete Winkelgeschwindigkeit und die Drehrichtung an die Motoren zu geben.
    Die Richtung bekomme ich durch die Differenz von Soll- und Istposition. Die genaue SOllposition brauch ich also gar nicht... Vielleicht für andere Modi.
    Ich teste es morgen mit MC_MoveVelo.

Ähnliche Themen

  1. Roboter und PL
    Von Hitschkock im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 6
    Letzter Beitrag: 07.09.2012, 19:39
  2. Isel Roboter
    Von Blackforest im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 12.04.2011, 13:55
  3. Sony Roboter
    Von drfunfrock im Forum Sonstige Steuerungen
    Antworten: 0
    Letzter Beitrag: 22.11.2007, 15:36
  4. Roboter
    Von drfunfrock im Forum Stammtisch
    Antworten: 3
    Letzter Beitrag: 28.04.2005, 09:13
  5. kooplung WinCC mit Roboter
    Von Anonymous im Forum Feldbusse
    Antworten: 11
    Letzter Beitrag: 03.07.2003, 09:23

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •