Posts by robot-cnc

    Hello!

    I face with a situation on a Kuka KR150-2 KRC2, KSS 5.6.6. When try to jog in manual mode T1, at first deadman switch press Interpreter I become green and allow to jog the robot axis, but when next one trial interpreter icon remain red I, and robot cannot be moved, even driver relay is heard that been activated. That happen when using white long deadmans, if is used the white button the interpreter is activated and axis can be jogged.

    It could be a matter of KCP hardware or is a software error somewhere?

    The error message is Drives contactor off, intermediate circuit loaded , code 200.


    Thank you !

    Hi

    I wish to know if is normal Kula robot arm to have some shaking when moving on a short toolpath code line C_DIS, milling a curved shape, if feed rate is more than 3000mm/min.

    I think is from need to brake at each end and start on short curved toolpath.

    Except low feedrate, what else could make movement smooth?

    Is a krc4 kss 8.3.19.

    Thanks

    Did you measure with meter the actual voltage on EK1100-EL4004 on it's output, when you change the variable for the speed?

    yes, and is zero V.

    Beckhoff EL4004 is new and is ok.

    This is why I thought is a matter of syntax program that do not match and not sending to EL4004, right voltage in range 0-10V.

    Hi Skyfire,


    and what about first two opinions above?

    I cannot understand how worked for DannyDJ.


    The matter is RPM is variable, so allocation value 0%-100% should happen function of programmed RPM, therefore a math formula is a must, but PanicMode sugestion is contrary:


    $ANOUT[1]=SET_RPMs/MAX_RPMs or must add also

    $ANOUT[1]=1, meaning both code lines ?

    Hi !


    I am trying to transform a spindle speed RPM as an analog output from Kuka program to a Beckhoff Ethercat module EK1100-EL4004 ( 0-10V, 12 bit) to manage analogical command on spindle inverter, according with RPM speed inserted in program with a voltage between 0-10V. Kuka system is KSS 8.3.18.

    I have fallowing syntax, one, two three.jpg , I tried one with two combination but didn't work, spindle try to rotate but do not run properly. Then I read that $ANOUT[1]= cannot be a math formula, just -1 to 1, which means probably -100%...0%....100% scale, so $ANOUT[1]=1 maybe the correct synatx???

    Can you confirm me that?

    Or maybe there is another syntax variant:


    $ANOUT[1]=VOLTAGE, WHERE VOLTAGE IS CALCULATED AS IN spindle_on()

    $ANOUT[1]=1


    I would appreciate your help !

    Thank you

    Code that works :


    DEF NONAME1()

    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )

    INTERRUPT ON 3

    INTERRUPT DECL 10 WHEN $IN[6]==TRUE DO STOP_MOVE()

    $APO.CDIS = 0.5000

    BAS (#INITMOV,0)

    BAS (#VEL_PTP,20)

    BAS (#ACC_PTP,20)

    $BASE=BASE_DATA[1]

    ;$BASE={X 2000, Y 0, Z 1200, A 90, B 0, C 0}

    $TOOL=TOOL_DATA[1]

    ;$TOOL={X 503.173, Y 1.337, Z 101.069, A 0, B 90, C 0}

    $OUT[1]=TRUE

    $OUT[3]=TRUE

    WAIT FOR $IN[6]==FALSE

    $advance=3

    $VEL.CP=0.167

    INTERRUPT ON 10

    PTP {A1 0.000, A2 -90.000, A3 90.000, A4 0.000, A5 0.000, A6 0.000, E1 0, E2 0, E3 0, E4 0, E5 0, E6 0}

    PTP {A1 3.745, A2 -90.330, A3 101.473, A4 -113.300, A5 26.474, A6 115.693, E1 0, E2 0, E3 0, E4 0, E5 0, E6 0}

    LIN {X 0, Y 0, Z 10, A 110.424, B 0, C 180} C_DIS

    LIN {X 0, Y 0, Z 0, A 110.424, B 0, C 180} C_DIS

    LIN {X 731, Y 0, Z 0, A 130.502, B 0, C 180} C_DIS

    LIN {X 731, Y 243, Z 0, A 133.014, B 0, C 180} C_DIS

    LIN {X 0, Y 243, Z 0, A 110.424, B 0, C 180} C_DIS

    LIN {X 0, Y 0, Z 0, A 110.424, B 0, C 180} C_DIS

    LIN {X 0, Y 0, Z 10, A 110.424, B 0, C 180} C_DIS

    PTP {A1 0.000, A2 -90.000, A3 90.000, A4 0.000, A5 0.000, A6 0.000, E1 0, E2 0, E3 0, E4 0, E5 0, E6 0}

    $OUT[1]=FALSE

    $OUT[3]=FALSE

    INTERRUPT OFF 10

    END


    DEF STOP_MOVE()

    INTERRUPT OFF 10

    BRAKE

    WAIT FOR $IN[6]==FALSE

    WAIT SEC 3

    INTERRUPT ON 10

    END


    Thank you all !

    Like that. What about red instructions from main program , remain there .



    DEF NONAME1()

    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )

    INTERRUPT ON 3

    INTERRUPT DECL 10 WHEN $IN[6]==TRUE DO STOP_MOVE()

    INTERRUPT ON 10

    .........................................

    INTERRUPT OFF 10

    END


    DEF STOP_MOVE()

    INTERRUPT OFF 10 ; deactivate interrupt

    BRAKE

    WAIT FOR $IN[6]==FALSE

    WAIT SEC 0.2

    INTERRUPT ON 10 ; reactivate interrupt

    END

    One more thing always should be done:

    switch off the interrupt when entering interrupt service routine, and switch on just before leaving it.

    Just when using Global Interrupt with outside subroutine from main program or even when using Interrupt simple declared with subroutine in main program, as above?

    yes, that is what code without RESUME would look like. and that should do the trick except on start. because on start first transition is non-existent(your interrupt is looking for TRUE on input 6 and that is already TRUE). so you need to work around that initial case. for example add command

    WAIT FOR $IN[6]==FALSE

    just after interrupt on...


    that will make robot wait first time.... and after that interrupt will take care of it.

    Thank you Panic, will try that.

    You mean for pause and continue such a variant:


    DEF NONAME1()

    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )

    INTERRUPT ON 3

    INTERRUPT DECL 10 WHEN $IN[6]==TRUE DO STOP_MOVE()

    INTERRUPT ON 10

    .........................................

    INTERRUPT OFF 10

    END


    DEF STOP_MOVE()

    BRAKE

    WAIT FOR $IN[6]==FALSE

    WAIT SEC 0.2

    END


    And this interrupt of program (pause) will occur at any moment while all program running ?


    Would make sense to think on IF conditionality to introduce instead in sps.sub?

    PLC loop section for ex.


    I am thinking that postprocessor that write my src files should be setted to automatically write in each src file, usually being many. So, is excluded to manually do all these instructions .

    the scope is untill spindle reach up working frequency, my IN[6] is true, when reach target frequency, for ex. 50 hz, IN[6] become false.

    While IN 6 is true I want robot don't move, when is false , spindle run on 50hz, robot can move.

    That means eveen when spindle stop from any error , robot will stop not keeping frequency of 50 hz cause will decrease to 0

    Hi,

    Can you check if my INTERRUPT 10 is well declared in main program also if subroutine is ok?


    Thank you.






    DEF NONAME1()

    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )

    INTERRUPT ON 3

    INTERRUPT DECL 10 WHEN $IN[6]==TRUE DO STOP_MOVE()

    INTERRUPT ON 10

    $APO.CDIS = 0.5000

    BAS (#INITMOV,0)

    BAS (#VEL_PTP,20)

    BAS (#ACC_PTP,20)

    $BASE=BASE_DATA[1]

    ;$BASE={X 2000, Y 0, Z 1200, A 90, B 0, C 0}

    $TOOL=TOOL_DATA[1]

    ;$TOOL={X 503.173, Y 1.337, Z 101.069, A 0, B 90, C 0}

    $OUT[1]=TRUE

    $OUT[3]=TRUE

    $advance=3

    $VEL.CP=0.167

    PTP {A1 0.000, A2 -90.000, A3 90.000, A4 0.000, A5 0.000, A6 0.000, E1 0, E2 0, E3 0, E4 0, E5 0, E6 0}

    PTP {A1 3.745, A2 -90.330, A3 101.473, A4 -113.300, A5 26.474, A6 115.693, E1 0, E2 0, E3 0, E4 0, E5 0, E6 0}

    LIN {X 0, Y 0, Z 10, A 110.424, B 0, C 180} C_DIS

    LIN {X 0, Y 0, Z 0, A 110.424, B 0, C 180} C_DIS

    LIN {X 731, Y 0, Z 0, A 130.502, B 0, C 180} C_DIS

    LIN {X 731, Y 243, Z 0, A 133.014, B 0, C 180} C_DIS

    LIN {X 0, Y 243, Z 0, A 110.424, B 0, C 180} C_DIS

    LIN {X 0, Y 0, Z 0, A 110.424, B 0, C 180} C_DIS

    LIN {X 0, Y 0, Z 10, A 110.424, B 0, C 180} C_DIS

    PTP {A1 0.000, A2 -90.000, A3 90.000, A4 0.000, A5 0.000, A6 0.000, E1 0, E2 0, E3 0, E4 0, E5 0, E6 0}

    $OUT[1]=FALSE

    $OUT[3]=FALSE

    INTERRUPT OFF 10

    END


    DEF STOP_MOVE()

    BRAKE

    WAIT FOR $IN[6]==FALSE

    WAIT SEC 0.2

    RESUME

    END

    As I remember Powermill use a xml file were is configured robot cell, there you should find setted orientations for Tool and for Table Base too.

    Also , look in Robot Setup/Measure/Tool and ExternalKinematic-Root Point - Base 17- numerical input , if values of orientations A,B,C match with those from Powermill xml.

    If not, correct them to suit each other.

    You have wrong Base Frame orientation on table , is like z+ is toward ground not up. Check C rotation value on BASE 17 numerical input, if 0 try to put 180, if 180 try with 0.


    Otherwise it could come from spindle orientations too.

    What program use you for program generation?


    You must have same base orientations between those from program with those in real robot.