Beiträge von kai_n

    Well, I don't think that a manual is of any use, if you don't own the corresponding hardware. because of that the manufacturer of the robot might not really care, if the manuals are available elsewhere. But you are right, we should care about that more...

    Ich wage zu bezweifeln, das es da eine Einheitliche Software gibt, weil die Einflussgroessen zu vielfaeltig sind. Da hilft wohl nichts anderes als gesunder Menschenverstand bzw selber was zu programmieren.
    Je nach komplexitaet des Vorganges stoesst man da aber auch an die Grenzen der Rechenleistung. Dann helfen nur noch spezielle Algorithmen, zB der Evolutionsalgoritmus. Die bringen dann zwar nicht die absolut beste Loesung zu Tage, aber wenigstens eine die dieser recht Nahe kommt. Such mal im Netz oder der Fachbuchhandlung nach Optimierung. Da gibt es jede Menge Literatur, man muss das aber alles auf sein eigenes Problem anpassen. Ist fuer einen Programmierer ein grosser Spass...

    Geht es um eine Art Greifarm, der hinten an nem LKW haengt?
    Dann ginge es also darum, das der Greifarm stoppt, wenn der LKW fast schon ZU weit gekippt ist.
    Dann geht es doch nur um den Neigungswinkel, dafuer reicht ein mehrdimensionaler Beschleunigungssensor, der so +-1g messen Kann. Daraus kannst Du dann den Neigungswinkel des Sensors/LKWs berechnen (die 1g Erdbeschleunigung verteilen sich auf die 3 Achsen des Sensors). Wenn ein Kritischer Wert erreicht ist, loest Du dann nen Not-Aus aus, dafuer reicht ja fast schon ein rein elektronischer Schwellwert-Schalter.


    War das wenigstens ein bisschen hilfreich?¿?

    Ich versuch die Idde zu Punkt 2 nochmal besser zu erklaeren:
    Dein Master-Interrupt springt in eine "Bitte Ausweichen"-Routine, die eine Folge von Punkten berechnet, und diese anschliessend abfaehrt. (Richtig?)
    Der Sub-Interrupt muss nur das abfahren der Punkte abbrechen und die Berechnung der Ausweichbewegung neu starten, den Master-Interrupt brauchst Du da also gar nicht mehr.

    Zu Punkt eins (Interrupts mit mehreren Bedingungen): Ich denke das geht. Wenn der Rob da meckert, dann benutz einfach einen $CYCFLAG. Den kannst Du dann in der Interruptdefinition benutzen. Alternativ geht auch die SPS.


    Punkt 2: als Notloesung ginge folgendes:
    In der Routine des "MAster Interrupt" einen "Sub interrupt" benutzen, der die gerade ausgefuehrte Bewegung abbricht und einen Boolschen Flag "MovinPosssible" auf FALSE setzt (und sonst nichts macht). In der Routine des Master-Interrupts vor jeder Bewegung den MovingPossible abfragen und dann eben nicht fahren, sondern wieder die Berechnung der neuen Bahn anwerfen.


    Aber vorsicht: Mit etwas Pech kann der Roboter dann zwischen mehreren Hindernissen haengen bleiben und nie seinen Zielpunkt erreichen!!!

    Ich habe leider gerade weder Handbuch noch Roboter zur Verfuegung, daher ist das hier mehr so aus dem Bauch heraus.
    Mathematisch ist ein Kreis durch drei Punkte voellig definiert, die auf ihm liegen. Daher wuerde ich davon ausgehen, das die Punkte, die Du dem Rob geben musst, auf dem Kreis liegen sollten. Fuer hoehere Genauigkeit sollten die natuerlich moeglichst weit auseinander liegen.
    Die Groesse des Radius ist also eindeutig gegeben, also tippe ich auf einen Programmierfehler bei der Berechnung der Referenzpunkte in Deinem Programm. :roll:

    Dann ists doch echt nur nen Vorzeichenwechsel bei der Y-Koordinate. Das sollte sich doch eigentlich bewerkstelligen lassen.
    StarTrek lehrt: Frequenzen angleichen. Das machen die immer so 5 Minuten vor Schluss, wenn es so richtig aussichtslos wird...

    Ist es gedreht oder spiegelverkehrt? Base-drehen schafft natürlich keine Spiegelung, aber wenn das Koordinatensystem geeignet liegt genügt es ja die x- oder y- Koordinaten mit -1 mal zu nehmen.


    Aber Du willst doch wphl keine fest geteachten Wege in die neue Anwendung spiegeln oder? :huh:

    Du lässt dann auf dem Kuka unter Windows ein Programm laufen, das über OPC auf die Kuka-Steuerung zugreift? Das geht? Wie ist die Performance?

    Anruf bei der (Firmeninternen) Hotline, weil mein Rechner nen Bluescreen zeigt, wenn ich Netmeeting starte.
    Antwort: "Starten sie bitte Netmeeting und geben sie den Rechner frei, dann schau ich mal nach."


    2. Anruf, ein Jahr später, weil meine Festplatte abgeraucht ist und daher der Rechner nicht mehr startet. Antwort: "Ich hab ihnen Per E-Mail einen Link zugeschickt, bei dem sie ne Festplatte bestellen können."

    Es gibt bei CREAD (war das der Befehl zum lesen der Schnittstelle???) auch den Parameter TIMEOUT. Wenn man den auf 0 setzt und direkt danach das erfolgreiche Auslesen abfragt, dann blockiert der Befehl die SPS nicht.
    Also etwa so:


    Versuche vom Port zu lesen mit TIMEOUT=0
    IF Lesen erfolgreich?
    Mach was mit den gelesenen Daten
    ENDIF
    Restlicher SPS-code


    So mach ich das zumindest gerade bei einem Programm.

    Ich kenne zwar FTCTRL nicht, könnte mir aber vorstellen, dass das so tut:
    Definiere Dir ein $TOOL, das genau in der Achse 6 steckt (sollte XYZ=0, AB=0, C=180 sein, bin mir aber nicht sicher) und drehe dann Dein Tool mit LIN_REL {A6 60}.
    Das Werkzeug, das Du gerade benutzt sollte sich dann wie gewünscht bewegen.


    Es macht ja auch irgendwo Sinn bei Achs-spezifischen Bewegungen keine Kraft zu überlagern. Schliesslich gibst Du ja allen Achsen einen Zielwibkel vor, denen die Du nicht direkt erwähnst den Winkel 0. Also hat der Roboter ja nun keine Freiheitsgrade mehr...


    Warum willst Du denn gezielt eine Achse drehen?