Beiträge von SafariO

    Kann mir jemand sagen, warum zwar die Variable gesetzt, aber die Warteschleife nicht verlassen wird?


    &ACCESS RVO1
    &COMMENT
    DEF rc_df_az ( )
    ; **************************************
    ; *** DEKLARATIONSTEIL VON VARIABLEN ***
    ; **************************************


    DECL KrlMsg_T msg
    DECL KrlMsgPar_T par[3]
    DECL KrlMsgOpt_T opt
    DECL KrlMsgDlgSK_T SK[7]
    DECL int nHandle, keynumber
    ;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)




    ; ************************************
    ; *** PROGRAMMIERUNG DIALOGFENSTER ***
    ; ************************************


    LOOP
    msg = {modul[] "RobsCafe", Nr 1, msg_txt[] "Was wuenschen Sie?"}



    SK[1] = {sk_Type #value, sk_txt[] "1"}
    SK[2] = {sk_Type #value, sk_txt[] "2"}
    SK[3] = {sk_Type #value, sk_txt[] "3"}
    SK[4] = {sk_Type #value, sk_txt[] "4"}



    ; -- Dialogmeldung mittels KrlDlg absetzen --
    nHandle = Set_KrlDlg (msg, par[], SK[], opt)


    ; -- Wenn die Meldung erfolgreich abgesetzt wurde (nhandle > 0), dann --
    IF (nHandle > 0) THEN


    ; -- Warteschleife bis Benutzer Meldung quittiert --
    while (Exists_KrlDlg(nHandle, keynumber))
    wait Sec 0.1
    endwhile


    ; ************************
    ; *** AUSFUEHRUNGSTEIL ***
    ; ************************

    SWITCH keynumber
    CASE 1
    A=1
    CASE 2
    A=2
    CASE 3
    A=3
    CASE 4
    A=4
    ENDSWITCH
    ENDIF
    ENDLOOP
    END


    Varum ist Greifpos etc. eigentlich ein Array ohne Werte im *.dat , wenn die Variable doch in jedem Schleifendurchgang neu berechnest? Da reicht doch 'ne POS-Variable in der Prozedur....


    Grüße,
    Michael


    Nun, da ich mehrere Regale habe, aus denen zu unterschiedlichen Zeiten unterschiedliche viele Sachen entnommen werden müssen. Ich habe gehofft, dass er sich so merkt, wie viele im jeweiligen Regal fehlen.
    Ist das falsch?

    Berechnung


    SZ = 0
    FOR RE=1 TO 5
    FOR SP=1 TO 4
    SZ=SZ+1
    GREIFPOS[SZ] = XGRUNDPOSITION
    GREIFPOS[SZ] = GREIFPOS[SZ].Z - 1080
    GREIFPOS[SZ].X = GREIFPOS[SZ].X *100
    GREIFPOS[SZ].Y = GREIFPOS[SZ].Y *80
    VORPOS[SZ] = GREIFPOS[SZ]
    VORPOS[SZ].Y = VORPOS[SZ].Y - 100
    HEBEPOS[SZ] = GREIFPOS[SZ]
    HEBEPOS[SZ].Z = HEBEPOS[SZ].Z + 20
    ENDFOR
    ENDFOR


    LIN WVORPOS[WSZ]
    LIN WGREIFPOS[WSZ]
    ;Greifer schließen
    LIN WHEBEPOS[WSZ]



    Dat-File:


    ;ENDFOLD (USER EXT)
    ;ENDFOLD (EXTERNAL DECLARATIONS)


    DECL GLOBAL POS VORPOS[20]
    DECL GLOBAL POS GREIFPOS[20]
    DECL GLOBAL POS HEBEPOS[20]


    DECL BASIS_SUGG_T LAST_BASIS={POINT1[] "GRUNDPOSITION ",POINT2[] "GRUNDPOSITION ",CP_PARAMS[] "CPDAT0 ",PTP_PARAMS[] "PDAT1 ",CONT[] " ",CP_VEL[] "2.0 ",PTP_VEL[] "100 ",SYNC_PARAMS[] "SYNCDAT ",SPL_NAME[] "S0 "}
    DECL E6POS XGRUNDPOSITION={X 35.8865891,Y 58.4513016,Z 344.405487,A -0.454435915,B 60.8919716,C -89.4869308,S 18,T 11,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
    DECL FDAT FGRUNDPOSITION={TOOL_NO 11,BASE_NO 11,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
    DECL PDAT PPDAT1={VEL 100.0,ACC 100.0,APO_DIST 100.0}


    DECL GLOBAL INT A=0


    ENDDAT


    Da ist es. Stimmt, SP und RE muss ich in die Berechnung einfließen lassen. Dann muss ich doch SP*100 in Klammern setzen, oder? - Also GREIFPOS[SZ].X = GREIFPOS[SZ].X + (SP *100) oder?

    Hallo!
    Ich muss das Thema nochmal vorkramen und hoffe, dass ich schnelle Hilfe bekommen kann.


    Es geht ebenfalls um ein Palettierprogramm, bei dem es darum geht, etwas aus einem Regal zu entnehmen. Irgendwie wehrt sich mein KUKA aber ...


    SZ= Schleifenzähler (das Programm soll zählen,wie viel aus dem Regal entnommen wurde)
    RE= Reihe (5 an der Zahl)
    SP= Spalte (4 an der Zahl)


    SZ = 0
    FOR RE = 1 TO 5
    FOR SP = 1 TO 4
    SZ = SZ+1
    GREIFPOS[SZ] = XGRUNDPOSITION
    GREIFPOS[SZ].X = GREIFPOS[SZ].X * 100
    GREIFPOS[SZ].Y = GREIFPOS[SZ].Y * 80
    VORPOS[SZ] = GREIFPOS[SZ]
    VORPOS[SZ].Y = VORPOS[SZ].Y - 100
    HEBEPOS[SZ] = GREIFPOS[SZ]
    HEBEPOS[SZ].Z = HEBEPOS[SZ].Z + 20
    ENDFOR
    ENDFOR


    LIN VORPOS[SZ]
    LIN GREIFPOS[SZ]
    ;Greifer schließen
    LIN HEBEPOS[SZ]


    Irgendwie meckert der schon bei XGRUNDPOSITION, obwohl ich diese Position als E6POS mit allen Koordinaten im Dat-File habe.
    Erkennt jemand das Problem?