Bei Basekorrektur werden die Werte nicht auf die neue Base geschrieben...

  • Bei einer Basekorrektur werden die korregierten Daten nur im Singlestep auf die neue Base geschrieben im Automatik passiert dies nicht, obwohl auf diesem Roboter in anderen Programmen auch Basekorrekturen vorgenommen werden und es da problemlos funktioniert.


    Programmvergleiche haben keine Unterschiede aufgezeigt. Ein Syntaxfehler liegt auch nicht vor.


    Habt Ihr vielleicht ne Idee woran es noch liegen könnte, da die Anlage an sich sonst fehlerfrei arbeitet.

  • Schritt für Schritt zum Roboterprofi!
  • Danke für den Tip, aber ich fürchte es wird nicht helfen, da ein anderer Roboter das gleiche Programm abfährt mit dem selben Programmaufbau und da funktioniert es tadellos. Auch diese Programme wurden verglichen, ohne feststellbaren Unterschied. Es scheint irgend etwas anderes zu sein, wobei ich noch im dunklen tappe.


    Die anderen Basekorrekturen im Programm funktionieren komischerweise, nur diese nicht.

  • so hier nun das Programm bei dem es nicht funtioniert:


    INI;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P
    ;FOLD BAS INI;%{E}%V3.2.0,%MKUKATPBASIS,%CINIT,%VINIT,%P
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3
    BAS (#INITMOV,0 )
    ;ENDFOLD (BAS INI)
    ;FOLD A20 INI;%{E}%V3.2.0,%MKUKATPA20,%CINIT,%VINIT,%P
    IF ARC20==TRUE THEN
    A20 (ARC_INI)
    INTERRUPT DECL 6 WHEN $CYCFLAG[3]==FALSE DO A20(TECH_STOP2)
    ENDIF
    ;ENDFOLD (A20 INI)
    ;FOLD A10 INI;%{E}%V3.2.0,%MKUKATPARC,%CINIT,%VINIT,%P
    IF A10_OPTION==#ACTIVE THEN
    INTERRUPT DECL 4 WHEN $CYCFLAG[2]==FALSE DO A10 (#APPL_ERROR)
    INTERRUPT DECL 7 WHEN A_ARC_SWI==#ACTIVE DO A10 (#ARC_SEAM)
    INTERRUPT DECL 5 WHEN A_FLY_ARC==TRUE DO A10 (#HPU_ARC)
    INTERRUPT ON 5
    A10_INI ( )
    ENDIF
    ;ENDFOLD (A10 INI)
    ;FOLD GRIPPER INI;%{E}%V3.2.0,%MKUKATPGRIPPER,%CINIT,%VINIT,%P
    USER_GRP(0,DUMMY,DUMMY,GDEFAULT)
    ;ENDFOLD (GRIPPER INI)
    ;FOLD SPOT INI;%{E}%V3.2.0,%MKUKATPSPOT,%CINIT,%VINIT,%P
    USERSPOT(#INIT)
    ;ENDFOLD (SPOT INI)
    ;FOLD TOUCHSENSE INI;%{E}%V3.2.0,%MKUKATPTS,%CINIT,%VINIT,%P
    IF H70_OPTION THEN
    INTERRUPT DECL 15 WHEN $MEAS_PULSE[TOUCH_I[TOUCH_ACTIVE].IN_NR] DO H70 (6,CD0 )
    INTERRUPT DECL 16 WHEN $ZERO_MOVE DO H70 (7,CD0 )
    INTERRUPT DECL 17 WHEN $TECHPAR_C[FG_TOUCH,8]>0.5 DO H70 (8,CD0)
    H70 (1,CD0 )
    ENDIF
    ;ENDFOLD (TOUCHSENSE INI)
    ;FOLD USER INI;%{E}%V3.2.0,%MKUKATPUSER,%CINIT,%VINIT,%P
    ;Make your modifications here
    ;ENDFOLD (USER INI)
    ;ENDFOLD (INI)


    ;FOLD BASE_DATA[16]=BASE_DATA[4]:ISRA_KOR
    BASE_DATA[16]=BASE_DATA[4]:ISRA_KOR
    ;ENDFOLD


    ;FOLD PTP messpos Vel= 30 % PDAT2 Tool[1]:GREIFER Base[16]:EINBAU;%{PE}%R 4.1.7,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:messpos, 3:, 5:30, 7:PDAT2
    $BWDSTART = FALSE
    PDAT_ACT=PPDAT2
    BAS(#PTP_DAT)
    FDAT_ACT=Fmesspos
    BAS(#FRAMES)
    BAS(#VEL_PTP,30)
    PTP Xmesspos
    ;ENDFOLD
    [glow=red,2,300][/glow]


    und hier das Programm wo es funktioniert:


    INI;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P
    ;FOLD BAS INI;%{E}%V3.2.0,%MKUKATPBASIS,%CINIT,%VINIT,%P
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3
    BAS (#INITMOV,0 )
    ;ENDFOLD (BAS INI)
    ;FOLD A20 INI;%{E}%V3.2.0,%MKUKATPA20,%CINIT,%VINIT,%P
    IF ARC20==TRUE THEN
    A20 (ARC_INI)
    INTERRUPT DECL 6 WHEN $CYCFLAG[3]==FALSE DO A20(TECH_STOP2)
    ENDIF
    ;ENDFOLD (A20 INI)
    ;FOLD A10 INI;%{E}%V3.2.0,%MKUKATPARC,%CINIT,%VINIT,%P
    IF A10_OPTION==#ACTIVE THEN
    INTERRUPT DECL 4 WHEN $CYCFLAG[2]==FALSE DO A10 (#APPL_ERROR)
    INTERRUPT DECL 7 WHEN A_ARC_SWI==#ACTIVE DO A10 (#ARC_SEAM)
    INTERRUPT DECL 5 WHEN A_FLY_ARC==TRUE DO A10 (#HPU_ARC)
    INTERRUPT ON 5
    A10_INI ( )
    ENDIF
    ;ENDFOLD (A10 INI)
    ;FOLD GRIPPER INI;%{E}%V3.2.0,%MKUKATPGRIPPER,%CINIT,%VINIT,%P
    USER_GRP(0,DUMMY,DUMMY,GDEFAULT)
    ;ENDFOLD (GRIPPER INI)
    ;FOLD SPOT INI;%{E}%V3.2.0,%MKUKATPSPOT,%CINIT,%VINIT,%P
    USERSPOT(#INIT)
    ;ENDFOLD (SPOT INI)
    ;FOLD TOUCHSENSE INI;%{E}%V3.2.0,%MKUKATPTS,%CINIT,%VINIT,%P
    IF H70_OPTION THEN
    INTERRUPT DECL 15 WHEN $MEAS_PULSE[TOUCH_I[TOUCH_ACTIVE].IN_NR] DO H70 (6,CD0 )
    INTERRUPT DECL 16 WHEN $ZERO_MOVE DO H70 (7,CD0 )
    INTERRUPT DECL 17 WHEN $TECHPAR_C[FG_TOUCH,8]>0.5 DO H70 (8,CD0)
    H70 (1,CD0 )
    ENDIF
    ;ENDFOLD (TOUCHSENSE INI)
    ;FOLD USER INI;%{E}%V3.2.0,%MKUKATPUSER,%CINIT,%VINIT,%P
    ;Make your modifications here
    ;ENDFOLD (USER INI)
    ;ENDFOLD (INI)


    ;FOLD BASE_DATA[16]=BASE_DATA[4]:ISRA_KOR
    BASE_DATA[16]=BASE_DATA[4]:ISRA_KOR
    ;ENDFOLD


    ;FOLD GLAZING.KAROSSE_VERRIEGELN ;%{PE}%MKUKATPUSER
    BEREICH_VERRIEGELN(#KAROSSE)
    ;ENDFOLD


    ;FOLD PTP VOR_PKT Vel= 100 % H Tool[1]:GREIFER Base[16]:EINBAU ;%{PE}%R 4.1.7,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:VOR_PKT, 3:, 5:100, 7:H
    $BWDSTART = FALSE
    PDAT_ACT=PH
    BAS(#PTP_DAT)
    FDAT_ACT=FVOR_PKT
    BAS(#FRAMES)
    BAS(#VEL_PTP,100)
    PTP XVOR_PKT
    ;ENDFOLD



    ich kann leider nichts sehen, außer die Verrieglung der Karosse die aber keinen Einfluß haben sollte.

  • mach mal folgendes:


    ;FOLD BASE_DATA[16]=BASE_DATA[4]:ISRA_KOR
    BASE_DATA[16]=BASE_DATA[4]:ISRA_KOR
    ;ENDFOLD
    wait sec 0

    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.

  • Hey,


    die Verriegelung der Karosse wird vermutlich einen Vorlaufstop auslösen, und schon hast du deinen unterschied, mach es mal so wie WolfHenk geschrieben hat, halt mit WAIT SEC 0 einen Vorlaufstop erzwingen!!!

  • Das Thema hat sich wie von selbst erledigt, da der Roboter anders als der "Zwillingsroboter" das Meßergebnis von der SPS mit einem alten DB :aufsmaul: erhalten hat und somit nach der ersten von zwei benötigten Messungen schon die Position verlassen hatte und damit eine "0" anstatt des Korrekturwertes gesendet hat. Diese wurde dann folgerichtig auf die neue BASE geschrieben und somit erfolgte keine Verschiebung.


    Trotzdem vielen Dank für Eure Tips. :goodpost:

  • Code
    if ((roboter_vorhanden==true)and(SPS_Vorhanden==true)and(Anlage_Geht_nicht==true)) then
    SPS_IST_SCHULD=TRUE
    else
    Jemand_anders_ist_schuld=true
    endif

    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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now