KUKA Programmierer

  • Hallo zusammen!


    Ich hätte eine Frage bezüglich Programmierung! Gibt es hier jemanden der ein in C# programmiertes Programm in die KUKA Programmiersprache
    umschreiben kann ?
    Bzw. wenn ich jemanden meine Aufgangenstellung erkläre, dass er mir beim Programmieren weiterhelfen kann ? ;)


    MFG
    Daniel

  • Schritt für Schritt zum Roboterprofi!
  • Aber sicher!
    Natürlich gibt es hier Leute, die Dir Programme ganz nach Deinen Wünschen schreiben können.
    Richtige Profis haben wir hier.
    Für Geld programmiert man Dir fast alles....

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Vielen Dank erstmal....


    eine Frage hätte ich noch .... ist es möglich das ich von einem eingeteachten Punkt den der Roboter anfährt, die aktuelle X,Y und Z Position auszulesen ?
    Bzw zu sagen Neuer Punkte ist X Position + 50 mm aber Y und Z Position bleiben gleich ???


    Oder gibt es fixe Variablen im KUKA die mir die X, Y und Z Position anzeigen ???


    MFG

  • Mal kurz angerissen:


    Aktuelle Position $POS_ACT.
    Positionsangeaben einer geteachten Position sind in der Datenliste. z.B.: mit Inlineformular geteachter Punkt P1 ist in der Datenliste unter XP1 zur finden.


    Von einem Punkt nur in x-Richtung zu fahren kann man mit LIN_REL {X 300} bewegt sich 300mm in x Richtung Y,Z,A,B,C bleiben geleich.


    Berechnen geht auch XP1Neu=XP1:{X 300,Y 0,Z 0, a 0, B 0, C 0} (Siehe hierzu geometrischer Operator)


    Es gibt noch viel mehr Möglichkeiten. Und bedenke: Immer TOOL und BASE beachten.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Vielen Dank!


    Es geht eigentlich nicht darum einfach nur nach rechts linear zu fahren sondern das die Bauteile immer um 128mm versetzt daliegen und ich jetzt
    das erste Bauteil nehmen muss und nach dem zyklus soll er das 2te Bauteil nehmen das genau in x richtung um 128 mm versetzt daliegt ... deshalb muss ich nur in x richtung nach jedem zyklus 128 mm dazuzählen ohne das ich jetzt jede einzelne position der bauteile einteachen möchte:


    FÜr Programmcodevorschläge hierzu wäre ich sehr dankbar ...


    MFG
    Daniel


  • FÜr Programmcodevorschläge hierzu wäre ich sehr dankbar ...


    Hm, was ist denn jetzt das konkrete Problem? Wie man in einer Schleife aufaddiert? Hatte dich so verstanden, dass Du schon ein fertiges Programm (in C#) hast.


    Falls Du jemanden suchst der dir ein komplettes Programm schreibt muss ich WolfHenk recht geben... Damit verdienen hier wohl die meisten direkt oder indirekt ihr Geld.


  • Damit verdienen hier wohl die meisten direkt oder indirekt ihr Geld.


    :genau:


    Und das ist nicht böse gemeint. Eine Autowerkstatt verschenkt ihre Reparaturen ja auch nicht.
    Deshalb gibt's hier auch nur Anregungen und Hilfen.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Danke mal soweit!


    Ist mir schon klar das hier die meisten ihr Geld damit verdienen wollte auch nicht das komplette Programm geschrieben haben ;)


    Mich hätte vorallem das Positionssummieren in einer Schleife interessiert !


    MFG

  • Hast es per PN. Hier nochmal für alle:


    Die Aufgabe, welche du beschreibst ist eigentlich genau das, was man im Kurs "Programmierung Fortgeschrittene" macht.


    Kleines Beispiel (nur eine Möglichkeit von vielen) und schnell hingetippert:
    Nehmen wir an, du hast 5 Blöcke nebeneinander (reihe -X Pos) und 4 übereinander (spalte y-Pos).
    Im Deklarationsteil:


    Code
    ;Positionen (Reihe, Spalte)
    FRAME BLOCKPOS[5,4]
    FRAME VORPOS[5,4]
    FRAME STARTPOS ;1. Position geteacht, festgelegt...what ever
    REAL offset_x=118 ;Versatz pro Block in Reihe
    REAL offset_y=50 ;Versatz pro Block in Spalte
    FRAME tmpFrame ; zur Berechnung


    ;Im Programm (alle benötigten Positionen berechnen



    Du kannst dann die Positionen in deinem Programm auch wieder über Schleifen weiterverwenden, oder es auch schon in der Berechnungschleife machen.
    berechnen und gleich anfahren:


    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Sry hab noch nicht in meine Nachrichten geschaut :zwink:


    vielen vielen Dank !!!


    Jetzt hab ich mal ein paar gute Ideen für das Programm ;)


    Da ich nicht so der Experte bin die Sachen vom Deklarationsteil kommen wo genau hin ???


    SRY fürs viele Nerven :mrgreen:


    MFG

  • Hallo Leute!


    Dank euren wertvollen Tipps habe ich jetzt mal ein Programm im OrangeEdit geschrieben.


    Es geht darum das Stahlblöcke (Rund) welche Reihenweise in einem Blockgestell liegen und ein Loch in der Mitte haben,
    nacheinander der Roboter mit seinem Dorn (Greifer = Dorn) in jedes Loch einmal hineinfährt.


    Anbei sende euch mein Programm mit der Bitte um Kontrolle ob das so funktionieren kann bzw. Ergänzungen ....


    PS: Falls jemand eine Zeichnung des Gestelles benötigt bitte PN!


    MFG
    Dani

  • Sry hatte was vergessen!


    Hier nun das von meiner seite vollständige programm bitte um Korrektur:


    Bzw. ist es möglich wie ich es jetzt mal in der Else- Anweisung gemacht habe * -1 zu rechnen um das vorzeichen umzudrehen ?



    &ACCESS RVO1
    &COMMENT
    DEF KukaMatrixtest( )


    REAL x_verschiebung1 = 162.5
    REAL x_verschiebung2 = 81.25
    REAL z_verschiebung1 = -98.9
    INT Wechsel = 0
    FRAME Startpos ; Eingeteachte Position
    FRAME Vorpos
    FRAME Berechnung
    FRAME Blockpos


    ;FOLD INI
    ;FOLD BASISTECH INI
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3
    BAS (#INITMOV,0 )
    ;ENDFOLD (BASISTECH INI)
    ;FOLD USER INI
    ;Make your modifications here


    ;ENDFOLD (USER INI)
    ;ENDFOLD (INI)


    ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $BWDSTART = FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS (#PTP_PARAMS,100 )
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD


    FOR Spalte = 1 TO 8


    IF Wechsel == 0 THEN

    FOR Reihe = 1 TO 9

    Berechnung = $NULLFRAME
    Berechnung.X = (Reihe-1)* x_verschiebung1
    Blockpos = Startpos:Berechnung
    Vorpos = Blockpos:{x 0.0, y -150, z 0.0, a 0.0, b 0.0, c 0.0}

    PTP Vorpos
    LIN Blockpos
    LIN Vorpos

    END FOR

    Startpos.X = Blockpos.X - x_verschiebung2
    Wechsel = 1

    ELSE

    FOR Reihe = 1 TO 8

    Berechnung = $NULLFRAME
    Berechnung.X = (Reihe-1)* x_verschiebung1 * -1
    Blockpos = Startpos:Berechnung
    Vorpos = Blockpos:{x 0.0, y -150, z 0.0, a 0.0, b 0.0, c 0.0}

    PTP Vorpos
    LIN Blockpos
    LIN Vorpos

    END FOR

    Startpos.X = Blockpos.X - x_verschiebung2
    Wechsel = 0

    END IF


    Startpos.Z = (Spalte-1)* z_verschiebung1

    END FOR


    ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $BWDSTART = FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS (#PTP_PARAMS,100 )
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD


    END

  • Vorzeichen:
    Kannst du so machen. Wenn es immer positiv werden soll kannst du auch die ABS-Funktion verwenden:


    ABS(-3.4) ergibt 3.4
    ABS(3.4) ergibt 3.4

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • HAllo !


    Danke aber nein es soll nicht immer Positiv sein den er fängt in der oberstn Reihe an von links nach rechts,
    dann geht er in die nächste Reihe und fängt von rechts nach links an und dann wieder eine reihe hinunter
    und wieder von links nach rechts :D


    Aber ist der Programmcode soweit Befehlsmäßig ok ? Oder ist irgendein grober schnitzer drinnen ;)


    MFG

  • Ich kann auf den ersten Blick nichts entdecken.
    Zur IF WECHSEL Abfrage:


    Die kannst du ersetzen durch eine Funktion, ob Spalte gerade oder ungerade ist:
    IF EVEN(Spalte) THEN


    Code
    DEFFCT BOOL EVEN(iValue:IN)
    IF ((IValue / 2)*2)<>iValue THEN
     RETURN FALSE
    ELSE
     RETURN TRUE 
    ENDFCT


    Dann würde ich alles in eine Schleife packen. Und mir eine weiter Variable rNeg schaffen

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Code
    IF EVEN(Spalte) THEN
     iBlockCount=8
    ELSE
     iBockCount=9
    ENDIF
    
    
    ...
    FOR Reihe=1 to iBlockCount
    ...

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • 3 kleine Fragen noch :D


    Gehört dann die Variable rNEG bei der Berechnung.X als Multiplikator hinzugefügt oder ??
    eiso : Berechnung.X = (Reihe-1)* x_verschiebung1 * rNEG


    und


    gehört jetzt bei der if anweisung mit dem rNEG einfach nur das iBlockCount hinzugefügt (Siehe Programmcode)


    und


    Wohin gehört die DEFFCT hingeschrieben ??? ganz oben oder dahin wo ich die Variablen definiert habe



    Programmcode:


    DEFFCT BOOL EVEN(iValue:IN)
    IF ((IValue / 2)*2)<>iValue THEN
    RETURN FALSE
    ELSE
    RETURN TRUE
    ENDFCT


    DEF KukaMatrixTest1 ( )



    REAL x_verschiebung1 = 162.5
    REAL x_verschiebung2 = 81.25
    REAL z_verschiebung1 = -98.9
    REAL rNeg=1
    REAL BlockCount = 0


    FRAME Startpos ; Eingeteachte Position
    FRAME Vorpos
    FRAME Berechnung
    FRAME Blockpos


    ;FOLD INI
    ;FOLD BASISTECH INI
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3
    BAS (#INITMOV,0 )
    ;ENDFOLD (BASISTECH INI)
    ;FOLD USER INI
    ;Make your modifications here


    ;ENDFOLD (USER INI)
    ;ENDFOLD (INI)


    ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $BWDSTART = FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS (#PTP_PARAMS,100 )
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD


    FOR Spalte = 1 TO 8
    IF EVEN(Spalte) THEN
    rNEG=1
    BlockCount = 9
    ELSE
    rNEG=-1
    BlockCount = 8
    ENDIF


    FOR Reihe = 1 TO BlockCount

    Berechnung = $NULLFRAME
    Berechnung.X = (Reihe-1)* x_verschiebung1 * rNeg=1
    Blockpos = Startpos:Berechnung
    Vorpos = Blockpos:{x 0.0, y -150, z 0.0, a 0.0, b 0.0, c 0.0}

    PTP Vorpos
    LIN Blockpos
    LIN Vorpos

    END FOR

    Startpos.X = Blockpos.X - x_verschiebung2
    Startpos.Z = (Spalte-1)* z_verschiebung1

    END FOR


    ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $BWDSTART = FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS (#PTP_PARAMS,100 )
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD


    END

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden