Beiträge von Minimann

    Hi,


    das kommt auf die Applikation an, bei Vision sicher im Sekundenbereich.


    Jobbeispiel 1:
    NOP
    VSTART VF1 MD0
    VWAIT
    SET P001 P000
    SET P002 P000
    SETE (3) P001 = 100000
    SETE (3) P002 = 200000
    MOVJ (Sicherheitspunkt)
    MOVJ (Vorpunkt)
    MOVL P001 (2. Vorpunkt über pick)
    MOVL P002 (Pickpunkt)
    DOUT OT#17 = ON (Greifer zu)
    MOVL P003 (2. Vorpunkt über pick)
    MOVJ (Fahren zur Ablage)
    ......
    END



    Hauptjob:
    PSTART SUB1 Fahren
    PSTART SUB2 Vision
    PWAIT SUB1
    PWAIT SUB2


    Job: Fahren
    MOVJ (Sicherheitspunkt)
    MOVJ (Vorpunkt)
    WAIT B000 = 1 (Handshake mit Job Vision)
    MOVL P001 (2. Vorpunkt über pick)
    MOVL P002 (Pickpunkt)
    DOUT OT# 17 = ON (Greifer zu)
    MOVL P003 (2. Vorpunkt über pick)
    MOVJ (Fahren zur Ablage)
    .....
    END


    Job: Vision
    NOP
    VSTART VF1 MD0
    VWAIT
    SET P001 P000
    SET P002 P000
    SETE (3) P001 = 100000
    SETE (3) P002 = 200000
    SET B000 = 1
    END


    Im Jobbeispiel 1 muss der Roboter immer auf den Vision befehl warten, die Kamera benötigt z.B. 2 sekunden zur Aufnahme und senden der Daten an den Robbi.
    Im Jobbeispiel 2 arbeitet die Kamera parallel zum Motion Job, während der Roboter fährt holt sich der Vision Job die Koordinaten der Kamera, dan kann er sofort wieder greifen und wartet nicht mehr bis das Ergebnis da ist.


    Hoffe es wird so klarer


    Minimann


    PS: die Jobs können nicht 100% so verwendet werden, sind halt Beispiele die die Richtung vorgeben...

    Hi,


    wenn Du z.B. den Roboter in Job 1 bewegst kannst du in Job 2 parallel koordinaten der Kamera einlesen. Das spart Dir Taktzeit.


    Falls Du palettieren willst hast Du einen Movejob und einen Job der Dir parallel die nächste Ablageposition berechnet


    Prinzipiell nimmt man Parallele Jobs um Taktzeit zu sparen.


    Grüße,
    Minimann

    Sorry war auf reisen...


    NOP
    SET P020 P021
    MOVJ
    MOVJ P020 VJ50%
    MOVL V500 UNTIL IN#(1)=ON
    GETS PX020 $PX000 -> liest die aktuelle position in pulse ein
    MOVJ
    Jump label


    P20 ist Deine untere position die Du teachst P21 die obere


    Grüße,
    Minimann

    Hi,


    das ist noch eine detailierte Info! Ich habe einen Job dafür, kann ich aber erst Montag genauer posten...
    Der Vorteil dabei ist, dass sich der Robi immer die letzte Position merkt und dann bis dahin schnell fährt, das spart dir Taktzeit


    Bis dann Minimann

    Servus,


    Der Vorschlag von Martl ist die saubere Lösung, wenn allerdings nicht ins Ladder kommst dürfte folgende Lösung funktionieren:


    Die Geschwindigkeit schreibts Du in eine D Variable
    D001 Geschwindigkeit 1
    D002 Geschwindigkeit 2


    MOVL VL=D001 UNTIL IN#(1)=ON
    MOVL VL=D002


    Die beiden Punlte haben die gleichen koordinaten, das sollte gehen.


    Grüße,
    Minimann

    Hi,


    die eckigen Klammern sind sogenannte Zeiger Variablen. Wenn Du z.B etwas in P[B000] schreiben willst und B000 = 15 ist dann schreibt er den wert in P15


    Grüße,
    Minimann

    Hallo,


    fahr mal die Zweite Nullposition an und schau auf die Markierungen bzw. schau ob Du neben den Pfeilen kleine Deckel hast. Die schraubs Du auf und kannst den Roobter mal probeweise mit einem Passtift abstecken. Eigentlich sind die Löcher für die Zeroing function, zum Prüfen kann man die aber abwandeln.
    Im zweifel mit der 25 Punkte Kalibrierung und Motocalv den Robi kalibrieren. Da brauchst Du halt die Software dazu.


    Welchen Roboter und kontrolle hast Du?


    Grüße,
    Minimann

    Hallo,


    ich kann Bernhard nur beipflichten, ich wende Multipack selbst an, es ist wirklich einfach und kann auch komplizierte Aufgaben sehr gut und einfach lösen. Dabei bietet es eine einfache Bedienung.

    Darüber hinaus ist die Software sehr preiswert und funktioniert für alle Roboterhersteller, viele haben da auch schon interfaces bzw. Beispiele um die Daten der Software einfach in Ihre Sprache zu "übersetzen" bzw. die Daten in den Robi zu schaufeln.
    Multipack ist Kern von vielen Palettiersoftware Produkten die auf dem Markt sind.


    Grüße,
    Minimann

    Hallo und herzlich willkommen,


    es gibt zwei Möglichkeiten beim DX es gibt das simple menü wo dem Bediener nur wenige festgelegte Optionen zur Verfügung stehen.
    Oder es gibt die PP customized function wo Du DIr eine eigene Oberfläche erstellen kannst. Ich denke das zweite trifft die Funktion von Fanuc am ehesten.


    Ob es kostenlos ist weiß ich allerdings nicht.


    Ich hoffe es hat bischen geholfen.
    Grüße,
    Minimann

    Hi,


    GETS P000 $P000 aktuelle Position in Pulse einlesen
    SETE P000 (6) 23525 Element 6 der PVariablen mit Deinen Pulsen ersetzen
    MOV


    Könntest in Zeile 2 auch mit ADD arbeiten


    Greetz

    Hallo,


    hast DU eine Schulung bei Motoman gemacht? das ist aus meiner Sicht als Anfänger unerlässlich! Da lernt man viel mehr als "nur" programmieren und wenn Du eine konkrete Anwendung hast stehen Dir die jungs mit Sicherheit gerne mit Rat zur Seite...


    Normalerweie macht man das mit einem Handshake zwischen den Robotern über E/A s ein Handbuch habe ich nicht dazu.


    Die Belegung von der SPS legst Du bei der initialisierung der Buskarte fest, bzw. das sthet in der Beschreibung des Ladderprogramms.


    Wenn Deine Roboter allerdings in einem Twin system sind (Du hast nur eine Teachbox) dann verriegelst Du die Jobs am besten über Variablen z.B. B Variablen.


    Hat R1 einnen Programmteil erledigt setzt Du B000 auf 1 und wartest im andeen Job von R2 darauf bis B000 1 ist.

    Hi,


    ich bin nicht sicher ob ich es verstanden habe, vor allem wie Du das Rohr drehst. Um die eigene Achse? oder drehst Du das Rohr von einem Ende zum anderen? Is auch kompliziert gefragt vielleicht checke ich es aber nicht...


    Jedenfalls kann man bei manchen Motman Robotern die Achslimits per parameter größer machen. Das müsstest Du halt bei Motoman erfragen ob das beim MH50 geht.


    hoffe konnte helfen... Greez

    Hi,


    welche Steuerung hast Du? beim DX gibts "IF-THEN-ELSE" Damit sollte es klappen.


    Falls Du einen NX hast könntest Du mit einer halben Eingangsgruppe arbeiten. Dann könntest Du es mit einem Bitmuster abfragen.
    Ist halt bischen aufwändig, sollte aber funktionieren...


    CALL JOB: 1 if IGH#1=1
    CALL JOB: 2 if IGH#1=2
    .....


    Grüße,
    Minimann

    Hallo,


    immer noch NX100?


    Du brauchst drei Jobs:
    Hauptjob ohne Gruppe
    SUB1 Bewegunsjob Roboterjob mit Gruppe R1
    SUB2 Kommunikationsjob ohne Gruppe


    Du kannst immer nur einen Job mit Gruppe am Laufen haben
    Job erstellen
    Neuer Job anstatt "Roboterjob" "Paralleljob"
    In der Jobüberwachung den Hauptjob definieren und die Subjobs eintragen


    Ich müsste Lügen ob der Hauptjob ein Paralleljob sein muss oder Roboter....
    Du musst noch mit "SHIFT" + 4 (glaub ich) den Multijobmodus "freischalten"


    Soviel vorab viel Erfolg
    Minimann

    Hallo Gemeinde,


    setzt jemand Remotelasersysteme mit Robotern ein wo "on the fly" geschweißt wird? Würd mich interessieren welchen Robbi und welchen Laser Ihr verwendet.


    Danke und Grüße,
    Minimann

    Hi,


    aktuelle Position in Pulse einlesen und dann im Element 6 (T Achse) Deine Pulse einlesen


    GETS $PX000 PX000
    SETE P000 (6) = 756327 oder halt Deine Pulse
    MOVJ P000


    Grüße