Beiträge von danisch28

    Hallo


    habe alles bis auf die GOTO anweisung geschafft indem ich einfach die Globale Variable "Zustand" in der Config.dat deklariert habe .... Hat er gefressen!


    Ja ich kenne zwar die BRAKE und RESUME anweisung aber mir geht es einfach darum:


    Wenn eine neue Kiste zum Roboter hingestellt wird drückt der Mitarbeiter auf einen Knopf und dadurch wird im Roboterprogramm ein Interrupt ausgelöst der das Programm wieder auf START zurücksetzt und der Roboter wieder die Erste Position anfährt ....


    Ich könnte zwar eine REPEAT und UNTIL Anweisung machen aber mit GOTO auf START wär es einfacher .... nur weiß ich nicht ob man das global definieren auch kann ???


    MFG

    HAllo zusammen!


    Habe zwei kleine Probleme wo ich grad nicht weiterkomme:


    1) ich wollte ein globale INT variable "Zustand" definieren damit ich diese sobald ein Interrupt auftritt in diesem Interruptprogramm von 0 auf den Wert 1 setzen kann .....


    KRC1 sagt mir aber DECL GLOBAL INT ZUSTAND = 0 Typ unbekannt ....
    Hat jemand eine Idee warum das nicht funktioniert bzw. eine andere Umsetzung ?



    Und 2) Ich möchte Wenn ein gewisser Interrupt ausgelöst wird in diesem Interruptprogramm mit der GOTO-Anweisung das Programm wieder neu starten lassen...


    Habe hierzu am Anfang des Programmes:


    ANFANG: geschrieben


    und im Interruptprogramm


    GOTO ANFANG


    jedoch schreibt mir die KRC1 " SPRUNGZIEL NICHT LOKAL DEKLARIERT" ...


    Irgendwelche Lösungsansätze für mich ?


    MFG
    Daniel

    Danke vorab!


    Wenn man den Interrupt deklariert hat muss man Ihn aber nicht mehr im Hauptprogramm aufrufen oder ?


    und muss der INterrupt global definiert werden ?? oder geht das auch lokal ???
    MFG

    OK nur wie sag ich Ihm dann das er stoppen soll ???


    Wenn ich an Interrupt deklariere der anspricht sobald der Eingang 1 TRUE ist ....


    bzw. was muss ich in den Interrupt für einen Befehl hineinschreiben damit er stoppt ?


    MFG

    HAllo zusammen!


    Ich habe ein Frage und zwar gibt es die Möglichkeit den Roboter in eine gewisse Richtung fahren zu lassen bis z.B. das Eingangssignal 1, 2, 3 .... auf TRUE ist ???


    SPrich fahr so lange bis das Signal kommt ???


    Habe hierzu leider nichts gefunden ....


    Bitte um Hilfe


    MFG

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


    kann es sein dass das IValue das I klein gehört also: iValue ?

    Ja danke habe ich falsch gemacht ;)


    Die Definition der Function ist an der Richtigen stelle oder gehört die unterhalb der Zeile:


    DEF KukaMatrixTest1 ( ) ???


    bzw. wo gehört diese hin im programm ??


    MFG
    Daniel

    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

    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

    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

    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 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

    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

    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

    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

    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