Posts by capital9

    Fubini


    There was a problem with transformation of the Linear track, basically there was no standared transformation for linear track. when i changed the linear tracks transformation into standard the problem did not occur after that. so possibly robot could have been wall mounted configuration, which is weird as the robot was never ordered like that from KUKA.


    But hey i am having problem making the linear track as asynchronous axis.


    1) First thing i tried is disable transformation and activated asychronous axis for E1. After safety configuration, i always end up having following errors:

    KSS12032 Position deviation motion controller<>safety controller

    KSS00404 Safety stop


    this says there is some mismatch in configuration between safety controller and machine data and suggest me to update the safety configuration.


    i figured out the difference was with $ET1_TFLA3.A and $ET1_TFLA3.C

    i did safety configuration to match them yet the error stays.


    2) Another thing i tried was enable coupling of the linear axis and making the linear axis asynchronous, and disabling the transformation. this helped me to get rid of position deviation error but the safety stop error was not cleared.


    i believe the reason lies within transformation of linear track and robot. but i could not figure out how to get proper configuration. or it could be completely different things.

    Okami i read that error message. i am using a 35 kgs tool and robot supports 150 kg. i have defined the tool as it should be like other cases. it was working for all the 3 touch up point until the last one.


    even after defining the tool it gives error that means there is something i am missing not because of weight but because of possibly something else maybe linear track/KL4000 (E1) axis but i am not sure what is the actual reason.

    Hello guys,



    I am working with a KRC5 V 8.7.4 with KR150 robot and a linear track KL4000(external axes).



    I was calibrating Tool for which I defined load data of tool and defined the location for Centre of mass and their inertias. Then I was defining transformation using XYZ 4 point method. I successfully touched up 3 points from 3 direction without any errors, then while doing the last touch up point, there was “command gear torque A1” with error code KSS01073. Because of the same error none of the axis can jogged not even the external axes/ linear track. I tried the start-up mode and still get same error.



    Is there any particular reason for this? Since all the other 3 touch up points were fine with the same load data how come the last one has problem? Or is this because of some other reason?

    Hello Guys,


    I have been working with MG_40_80_45_S0 motor along with KSS 8.6 , and I was looking for a variable for external axes so that we can control the brake of motor. Like if we want to release the brake there must be a variable that will control it.


    Moreover is it possible for kuka motor to have some feature that will let the motor rotate freely, then we apply brake on the motor with certain variable. Then motor would stop and wont let you rotate motor by any external mean except for the variable itself.

    hi guys,

    do anyone here happen to have the experience with the KUKA -HIWIN communication.


    i am working with KRC4 8.6.9, and Hiwin E1 servo drive which is connected to the motor. so my issue actually is not about the communication, i have been able to perform communication so that control word and status seems to work fine, i have also performed homing with the kuka as controller but the actual PTP motion i have not been able to do so. i have followed the sequence that is mentioned in the manuals, for homing it works but for position mode/ CSP mode it does not.

    so if anyone have nay idea regarding those please feel free to share!

    my thought is that there is not much to go on. "it does not work" does not describe the issue. when dealing with program issues, common approach is to post code for review. maybe there is something in SPS like this:


    Code
    IF $MODE_OP==#T2 THEN
      E4Relative()
    ENDIF 

    there is no code in sps sub like that, also i removed all the code that would affect the external axis from SPS.sub but some how it still does that skipping.

    we are now trying different structure of program to run the motor. actually, this happens for certain cases only, not for all cases even though the code are same for all cases, so now we are trying a different approach to program, lets hope it goes fine.


    also setup variable overview page with key things so you can see the values of important things. that includes axis state, axis position, start flag, position increment value etc.



    i have no idea what that means... why is there discrepancy in units (degree /meter). is this linear or rotary axis? why is there a need to reset position to zero and how do you keep track of that?

    we did check the positions, even the program has


    ASYPTP point

       WAIT FOR $ASYNC_STATE==#BUSY ; if motor does not move it will wait in this line.

       WAIT FOR $ASYNC_STATE<>#IDLE ;TO ENSURE THE MOTOR HAS STARTED

       WAIT FOR $ASYNC_STATE<>#BUSY ;TO ENSURE MOTOR HAS COMPLETED THE MOTION.


    waiting for the program to be busy then not idle then not busy, it goes through all the lines, probably that means it just thinks motor moved and reached its destination and then stopped.


    motor is Rotatory axis which uses degrees, because the motor was made as an endless axis as there was need of coupling and decopuling which i was not able to do it in other axis mode, only in endless mode. And coupling/ decoupling was needed to reset the motor to zero. it does the reset every 1.79 m because the application requires it to be like that.

    panic mode  SkyeFire


    hey guys i am summoning you here,

    lets recap this thread little bit, so there was a problem of skipping of motion in Automode and external mode but not in the T2 mode, code can be found up above in the thread,


    SkyeFire gave an excellent solution regarding this, but it still did not work, the skipping kept on happening randomly like after 4/5 or even after 10 loops. so i went throug the whole program found out there was ASYPTP motion command running all the time in SPS sub.


    DEF  E4relative ( )

    E6AXIS E4_relative

    E4_relative=$AXIS_ACT

    $VEL_EXTAX[4]=100

    $ACC_EXTAX[4]=100

    $OV_ASYNC=100


    if (($ASYNC_STATE<>#BUSY) and (E4start_REL== true)) then

    E4_relative.E4 = E4_relative.E4 + E4_input_REL

    endif


    ASYPTP E4_relative


    END


    There was this E4relative(), that was running in the SPS sub, E4_relative was the common name used which was not intentional, it was a mistake, i am suspecting the problem I mentioned in this same thread occurred because of this. as the SPS sub is running all the time the motor always does ASYPTP motion, since the variable is same it acquires data depending on the speed of program and SPS sub. and that would make sense if it skips the motion, i am going to make a test again soon removing the these from SPS and see if that works.


    but still the mystery is that skipping doesn't happen in T2 mode, even though same thing runs in sps sub. I just wanted quick reviews regarding this issue, what is your thoughts regarding the problem?

    have there been any similar mysterious problem for you guys too ?

    panic mode

    In the image attached, there is an example that says external axes i.e. motor can be moved synchronously or asynchronously. i am not talking about asynchronous motion, but if the external axes are made synchronous would they move with PTP, i think they do,


    but it does not mention anything about SLIN or LIN motion, so i am asking can they move with SLIN or LIN command as well.

    SkyeFire

    Stop point 1 and 3 are fine they do execute well.


    About stop point 2, when i checked the e4_relative.e4 just before it starts to move the value was 1.05 that means it went through the IF statement. but again mysteriously skipped the motion. Also i did add monitoring variable that goes true inside the IF statement of stop point 2 , the monitoring variable went to true as well.


    This is executing in robot interpreter.


    ASYPTP point

    WAIT FOR $ASYNC_STATE<>#IDLE ; ensure motion starts

    WAIT FOR $AYNNC_STATE<>#BUSY ; motion complete, or cancelled


    what if do it like this:


    ASYPTP point

       WAIT FOR $ASYNC_STATE==#BUSY ; if motor does not move it will wait in this line.

       WAIT FOR $ASYNC_STATE<>#IDLE ;TO ENSURE THE MOTOR HAS STARTED

       WAIT FOR $ASYNC_STATE<>#BUSY ;TO ENSURE MOTOR HAS COMPLETED THE MOTION.


    About this i can check if that works, it will take few days or week probably.


    How do i use SPTP or LIN for external motor, it always gives me error regarding the frame, pos?

    Hey guys,

    I have been working with KRC4 8.6.6, it is connected to 8 external motors , 3 motors are used as robot motor while 5 are asynchronous external axes.

    To make it clear i have attached a picture regarding the connections. All the motors works fine except for one which is E4 motor, E4 motor is endless type and uses degrees for position measurement and this motor is also coupled because its position has to reset(coupling/decoupling method) to zero at certain location. For this motor 1 degrees is 1m.


    This motor has 3 different type of motion depending in situation and this motions are under conveyor_auto2ok(). This sub program is called under test( ), as you can see in below code.

    Inside conveyor_auto2ok() program, there are 3 stop_points, stop_point 1 and 3 are working perfect, but somehow stop_point 2 doesnt work as it should.


    the exact problem is in the external mode stop_point 2 motion is missing in the loop of test(). By the way this skipping of motion does not happen in T2 mode, happens only in external mode.

    when the program runs for first time it completes conveyor_auto2ok(1), then moves toward conveyor_auto2ok(2) and conveyor_auto2ok(3), all the motion are completed in first round, but then comes loop where it should repeat conveyor_auto2ok(2) and conveyor_auto2ok(3) but for some unknown reason it skips through conveyor_auto2ok(2) and only completes conveyor_auto2ok(3).


    if i do the same program in T2 mode this does not happen it works nice and smooth. but not in external mode. is there any explanation for such behaviour. i have tried to check the position variable that commands motor to move to certain position i.e E4_relative.E4 . E4_relative.E4=1.05 just before motion command and after motion command. but there is no movement from motor at all.


    is there anything that i should know about ASYPTP motion command? i dont understand how motion works in T2 mode but not in External mode.




    ======================= test.SRC ======================

    DEF test( ) ; main program for testing the conveyor/E4 motor (Asynchronous)



    conveyor_auto2ok(1)

    asycancel 4

    wait sec 2


    loop


    conveyor_auto2ok(2)

    wait sec 2

    conveyor_auto2ok(3)

    asycancel 4


    endloop


    END


    ======================= test.SRC ======================



    ==========================conveyor_auto2ok.SRC===================


    DEF conveyor_auto2ok(stop_point:in)


    INT stop_point

    E4_relative=$AXIS_ACT

    $OV_ASYNC=50

    wait sec 0


    if stop_point==1 then


    E4_relative.E4 = 5;


    wait for $async_state<>#busy

    ASYPTP E4_relative ;motion command for conveyor.

    wait for $async_state<>#busy


    Reset_2()


    endif



    if stop_point==2 then


    if pallet_width_HMI>1200 then ; position according to pallet size.

    E4_relative.E4 = E4_relative.E4 + 1.05 ;positions are in degrees.

    else

    E4_relative.E4 = E4_relative.E4 + 0.78 ;positions are in degrees.

    endif


    wait sec 3

    ASYPTP E4_relative ;motion command

    wait for $async_state<>#busy


    endif


    if stop_point==3 then


    N=N+1

    if (N<13) then

    E4_relative.E4 = + 1.79; back to 0

    else

    E4_relative.E4 = 1.79-0.01; back to 0

    N=0

    endif


    ASYPTP E4_relative ;motion command

    wait for $async_state<>#busy

    Reset_2() ;reset subprogram resets to zero after reaching the final position.

    asycancel 4 ;just incase to avoid the extra movement


    endif


    END


    ==========================conveyor_auto2ok.SRC===================

    JKPNEWBIE have you checked all the setting processes are ok, are there equal amount of bits, bytes, words defined. how about the right version of bridge terminals? there should be primary and secondary sides, have you defined them in right way? what is the communication happenning between ? KRC4 to KRC4 or something else?


    looks like primary side is not working, check the secondary side as well if it is working. also check the inputs 201 202 and 203 if there is any signal comming or going through.

    /////// SOLVED ///////


    Byte mapping errors were there because there were 3 signals which were automatically there after adding the device (EL66XX), the signal names are :

    ---SYNC inputs External device not connected

    ---SYNC inputs TxPDO state

    ---SYNC inputs TxPDO toggle

    when they were connected to input signal on the both side of ethercat device (which in my case were KRC4 both ways).




    JKPNEWBIE check that above message try to disconnect bridge terminal (EL6695) from whole project software and hardware side, then step by step connect it then check if you get that input that are mentioned above, they are supposed to be connected to input as well which will eventually clear the error.

    Mangesh Shenavi if robot motion stops then, $robot_stopped = true

    if robot is moving then, $robot_stopped = false


    if robot_running_with_program == false then

    if $robot_stopped == true then

    $TIMER_STOP[1]=true

    endif

    endif

    robot_running_with_program, define this variable in config.dat, make it go true when robot program is running and if false turn it off. then use above code in SPS sub and you have to try everything by yourself, try to understand the behaviour of your own program and robot system variable.

    thankyou very much for the idea,

    its not like i dont read those manuals, manuals are standard explanation.

    Manuals cant generate a good idea like you did for this.

    but anyways thankyou again,

    that way i can try to fix some problem, if i cant fix it maybe i will summon you again.

    hey guys,

    I am using KRC4, KSS 8.6.8


    i have a question regarding timer in KUKA.

    i just found out that even if the Timer is started in Robot program, the timer will continue even when the robot program stops.


    lets say,

    $timer[1]=0

    $timer_stop[1]=false


    wait for $timer[1]>10000


    $timer[1]=0

    $timer_stop[1]=true


    so if i run this program timer will basically stop after 10000 ms.

    but what if the program is somehow forced to stop by mean of external button or some emergency stop before 10000 ms.

    the timer will keep on going all the time.


    so i was looking for a solution where the timer stops when the robot program stops.

    can anyone help me with it?

    if end_pallet_signal==true then


    msg = {modul[] "MyTech", Nr 7, msg_txt[] "Do you want to quit? "}


    SK[1] = {sk_Type #value, sk_txt[] "yes"}


    SK[2] = {sk_Type #value, sk_txt[] "no"}



    nHandle = Set_KrlDlg(msg, par[], SK[], opt)


        IF (nHandle > 0) THEN


          while (Exists_KrlDlg(nHandle, keynumber))


              wait Sec 0.1


          endwhile



          switch keynumber


              case 1


                   goto start_of_program



              case 2


    end_pallet_signal=false


                   goto continue_prog


          endswitch


        ENDIF



    endif





    Above code works for me fine. tried several time to make it work.

    i just follwed the kuka manual and thats it, but i still dont understand is how is that keynumber related to options (yes or no)

    hey guys,

    i am working with KRC4, KSS 8.6.8


    yesterday i went through robot forum looking for generating a dialog message and found this code would do the work.

    MsgDialog(,"Do you want to quit program?",,,"No","Yes")


    so when i run the program i get this message 'do you want to quit program' and option are YES /// NO .

    if i press yes the program continues and ends the program as i have programmed. so i have no problem with yes option

    but pressing no would also lead me to same result, how can i make a condition so that when NO is pressed it does something else.

    for example:


    if end_pallet_signal==true then ; end button pressed then it continues

    MsgDialog(,"Do you want to quit program? ",,,"No","Yes") ; dialog box appears option yes or no

    $out[900]=false ; if yes it continues

    goto start_of_program

    endif


    for above program i want to make it so that when No is pressed then $out[900]= false and goto some where else.


    i went through the manual but coulnot follow the example.


    help would be appreciated. thanks in advance.

Advertising from our partners