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?


    Hello everyone!

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


    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,

    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.


    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.


    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]

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


    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!


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

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

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

    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.


    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!


    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:

    BAS(#VEL_CP, 1)
    FOR cnt=1 TO 10 STEP 1
       LIN_REL {y 100} C_DIS ;1meter sweep

    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?


    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.

    FOR Index = 1 TO 50
      LIN_REL {X 2} #C_DIS

    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

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

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

    ;valve is wired at $out[1] 
    ;take the LSB of the value

    One single movement in the robot program

    ptp $pos_act
    lin_rel{y 100} c_dis

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


    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.


Advertising from our partners