Posts by diglo

    You all know that $IN[1025] and $IN[1026] have the special function to be always set to TRUE and FALSE.


    Today I mapped some I/O on those signals and got an error from the KRC.
    To remove the error, I had to remap the I/O block past the 1026th input bit.


    Do you know if there's a feature to disable this limitation and allow full mapping ranges?


    Diglo

    Hello everyone!


    I was asked if there was a way to read the motor temperature and I found a system variable which is called

    Code
    $MOR_GRP[1].$TEMPERATURE[1...9]


    Using the ROBOGUIDE simulator, the variable always reads zero.
    Unfortunately we have no fanuc robots in our workshop at this moment to test whether the variable actually reads the temperature, have you ever read that variable?


    Thenk you,
    diglo

    You may read the variable $USER_SAF, its TRUE when user is "safe", so when the safety fence is closed in AUT/EXT mode or when deadman is pressed in T1/T2 mode regardless of fence state.


    You mat also read the variable $SAFETY_SW. Its values are #PRESSED or #RELEASED. This is not a safety-related feature.


    diglo

    On the big connector to the robot basement are carried 6 tri-polar supplies for the 6 motors and 6 bi-polar connections for each one of the brakes.


    Once happened to me that one of the pins in that connector on the robot side was pushed inside, making no contact withe the plug, so that brake was never releasing. I had to unmount and repair the connector.
    It's happened on a brand new robot, so inspect both connectors very carefully.


    diglo

    Hi everyone!


    Which kind of SPLINE is the KRC4 using to interpolate the points?


    I have made these conclusions:


    Hermite? NO, because the tangent at each point needs to be specified and we don't pass that info in the spline instruction
    Bezier? NO, because it's not designed to interpolate (pass though) the point set.
    Catmull-Rom? I have no idea
    Natural Cubic? Possible, because it's interpolating the point set and does not require other parameters
    B-Spline? NO, because it's not interpolating the point set.


    What do you think?

    The easistest way is:
    1) goto mada\machine.dat and manually set the joint angles
    $AXIS_HOME[1]={A1 0.0,A2 -154.000,A3 131.000,A4 0.0,A5 22.5000,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
    $AXIS_HOME[2]={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
    $AXIS_HOME[3]={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
    $AXIS_HOME[4]={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
    $AXIS_HOME[5]={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}


    You may also set the positioning tolerace in degrees for each joint:
    E6AXIS $H_POS_TOL={A1 2.00000,A2 2.00000,A3 2.00000,A4 2.00000,A5 2.00000,A6 2.00000,E1 2.00000,E2 2.00000,E3 2.00000,E4 2.00000,E5 2.00000,E6 2.00000}



    2) go to steu\mada\machine.dat and link each position to a $OUT[] signal. FALSE=DISABLED
    SIGNAL $IN_HOME1 $OUT[2025]
    SIGNAL $IN_HOME2 FALSE
    SIGNAL $IN_HOME3 FALSE
    SIGNAL $IN_HOME4 FALSE
    SIGNAL $IN_HOME5 FALSE


    In my case, $out[2025] is set each time the robot is in home position without adding load to the SPS.


    diglo

    Verify that the power and signal connections are tight and firm to the robot basement and to the controller.
    Also ensure that the connectors are not damaged and dont have bent or retained pins!


    diglo

    To cancel the selected program and free the robot interpreter (gray R):

    Code
    cwrite($cmd,STAT,MODE,"CANCEL 1")



    To select the "main()" robot program (yellow R)

    Code
    cwrite($cmd,STAT,MODE,"RUN /R1/main()")


    To start the program you need the $EXT_START signal in EXT mode or play fwd button in AUT mode.


    diglo

    Fubini, I understand what you say and if it's true, then it's a big limitation of KUKA! The set of motions is already execuded without any deceleration, it's just slower than the corresponding whole movement!


    I will try with spline, but the aim of this piece of program is to use a laser sensor to search for an edge without having to BRAKE on the interrupt point, in order to save cycle time.
    The position is saved with an interrupt, but the movement is interrupted on the next segment, allowing a CP motion towards the next point of the cycle.
    I already implemented that, but i wanted to save more cycle time speeding up the search sweep!


    diglo

    Hello fellow robot people!
    I have a question for you: I have implemented a simple linear motion made of a series of small segments, like this:


    Code
    BAS(#VEL_CP, 1)
    $APO.CDIS=100
    FOR cnt=1 TO 10 STEP 1
       LIN_REL {y 100} C_DIS ;1meter sweep
    ENDFOR


    Although the speed is set at 1m/s, the movement is executed at a lower speed, the variable $vel_act says something like 0.3m/s.
    Why that?


    diglo

    Than you for the answers!


    SkyeFire, the "small steps and trigger" is the solution i'm currently using but i'm looking for a different one...
    I'm using a code similar to this to generate failry precise 12ms pulses on the ethercat I/O.

    Code
    FOR Index = 1 TO 50
      TRIGGER WHEN DISTANCE=1 DELAY=-12 DO $OUT[1]= TRUE
      TRIGGER WHEN DISTANCE=1 DELAY=0 DO $OUT[1]= FALSE
      LIN_REL {X 2} #C_DIS
    ENDFOR


    SPS cycle time is NOT 12ms! SPS cycle time depends on the actual code executed and is not constant, i have machines with a lot of code and the SPS is running at 24Hz, other machines are lighter and the SPS cycles a 200Hz.


    Today i tested this, using the system variable $distance, i'm toggling $out[1] each 0.5mm and if the speed is low enough i can get a precise output, the problem is that it's still relying on the SPS.
    (If there's a way to connect a system variable directly to the I/O, please tell me how to do that :icon_wink:)


    In the $config.dat

    Code
    SIGNAL dist_out $out[101]  TO $out[132]


    In the SPS (mine is empty and runs at 700Hz)

    Code
    dist_out=$distance*2
    ;valve is wired at $out[1] 
    ;take the LSB of the value
    $out[1]=$out[101]


    One single movement in the robot program

    Code
    bas(#initmov,0)
    bas(#tool,0)
    bas(#base,0)
    ptp $pos_act
    bas(#vel_cp,1)
    lin_rel{y 100} c_dis


    I'll ask KUKA for the "fast send driver" maybe will be useful in other applications!


    diglo

    Hi everyone!


    Do you know if theres'a way or a tech package from KUKA which allows to pulse a digital output each some millimeters of travel of a motion (i.e. to apply stitches).


    In example: i would like to pulse a solenoid each 2millimeters (50times) times during a LIN_REL{X 100} motion, without having to break the movement into small 2mm steps and using triggers and (almost) regardless of the speed.


    The duration of pulse is not very important, but the rising edge of pulse should be precisely coupled with the movement.


    diglo

Advertising from our partners