Beiträge von chezz

    Die Ein- und Ausgänge sind im Kap. 12 ((?) Habs grade nicht da) NX100-Operator.pdf (oder NX100-Instructions.pdf?) beschrieben, dort findest Du auch eine komplette Sequenz, um nach dem Einschalten der Servos den Job wieder ans Laufen zu kriegen. Der Job bleibt nämlich stehen. Das gilt aber nicht für die SPS.


    Wenn Du z.B. einem HP20 mit Last die Servos abschaltest, sackt der Arm etwas durch und geht auch nicht wieder in die geteachte Position zurück, wenn Du die Servos wieder einschaltest. Nur so am Rande ...

    Vor dem Problem stand ich auch mal. Meine Idee dazu war folgende:


    Das Achsspiel findet sich in der Wiederholgenauigkeit wieder. Also habe ich den Arm ganz langsam immer wieder auf dieselbe geteachte Position geschickt. Dort war eine Messuhr, die mir auf 0.5 µm genau die absolute Position +/- Abweichung gezeigt hat.

    Moin alleine.


    Die handschriftlichen Werte hinter den (Null-)Kalibrationspulsen sind das Finetuning seitens Motoman und für den Anwender nicht weiter interessant. Manchmal sind handschriftliche Werte durchgestrichen und es stehen neue da. Das deutet dann auf Motor- / Getriebetausch hin. So wurde es mir von einem ServiceMan gesagt.


    Was ist mit den Markierungen am Manipulator? Passen die noch? Eine Positionskontrolle nach Crash ist eigentlich nur dann möglich, wenn es vor dem Crash eine genau vermessene Referenzposition gab. Fahr die nochmal an und kontrollier dann. An einem User-Koordinatensystem kannst Du eine Verschiebung eventuell auch sehen, wenn der Robi einen langen Weg darin zurücklegt.
    Ansonsten ist das ein sehr schwieriges unterfangen.


    Ich hoffe, ich konnte helfen.

    Gib Deinem Rechner mal eine feste IP (also kein DHCP), die im selben Nummernkreis wie der Roboter liegt.


    z.B.


    PC: 192.168.66.6 (192.168.66.x = Nummernkreis)


    Rob: 192.168.66.7


    Ist eine Firewall an (Motocom32.dll benutzt die Ports 10000 - 10008)?


    Hast Du eine Direktverbindung oder gehst Du über einen Server / Router?


    Welchen Eintrag hat das Gateway in der DX?


    Blöde Frage zum Schluss: Kabel kaputt?


    Edit 01.07.2010:
    Habe ich doch glatt vergessen:


    Unter Ein-/Ausgänge -> PseudoEingänge muss der Eintrag "CMD Remote " angewählt werden. Sorry...

    Hallo kiecrob,


    BscIsError(...) und BscGetError(2)(...) sind keine Befehle auf (bzw. in) der Teachbox. Du wirst sie in der Teachbox nicht finden. Aus diesem Grund:


    Es sind C++/Win32-Funktionen aus der Motocom32.dll. Diese Datei wird von Motoman mit Dongle (USB) verkauft. Man sollte mindestens "etwas" Programmiererfahrung haben, um diese Datei anzuwenden.


    Sollte das der Fall sein, musst Du mit


    1.) id = BscOpen(...), mit id > -1 (id == -8 bedeutet: kein Dongle)
    2.) BscSetEServer(id,...)
    3.) BscConnect(id,...)


    eine Verbindung zur Motocom32.dll herstellen. Dazu muss der (Schlüssel-) Schalter der (DX) NX auf Remote stehen. Danach kannst Du mit (z.B.) BscPutVarData(id,...) das o.g. Szenario mit B099 = 256 testen.


    IMHO:
    Auch wenn es verlockend erscheint, komplette Prozessabläufe mittels der Motocom32.dll auf einen PC auslagern zu wollen, rate ich davon ab, weil die Socketverwaltung innerhalb der Motocom32.dll seitens Motoman stark verbessert werden muss. Die Datei erzeugt Hänger im Programm von bis zu drei Sekunden. Zeitkritische und die Prozesssicherheit betreffende Schritte (z.B. CallMasterJob (INPUT) und TopOfMasterJob (OUTPUT)) im Ablauf lasse ich nur über die Klemmen und eine SPS laufen. Besser ist das ...


    Schönes WE noch


    Schach

    Hallo,


    für UltraEdit-32 gibt es von Motoman ein Add-On (hoffentlich bekomme ich jetzt keinen Ärger :ylsuper: ...), dass die Jobs graphisch besser verständlich darstellt als es z.B. der Editor von Windows tut.


    Man kann grundsätzlich Jobs am PC editieren. Dabei sollte man allerdings die "Motoman-Sprache" kennen. Mein Vorredner hat Recht: Ein falsches Zeichen, und alles steht. Ein "Leerzeichen vergessen" mag trivial klingen. Aber wenn man sich mal die *.hex-Files ansieht, wird man verstehen, warum die Kiste auf einmal bockt. Jede Zeile in einem *.hex-File hat eine konstante Länge. Man kann es also mit einem String vergleichen, der an entscheidender Stelle zu kurz ist. Fehlt auch nur ein Zeichen, wird ab der Stelle, ab der das Zeichen fehlt, die betreffende *.hex Datei falsch interpretiert.


    Lange geübt und endlich kapiert grüßt euch alle


    Schach

    Hallo kiecrob,


    schon wieder ne Frage:


    Ist die übergeordnete Steuerung über TCP/IP oder RS232 (1), also Motocom32.dll, oder über die Wago-Klemmen (2) verbunden?


    zu (1):
    Du bekommst den Fehlercode mit den Funktionen BscIsError(...) und BscGetError(2)(...). Ob Deine Routinen funktionieren, kannst Du testen, indem Du mit BscPutVarData(...) z.B. in B099 einen Wert von 256 schreibst (ByteWertMax = 255). Das gibt garantiert einen Fehler.


    zu (2):
    Wenn Du die o.g. Ausgänge "klingel-verdrahtest", zeigt Dir (wie Du sicher schon weißt) A9 an, ob ALARM oder ERROR auftrat. Differenziert wird hier seitens Motoman nicht. Weg bekommst Du ALARM/ERROR, indem A2 eine negative Flanke zugeführt wird. Fehlercodes oder sonstige, weitergehende Infos sind hier allerdings Fehlanzeige.


    Fazit:
    Sinnvoll, das Posting hier?


    Ausblick:
    Die DX100 kann Events. Damit fummel ich gerade herum. Ob das zielführend ist, weiß ich noch nicht. Wenn ja, könnte ich mit Bit-Bang die Messages übertragen, die unten rechts im PHG angezeigt werden.


    Grüsse


    Schach

    Hallo,


    meine Erfahrung mit nem HP20:


    Der Roboter ist kollisionsfrei. Die Payload ist ca. 15 KG. Es wurden Arbeiten am Greifer durchgeführt. Danach Abweichung um 15 mm. Da habe ich einfach eine Referenzposition angefahren, habe die T-Achse von Hand wieder "gerade gebogen" und siehe da:


    Hat der HP20 nicht mal gemerkt. Oh Mann oh Motoman ...


    Gruss Schach

    Hallo Mesut,


    Von Job zu Job kommt man mit CALL. NICHT MIT JUMP! Mit JUMP bewegst Du Dich NUR INNERHALB eines Jobs! Alles andere gibt Chaos. Dabei musst Du aber immer schön an den Stack (RET) denken!


    Zu Deinem 10 cm-Problem fällt mir nur ein, dass Du noch ein offenes SHFTON ohne SHFTOF hattest.


    Gruß


    chezz

    Hallo Japaner,


    als C++ / WIN32 Programmierer wünsche ich mir, dass ihr alles auf Klassen umstellt. DLLs können auch Klassen exportieren. Damit hättet ihr die Möglichkeit, eine "pure virtual" Funktion für mich als Callback zu implementieren.
    Und wenn ihr schon gerade so fleißig dabei seid, definiert doch gleich noch ein benamtes Event (schneller) / Msg (langsamer) mit, wo ihr doch gerade so fleißig dabei seid ...


    Gruß von


    CHEZZ

    Hallo liebe Motomänner,


    ihr verkauft eine DLL inklusive Dongle für teures Geld. Dieses teure Geld weckt eine gewisse Erwartungshaltung, die leider nicht erfüllt wird. Hier ein Beispiel, das man in der Philosophie ein "Paradoxon" nennt:


    BscIsRemote.


    Diese Funktion ist deshalb paradox, weil sie überflüssig ist. Und das aus diesem Grund:


    1. Der (Schlüssel-) Schalter steht auf "PLAY" (PHG NX/DX).
    2. Die o.g. Funktion liefert als Rückgabewert "-1"
    3. Das tut in unter 1. geschildertem Fall jede andere Funktion auch. Die Angaben in der Dokumentation sind also falsch respektive die Funktion ist überflüssig.


    Ich bin mittlerweile dabei, mich in Kuka einzuarbeiten, weil ich nicht einsehe, für Halbgares viel Geld zu bezahlen.


    Ende der Durchsage.


    chezz

    Hallo an alle,


    ich muss direkt mal blöd wegen wiesos post fragen:


    Die SPS ist das Betriebssystem der Robotersteuerung ????????


    Nee ne, das kann (darf) nicht sein, oder? Ich dachte, das wär WinCE ?!!!!!


    Danke für erhellende Antworten und irritierte


    Grüße


    Lars

    Hallo,


    hier mein Statusbericht an alle C++-Programmierer mit der Motocom32.seuche:


    Wenn ihr die Funktion BscDeleteJob(...) erfolgreich anwendet und danach die DX neu startet, kann ich nur sgen:


    Dateisystem neu initialisieren.


    Gruß


    Lars