Beiträge von fallon

    Danke für die Antwort.


    Um konkret zu sein, hängt meine Frage mit folgender Problemstellung zusammen:


    Wir haben einen Referenzplatz. Dort wird ein Koordinatensystem eingemessen. In diesen Koordinatensystem werden alle Anwendungen geteacht. Nun werden an den Arbeitsplätzen wieder ein Koordinatensystem eingemessen. Die Vorher eingemessenen Programme sollen also mitwandern. Oder vereinfacht gesagt, das Gesamtsystem wird verschoben.


    Ziel ist es, beide Koordinatensysteme (Referenzplatz und Arbeitsplatz) erhalten bleiben und es soll nur ein Fahrprogramm vorhanden sein.


    Leider bin ich halt nur extrem selten an einen Kuka, so das ich es nicht probieren kann. Ich muss auch nur wissen ob sowas bei Kuka möglich ist, Programmieren muss es dann ein Kuka Spezialist ;)

    Hi,

    gleich vorweg, bei Kuka habe ich nur einige grundsätzliche Erfahrungen.


    Zu meiner Frage:


    Ist es möglich, ein Programm zu teachen und es dann wahlweise mit verschiedenen Base-Systemen abzufahren?

    In etwas so:

    wenn 1 dann fahre in Base 1 sonst in Base 2


    Danke für die Antwort.

    Hallo ,
    wie versprochen hier der Lösungsansatz für eine Kommunikation zum Robbi:


    Zuerst solltet ihr euch die Anleitungen "HW0483202_Ethernet_Server_Function_NX100" und "MOTOcom Interpreter Message List" besorgen.
    Diese haben viele Erklärungen zu den Befehlsaufrufen und den eventuellen Fehlerausgabe.


    Hier ist noch ein Phyton Auszug von unseren Programmierer:


    Bespiel Python Code
    TCP_IP = ' ROBOT IP '
    TCP_PORT = 80
    BUFFER_SIZE = 256
    ## Read status
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((TCP_IP, TCP_PORT))
    #start
    MESSAGE = 'CONNECT Robot_access\r\n'
    s.send(MESSAGE.encode('ascii'))
    data = s.recv(BUFFER_SIZE)
    MESSAGE = 'HOSTCTRL_REQUEST RSTATS 0\r\n'
    s.send(MESSAGE.encode('ascii'))
    data = s.recv(BUFFER_SIZE)
    data = s.recv(BUFFER_SIZE)


    #Write variable
    MESSAGE = 'HOSTCTRL_REQUEST LOADV 6\r\n'
    s.send(MESSAGE.encode('ascii'))
    data = s.recv(BUFFER_SIZE)
    MESSAGE = '0,0,5\r'
    s.send(MESSAGE.encode('ascii'))
    data = s.recv(BUFFER_SIZE)


    #Read Variable
    #Test read var
    MESSAGE = 'HOSTCTRL_REQUEST SAVEV 4\r\n'
    s.send(MESSAGE.encode('ascii'))
    data = s.recv(BUFFER_SIZE)
    MESSAGE = '0,0\r'
    s.send(MESSAGE.encode('ascii'))
    data = s.recv(BUFFER_SIZE)


    Ohne ein wenig Programmierarbeit werdet ihr nicht kommen. Dies ist aber auch im anderen Sprachen und für die SPS umzuwandeln.


    Was wir jedoch nicht wissen, ob der Robbi dazu das Motocom32 braucht. Nach der Freischaltung hatten wir noch einige Befehle mehr zur Verfügung. Die brauchen wir hierfür nicht, wir wissen aber nicht was sonst noch intern gemacht wurde.


    Ich hoffe ich konnte damit einigen helfen. Wenn Fragen sind einfach melden.


    Gruß
    Fallon

    Hallo,
    danke für die Antworten.


    Du hast Recht, im Normalfall ist deine Lösung schon ziemlich passend.


    Wenn ich das so mache wie du beschreibst und ich im Base-System bin, klappt das auch. Ich komme aber aus einem anderen User-System, da kommen noch einige Schwierigkeiten dazu. Ich habe damit die Hotline von Yaskawa 2 Tage beschäftigt.


    Zum einen muss die Verschiebung von meinem Ursprung ins Base convertiert werden. Nach Berechnung der neuen Koordinatenpunkte ist die Lage des Koordinatensystem auf dem Kopf. Die Positionen der Punkte sind an der richtigen Stelle. Deswegen muss man noch die Werte von RX auf 180 setzen, dann passt es.
    Hier mal mein Code und Lösung für die Allgemeinheit:


    NOP
    SET LP001 P000
    CNVRT LPX001 LPX001 BF -->Konvertierung User2 auf Base
    SET LP002 LP001
    SUB LP002 LP002
    SET LP003 LP001
    SUB LP003 LP003
    SETE LP002 (1) 100000
    SETE LP003 (2) 100000
    'Punkt ORG
    SET LP004 LP001
    GETE LD000 LP004 (4)
    ADD LD000 18000 -->RX auf 180 Grad setzten
    SETE LP004 (4) LD000
    'Punkt XX
    MULMAT LP005 LP001 LP002
    GETE LD000 LP005 (4)
    ADD LD000 18000 -->RX auf 180 Grad setzten
    SETE LP005 (4) LD000
    'Punkt XY
    MULMAT LP006 LP001 LP003
    GETE LD000 LP006 (4)
    ADD LD000 18000 -->RX auf 180 Grad setzten
    SETE LP006 (4) LD000
    MFRAME UF#(5) LPX004 LPX005 LPX006
    END


    P000 ist die Verschiebung. Wichtig hierbei ist, die Variable für das Ursprungskoordinatensystem (bei mir User2) zu deklarieren.


    @Roboboss
    ich habe gesehen, das du dich mit fast den identischen Problem an das Forum gewendet hast. Dort hast du aber die Steuerung DX100 angegeben.
    Die Steuerung verarbeitet die Befehle ein bischen anders.


    Für alle was ganz wichtiges:
    Werden Punkte errechnet, die der Roboter theoretisch nicht anfahren kann, wirft die NX-Steuerung sofort einen Fehler raus. Bei der DX-Steuerung wir er errechnet und kann bearbeitet werden. Erst wenn ein Fahrbefehl auf so einen Punkt kommt, macht sie einen Fehler.


    Viele Grüße
    Fallon

    Hallo,
    erstmal sorry, du hast mit dem Winkel rech, meinte natürlich Rx, das heist die Verschiebung beträgt ( 10,25,0,0,0,90), war ein Schreibfehler die unsere Applikation etwas anders ausgibt.


    Nur Verschiebungen ist kein Problem, dann kann ich auch die Punkte als Block mit den Shift-Befehl verschieben. Die Probleme treten nur bei Winkeländerungen auf.
    Es gibt System (zb Mitsubishi) die erstellen ein Koordinatensystem mit dem Ursprung (x,y,z) und geben mit den Winkelstellungen (wx,wy,wz) die Ausrichtung des Systemes an. Hier ist ja die Schwierigkeit, das Motoman anscheinend Koordinatensysteme ausschliesslich über 3 XYZ-Koordinaten deklariert.
    Wir hätten zwar die Möglichkeit, die neuen Absolutpunkte extern zu berechnen, verkompliziert aber die Gesamtanwendung.

    Hallo,


    danke für die Antwort, aber irgendwie habe ich da noch einige Verständnisprobleme:


    Gehen wir davon aus das ich eine Verschiebung von x=10, Y=25 und rx 90 Grad habe.


    Du legtst zuerst 3 P-Variablen (ORG,XX,XY) mit den selben Inhalt ( 10,25,0,90,0,0) an. Danach eine P-Variable X-Diff(100,0,0,0,0,0) und Y-Diff (0,100,0,0,0,0) an.


    Wenn ich es richtig verstehe rechnest du danach :
    MULMAT P_XX (10,25,0,90,0,0) P_ORG (10,25,0,90,0,0) X-Diff (100,0,0,0,0,0)


    Als Ergebniss kommt neu P_XX ( 110,25,0,180,0,0) raus, analog für P_YY ( 10,125,0,180,0,0)

    Gehe ich davon aus, das mein Uhrsprung bei 0,0,0,0,0,0 ist müssten die 3 Punkte an folgenden Stellen liegen:


    ORG 10,25,0,n,n,n
    XX 10,125,0,n,n,n
    XY -90,25,0,n,n,n


    Aber irgendwie passt das nicht, habe ich da was falsch verstanden?


    Gruß
    Fallon

    Hallo,
    hier mal eine kurze Frage:
    Ich habe ein Koordinatensystem eingerichtet und einige Positionen darauf geteacht. Ich möchte nun das ganze System um den Nullpunkt verschieben und verdrehen.
    Mit Mframe geht das generell, aber man benötigt 3 komplette Koordinatenpunkte (ORG, XX,XY). Ich möchte aber gerne das Koordinatensystem um den Punkt ORG verschieben und verdrehen.
    Ich bekomme zum Beispiel aus Halcon Verschiebewerte im Format X,Y,Z-Winkel A,B,C. Und diese beziehen sich immer auf den Nulpunkt des Koordinatensystems
    Hat da einer schon Erfahrung mit gemacht?
    Mir freundlichen Gruß
    Fallon

    Hallo,
    danke für die Antwort. Kurz vor deinen Beitrag habe ich noch alte Unterlagen von mir gefunden wo das so wie du geschrieben hat erklärt wurde.


    Jaja, man wird langsam alt. :)


    Ist erledigt

    Robbi: HP20 mit NX100 Steuerung
    Hallo,
    ich möchte Positionen (errechnete) von einem Unterprogramm in in ein anderes übergeben. Momentan habe ich da nicht so die richtige Idee wie ich das bewerkstelligen soll.
    Kann mir da jemand helfen? Gab es da nicht mal sowas wie Globale Positionsvariablen?
    mit freundlichen Gruß
    Fallon

    Es geht nicht darum ein Register generell auszulesen oder zu beschreiben, sondern die Funktion über des IF-Panel durchzuführen.
    Sowohl in der Deutschen Anleitung als auch in einer Englischen ist dies Funktion kurz beschrieben.
    Da wir den Motoman als Experimentierroboter nutzen ist keine ausprogrammierte SPS in Betrieb. Einige Eingriffe in das laufende Programm erledigen wir deswegen über ein IF-Panel.

    Hi,
    mit dem Hauptprogramm hat das erstmal nicht zu tun.
    Wenn über das IF-Panel ein Zähler (Variable B000) eingerichtet ist kann ich sie ablesen und auch beschreiben, egal in welchen Modus die Teachbox steht.
    Sobald jedoch Start aktiv ist lässt sie sich nicht mehr bearbeiten, egal in welchen Modus. Dies soll aber gehen.

    Hallo,


    ich haben mit dem IF-Panel folgendes Problem:


    Ich haben ein Steuerungsprogramm geschrieben, wo in Abhängigkeit des Inhaltes einer Variablen (z.B B000) ein Unterprogramm aufgerufen wird.
    Dazu will ich im IF-Panel einen Zähler aktivieren, wo man nach der (dürftigen) Anleitung wärend des Auto-Betriebes eine Variable auslesen und beschreiben kann. Auslesen klappt, aber leider nicht das beschreiben.


    Alle Tipps vom Support haben nicht geholfen, irgendwie bekommen die es auch nicht hin.
    Kann mir da jemand von euch helfen?


    Mit freundlichen Gruß
    Fallon

    Hi,
    danke für die Antwort, sowas ähnliches dachte ich mir schon.
    Mein Problem ist, das ich die Variable hochzähle und dann die Ausgabe in dem Format mache:


    PRINT #1,"Punkt;";M9;"; ist erreicht"
    Mal sehen was ich hinbekomme, freue mich aber auch über Anregungen
    .


    Gruß
    Fallon

    Hallo,
    ich habe da ein kleines Problem. Ich nutze folgenden Code:
    M9 = 1
    PRINT #1, M9


    Eigendlich ganz einfach, es sollte als Ausgabe eine 1 erscheinen. Aber in der Ausgabe erschein immer +1.
    Das + darf aber nich mit ausgegeben werden, weis einer woran das liegt?


    Gruß
    Fallon

    Hallo,
    gibt es von Kuka eigendlich eine Auflistung von Befehlen und Systemvariabeln, ähnlich der Informliste von Motoman ?


    Ich habe zwar den Lehrgang "Programmieren 1" aber es gibt da noch einige ( oder auch viele :zwink:) Wissenslücken. Und bis ich den Nächsten machen darf wird noch einige Zeit vergehen.


    Weis einer vorher ich sowas bekommen kann, bzw hat einer von euch sowas für mich?


    Gruß
    Fallon