Beiträge von Fred Clever

    Guten Morgen Emma82,


    in KAREL gibts dafür die "ROUTINE"n.
    Denen kannst einerseits Werte übergeben und andererseits auch Werte mit einem "RETURN" zurückgeben.
    z.B.:


    ROUTINE Test (übergabewert1 : INTEGER; übergabewert2 : STRING) : REAL (<-- Rückgabewert)
    VAR
    BEGIN
    (...)
    RETURN 5.2
    END Test


    Viel Spass damit. =)


    Gruß
    Fred

    Guten Morgen Emma82,


    nein es geht leider nicht die 6 Werte auf einmal in die "XYZWPR" zu speichern.
    Der "XYZWPR"-Datentyp ist ist ja nur KAREL bekannt und besteht auch nicht nur aus den 6 Koordinaten...


    Du könntest lediglich die 6 Werte auf einmal einlesen, getrennt durch ein vorher bestimmtes Trennzeichen (z.B. # oder | ), die Nachricht dann aufteilen (sozusagen "parsen") und die daraus "gewonnenen" Werte dann in "P" abspeichern (z.B. bekommst als Nachricht "375.0#422.5#-127.3#180.0#0.0#180.0#", holst Dir dann die einzelnen Werte und speicherst sie dann ab).


    Damit musst zwar immer noch eine Schleife über den ganzen "String" programmieren, aber Du musst nicht jedesmal den Port öffnen / schließen (ist manchmal empfehlenswert... genauso den Port zu leeren) und das Trennzeichen hilft Dir eben die einzelnen Werte zu "erkennen".


    Trotzdem musst die Koordinaten wie gesagt immer noch einzeln in die XYZWPR speichern.


    Gruß
    Fred

    Hallo nochmal,


    also wir hatten schon die Gelegenheit uns die bald erscheinende neue Steuerung (R-30iB) vorführen zu lassen.


    Hier wurde uns gesagt, dass in KAREL wieder ein wenig mehr investiert werden soll (also Zeit vermut ich mal)...
    Jedoch werden (oder wurden) einige unerwünschte Funktionen rausgenommen (z.B. die Bewegungsbefehle, da wurde uns schon mehrmals gesagt, dass keine Bewegungen in KAREL programmiert werden sollen).


    Naja, ich denk da hat WolfHenk sicher nicht unrecht, wär schön blöd wenn KAREL rausgenommen werden würde, mich würds zumindest ein wenig traurig machen... =D
    Lassen wir uns mal überraschen.


    Gruß
    Fred

    Hallo Emma82,


    in TPE gibts das nicht wirklich, wie WolfHenk schon geschrieben hat gibts den ":" nur in KAREL.


    In TPE beziehen sich die Koordinaten von einem Punkt immer auf ein bestimmtes User Frame (Base bei Kuka...glaub ich... =) ).
    Du könntest die Punkte nur insofern verschieben, indem Du das entsprechende Frame veränderst.
    (wenn das Frame verändert wird, werden alle Punkte die sich darauf beziehen mitge"zogen"/mitverändert)


    Für so richtige Transformationen ist TPE zu klein... :liebe029:


    Gruß
    Fred

    Hallo Emma82,


    im TPE gibt es einfach den Befehl "UTOOL_NUM = " wobei Du dann mit dem "x" eben die entsprechende Nummer auswählst.
    Den Befehl findest unter "[INST]" --> "Offset/Frames" (hier gibts auch den "UTOOL[y]" bzw. "UFRAME[y]" -Befehl mit dem man die Frames beschreiben kann).


    Viel Spass damit.


    Gruß
    Fred

    Hallo PA,


    prinzipiell sollte dies ebenfalls genau gleich wie Vorort funktionieren.
    Der Roboter beim Kunden sollte nur in einem Netz liegen, auf das Du selbst auch zugreifen kannst.
    (z.B. via VPN o.ä.)


    Danach musst den Roboter einfach in die "Robot Neighbourhood" anmelden und dann solltest auch wieder über OlpcPro zugreifen können.


    Gruß
    Fred

    Hallo Emma82,


    dafür gibts die Operanden ":" und "INV" zwischen zwei "Frames".
    Musst mal im KAREL-Handbuch nachschlagen, da is n Beispiel mit Bildchen.


    Im Prinzip bekommst da nicht wirklich die Transformationsmatrix, Du kannst aber ein "Frame" in ein anderes transformieren. =)


    Gruß
    Fred

    Guten Morgen cando_o,


    der Roboter ist auf "Wrist Joint" umgestellt.
    Drück einfach mal auf "FCTN" --> "TOGGLE WRIST JOG", dann sollte das W vor WORLD weggehen.


    Bei "Wrist Joint"-Bewegungen verwendet der Roboter seine 5te Achse nicht (auch bei linearen Bewegungen).
    Gedacht war die Sache, dass man auch linear durch die Singularität fahren kann (gibts auch als Option bei Punkten: "WJNT").


    Gruß
    Fred

    Moin moin Dirk H,


    aalso, die Idee mit dem AUTOEXEC war schonmal gar nicht schlecht.
    Das Problem ist, dass das Programm im AUTOEXEC innerhalb von einer gewissen Zeit beendet sein muss, sonst wird es automatisch von der Steuerung beendet.
    (glaub so 30 Sekunden o.ä.; ist einfach so definiert)


    Daher ist das beste, wenn Du ein TP-Programm (z.B. START.TP) erstellst in dem Du das KAREL-Programm mit "RUN" startest.


    Am besten davor vielleicht noch eine kleine Wartezeit von 5-8 Sekunden, falls Du z.B. auf bestimmte Bereiche in der Steuerung zugreifst (z.B. Netzwerk).
    Das Problem ist nämlich, dass das AUTOEXEC-Programm von der Steuerung aufgerufen wird, bevor alle Treiber geladen sind.
    (falls Du also im KAREL auf "Socket Messaging" o.ä. zugreifst funktioniert die Sache nicht, weil die Treiber für die Ethernet-Ports noch nicht geladen sind...)


    Übrigens, wenn Du eine Endlos-Schleife in Deinem KAREL-Programm hast, schreib auf jeden Fall ein "DELAY(10)" in die Schleife mit rein.
    Ansonsten kann es passieren, dass das KAREL "zu schnell" durchläuft und zuviele Ressourcen der Steuerung frisst (und dann z.B. das Handbediengerät einfriert).


    Viel Spass noch mit KAREL. =)


    Gruß
    Fred

    Hallo nochmal,


    nur für die Auflösung:


    Ich vermute das Problem lag daran, dass das $TP_DEFPROG in Anführungszeichen als STRING definiert sein musste?!
    Es gibt wirklich aber auch bessere Compiler-Fehlercodes... =)


    Gruß
    Fred

    Hallo Dirk H,


    ich vermute, dass der String den Du von GET_VAR zurückbekommst irgendwie ein Leerzeichen beinhaltet (oder was ähnlich sinnloses).
    Lass Dir doch einfach mal die beiden Strings im iPendant ausgeben/anzeigen (WRITE TPDISPLAY()).


    Zur Not musst die Rückgabe von GET_VAR erst noch formatieren (sprich führende / angehängte Leerzeichen abschneiden).
    Im Handbuch musst einfach mal "format" suchen, da ist dann beschrieben, wie verschiedene Datentypen formatiert werden können.


    (Als kleine Anmerkung:
    Das "STRING-Handling" in KAREL ist nicht gerade das geschickteste bzw. das eleganteste.
    Es gibt hier weitaus modernere Programmiersprachen in denen es um einiges schneller, einfacher und schöner zu lösen ist. =) )


    Gruß
    Fred

    Moin Bodo,


    ja das stimmt. Prinzipiell kann das iPendant einfach HTML (bzw. STM) Seiten anzeigen.
    FANUC stellt noch die sogenannten iPendant-Controls zur Verfügung, bei denen es sich um ActiveX-Elemente handelt, die Zugriff auf diverse Daten in der Steuerung anbieten.
    (Register, Positionsregister, I/Os...)


    Die iPendant Controls sind eigentlich kostenfrei und müssen auf dem PC installiert werden (werden übrigens mit Roboguide mit installiert, falls Du die Software verwendest).
    Danach kannst die Controls in den ActiveX-Bedienelementen verwenden (und auf Deine Seite ziehen).


    Wegen einem Handbuch bzw. den iPendant Controls würd ich mal direkt bei Fanuc nachhaken, die haben glaub einen FTP (hatten se zumindest mal...).


    Gruß
    Fred


    P.s.:
    - Achja, Option brauchste sonst keine mehr.
    - Du brauchst kein Touch Pendant, es geht auch mit dem "normalen" iPendant (jedoch ist es mit Touch natürlich "geschickter" bzw. einfach "cooler"... =D )

    Hallo heini0707,


    für die ganz alten KAREL-Programme (SW Version < V5.11) gibt es noch den Vorgänger von WinOlpc (genannt Olpc).
    Dabei handelt es sich aber ausschließlich um einen "Compiler", also ohne Editor (einfach ne .exe, die man mit ein paar Parametern aufrufen muss).


    Olpc deckt soweit ich weiß die ganzen alten SW-Versionen ab.


    Gruß
    Fred

    Hallo Mujo,


    ich bin mir nicht sicher, ob Du speziell einen UAlarm auslösen kannst (also so ähnlich wie Raise_UAlarm(12)).
    Jedoch kannst Du auf jeden Fall mit KAREL irgendeinen Alarm auslösen.


    Mit der Routine "Post_Err" kannst Du, soweit ich die Sache durchschaut habe, jeglichen Fehler werfen.
    Die Definitionen der User Alarme können bestimmt aus den Variablen ausgelesen werden.


    Naja, weiß nicht, ob Dir das wirklich weiterhilft, aber ein Versuch wars wert... =)


    Gruß
    Fred

    Hallo paintrobotics,


    falls Du Zeit, Muße und Spass am Programmieren hast wäre dann noch ausprogrammieren eine Möglichkeit.
    Relativ einfach würde dies über das Heron-Verfahren funktionieren (z.B. hier: http://de.wikipedia.org/wiki/Babylonisches_Wurzelziehen)... =)


    Jedoch wäre das Wurzelziehen in KAREL dagegen ein Progrämmchen, da es hier einen Befehl gibt, der das Verfahren für Dich übernimmt.
    (von daher wäre es einfacher, wenn Thilbi Dir das Programm in der richtigen Version kompiliert; dazu benötigt er die Softwareversion Deiner Steuerung)


    Gruß
    Fred

    Hallo GschamstaDiena,


    ich kann Dir leider nichts genaues über die R-J3-Steuerung sagen, aber ich kann Dir sagen, wie ich es bei der aktuellen Steuerung einstellen würde. =)


    1.) Am einfachsten wäre eine Hintergrundprogramm. In KAREL würden mir auf Anhieb einige Befehle einfallen, mit der die aktuelle Bewegung (und das aktuelle Programm) abgebrochen werden kann. Danach könnte das KAREL-Programm dann das entsprechende Programm aufrufen (oder sonst etwas tun...)


    2.) Wieder fällt mir nur eine Möglichkeit in KAREL ein. Mit einem KAREL-Programm könntest Du die Not-Aus-Signale überwachen und dann im Falle des Falles wieder irgendwelche Aktionen durchführen (z.B. Ausgänge abschalten, Programm aufrufen, Meldungen ausgeben......).


    Tut mir leid, aber ich bin ein wenig KAREL-lastig, daher auch nur solche Lösungsansätze von mir... =)
    Vielleicht helfen sie Dir aber trotzdem ein wenig weiter.


    Gruß
    Fred

    Hallo Tommy3001,


    mein schlaues Büchlein sagt mir, dass:


    $TORQUE: das Durchschnittliche Drehmoment und,
    $CUR_TORQUE: das aktuelle Drehmoment anzeigt.


    Das "HandlingTool"-Handbuch hat mir dann noch verraten, dass es sich bei den Werten um "Amps" also Ampère handelt.
    Bei den Werten handelt es sich übrigens um die angezeigten Werte im "Status"-Menü.


    Der Roboter sollte aber eigentlich (je nach Steuerungsgeneration) sowieso die Software "Collision Detection" (HSCD) geladen haben, die im Prinzip bei einer Kollision den Roboter abschaltet. Wahlweise gibts auch noch Optionen wie "Touch Skip" (oder "Collision Skip" o.ä.), mit der man die Kraft auf einzelne Achsen messen/ablesen kann.


    Hmm, was die Sache mit KAREL angeht bin ich erstmal ratlos. Die GET_VAR und SET_VAR Funktion funktioniert im Prinzip IMMER.
    Die meisten Fehler passieren da in der Schreibweise der Variablen oder beim Datentyp.


    Gruß
    Fred

    Hallo Dirk H,


    mein Senf kommt wohl ein wenig spät aber ich wollt ihn schon noch kurz abgeben.


    Also wenn ich das jetzt richtig verstanden habe möchtest Du eine feste Position mit einem Offset mehr oder weniger dynamisch verschieben.
    Um jetzt nochmal Deine erste Idee aufzugreifen:


    Du kannst zwar während der Bewegung den Offset nicht dynamisch ändern, aber Du könntest versuchen, ein Programm zu schreiben, in dem Du einfach immer und immer wieder die "gleiche" Position anfährst, und dazwischen kannst dann das Register ändern, also z.B. so:


    LBL[1]
    PR[x,y] = z
    L P[1] 2000mm/sec CNTi Offset,PR[x]
    L P[1] 2000mm/sec CNTj Offset,PR[x]
    L P[1] 2000mm/sec CNTk Offset,PR[x]
    JMP LBL[1]


    Falls die Geschwindigkeit nicht allzu hoch ist kann das recht gut funktionieren.
    Zumindest habe ich eine ähnliche Anwendung mit einem Abstandssensor durchgeführt (in dem der Sensor während der Fahrt unterschiedliche Z-Werte übergeben hat und der Roboter dann mehr oder weniger "dynamisch" die Fahrt angepasst hat).


    Die Position ist wegen dem Bahnplaner dreimal hintereinander programmiert, da dieser bis zu drei Positionen vorausschaut und dadurch die Bahn etwas ruhiger wurde...


    Also keine Ahnung, ob Dir das nun so weiterhilft, vielleicht, vielleicht auch nicht... =)


    Gruß
    Fred

    Hallo wicki,


    leider ist es nicht ganz so einfach.


    Also eine Möglichkeit wäre einen zweiten virtuellen Roboter einzufügen und diesen via "Interconnect" mit dem ersten verknüpfen. Der zweite würde dann sozusagen wie eine "SPS" fungieren...


    Es gibt auch ein "Plug-In" für Roboguide mit dem kann man eigentlich E/As verfolgen ("Monitoren") aber da kann man sie auch schalten.


    Mehr weiß ich leider auch nicht genau. Ist alles nicht gerade das Gelbe vom Ei.
    Du könntest natürlich einfach auch die Zeile aus dem TP löschen, aber keine Ahnung, ob das dann noch passt...


    Gruß
    Fred

    Guten Morgen,


    bei "AutoSingularityAvoidance" bleibt die Orientierung schon erhalten, da kann der Roboter auch tatsächlich durch die Singularität fahren.
    heini0707 meint wahrscheinlich die "WJNT" Bewegungsoption, da fährt der Roboter tatsächlich eine Beule. =)


    Es kann auch passieren, dass der Roboter bei "AutoSingAv" die Orientierung nicht zu 100% erreicht, da gibts dann eine Meldung (Could not reach blablabla...).
    Bemerkt man eigentlich aber nicht so richtig (muss aber dazu sagen, dass ich die Option bisher nur bei Handhabungsaufgaben verwendet habe...).


    Wie das mit den Geschwindigkeiten genau ist, weiß ich leider auch nicht so richtig.
    Man sieht manchmal nur, dass der Roboter ein gutes Stück langsamer wird, wie schnell er dabei fährt...keine Ahnung. =)


    Aber sonst klappt das eigentlich recht gut.


    Gruß
    Fred