Beiträge von rob.target

    Hallo liebe Gemeinde,


    aktuell arbeite ich an einer Vision-Anwendung und habe an einer entscheidenden Stelle die Vermutung, dass ich etwas nicht ganz richtig berechne. Und da ich im KUKA-Forum zu meiner Problematik irgendwie nicht richtig fündig geworden bin, mache ich mal ein eigenes Thema auf.


    Ich habe ein robotergeführtes Vision-System (Kamera im Greifer montiert und sauber vermessen) welches kalibriert ist und sich auf $WORLD bezieht.


    Nun fahre ich eine Position über das zu erkennende Bauteil an und triggere das Vision-System an. Darauf hin bekomme ich von diesem die Verschiebung vom Master-Bauteil in World-Koordinaten zurück (X,Y,RZ bzw. A).


    Im Anschluss sollen zwei Positionen im erkannten Bauteil angefahren werden. Die erste Position, um zu überprüfen, ob das Bauteil an einer entsprechenden Stelle ein bestimmtes Merkmal besitzt (Vision-System wird erneut angetriggert und ausgewertet) und die zweite Position, um das Bauteil zu greifen, wenn die Merkmal-Prüfung OK war. Diese habe ich im Master-Bauteil geteacht, für welche ich folgende BASE gesetzt habe (aktuelle Position in $WORLD):


    Im Ablauf gehe ich wie folgt vor (Code etwas eingekürzt):


    Sprich, ich lege mir eine BASE in das Bauteil, um von da mit geteachten Positionen weiter zu arbeiten. Doch leider habe ich Positionsabweichungen beim Greifen, die ich mir nicht erklären kann - die Auswertung vom Vision-System scheint aber OK zu sein.


    Ist meine Herangehensweise eine richtige bzw. hat jemand eine Idee, wie ich der Sache Herr werde?


    Und bevor ich es vergesse und es wichtig wird - es handelt sich um einen Roboter an einer KRC4 mit KSS 8.6.7.


    Beste Grüße

    Hallo,


    ich hatte das gleiche Problem bei einer Beckhoff unter TwinCat 3. Das Stichwort ist hier die Byte-Order könnte ich mir vorstellen:


    https://de.wikipedia.org/wiki/Byte-Reihenfolge


    Ich musste alles manuell ummappen, da auch die Datentypen in der PN-Schnittstelle des UR so schon durchmischt sind. Wäre ja auch sonst zu einfach die Byte-Order generell zu drehen. Also Rohdaten in ein Byte-Array lesen und auf eine lesbare Struct je nach Bedarf umkopieren - bei den Ausgangsdaten dann halt retour. Also je einen Encoder- / Decoder- FB...


    Müsste ja in PcWorx? genauso funktionieren - ist ja auch alles nach IEC61131


    Beste Grüße

    Danke für die Tipps!


    Ich stelle mir noch die Frage, ob der Vergleich der aktuellen Position mit der Endposition unter Umständen nicht funktionieren wird, wenn ich verhältnismäßig schnell unterwegs bin, oder ob ich um den Endpunkt einen Cube in X,Y,Z legen muss, der eine gewisse Toleranz zulässt. Ich werde das mal ausprobieren...


    Beste Grüße!

    Hallo zusammen,


    als nächstes darf ich nun einen UR programmieren - eine Dosierapplikation.


    Habe mir bis jetzt so einiges durchgelesen und verstehe so einigermaßen wie die Programmierung abläuft.


    Nun stellt sich für mich die Frage, wie ich den Ausgang für mein Dosierventil auf der Bahn ein- bzw. ausschalte ohne dabei einen Genauhalt auszulösen?


    Am besten in Abhängigkeit z.B. von einer Distanz zu einem Start- bzw. Endpunkt.


    Habe dazu leider noch nicht so viel gefunden. Hat da jemand Erfahrungen, die er mit mir teilen kann?


    Von anderen Herstellen kenne ich für sowas eigene Befehle und hoffe, das der UR sowas auch kann...


    Beste Grüße

    Hey,


    danke für die Antwort! Ich habe eigentlich nichts falsch gemacht - der MOTOMAN sicher auch nicht! Das Ergebnis war nur nicht das erwartete...


    Ich habe mein Ziel anders erreichen können. Mit dem SFTON PXXX UF#(Y) und den im Vorfeld berechneten Shift-Werten. Normalerweise habe ich sonst anstelle der Shift-Werte direkt die Positionen im Vorfeld berechnen können - bei anderen Herstellern. Was soll ich sagen, die Mühle läuft jetzt...


    Ich glaube aber, dass das beim MOTOMAN auch anders geht, ich nur an meiner Unwissenheit diesen zu programmieren gestolpert bin. Nur etwas anders und dieser Versuch steht noch aus, habe ich doch einen Ansatz wie das mit dem MULMAT-Befehl funktioniert:


    http://www.hinterseher.de/Diplomarbeit/Transformation.html


    Kapitel 2.2.2.2 ...


    Danach die Transformationsmatrix M berechnen und auf den zu manipulierenden Punkt anwenden. Ich werde das ausprobieren!


    Gefällt mit der Blaue doch immer besser... ;)


    Beste Grüße!

    Hallo zusammen,


    trotz einiger Beiträge zum Berechnen von Positionen habe ich irgendwie Probleme bei der Umsetzung eines Berechnungsprogramms - bin halt ein MOTOMAN- Anfänger.


    Das Verschieben von Positionen in Anwenderkoordinaten stellt kein Problem dar und funktioniert wunderbar:


    'POSITION LADEN

    CNVRT LPX000 PX020 UF#(2) TL#(1)

    '

    'X-WERT ANPASSEN

    GETE LD000 LP000 (1)

    ADD LD000 D010

    SETE LP000 (1) LD000


    Nun möchte ich aber die im UF#(2) um den X-Wert angepasste Postion um das TL#(1) in RX mit einem Offset versehen, doch leider dreht mein Roboter um RZ!?


    'RX-WERT ANPASSEN

    GETE LD000 LP000 (4)

    ADD LD000 D013

    SETE LP000 (4) LD000


    Die Punkte sollen in dem Berechnungsprogramm vorab berechnet und und später in einem anderem Programm angefahren werden...


    Was mache ich falsch bzw. mit welcher Befehlsfolge bekäme ich das gewünschte Ergebnis beim MOTOMAN?


    Beste Grüße

    Hallo liebe Gemeinde,


    dieser Thread ist zwar schon etwas älter, aber ich versuche mal mein Glück. Ich stehe vor dem selben Problem mit einer NX100 wie der Threadersteller damals und bräuchte Unterstützung - natürlich gerne per PN.


    Vielen Dank im Voraus und beste Grüße!

    Also, ich habe es mit unterschiedlichen Werten versucht und es bei ANTDIS=5.0 belassen und die Position an sich etwas angepasst. Die Ungenauigkeit bleibt gefühlt aber unverändert!? Hat schon jemand ähnliche Erfahrungen gemacht?

    Oh, Danke für die schnelle Rückantwort...


    Ich habe beide Varianten (ANT und ANTDIS) ausprobiert - vielleicht ist die jeweilige Angabe von 0.01 zu klein? Ich werde da morgen mal mit spielen - eventuell bekomme ich ja einen Wert für das gewünschte Verhalten heraus. Das ANT geschwindigkeitsabhängig ist, das leuchtet mir ein - bei ANTDIS wäre das natürlich ungünstig.


    Einen Cube wollte ich nicht benutzen, da auf der Anlage Produkte unterschiedlicher Größe gefahren werden sollen. Wenn ich mir jetzt überlege, für jedes Produkt einen Cube zu pflegen und das Ganze auch noch Produktabhängig in der SPS auszuwerten...


    Etwas faul bin ich ja schon...:icon_rofl:

    Hallo zusammen,


    dieses Thema ist zwar schon recht alt, doch habe ich aktuell als Motoman-Anfänger eine Frage genau dazu.


    Ich hab folgenden Code auf einer DX200 geschrieben:


    Code
    'L004 - NACH ENTNAHME
    MOVL LP004 V=1500.0 NWAIT
    'L005 - AUS BEREICH
    MOVJ LP005 VJ=100.00 NWAIT
    'AUS BEREICH 1 SETZEN
    ANTOUT AT#(1) ON ANT=0.01
    'L006 - ABFAHRT
    MOVJ LP006 VJ=100.00 NWAIT


    Die Positionen sind alle berechnet - und zwar so, dass L005 (AUS BEREICH) auch wirklich aus Bereich liegt - ihr wisst schon, Zylinder die sofort z.B. eben nach einer Entnahme wieder verfahren werden sollen. Taktzeit, Taktzeit, Taktzeit,...


    Doch leider wird der entsprechende Ausgang etwas zu früh gesetzt. Fällt natürlich nur auf, wenn ich über die SPS einen geringen Override vorgebe - aber es soll ja immer funktionieren. Und verstehen möchte ich es ja auch...8)


    Laut Dokumentation wird der AT#(1) um 0.01 Sekunden verzögert geschaltet - also, nach Erreichen der Position.


    Aber warum funktioniert es so nicht? Hätte da jemand einen Tipp?


    Beste Grüße


    P.S.: Mit ANTDIS=0.01 habe ich es auch versucht...

    Liebe Gemeinde,


    es gab da noch ein Problem mit dem KRC-interenen IP-Routing zum Vision-Server... Konnte zusammen mit KUKA gelöst werden.


    Der Rest lief dann quasi wie von alleine - und so pickt er jetzt wie blöde, der Kleine...:dance2:


    Beste Grüße

    So,


    habe mir die DX200 General Bus-Doku organisieren können. Damit kommt Licht ins Dunkle - zumindest was die Anbindung an ProfiNet angeht.

    Weiß jemand, ob in irgendeiner anderen Dokumentation ein Sequenzdiagramm für das Anstarten des Roboters zu finden ist?


    Das YCP02-Board für die Option Conveyor Synchronized Function habe ich im Maintenance Mode deaktivieren und den externen Drehgeber deinstallieren können - läuft.


    Bis dahin...:beerchug:

    Hallo zusammen,


    auch auf die Gefahr hin gleich Dresche zu bekommen... Aber ich habe es nicht so konkret gefunden!:sorry:


    Ich bekomme die Möglichkeit das erste Mal einen Motoman zu programmieren - Komplettumbau einer bestehenden Anlage.


    //


    In dieser hängt an einer S7-Steuerung (die mache ich dann gleich mit) eine DX200 samt MH24 via ProfiNet.

    Die PN-Dokumentation habe ich gefunden und auch die ApplicomIO-Software zur Konfiguration einer verbauten Molex PCU-EHTIO-PN.

    Soweit so gut... Gibt es beim Motoman sowas wie eine AutoExt-Schnittstelle ähnlich KUKA? Oder wie wird das bei denen gemacht!?


    //


    So wie es aussieht, ist in der DX200 die Option Conveyor Synchronized Function verbaut. Diese würde ich gerne entfernen, da nicht benötigt - der Sauberkeit wegen.

    Das Manual zum YCP02-Board usw. habe ich ebenfalls gefunden, in der Hoffnung damit den Rückbau durchzuführen.

    Ist das so ohne Weiteres möglich oder muss ich da Besonderheiten berücksichtigen?


    //


    Wahrscheinlich nerve ich euch die nächste Zeit mit Anfänger-Fragen - hoffentlich nur, wenn ich im Forum nicht fündig werde.


    Bis dahin verbleibe ich mit freundlichen Grüßen und vielen Dank im Voraus...


    rob.target

    Hallo liebe Gemeinde,


    ich habe gerade das Vergnügen eine Inbetriebnahme des oben genannten Optionspaketes durchzuführen - in Verbindung mit EthernetKRL V3.1.1 auf einer KRC4 compact mit der KSS 8.6.4.


    Die Installation hat soweit funktioniert und auch die zunächst aktivierten Notfall-Lizenzen auf meinem Rechner und der KRC scheinen zu laufen. Zumindest war die Kalibrierung des System (Kamera), welche ich online durchgeführt habe, erfolgreich.


    Für die weitere IBN über das WorkVisual V6.0.4_Build0561 am KLI würde ich mich jetzt gerne auf den VisionServer verbinden. Leider scheitere ich an dieser Stelle und bekomme die folgende Meldung:


    Es konnte keine Verbindung zum Vision-Server hergestellt werden, da die Gegenstelle nicht antwortet.


    Auf meinem Rechner habe ich die Firewall deaktiviert - auf der KRC war sie schon ausgeschaltet.


    Kommt jemandem dieses Problem bekannt vor und hat vielleicht sogar einen Lösungsvorschlag?


    Vielen Dank im Voraus!

    Hallo liebe Gemeinde,


    da ich selber nicht auf ADEPT fit bin, wir aber in unserem Betrieb eine Bestandsanlage laufen haben, an welcher relativ zeitnah Programmänderungen vorgenommen werden sollen, starte ich hier mal eine Anfrage.


    Die Applikation beschränkt sich auf reine Handlingsaufgaben, wobei einem bestehendem Programm ein weiteres Produkt hinzugefügt werden soll.

    Es hadelt sich um einen Viper s1300 an einem SmartController CX. Gesteuert wird die Zelle von einer Beckhoff TC2, die Kommunikation läuft über CAN.

    Bei Interesse an einem Auftrag bitte eine PN. Alles weitere kann dann im Nachgang besprochen werden.


    Vielen Dank im Voraus


    rob.target

    Hallo zusammen,


    vielen Dank für die Antworten! :supi:


    Die Systemsignale habe ich gefunden und die ProfiNet-Signale entsprechend konfiguriert:


    GP_bool_in[0] => Starten des aktuellen Programms

    GP_bool_in[1] => Stoppen des aktuellen Programms

    GP_bool_in[2] => Unterbrechen des aktuellen Programms

    GP_bool_in[3] => Freedrive

    GP_bool_in[4] => Autostarten des Standardprogramms im Programm-Ausführen-Fenster

    GP_bool_in[5] => Automatische Bremsenfreigabe des Roboters


    GP_bool_out[0] => Ausgang ist LOW, wenn nicht aktiv : LOW, wenn der Programmzustand „gestoppt” oder „unterbrochen” ist.

    GP_bool_out[1] => HIGH, wenn nicht aktiv : Ausgang ist HIGH, wenn der Programmzustand „gestoppt” oder „unterbrochen” ist.

    GP_bool_out[2] => HIGH, wenn aktiv. LOW, wenn gestoppt. : Ausgang ist LOW, wenn der Programmzustand „gestoppt” oder „unterbrochen” ist und HIGH, wenn aktiv.


    Dann habe ich ich noch noch den State des UR als INT im Prozessabbild:


    0 = Disconnected

    1 = Confirm_safety

    2 = Booting

    3 = Power_off

    4 = Power_on

    5 = Idle

    6 = Backdrive

    7 = Running


    Und diverse Statusbits auch:


    AOM = Analog output mask

    AOT = Analog output types

    ES = Is emergency stopped

    FT = Is fault

    NO = Is normal mode

    PB = Is power button pressed

    PR = Is program running

    PS = Is protective stopped

    PW = Is power on

    RC = Is recovery mode

    RD = Is reduced mode

    RES = Is robot emergency stopped

    SES = Is system emergency stopped

    SS = Is safeguard stopped

    SSM = Speed slider fraction mask

    ST = Is stopped due to safety

    TAIT = Tool analog input types

    TB = Is teach button pressed

    TDI = Tool digital inputs

    TDO = Tool digital outputs

    TDOM = Tool digital output mask

    VL=Is violation


    Jetzt ist es so, dass ich mittlerweile den Roboter von der SPS aus starten kann, nur eben nicht zuverlässig, wie ich es z.B. von einem KUKA, ABB oder Kawasaki gewohnt bin. Da gibt es in der Doku z.B. solche Diagramme:



    Daher meine Frage, wie ein zuverlässiges Handshaking mit welchen Signalen aussieht, um den UR zu starten?


    Nach dem Einschalten, Initialisieren und Starten des Standardprogramms, bleibt mir der Kleine nämlich häufig stehen - sprich, das Standardprogramm bleibt gestoppt. Ist es dann doch mal gestartet gewesen, dann lässt sich dieses auch stoppen,unterbrechen und auch wieder anstarten.:kopfkratz:


    Den Dashboard-Server würde ich gerne meiden wollen und die Unterprogrammanwahl wie gewohnt und bewährt über eine Switch/Case- Anweisung realisieren.


    Beste Grüße in die Runde...

    Vielen Dank für den Tipp!


    Meine Vermutung hat sich bestätigt. Beim Austausch der Getriebe ist das der A6 verwechselt worden. Der Sevice-Mitarbeiter hatte im ersten Anlauf versehentlich das Getriebe für einen KR10 eingebaut. Daher auch das beschriebene Verhalten. Nach dem heutigen Einbau des richtigen Ersatzteils, lief der Kleine wieder wie am Schnürchen...


    Beste Grüße

    Hallo zusammen,


    ich wurde hier gerade zu einem Problem gerufen. Nach einem Getriebetausch der A5+A6 des besagten Roboters inkl. neu durchgeführter und überprüfter Justage usw. verhält sich dieser ziemlich merkwürdig.


    Spirch, er bleibt z.B. beim kartesischen Handverfahren in Z (WORLD, BASE = $NULLFRAME, TOOL = $NULLFRAME) nicht auf der Bahn und die Orientierung des Werkzeuges ändert sich. Beim Verfahren im Tool-KS liegt der TCP nicht mehr dort wo er eigentlich sein sollte und orientiert um irgendeinen TCP, nur nicht dem eingetragenen.


    Ich habe nochmal die Maschinendaten überprüft - diese passen augenscheinlich.


    Gibt es bei der Serie unterschiedliche Getriebe, sodass es beim Austausch zu einer Verwechslung gekommen ist (Vermutung)?


    Mit was für einem Problem könnte ich es hier zu tun haben? Jemand eine Idee? Ich bin doch nur Programmierer... :uglyhammer_2:


    Beste Grüße

    Gibt es eine SPS als Master? Oder können die Roboter über diskrete Signale miteinander "sprechen"?


    Dann wäre mein Vorschlag über Bereichsanforderungen und -freigaben zu arbeiten (Pseudocode):


    OUT DO_ANF_BEREICH_1 = TRUE
    WAIT DI_FRG_BEREICH_1 = TRUE
    OUT DO_AUS_BEREICH_1 = FALSE
    .
    .
    Fahre in Bereich
    .
    .
    Mache etwas
    .
    .
    Fahre aus Bereich
    .
    .
    OUT DO_ANF_BEREICH_1 = FALSE
    WAIT DI_FRG_BEREICH_1 = FALSE
    OUT DO_AUS_BEREICH_1 = TRUE


    Bei einer HOME-Fahrt nicht vergessen alle ANF_BEREICH_X = FALSE und AUS_BEREICH_X = TRUE

    Hallo, liebe Gemeinde!


    Da ich in sehr naher Zukunft einen UR programmieren darf und diesen auch von einer SPS aus starten soll (vgl. KUKA AUT_EXT), wollte ich mich hier im Forum einmal schlau machen, wie man dies am dümmsten umsetzt.


    Gibt es da ein bewährtes Rezept? Ganz schlau bin ich aus der Doku noch nicht geworden. :denk:


    Vorab habe ich allerdings die Kommunikation über Profinet an einer Beckhoff- SPS zum Laufen gebracht...


    Vielen Dank im Voraus