Posts by Anbid

    SOLVED


    I ended up using the SET_SYSTEM_DATA-function to change VelGain to the catalog value.

    All problems were fixed.


    Code
    ; Function:
    ; SET_SYSTEM_DATA(CHAR OWNER_NAME[16] :IN,CHAR OWNER_AXNAME[5] :IN,CHAR VAR_NAME[64] :IN,REAL VALUE :IN)
    
    SET_SYSTEM_DATA("DRIVE", "E1", "VelGain.PTP", 0.011)
    SET_SYSTEM_DATA("DRIVE", "E1", "VelGain.CP", 0.011)

    It's a Kuka motor used for endless rotary motion.


    As I mentioned in the first post, the catalog number is MG_64_KSP40 (MGS_64_110_35_S0). If that number isn't sufficient, please let me know how I should reference the catalog numbers.


    It has been updated to use external kinematics v 42.18.7 and I'm working in WV 6.0.9_Build0584.


    Default position window is 0.1 deg (default) which I have had success with on other projects using the same motor.

    Positioning time is 512ms (default) which also has been successful on other projects using the same motor.


    The only difference I can find in projects that work and this one is the difference in the catalog suggested VelGain value of 0.011 and the actual VelGain value of 0.0011.

    Hey!


    Info at the bottom (let me know what else you need)


    I'm having a lot of issues with an external axis of mine. When asked to move to a certain position programmatically, it will do the movement just fine, but stop and get a position error on ending the motion. The problem occurs no matter how I program the motion and with speeds as low as 20% rated and with with acc = 100). All machine parameters are set to default catalog values except transmission ratio, soft-limits and that the motor is set to endless.


    So far I've been recommended changing positioning window ($IN_POS_MA) and $TIME_POS, but none of these are that appealing process wise.


    The two remaining recommendations are drift compensation and controller tuning. The most plausible cause (in my opinion) would be the controller parameters, so I looked into that. I found that one of the control parameters (VelGain) differs from the catalog data by a factor of 10.

    The control parameters are all in the "CtrlE1.xml" file which is write-protected and clearly states at the top that the file is "Generated" and you should "NOT EDIT".

    Well, my guess is that I need to edit it anyway since the data is off.


    So, 2 questions.

    1) Do you agree, that the problem might be caused by the controller parameter?


    2) How would I go about changing these parameters?


    Thanks in advance!


    Info:

    Controller: KRC4

    KSS: 8.5.8

    Kernel system version: KS V8.5.465

    Rob: KR60HA_3

    External axis: MG_64_KSP40 (MGS_64_110_35_S0)


    Catalog VelGain value:
    0.011


    CtrlE1.xml VelGain value:

    0.0011

    Thanks for a fast reply.


    To the best of my knowledge it is. Atm i'm trying out:

    Code
    $Async_Axis = 'B0001'
    $OV_ASYNC = 75
    AsyPos.E1 = 720
       
    ASYPTP AsyPos ;Start rotation of roundtable
       
    WAIT FOR $Async_State == #Idle
    WAIT FOR TRUE
    $Async_Axis = 'B0000'


    I've tried both with and without a tick-mark in the "Asynchronous external axis" option of the "Menu / Configuration / Machine configuration" menu.


    EDIT:
    AsyPos is declared in the .dat file as:


    Code
    DECL E6AXIS AsyPos={A1 0.0,A2 0.0,A3 0.0,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}

    Robot: KR60HA

    External axis: MG_64_KSP40

    KSS: 8.5.8

    KS: 8.5.465


    I have searched the forum but can't find any conclusive answer as to how to move an endless axis past 180 degrees.


    I have an external axis that I've set to endless. Like many others I have experienced that when you jog the axis there is no problem going past 180 degrees while when you programmatically attempt to move the axis past 180 degrees it simply chooses the shortest route (the opposite direction than intended).


    I've tried:

    1) Moving to an E6POS with E1 = 180+, e.g. 720 deg

    2) ASYPTP {E1 ....} both with and without #AS_PROG


    Does anybody have a suggestion on how to do this?

    A simple trick to make it understand full rotations for absolute positions or maybe just a "start"-signal and then I can stop it based on an interrupt?

Advertising from our partners