Beiträge von stromer

    Mach doch mal folgenden Test:
    Fahre mit der Messspitze Deine Werkobjekt-Referenzpunkte an und schaue Dir die Istposition in disem Werkobjekt an. Am ersten Punkt muß die Position in x/y/z quasi Null sein, amm zweiten Punkt y+z =0 und am dritten X+z=0. Wenn das nicht so ist, stimmt das Werkobjekt nicht. Wenn es stimmt schau mal, ob vielleicht im oframe was eingetragen wurde, oder schau das vielleicht zuertst.
    Die Roboterkalibrierung prüfst Du indem Du alle Achsen auf 0 fährst und die Nonien checkst, sollte alle etwa übereinander stehen.


    Bocmok hat das Thema auch schon mal aufgegriffen: wie weit sind denn die Referenzpunkte auseinander?


    Gruß
    Stromer

    Also alles was ich hier gelesen hab ist nur halb richtig.
    Der richtige Befehl ist ein DefFrame (ohne D). Die Funktion wird mit drei Punkten gefüttert und erzeugt bei Origin=3 ein Koordinatensystem mit Ursprung an der Schnittpunkt zwischen der Geraden aus dn ersten beiden Punkten und dem Lot durch den dritten Punkt (schau in die Doku, ist gut erklärt).
    Ich fang aber mal von vorne an:
    Du brauchst drei Suchfahrten am besten per Lichttaster. Damit detektierst Du an den Kanten Deiner Palette zwei Punkte auf der langen Seite und einen auf der kurzen.
    Mit diesen drei Suchergebnissen fütterst Du den Deframe, das Ergebnis weist Du dann dem UFrame Deines Werkobjektes zu. Dann hast Du schon mal ein Werkobjekt mit Ursprung an der Ecke der Palette, X entlang der langen Seite, Y die Kurze. Damit Deine Positionen wieder zur ursprünglichen Programmierung passen trägst Du in den OFrame dieses wobj eine Verschiebung/Verdrehung ein.
    Der Teufel steckt im Detail der Einstellung des Lichttasters. Der Lichtpunkt muß als TCP vermessen sein und muß reproduzierbar ausgetauscht werden können.


    Erst mal so viel in Kurzform.


    Gruß
    Stromer

    Ich meine mich zu erinnern, dass Busverkabelung eine weitere Option ist. Also geschirmt und so. Trotzdem könnte es funktionieren, muß aber nicht. Mir wäre das zu heiß, da würd ich eher noch ein Buskabel extra dran pfriemeln.

    Um Eulerwinkel in Quaternions umzurechnen gibt es bei ABB eine fertige Funktion: OrientZYX. Ist in der Doku gut beschrieben.
    Wie man jetzt allerdings von U V W auf die Winkel kommt kann ich auch nicht sagen oder sind das schon die Winkel? Sieht mir aber eher nach was normierten aus, weil alles kleiner 1. :denk:
    Vielleicht die Werte mit 360 multiplizieren. Ob das dann sinnvolle Werte sind mußt Du halt mal schauen.


    Gruß
    Stromer

    Also ich kenne niemanden der Roboter mit Vektoren programmiert. Was hast Du denn da vor?


    Und ich gebe Hermann recht, der Vektor beschreibt schon die Orientierung der Fläche.

    Also von der Idee über die Kollision da was auszuwerten halte ich für nicht praktikabel. die Kollision ist nicht wirklich definiert (keine exakte Position) und später im "echten" Programm geht das sowieso nicht. Ich würde sowas wie doGipperClose und -Open definieren die dann an entsprechender Stelle gesetzt werden. Mit den Greifersignalen kannst Du dann verbinden/lösen.


    Gruß
    Stromer

    Also erst mal fogende Frage:
    Hast Du im Robotercontroller E/A-Signale (also eigentlich nur A) definiert? Nur so kannst Du die Signale vom Roboter aus schalten und die erscheinen dann auch in der Auswahlliste beim Eventmanager.
    Dann kommt jetzt noch ein bischen drauf an ob Du nur eine schicke Simulation machen willst oder ob Dein Roboterprogramm später ohne viele Änderungen in Echt laufen soll?! Je nach dem gibt es eine etwas einfachere oder auch aufwendige Möglichkeit.


    Gruß
    Stromer

    Also wenn der Winkel der Fehlstellung bekannt ist, dann ist die Idee mit dem Baseframe garnicht so schlecht und es ist auch verhältnismässig leicht zu testen.
    Du rechnest den zu korrigierenden Winkel von A1 in Quaternions um (der Winkel entspricht in diesem Fall der Drehung um Z). Das trägst Du dann im Baseframe des Roboters ein. Nach dem Neustart sind dann alle Koordinatensysteme ausser dem Basiskoordinatensystem (das hängt quasi direkt an der Mechanik) um diesen Winkel um A1 gedreht.


    Gruß
    Stromer

    Programmtechnisch sehe ich da nicht wirklich eine gute Möglichkeit aus der Nummer raus zu kommen.
    Am ehesten würde ich mich da Programmiersklave anschließen und (wenn wirklich nur A1) den Robbi neu falsch aktualisieren. Schön ist das aber nicht.
    Ich hatte auch mal so einen Spezialisten der bei IB falsch justiert hatte. Ich hab dann beim Endkunden fast alles neu geteacht (war A6).


    Sorry das ich keinen besseren Vorschlag anbieten kann.


    Gruß
    Stromer

    Hallo Kollegen,


    ich benötige dringend ein CAD Modell von einem R-1000iA/100F. Leider bietet Fanuc mittlerweile keinen Download mehr an und ist auch nicht in der Lage mir ein Modell zu schicken. Wäre super, wenn einer von Euch mir da weiterhelfen könnte. Vorzugsweise als Step aber ich würde auch was anderes nehmen.


    Gruß
    Stromer

    Eine Suche sieht in Rapid so aus:
    SearchL diSucheingang, Ergebnisvariable, pSuchziel, v100, tSuche;


    Gibt noch ein paar optionale Parameter für das Anhalten, ohne fährt der Robbi bis zum pSuchziel.


    Wenn während der Bewegung das Suchsignal auf 1 wechselt wird die Position an dieser Stelle in der Variablen "Ergebnisvariable" gespeichert (robtarget).
    Ist das Signal schon zu Beginn der Suchfahrt high wird ein Fehler generiert, ebenso wenn nichts gefunden wurde.


    Wie Hermann schon geschrieben hat muß in Deinem Robbi eine Funktion oder Routine versteckt sein, die mit Search aufgerufen wird und in der dann die Suchbewegung gemacht wird.
    Wenn Du die postest können wir Dir vielleicht helfen.


    Gruß
    Stromer

    Hallo Olli,


    prinzipiell geht das schon. Dann muß aber der Motor an der ABB Treiberstufe hängen, d.h. Spannungen und Ströme müssen passen und auch der Resolver. Ausserdem muß man bei endlos drehenden Tischen (hast Du das?) aufpassen, dass sich kein Winkelfehler addiert sprich man muß ab und zu mal nullen.
    Am ehesten funktioniert sowas bei 0/180° Drehungen.


    Gruß
    Stromer

    Auszug aus der ABB-Doku für SafeMove:
    Aktivierungseingangssignale
    Die Aktivierungseingangssignale 1-4 nutzen Redundanz mit äquivalenten
    Eingangssignalen. Das heißt, dass Eingangssignal 1A und 1B immer identisch
    sein sollten. Die Signale werden tief geschaltet, um die Überwachungsfunktionen
    zu aktivieren. Wenn Signal A und B voneinander abweichen, sind die
    Überwachungsfunktionen aktiviert. Wenn sie jedoch für eine längere Zeitspanne
    als 2 Sekunden voneinander abweichen, tritt eine E/A-Fehlermeldung auf, der
    Fehler muss beseitigt werden und ein Warmstart ist erforderlich.
    Die Aktivierungseingangssignale 5-8 nutzen Redundanz mit antivalenten
    Eingangssignalen. Das heißt, dass Eingangssignal 5A immer das invertierte Signal
    von Eingangssignal 5B sein muss. Signal A wird hoch geschaltet und Signal B
    wird tief geschaltet, um die Überwachungsfunktionen zu aktivieren. Wenn Signal
    A und B identisch sind, werden die Überwachungsfunktionen nicht aktiviert. Wenn
    sie jedoch für eine längere Zeitspanne als 2 Sekunden identisch sind, tritt eine
    E/A-Fehlermeldung auf, der Fehler muss beseitigt werden und ein Warmstart ist
    erforderlich.
    Wenn Eingangssignal A und B geöffnet (nicht verbunden) sind, wird die
    zugewiesene Sicherheitsfunktion aktiviert. Dies gilt für die äquivalenten und
    antivalenten Aktivierungseingangssignale und wird nicht als E/A-Fehler interpretiert,
    solange A und B geöffnet sind.
    Ein Signal, das für die Aktivierung einer Sicherheitsfunktion verwendet wird, muss
    stabil sein. Sonst wird ein Not-Aus generiert und ein Neustart ist erforderlich.
    Sync-Schalter-Eingangssignal
    Wenn das Sync-Schalter-Eingangssignal für einen Zweikanal-Sync-Schalter
    konfiguriert ist, verwendet es Redundanz mit antivalenten Eingängen. Das heißt,
    dass Eingangssignal A immer das invertierte Signal von Eingangssignal B sein
    sollte. Signal A wird tief und Signal B wird hoch gepulst, um die Funktion zu
    aktivieren. Die Pulse für Signal A und B müssen simultan sein und eine Dauer von
    mindestens 16 ms aufweisen. Wenn Signal A und B identisch sind, wird die Funktion
    NICHT aktiviert. Wenn sie für eine längere Zeitspanne als 2 Sekunden identisch
    sind, tritt eine E/A-Fehlermeldung auf, der Fehler muss beseitigt werden und ein
    Warmstart ist erforderlich.
    Manual Operation-Eingangssignal
    Das Manual Operation-Eingangssignal verwendet Redundanz mit antivalenten
    Eingängen. Das heißt, dass Eingangssignal A immer das invertierte Signal von
    Eingangssignal B sein muss. Signal A wird tief und Signal B wird hoch geschaltet,
    um die Funktion zu aktivieren. Die Funktion ist aktiv, solange die Signale diesen
    Zustand beibehalten. Wenn Signal A und B identisch sind, ist die
    Überwachungsfunktion NICHT aktiviert. Wenn sie für eine längere Zeitspanne als
    5 Minuten identisch sind, tritt eine E/A-Fehlermeldung auf, der Fehler muss beseitigt
    werden und ein Warmstart ist erforderlich.


    Ändern kann man aber nicht von Anti nach Äqui.


    Gruß
    Stromer

    Ich weiß es muß gehen, komme aber nicht damit klar. Scheinbar muß ich für die Stromaufzeichnung noch eine Art Konfig File schreiben :denk:
    Kann mir jemand kurz beschreiben was ich machen muß um z.B. den Motorstrom von Achse 5 aufzuzeichnen?


    Gruß
    Stromer

    Genau, es wird eine num Variable auf einen bestimmten Wert abgefragt. Wenn der Wert als Case angelegt ist, verzweigt das Programm da hinein. Wenn nicht hat man entweder einen DEFAULT angelegt der dann abgearbeitet wird oder es passiert dann halt nix.
    Test Variablenname
    CASE 1
    .
    .
    .
    DEFAULT


    ENDTEST


    Steht aber eigentlich auch ganz gut erklärt inder Doku :zwink: