Introduction

This note shows the control system of the PUMA industrial robot, as an example of a real controller. The PUMA has six joints. Each joint uses independent joint control, as in Motion Control Schemes.

How it works

The controller has two levels.

Top level: the computer (master)

  • it sends commands to six microprocessors, one for each joint
  • it interprets the program commands (robot programming language) one by one
  • it does the inverse kinematics, plans the trajectory through the via points, and makes a new set point for the joint controllers at each sampling time
  • it connects to peripherals, such as the terminal and the teach pendant

Bottom level: the joint microprocessors

  • each microprocessor controls one joint with a PID control law
  • each joint has an incremental optical encoder, which gives the current joint position
  • there are no tachometers. The joint velocity comes from the difference of joint positions on each servo cycle
  • the microprocessors run at a faster sampling time than the computer
  • they interpolate the desired set point, calculate the servo error, calculate the PID law and send a new torque command to the motors
  • DACs change the digital torque commands into analogue signals for the DC motors

flowchart LR
    PC["Computer<br/>IK and trajectory"] --> IF["Interface"]
    IF --> UP["μP per joint<br/>PID law"]
    UP --> DA["D/A"] --> AMP["Current amp"] --> M["Motor"]
    M --> ENC["Encoder"] --> UP