Tool coordinates questions

  • I am getting ready to change the current tool out for a different tool on a ZZX165U D controller. I looked through the Aux settings and noticed that Aux 0304 , 0305, 0405 don't have any data listed for the old tool. The Qtool setting is also off, which I thought should be on. I have values for the old tool dimensions in x, y, z when I do a list/l command. The original tool was set up by an integrator. My question is shouldn't there be data in the aux settings as well or I am totally misunderstanding. When I change to the new tool, I need to start with Aux 0405 and define the new TCP, correct??? Any help in getting me in the right direction would be greatly appreciated. I have read the manuals but still not sure. AS language is used on this robot as well.

  • EOAT is always a 'cloudy' area in the Kawasaki as there is much flexibility within the controller setup and configurations as opposed to being 'forced' to set something.

    I really wish when using Kawasaki, this topic is firmly understood as it could lead to disastrous consequences if not fully understood.

    This is no fault of your own, Kawasaki documentation and training do not sufficiently cover this either.


    So in short order:


    Kawasaki controllers have 2 programming conventions:

    - BLOCK

    - AS


    Kawasaki controllers are usually supplied as default with a system switch turned on:

    - QTOOL ON


    Kawasaki controllers can operate quite successfully mixing BLOCK and AS conventions.

    Now it you are using mixed conventions, QTOOL settings need to be controlled appropriately.


    If you are only using one convention permanently, then QTOOL should be set to the applicable condition, either ON for BLOCK or OFF for AS.


    The key points to remember here are:


    1. QTOOL ON - Generally used for BLOCK programming conventions.

    - Uses Aux Func 0304 Tool1 to Tool9

    - Selecting a Tool no. (A and TOOL keypad button) when in tool interpolation uses Aux 0304 values.

    - This Tool no. is stored within the BLOCK programming step when recording a position.

    - If changing tools inside BLOCK is used, then you would simply select the required Tool no.


    2. QTOOL OFF - Generally used for AS programming conventions

    - Uses something known as Tool0 (but you never see/hear anyone speak about this).

    - TOOL command is used to directly apply an XYZOAT value, or use a transform location to set Tool0.

    - If changing tools inside AS, this requires TOOL command to be used.


    3. Now the bonus round - You are using D Controller.

    QTOOL ON will display Tx number T1-T9 in Tool interpolation icon (using Aux func 0304 Tool1-Tool9).

    QTOOL OFF will display T0 in Tool interpolation icon (using AS TOOL command to use Tool0).


    Check out the following thread, as this may be of interest:

    Tool mode motion incorrect, need hints on diagnostics & correction - Kawasaki Robot Forum - Robotforum - Support and discussion community for industrial robots and cobots (robot-forum.com)


    Also look at the video I posted in #8.

    The Qtool setting is also off, which I thought should be on. I have values for the old tool dimensions in x, y, z when I do a list/l command. The original tool was set up by an integrator.

    This makes total sense and tells me you are using AS and not BLOCK and the above is correct.


    1. All you would need to do is to setup another transform location in the location register and then use the TOOL command to set those values.

    2. Or you could directly use the TOOL command to use entered XYZOAT values instead.

    3. Aux Func 0304 values are not applicable.

  • How are you intending to get the applicable XYZOAT values into the controller for the new tool?

    Using Aux 0405 or using CAD data?


    If you are using aux func 0405, I would recommend:

    - Turn QTOOL ON

    - Set the Tool1.

    - Teach the TCP and store the values for Tool1

    - Then create location using keyboard - POINT new_tool = TOOL

    - Turn QTOOL OFF.

    - Then use TOOL comand to set tool - TOOL new_tool


    Using this method, if someone buggers with QTOOL, then by default you will also use the same tool values from aux 0304 (assuming no one changes the Tool no. using A and TOOL keypad button).

    You could go over the top and set aux func 0304 tool1 to tool9 to the same values as your tool.


    I don't usually do this, but when I started out, I applied this so to ensure my tool was always relative to my fitted tool (if never changed) and if someone wanted to use BLOCK with my current tool, they could freely turn QTOOL ON and not really have to remember to turn it OFF as I included QTOOL and TOOL as a programmed command in my startup sequences to ensure correct tool is used.

  • I thought I would use aux 0405 to teach the new tcp. I can see the advantages of using QTOOL now, thanks for the explanation. So, on a different train of thought...If I use the same tool and end up using a different arm to attach it to joint 6, what would be the best way to change the values. The current arm is straight out of joint 6 and then angles down to the tool. The new tool arm would be just straight out of joint 6 without a 90 bend.

  • What is your use of 'arm' meaning here, as what you are saying doesn't quite make sense?

    I am assuming you are talking about some part of the tool assembly but assumptions can often lead to incorrect advice.


    What are your current OAT values you are using?


    If it is a case of 90 degree difference only, then dependent on how it's mounted to the flange relative to the null tool coordinates, then it may be as simple as adjusting O and T values.

    However, I would probably teach it in.


    Have you read and tried the 'unknown tool method' available in the AS language Manual, I think somewhere in section 11, this is an alternative to auto tool teaching and uses the robots compound transformation calculation to return the tool values....only use 2 positions called the A&B method?

  • Sorry for the confusion. The values for the current tool assembly are , 0,535,725,90,90,90. The new tool assembly will actually extend in the Z direction(tool) and not extend as far in the Y(tool)

    direction. So I could just use the TOOL command and change the transformation values without doing any TCP reteaching. The new tool would be something like, 0,300,900,90,90,90. If that is correct, I wouldn't need to use QTOOL or any of the AUX functions above.

  • You are not using QTOOL at all anyway, I was merely making a recommendation should you be using the aux func 0405 to make things a little easier.


    If your tool direction or orientation is not changing and you a merely bringing the tcp closer to the centre of your flange and increasing the length of it, then yes, just by adjusting the Y and Z values should be applicable.

    Dependent on how accurate your tcp is going to be used, then will depend on whether you should just alter the values or actually re-teach it in as these values are representing the new physical tcp for the robot.


    Do not assume the 'fastest route' is going to be the best route.


    You have several ways of defining tool values when using QTOOL OFF:

    1. Locally setting tool values, does not store values as a location (not in a program).

    - Typing in TOOL and pressing enter and then setting the values and pressing enter again.


    2. Create a location and then recalling the values and applying it to the tool coordinate (used in program).

    - POINT new_tool = TRANS(0,300,900,90,90,90)

    - TOOL new_tool


    3. Entering direct values (can be used in a program)

    TOOL NULL+TRANS(0,300,900,90,90,90)

Advertising from our partners