MANY DIFFERNT LOADING DATA FOR A SINGLE TOOL

  • Hi! I'm worging with a 150 Kg. Robot and I have 4 different TOOLS. Two of them are grippers. Since I always filled the loading data for each tool now for the grippers they pick many different loads. This number of different loads exeeded the available number of tools so when those two tools bring the load it's loading data changes a lot. Is it possible/advisable to change "LOAD_DATA[N]=" during the program?

  • If your program uses Inline Forms (ILFs), then you must alter LOAD_DATA[ x ]. If your motions are "raw" KRL, you need to alter $LOAD.


    Inside every ILF motion command is a call to BAS.SRC which, among other things, sets $ACT_TOOL to the number of the tool selected in the ILF, and then sets $LOAD = LOAD_DATA[$ACT_TOOL]


    TOOL_DATA and LOAD_DATA are parallel arrays in $CONFIG.DAT. When an ILF motion is using Tool 11, the contents of TOOL_DATA[ 11 ] are assigned to $TOOL (the "live" TCP, XYZABC values), and the contents of LOAD_DATA[ 11 ] are assigned to $LOAD (the "live" payload data, mass, CoG, inertias).


    So, for an ILF program that has a gripper but multiple loads, you could simply use multiple Tools:

    Tool 1 : Gripper with no parts

    Tool 2: Gripper with one part

    Tool 3: Gripper with a different part


    In this scenario, TOOL_DATA 1,2, and 3 would all the the same, but LOAD_DATA 1,2 and 3 would each be different. So when picking up a part, you would program the approach with Tool 1, but the depart with Tool 2 or Tool 3. And during the dropoff, you would program the approach with Tool 2 or 3, and the depart with Tool 1. This approach is pretty typical.


    The alternative would be to use only one Tool, and dynamically change the LOAD_DATA entry for that tool number. Something like:

    Code
    PTP HOME
    LOAD_DATA[1] = EmptyGripperPayload
    PTP ApproachPick ; using Tool 1
    LIN PickPosition ; using Tool 1
    Close Gripper
    LOAD_DATA[1] = GripperWithPartPayload
    LIN DepartPick ; using Tool 1

    Of course, in this scenario, you would have to create your own LOAD variables in place of EmptryGripperPayload and GripperWithPartPayload.

Advertising from our partners