Just a programming fool

  • I have been trying to get my UX150 with AD controller to program ANYTHING
    It was welding in a ford factory and with with the help of Roboperson we can move around in teach and execute some wild pre existing Ford programs. However when I use the Kawasaki AS language manual and teach pendant to create a simple 4 movement block step program The robot makes the slightest servo noise and does not move. I can see on the screen the 4 steps very quickly cycling from 1 to 4
    My program looks like this example:
    1 HERE P1
    2 HERE P2
    3 HERE P3
    4 HERE P4
    Which look nothing like the steps in the working Ford programs
    I get the feeling that I am missing some instructions like a speed command or something Any Thoughts ?

  • Place your Ad here!
  • in as language you must tell the robot what type of move to use on each variable name ex:

    LMOVE is a linear move
    JMOVE is a joint move
    CMOVE is a circular move

    This is how your program should look

    1 Lmove P1
    2 Lmove P2
    3 Lmove P3
    4 Lmove P4

    Also you can set the speed for the moves to occur at. Ex to move all points at a speed of 250 mm/s

    1 speed 250mm/s always
    2 Lmove P1
    3 Lmove P2
    4 Lmove P3
    5 Lmove P4

    good luck I hoppe this is what you were looking for.

  • also here is another problem you may have: in as language HERE command means to save your variable location to the current robot position.

    ex. if your type HERE P1 at the command prompt you will save the current robots position to the P1 variable.

    your program most likely as it is written is just saving the current robot position to all of your variable P1 P2 P3 and P4 to the same position, there fore your robot servos come on and the robot does not move due to all the points being in the same position. Your program is just telling it to save position data to your points and not to actually move anywhere.


  • Why not just use the teach pendant and record moves? I know a lot of people want to use AS-Language for everything, but for a simple basic motion program, its way overkill.

    Just jog the robot to where you want your points to be, and enable, record.

    I may have the names of the actual buttons slightly off since it has been several years since I have worked on an AD series controller, but it will definitely be close.

    The AD, I miss that little keyboard.

  • Thank you both for replying.
    The first 2 responses from tdevine77 to my problem were kind of helpful
    I was able to get the robot to move under a program for the first time However the movments were not what I expected
    In regards to the post from pindog It seems that using teach would be easiest but I dont know how to set up a program that these recorded teach points could be stored to
    Also how do I set various speeds to each movement
    Is there a better manual than the one from the Kawasaki site ?

    regardless I thank both of you very much for your help

    Tony P

  • Here is some info about the speed command that also pertains to the accuracy, accel and decel commands. any time one of these commands is entered into a program if it is followed by a ALWAYS statement then the speed will process each step at that speed until it encounters another speed command. here is an example.

    1 Speed 100mm/s always
    2 lmove point1
    3 lmove point2

    In the above example point1 and point2 will move at a speed of 100mm/s.

    example #2

    1 speed 100mm/s always
    2 lmove point1
    3 lmove point2
    4 speed 50mm/s
    5 lmove point3
    6 lmove point4

    In the above example point1 and point2 will move at a speed of 100mm/s, point3 will move at a speed of 50mm/s, and point4 will move at a speed of 100mm/s. Now you may ask why does point4 move at a speed of 100mm/s and NOT 50 mm/s, The answer to this is because the 50mm/s command was not followed by the ALWAYS statement, therefore only point3 was processed at a speed of 50mm/s and then the speed went back to the ALWAYS speed of 100mm/s.

    Note: If the 50mm/s speed was followed by the ALWAYS command then all speed commands after that command would run at 50mm/s until the processor processed a different speed change again.

    Now for your question of assigning a different speed to each point.

    1 speed 200mm/s
    2 lmove point1
    3 speed 150mm/s
    4 lmove point2
    5 speed 100mm/s
    6 lmove point3

    Now here is some more info you might like on the controller speed command.
    not only can you assign speed movement in mm/s, but you can also assign speed as a percentage of overall robot capable speed.


    1 speed 100 always
    2 lmove point 1
    3 lmove point 2
    4 lmove speed 50
    5 lmove point 3

    Now to get even deeper. (I may be over doing it a bit) If you go to your main status screen, In the top right hand corner side you will see a REPEAT statement followed by a number. This REPEAT number can be set from 1 to 100 %, This is the controllers repeat spead, What is this repeat speed for? Well let me tell ya, The repeat speed is the controllers main speed command and is related to all the programs in the controller. If the repeat speed is set to 100% then all program speed statements will run at 100%.

    Repeat speed is set to 100%, so point1 will run at 100% speed which is 200mm/s

    1 speed 200mm/s
    2 lmove point1

    Now if I change the controllers repeat speed to say 50%, now the variable point1 will only move at 100mm/s, which is 50% of the controllers overall speed.
    I love using this command after I have retaught robot points or executing a new program. because instead of going through and reducing all the speeds to do a safety run, I can simply turn down the repeat speed and watch the robot move slowly, then I can slowly ramp up the speed a little at a time until I i am sure everything looks good and the robot is not going to crash into anything due to a mistake I may have made.

    So now if you don't already know, you are probally wondering how do I change the repeat speed.

    Go to the user prompt or keyboard
    at the prompt type in the SPEED command followed by a space then the desired speed. followed by the enter key to accept the change.

    >Speed 50 this will set the speed to 50% and should indicate on the status screen

    another way to enter this cammand is using its command shortcut

    >SP 50

    I hope this helps Tommy D

  • Good Scott !!!!!

    Tom what a wealth of information ! where on earth did you learn all of this ?
    I can't wait to try these commands.
    I am still not sure how to set up programming from the teach pendant.
    That is to say what needs to be done prior to jogging the bot into position and pressing RECORD
    I have tried various things using the AS manual but nothing happens there are no detectable changes in the displays.

    Thank you for all of your great advice

    Any thoughts or recommended reading ?

  • If you would like I have a microsoft accel spread sheet that I have wrote up that has virtually all of the kawasaki keyboard command listed along with thier functions. I can not get it to you until sometime late next week, But if you give me your E-Mail then I would be more than happy to send you a copy one day.

    In kawasaki language a taught point is actually called a "variable" this variables name only contains data for the stored position. This stored position data is stored as X Y Z O A T, You can think of X Y Z as a positon on a cartesian cordinate chart. The O A T are actual joint angles ( I think this is correct) and all this position data is saved for all 6 axis of the robot inside of the "variable". That is why when you write a program in AS language or Block language you must tell the robot what type of move (Lmove, Jmove etc..) to execute while advancing to the variables taught position. also a variable name can not have spaces in it, and I don't think it can start with a number but i am not sure.

    I love teaching in AS language, Because just about anything that you can do with the teach pendant (Except for jogging the robot around) you can do with a command on the user keyboard screen prompt.

    I do not know where you are in your programming but Lets pretend that I am going to set up a new program from scratch, The following is how I would do this.

    I want a program that will trace the outline of a cardboard boxes 4 corners. After the forth corner I would like the robot to return to the first corner and stop.
    I want this program to run at a speed of 25% and the point accuracy to be set to 20mm, Accuracy means that the robot will not continue to the next step in the program until the robot has reached the taught variables position by at least 20mm or less.

    1. On paper create your program as a list of steps. here is an example that you can try on your robot.

    step# Command Variable Description
    1 SPEED 25 ALWAYS This will set the speed of all variables to 25%
    2 ACCU 20 ALWAYS This will set the accuracy of the robot to 20mm for all taught points.
    3 LMOVE corner1 Variable named corner1 will perform a linear straight line move.
    4 LMOVE corner2 Variable named corner2 will perform a linear straight line move.
    5 LMOVE corner3 Variable named corner3 will perform a linear straight line move.
    6 LMOVE corner4 Variable named corner4 will perform a linear straight line move.
    7 LMOVE corner1 Variable named corner1 will perform a linear straight line move.

    Now lets create this program using only the User screen keyboard commands at the user prompt.

    First how to create a program using AS language commands. We are going to use the "Edit" command or "ED" for short. The edit command will get us into edit mode which allows us to create, modify or delete program and program steps.

    I want my program to be called "thebox" Notice no spaces in the program name.

    At the user prompt type as below.

    >ED thebox

    now press enter key, you have now created a program called "thebox" and you are still in edit mode. you will now see the first step listed. I think this is how it will look, I can not really remember. but you will start typing in your program after typing each steps information press the enter key and you will automatically index to the next step to enter its data.
    ? "enter your text here" "then press the enter key"

    When you are finished entering all of your program steps we need to exit out of the "EDIT" mode so we type in the command "E" (this stands for exit editor mode) and press the enter key to execute the command line. it will lo0k like this.

    ? E "then press the enter key, If all of your programming is correct then you should be entering the "E" command on the step 8 line.

    Now you have created your first program we need to look at this program and make sure it looks correct. so 1st lets look at the robots directory to see what programs exist.

    at the prompt type in the "DIR" command and press enter key. this should give you a list of all program names saved in the controller.
    >DIR "followed by pressing the enter key"

    If your screen has more to display at the bottom that you can not see the press the space bar to scroll down further. or press enter to get back to the command prompt.

    there should be a list of all the programs or only your program name "thebox", If your program name is displayed then you have created a program.

    Now we want to go back and look at our programs contents to make sure we typed it in correctly. so we will use the "LIST" command. this will allow us to see all of our program steps in order, plus some other data.
    at the prompt type in the LIST command followed by a space and then the program name that you wish to look at.

    >LIST thebox "followed by the enter key to execute the command entered at the prompt"

    Your steps should look like this if entered correctly.

    2 ACCU 20 ALWAYS
    3 LMOVE corner1
    4 LMOVE corner2
    5 LMOVE corner3
    6 LMOVE corner4
    7 LMOVE corner1

    IF your program looks correct then hit the enter key to get back to the user prompt if not already there.

    Now we have designed and programmed our program but there is still one thing missing. we need to assign our variables some location data.

    To do this take your teach pendant and place it in teach mode and teach your robot to the 1st corner of your box (This is easier if you actually have a box on the floor but you can use an imaginary box) (Also it may be easier to move to each corner of the box in the base teaching mode (If you know how to get there)

    once you are at your 1st box corner, go to the keyboard once again and we are going to use the "HERE" command. I like to use the here command to save my variables positions sometimes. At the prompt type the following.
    >HERE corner1 "followed by the enter key, the here command will save the robots 6 axis current position data to the variable named corner1"

    Next move your robot to the 2nd corner of the box. again use the HERE command when you have the robot where you want it.
    >HERE corner2 "followed by the enter key again"

    Next move your robot to the 3rd corner of the box.
    >HERE corner3

    Move robot to the final corner number 4
    >HERE corner4

    Now we have told the robot the positional data to each of our variables.

    Now you can check step your program (in teach mode) to make sure everything looks good.

    Now when you exit out of teach mode you can also execute your program from the keyboard (you can not have any external hold conditions)
    To do this we are going to use the "EXECUTE" command or its shortcut command "EX".

    At the command prompt type in the following. Now may be a good time to turn down your repeat speed using the SPEED command due to this being the first time the program has ran. >SP 20

    >EX thebox "followed by the enter key"

    Now if the robot is set up correctly and you have motor power the program should execute and move to all the steps and stop when it gets to the end of it.

    Here is a little something extra on the "EXECUTE" command. If you want to execute your program more than just 1 cycle you can follow up the command with a number say 3, and the robot will execute our program 3 times and then stop.
    >EX thebox, 3 "followed by the enter key"

    Good luck and let me know how this goes.

    Tommy D

  • Me again, I just thought of somethng eles. If your robot was used as a welder its continuous path system switch may not be activated or on. The continuous path system switch will allow the robot to make smooth transitions from point to point without stoping. To turn this system switch on you can access it from the aux function 75 I think. To get there from the keyboard promp just type in >AUX " followed by the enter key" This should take you to the auxillary selection screen.
    Also if it is a AD controller you should be able to select the keyboard fuction key for AUX to get there. The continuous path switch is labled as "CP" make sure to set it to on. Also it would be a good idea to document all of these in case you play with these setting to see what they do and get them out of whack. To save your program insert a disk into the side of the screen (Left side i think) and type in "SAVE" followed by a name with no spaces.
    >SAVE myfirstpg "followed by the enter key" It will save the controller data, programs and just everything.

    To load a program from disk

    >LOAD myfirspg

    to look what is on a floppy disk


  • Hey Tom,

    I have been into AUX several times I will go in and check for this CP setting. I suspect that something is amiss since the robot moves in ways that I do not expect

    I also have 2 backup disks 1 original Ford and 1 made after we got the unit on line and zeroed

    Tom, thank you again for all of your help. I will review the previous post today. again it looks like a treasure trove of Data !

  • FYI: I have the actual keyboard also. From what I gather this is a nice but not necessary thing

  • Tdevine77 gives some good advice! Forf standard is CP is on. Continuous Path (CP) allowes the controller to plan the path of motion before it moves. This allowes the contoller to look ahead 3 steps to plan the best path. In theory, your movements sould be smoother. The main way it would mess with movement is if it calculated the path beteen linear or joint movements as it looked forward, but in general should not cause issues. It just plans the path. Can you please define does not move as expected? That's actually a broad statement. Linear to joint move? Vise versa? CP? Speed? Accuracy? There are several veriables that effect your movments.

  • In my opinion the key board is necessary, There is a lot that can be done and executed from the keyboard that you can not due from the pendant. For example viewing your program your whole program, On the pendant you can only view a few steps at a time. Also if you learn how to use the keyboard commands then not only can you just program the AD controller but you can also program C and up. All commands are pretty much the same on all controllers. Also editing programs using the keyboard is a lot faster than using the pendant(adding, deleting, moving data around). If you are new to programming I would learn keyboard commands first then work your way into the pendant. But the pendant is easy to use also. The pendant does make programming in block language easier.

  • Hello Tom,

    What an exciting 24 hours !! Using your last 3 posts I have written 3 new programs that all work, Many thanks !!!
    The next thing I will delve into is programming INPUTS and OUTPUTS and various program edits.
    I haven't really used the display on the teach pendant but as things start to work I can see what's being displayed and draw some conclusions.
    I would really like to have the XLS spreadsheet when you get a chance. I left my Email on a prior post.

    Also hat's off again to Roboperson. He was instrumental in getting hardware issues on this bot resolved.
    And to you Tom, I am very grateful for all the help you have provided I must conclude that you are a very fast typist

    Best regards Tony Phillips

  • hi tdevine77 im new using kawasaki robots and i try to program your example but i have a problem with my teach pendant when i want to move the robot it only goes in one direction it cant go back what can i do????

  • OK here is some operations using the teach pendant for the A and AD series controlles.


    -To move the robot you must be in teach mode.

    1. Press the "T/P ENABLE" button. It's red LED should illuminate when it is active. it stands for Teach Pendant Enabled.
    2. Choose which coordinate style you would like to move your robot in. Press the button labled JOINT, TOOL or BASE. Your selection of the movement type will have a LED illuminated next to it. If you look at your AXES keys it will have different labling on it to corospond to which coordinate style you are using.

    JOINT = Allows you to move each individual joint regardless of the tool position. The AXES keys are labled 1, 2, 3, 4, 5, 6, 7 (7 is optional joint on robots, most do
    not have this axes)

    BASE = Allows you to move the robot referencing from the tool center point in a straight line while maintaining tool orientation. The base coordinate system origin
    is in the robots base which can be changed using Auxillary function 47. The AXES keys are labled X, Y, Z, RX, RY and RZ.

    TOOL = Allows you to also move the robot in a straight line, Its origin is the TOOL center point. The AXES keys are labled X, Y, Z, rx, ry and rz.

    (The BASE coordinate system is best for begginers)

    3. To move the robot you must now press and hold a speed selection button of High, Medium or Low speed.
    High = >>>, Medium = >>, Low = >

    4. Next press one of the AXES directional buttons and your robot should now be moving.


    1. Press the "T/P ENABLE" button. It's red LED should be illuminated to show you it's in teach mode.
    2. Press the "MODE SELECT" button one time.
    -Your teach pendant display should now show a list of all robot programs stored in the controller.
    3. Use the arrow keys on the pendant key pad to select / highlight the program that you wish to load on the stack.
    4. Press the red "ENTER" button to select the highlighted program.
    - The display should now show your programs name at the top of the screen. And in the middle of the screen the program should list the programs first step
    number and data.


    1. Press the "T/P ENABLE" button.
    2. Select your program.
    3. Press the "CHECK MODE" button. It's red LED lamp should illuminate showing that you are in check mode.
    4. Press and hold a speed selection button of High, Medium or Low.
    5. Press and hold the "CHECK STEP" button. Your robot should now be moving, Keep these buttons held in until the robot comes to a complete stop at the
    variable taught location.
    6. Repeat steps 4 through 5 above until you have checked through your program.
    - To exit check mode press the "CHECK MODE" button. It's LED lamp should be off.


    1. Using the "CHECK MODE" check step your robot t0 the variable step that you would like to re-teach to a new position.
    2. Press the "CHECK MODE" button to deactivate check step mode. It's LED should be off.
    3. Using the speed and axes buttons move your robot to the desired new position.
    4. Press the button that is labled "POS .R and AUX .R" one time. Now the POS .R should have a LED lamp displayed beside it.
    - POS .R = Positional re-write. This will enable you to only record or write new positional data in AS or BLOCK language.
    - AUX .R = Auxillary re-write. This will enable you to only record or write new auxillary data in BLOCK language only. Auxillary data is speed, accuracy, etc...)
    5. Press the red "R" button one time. this is the Record or Re-write initiate button.
    -Note: After the button is hit one time your program display will automatically move to the next program step. If you accidently hit the record button twice
    then you will also record the next steps variable positon to the same positin as the previous, SO ONLY HIT THIS BUTTON ONCE!!!
    6. Press the "POS .R and AUX .R" button twice so that no LED's are now lighted.
    7. You can now go back to "CHECK STEP" and continue step checking through your program.

  • So you are saying that if you have the teach pendant "T/P Enable" button activated and you press and hold a speed and then select a AXES to move it will only move in the positive direction? That sounds really funky.

    Place the teach pendant in joint mode, now move each individual joint in the positive and negative directions. Can you move each individual joint in joint mode?

    Do you hear any beeps from the teach pendant when you try to move in the negative direction? If so you are trying to move your robot out of its software limits and you will need to change the function for the settings.

  • Sounds like your robot lost zero and is lost. Did you get encoder battery low errors before this happened? From what I remember you have an AD controller, but not sure if HQ or not? If this is HG, go to function 140 and zero the joint with problems or 0 for all. Next goto function 41 and do the same. If this is non HQ then function 140 will not exist. You will need to go to the base of the robot and toggle the switches on the board at the side cover with the controller on. This is your encoder board. After doing this, cycle power to the controller. Then do the operation at aux 41. After you zero where you are, teach the robot to scribes and zero it again in the correct location.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now

Advertising from our partners