Integratedbook Automation
Integratedbook Automation
3
page 267
robot. As a result the calculations of required joint angles contain a small error.
- calibration errors - The position determined during calibration may be off slightly, result-
ing in an error in calculated position.
- random errors - problems arise as the robot operates. For example, friction, structural
bending, thermal expansion, backlash/slip in transmissions, etc. can cause varia-
tions in position.
Accuracy,
How close does the robot get to the desired point
This measures the distance between the specified position, and the actual position of the
robot end effector.
Accuracy is more important when performing off-line programming, because absolute
coordinates are used.
Repeatability
How close will the robot be to the same position as the same move made before
A measure of the error or variability when repeatedly reaching for a single position.
This is the result of random errors only
repeatability is often smaller than accuracy.
Resolution is based on a limited number of points that the robot can be commanded to reach
for, these are shown here as black dots. These points are typically separated by a millimeter or
less, depending on the type of robot. This is further complicated by the fact that the user might ask
for a position such as 456.4mm, and the system can only move to the nearest millimeter, 456mm,
this is the accuracy error of 0.4mm.
R
page 268
In a perfect mechanical situation the accuracy and control resolution would be determined
as below,
Kinematic and calibration errors basically shift the points in the workspace resulting in an
error e. Typically vendor specifications assume that calibration and modeling errors are zero.
One axis on
a surface
accuracy
control resolution
specified locations
The manipulator may stop at
a number of discrete positions
In an ideal situation the manipulator would stop at the specified locations.
Here the accuracy would be half of the control resolution. The control
resolution would be the smallest divisions that the workspace could be
divided into (often by the resolution of digital components.
accuracy
page 269
Random errors will prevent the robot from returning to the exact same location each time,
and this can be shown with a probability distribution about each point.
error e
Should
be here
repeatability = 6s = 3s
accuracy a/2
User requested
position U
System specified
position S
If the distribution is normal, the limits for repeatability are typically chosen as 3 stan-
dard deviations s.
a
control resolution
2
------------------------------------------ = e
max
a modeling error 3s + + =
page 270
The fundamental calculations are,
9.1.2.2 - Control Resolution
We can look at distributions for each specified position for the robot end effector in rela-
tionship to other point distributions. This will give us overall accuracy, and spatial res-
olution.
worst case spatial resolution
worst case for a point
controlled points S
requested point U
repeatability = r = 3s
U
A
S
accuracy S U ( ) e + =
a
page 271
Spatial resolution is the smallest increment of movement into which the robot can divide its
work volume. Spatial resolution depends on two factors: the systems control resolution and the
robots mechanical inaccuracies. It is easiest to conceptualize these factors in terms of a robot with
1 degree of freedom.
Control resolution - is determined by the robots position control system and its feedback
measurement system. It is the controllers ability to divide the total range of movement for the par-
ticular joint into individual increments that can be addressed in the controller. The increments are
sometimes referred to as addressable parts. The ability to divide the joint range into increments
depends on the bit storage capacity in the control memory. The number of separate, identifiable
increments (addressable points) for a particular axis is,
example - A robot with 8 bit control resolution can divide a motion range into 256 discrete
positions. The control resolution is about (range of motion)/256. The increments are almost
always uniform and equal.
If mechanical inaccuracies are negligible, Accuracy = Control Resolution/2
9.1.2.3 - Payload
The payload is always specified as a maximum value, this can be before failure, or more
commonly, before serious performance loss.
Static considerations,
- gravity effects cause downward deflection of the arm and support systems
- drive gears and belts often have noticeable amounts of slack (backlash) that cause posi-
tioning errors
- joint play (windup) - when long rotary members are used in a drive system and twist
under load
# of increments 2
n
=
where n is the number of control bits
page 272
- thermal effects - temperature changes lead to dimensional changes in the manipulator
Dynamic considerations,
- acceleration effects - inertial forces can lead to deflection in structural members. These
are normally only problems when a robot is moving very fast, or when a continu-
ous path following is essential. (But, of course, during the design of a robot these
factors must be carefully examined)
e.g.
Consider a steel cantilever beam of length L, width B and height H, fixed at one end and
with a force P, applied at the free end due to the gravitational force on the load.
L
P
B
H
PL
3
3EI
--------- =
E Youngs modulus 30
6
10 (psi) = =
I
BH
3
12
---------- for rectangular beam =
**Note: this deflection does not include the mass
of the beam, as might be important in many
cases.
payload
0.0033 (in) =
If accuracy = 0.01 then the gravity effects are less
If accuracy = 0.001 then the gravity effects are too large
Aside: Note that the length has a length cubed effect on the tip deflection,
so if a second similar link was added to the robot, the deflection would
increase 8 times, a third link would increase deflection by 81 times.
1b. Gravity effects (robot link mass)
L
4
8EI
---------- =
weight
length
---------------- 0.91
lb
in
---- -
= =
link mass
0.00066 (in) =
total
0.0033 0.00066 + 0.00396 = =
Aside: If the deflection were too large, then we could use lighter link
materials, or larger annular (round tubular) members. Annular
members allow actuators, and instrumentation inside.
page 274
2. Drive Gear and Belt Drive Play
assume we are using gears, or timing belts, that do not mesh perfectly
The gears do not mesh perfectly, and the resulting space
is D
The input drive has to move a distance D before the output engages, and motion
begins (this is often after a direction change). This error is multiplied by the
gear ratio between input gears and the final position of the robot arm. Similar
errors occur for chains, belts, and other types of errors.
Aside: Some errors can be taken out of the system by using very
precise gearing, or anti-backlash gearing that uses springs to
hold the input gear against the drive gear. It is also possible
to compensate for this in software.
With good gearing, Backlash can be held to less than 0.010 (in), but special
design is required when accuracies of 0.001 (in) are desired.
3. Joint Flexibility - ( the angular twist of the joints, rotary drives, shafts, under the load)
32LT
D
4
G
--------------- = twist of the cantilevered link in radians =
L distance of the applied moment from the fixed end =
T the applied moment =
G the polar moment of inertia =
D the effective diameter of application of the moment =
page 275
thermal
TL =
4. Thermal effects
coefficient of linear thermal expansion =
If for the previous values we consider,
6.5
6
10
in
inF
---------
for steel ( ) =
T T
1
(working temp.) T
0
(calib. temp.) 80F 60F 20F = = =
thermal
0.0078 (in) =
Major errors in accuracy can result from thermal expansion/contraction
5. Acceleration Effects
F
payload
M
payload
r
payload
2
=
And, if the centre of rotation moves, we must also consider coriolis forces,
these could potentially result in a whip effect. This does occur in multi-
link robots.
F
payload
M
payload
r
payload
' =
F
link
M
link
r
centroid
' (approximate) =
The robot arm also experiences radial forces due to centripetal forces. These
lead to elongation of the arm, but are often negligible.
The robot arm, and payload are exposed to forces generated by accelera-
tion.This applies mainly to the payload mass, but also to the link mass.
These forces cause bending moments that must be added to the masses con-
sidered before.
F
payload
L
3
3EI
------------------------ =
6. Combine cartesian components of deflection into one vector
accuracy
x
i
( )
2
y
i
( )
2
z
i
( )
2
+ + =
*** Remember to compare to control resolution
page 276
9.2 ROBOT TYPES
9.2.1 Basic Robotic Systems
The basic components of a robot are,
Structure - the mechanical structure (links, base, etc). This requires a great deal of mass to
provide enough structural rigidity to ensure minimum accuracy under varied pay-
loads.
Actuators - The motors, cylinders, etc. that drive the robot joints. This might also include
mechanisms for a transmission, locking, etc.
Control Computer - This computer interfaces with the user, and in turn controls the robot
joints.
End of Arm Tooling (EOAT) - The tooling is provided be the user, and is designed for spe-
cific tasks.
Teach pendant - One popular method for programming the robot. This is a small hand held
device that can direct motion of the robot, record points in motion sequences, and
begin replay of sequences. More advance pendants include more functionality.
Teach pendant
and/or
dumb terminal
control
computer
memory
(battery
or eeprom)
End of Arm
Tooling
(EOAT)
Mechanical
arm
Actuator
power supply
(hydraulic, etc)
Sensors
Control
computer
PLC/NC
machine
RS-232
page 277
9.2.2 Types of Robots
Robots come in a wide variety of shapes, and configurations.
The major classes of robots include,
arms - fixed in place, but can reach and manipulate parts and tools
mobile - these robots are free to move
9.2.2.1 - Robotic Arms
Typical joint types are,
Revolute - rotary joints often driven by electric motors and chain/belt/gear transmissions,
or by hydraulic cylinders and levers.
Prismatic - slider joints in which the link is supported on a linear slider bearing, and lin-
early actuated by ball screws and motors or cylinders.
Basic configurations are,
Cartesian/Rectilinear/Gantry - Positioning is done in the workspace with prismatic joints.
This configuration is well used when a large workspace must be covered, or when
consistent accuracy is expected from the robot.
Cylindrical - The robot has a revolute motion about a base, a prismatic joint for height,
and a prismatic joint for radius. This robot is well suited to round workspaces.
Spherical - Two revolute joints and one prismatic joint allow the robot to point in many
directions, and then reach out some radial distance.
Articulated/Jointed Spherical/Revolute - The robot uses 3 revolute joints to position the
robot. Generally the work volume is spherical. This robot most resembles the
human arm, with a waist, shoulder, elbow, wrist.
Scara (Selective Compliance Arm for Robotic Assembly) - This robot conforms to cylin-
drical coordinates, but the radius and rotation is obtained by a two planar links
with revolute joints.
page 278
CARTESIAN/RECTILINEAR/GANTRY
SPHERICAL
page 279
CYLINDRICAL
ARTICULATED/REVOLUTE/
JOINTED SPHERICAL
page 280
9.2.2.2 - Autonomous/Mobile Robots
The robots discussed up to this point have concerned arms that are fixed to the floor.
Another important class of robots are autonomous, and free to move about the workspace.
Typical applications are,
- nuclear accident cleanup
- planetary exploration
- Automatic Guided Vehicles in factories
- mail delivery
9.2.2.2.1 - Automatic Guided Vehicles (AGVs)
These are typically wheeled robots that carry payloads through a factory.
They navigate using,
- wires embedded in floors
SCARA
page 281
- light sources or reflectors
- colored tapes on the floor
9.3 MECHANISMS
The mechanical structure of the robot has a major influence over performance. Typically
closed kinematic chains give higher strengths, but lower speeds and flexibility.
The linkage shown below uses two cylinders (hydraulic or pneumatic) to give radial posi-
tioning
page 282
9.4 ACTUATORS
There are a large number of power sources that may be used for robots.
Typical actuators include,
This robot has a closed linkage,
and any movements of the bottom cyl-
inder will swing the top arm. The top
arm also has a linear slider that moves
in and out. This arrangement reduces
page 283
Pneumatics
- simple, low maintenance
- light, least expensive
- low payload
- easy to find fault
- hard to do continuous control
Hydraulic
- large payload
- high power/weight ratio
- leakage
- noisy
Electrical
- feedback compatible
- computer compatible
- EOAT compatible
- quiet, clean
- low power/weight ratio
Actuators lead to various payload capabilities as shown in the following list.
9.5 A COMMERCIAL ROBOT
Robot
Asea IRB/6
IBM 7535
Cincinatti T3/726
Devilbiss
Yaskawa L/10
Unimation 550/60
Hitachi
Unimation 5000
VSI Charley #6
GMF M/1A
Cincinatti T3/776
Cincinatti T3/586
Power
Electric
Electric
D.C. Motor
Hydraulic
Electric
Electric
Electric
D.C. Motor
Electric
Electric
D.C. Motor
Hydraulic
Payload (k.g.)
6
6
6.4
6.8
10
10
10
14
30
46.7
68
100
Max. Vel. (m/s)
0.75
1.45
1.0
1.83
1.1
1.0
0.99
0.53
1.8
0.99
0.635
0.89
page 284
Some specifications for commercial robots are given below
9.5.1 Mitsubishi RV-M1 Manipulator
In general
Degrees of freedom 5
Maximum payload 1kg (2.2 lb)
Repeatability (based on constant temp., load, speed) +/- 0.3mm
Weight 19kg (42 lb)
Operating Temperature 5C to 40C
Humidity (based on constant temp. load, speed) 10% to 85%
Power Requirements 120/220/230/240 VAC
Other 50-70 psig air
waist
motion revolute
Range 300 degrees
Resolution ?? deg.
Speed
max. speed 120 deg/sec
max. torque ?? in.lbs
shoulder
motion revolute
Range 130 degrees
Resolution ?? deg.
Speed
max. speed 72 deg/sec
max. torque ?? in.lbs
elbow
motion revolute
Range 110 degrees
Resolution ?? deg.
Speed
max. speed 109 deg/sec
max. torque ?? in.lbs
page 285
wrist pitch
motion revolute
Range +/-90 degrees
Resolution ?? deg.
Speed
max. speed 100 deg/sec
max. torque ?? in.lbs
wrist roll
motion revolute
Range +/-180 degrees
Resolution ?? deg.
Speed
max. speed 163 deg/sec
max. torque ?? in.lbs
The workspace is pictured below,
782mm
57mm
482mm
page 286
9.5.2 Movemaster Programs
All comments follow a semi-colon at any position on a line
Statements are ended with a colon, and as long as colons are used, more than one statement
can be used on a line.
Line numbering is required.
Dimensions are given in millimeters in the programs.
A sample program is given below with comments for explanation,
9.5.2.0.1 - Language Examples
The example below shows how points are defined and used. Please be aware that point loca-
tion values are not normally defined in a program. Normally they are programmed by hand, and
then when the program is run, it refers to them by number (from 1 to 629)
10 NT
20 SP 7 ; set speed
30 MO 10, C ;move to position 10 with the hand closed
40 MO 9, O ;move to position 9 with the hand opened
50 TI 40 ;stop for 4 seconds
60 GT 30 ;goto line 30
page 287
The example below shows how we can define and use pallets. The definition of a pallet cov-
ers a number of lines to define the pallet size and then the location. We must also define points to
indicate where the pallet lies in space. For the example below these points would have to be posi-
tion numbers 20 (pallet origin), 21 (origin to end of first column), 22 (origin to end of first row),
23 (origin to diagonal corner of pallet). Note: if using pallet #3 these counters would be 30-33,
and point 3 would move.
10 NT ; move to the nest or neutral position, this is almost straight up
20 OG ; move to the reference or zero position
30 TL 20 ; this will set the tool length as 20mm for all cartesian position calculations
40 PD 3, 0, 350, 250, -10, -20 ; define position #3 with joint angles
50 MO 3 ; move the robot to position #3
60 DW 20,20,0; a cartesian move 20 mm in the x and 20 mm in the y directions
70 HE 4; stores the current location as position #4
80 IP; moves the tool to position #5 ; assume that positions 5-10 are already defined
90 MC 6,10 ; continuous motion through positions 6, 7, 8, 9 and then stop at point 10
100 DP; the robot moves to position #9 and stops
110 PD 11, 0, 0, 10, 0, 0 ; define a vector (point #11) with only a z component
120 MA 9, 11, O ; move away from point #9 a distance of vector #11 with gripper open
130 MJ 10, 10, 0, 0, 0 ; move the joints (shoulder and elbow) 10 degrees
140 MP 10, 20, 30, 40, 50 ; move to cartesian position (10,20,30) with roll=40,pitch=50
150 SP 3 ; set the speed low to increase accuracy
160 MS 8, 5 ; straight line motion to point #8 as approximated with 5 knot points
170 MT 8, -40 ; causes the tool to move 40mm straight back from point #8
20 PA 2, 3, 4 ; pallet #2 is defined as having 3 columns and 4 rows
30 SC 21, 1 ; set counter #21 for columns to 1 - each pallet # has dedicated counters
40 SC 22, 2 ; set counter #22 for rows to 2 - each pallet # has dedicated counters
50 PT 2 ; calculates the point for pallet #2 to move to - this will become point #2
60 MO 2 ; move to the new position just calculated
70 SC 22,3 ; move the counter to the next row
80 PT 2 ; calculate a new pallet position
90 MO 2 ; move to the new pallet position
page 288
The example below shows some of the position commands. These positions are normally
defined outside the program by moving the robot to desired locations. These positions are not
always absolute, and in some cases will act as displacement vectors.
The example below shows some of the counter and branching functions. These tend to use a
status register approach - for example, a value to be compared will be loaded on one line, the next
line will compare it and a branch instruction will occur on the specified condition. For-next loops
have been constructed as part of this example.
10 PC 1; the clears the position #1 value
20 PD 2, 0, 300, 250, 50, -30 ; define position 2 with cartesian x,y,z and pitch,roll
30 HE 3 ; defines the current robot position as position #3
40 PX 1,2 ; the values of positions #1 and #2 have been swapped
50 PD 4, 0, 20, 0, 0, 0 ; define a new position
60 SF 1, 4 ; this will add #4 to #1 and store it in #1 becoming (0, 320, 250, 50, -30)
page 289
The example below shows how to use various gripper and I/O functions. There are eight
input bits and 8 output bits available.
10 SC 1, 2 ; set counter 1 to a value of 2
20 CP 1 ; load counter #1 into the comparison register
30 EQ 10, 100 ; if the value loaded in the last line is 10, jump to line 100
40 IC 1 ; increment the value of counter #1
50 GT 20 ; goto line 20 to continue the loop
100 DC 1 ; decrement the value of counter #1
110 CP 1 ; load counter #1 into the comparison register
120 LT 1, 100 ; if the value loaded in the last line is larger than 1, jump to
line 100
150 GS 200 ; goto the subroutine at line 200
160 ED ; end the program
200 RC 10 ; a for-next loop command
210 RC 5 ; a nested loop
220 NX ; this loop will cycle through the loop declared on line 210
230 NX ; this loop will cycle through the loop declared on line 200
240 RT ; return from the subroutine
10 GC ; close the gripper
20 GO ; open the gripper
30 GP 5, 2, 3 ; this defines the gripping force as 5 (N?) and the holding
force as 2, there will be 3/10 of a second delay while the gripper settles
40 GC ; close the gripper using the gripper force
50 OB -7 ; turn off the 7th output bit
60 TB +6, 50 ; if the 6th input bit is on go to line 50
70
page 290
9.5.3 Command Summary
A summary of the motion commands is given below,
A summary of the program control commands is given below,
DP (decrement position)
DW (draw)
HE (here)
HO (Home)
IP (increment position)
MA (move approach)
MC (move continuous)
MJ (move joint)
MO
MP
MS
MT
NT
OG
PA
PC
PD
PL
PT
PX
SF
SP
TI
TL
move to the previous numbered position
Moves the tool from point to point
Assigns the current position to a position number
Sets the cartesian reference coordinates
Move to the next numbered position
Move from the current position to a new one
Execute a continuous motion
move a joint by a specified angle
move the tool to a specified location
Move the hand to a position
Move in a straight line
moves tool a specified distance
return to the global origin
move to the cartesian reference coordinates
Define a pallet
Clear position variables in memory
Define a position in memory
Copies a position variable to another
Calculates a new pallet position
Exchange two position variable values
Shift the position variable through space
Set the robot speed
Pause for a set amount of time
Define the length of the tool
page 291
A summary of the IO commands is given below,
9.6 PRACTICE PROBLEMS
1. a) What are some basic functions expected on a robot teach pendant
b) Describe how a computer can help avoid debug robot programs without a robot being used
CP (compare counter)
DC (decrement counter)
ED (End)
EQ (If equal)
GS (Gosub)
GT (Goto)
IC (increment counter)
LG (If larger)
NE (If not equal)
NX (Next)
RC (Repeat cycle)
RT (Return)
SC (Set counter)
SM (If smaller)
compare a counter to a value
decrement a counter value
End the program
Jump if conditions equal
Go to a subroutine
Go to line number
Increase a counter value by one
Branches if larger
branch if not equal
Next step in an RC loop
Repeat a loop the specified number of times
Return from a GS
Set a counter value
Branch if the value is smaller
GC (Gripper close)
GF (Gripper flag)
GO (gripper open)
GP (gripper pressure)
ID (Input detect)
IN (Input)
OB (Output bit)
OD (Output direct)
OT (Output)
TB (Test bit)
Close the gripper
Check the gripper status
Open the gripper
Set the maximum pressure while gripper is closing
detect the state of an input
inputs parallel data using handshaking
Set an output bit
Output data to ports
Output parallel data using handshaking
page 292
2. Write a short program to direct a Mitsubishi RV-M1 robot to pick up and put down a block.
Assume the points have already been programmed with the teach pendants.
3. What is the workspace for each of the robots below, and can the robots reach all positions and
orientations in the workspace?
4. Why are 5 axis enough for some robotic applications (eg. welding) and all NC milling opera-
tions?
5. You have been asked to write a program for a Mitsubishi RV-M1 robot. The program is to pick
up a part at point T1, move to point T2, and then load the part into a pallet. The robot should
then return to point A to pick up then next part. This should continue until the pallet is full.
T1 = (300, 300, 20)
T2 = (-300, 300, 0)
Pallet has 6 rows and 7 columns
Pallet origin T3 = (300, 0, 0)
Pallet end of row T4 = (350, 0, 0)
Pallet end of column T5 = (300, 60, 0)
x
y
x
y
x
y
x
y
x
y
page 293
6. Given the scenario below, find the minimum angular resolution of the rotating sensor.
- the robot has +/- 0.5 accuracy
- the pallet can slide +/- 0.1 on the belt
ans.
10 PD 1, 300, 300, 20, 0, 0
20 PD 2, -300, 300, 0, 0, 0
30 PD 30, 300, 0, 0, 0, 0
40 PD 32, 350, 0, 0, 0, 0
50 PD 31, 300, 60, 0, 0, 0
60 PA 3, 7, 6
70 GO
80 SC 31, 0
90 RC 7
100 SC 32, 0
110 RC 6
120 PT 3
130 MO 1
140 CG
150 MO 2
160 MO 3
170 OG
180 IC 32
190 NX
200 IC 31
210 NX
page 294
- the driving motor is continuous, and can be run to any angle
- the rotating sensor is an incremental encoder, every rotation of some small angle it issues
a pulse. But, because of the construction of the device, it has a minimum resolution
for angular measurements
- the robot must be able to touch the part to pick it up
- the tool on the end of the robot is a 1 magnet, and it must be able to touch the part com-
pletely to pick it up.
- pulley size is 10 dia.
7. Consider a double jointed manipulator as shown below. It is subjected to a loading at the tip of
8 lbs, and works in a heated environment (i.e. T
0
(room temp.) = 60F and T
1
(working temp.) =
80F.
a) Determine the elongation of the manipulator.
b) Determine the total linear deflection of the manipulator.
c) Determine the total final accuracy of the manipulator of the tip of the manipulator.
8. For the robot pictured below, assume the that a maximum payload of 10kg is specified. The
joints are controlled by stepper motors with 200 steps per revolution. Each of the joints slides,
and the gearing is such that 1 revolution of the stepper motor will result in 1 of travel. What is
the accuracy of the robot?
belt travels
4.8
5
50 10
cross section is 1 wide by 2 high
solid square aluminum stock
page 295
9. Consider a double jointed manipulator as shown below. It is subjected to a loading at the tip of
8 lbs, and works in a heated environment (i.e. T
0
(room temp.) = 60F and T
1
(working temp.) =
80F.
a) Determine the elongation of the manipulator.
b) Determine the total linear deflection of the manipulator.
c) Determine the total final accuracy of the manipulator of the tip of the manipulator.
maximum 15
maximum 10
Assume the joints are solid, and
to robot links are made from 1
solid aluminum stock.
50 10
cross section is 1 wide by 2 high
solid square aluminum stock
page 296
9.7 LABORATORY - MITSUBISHI RV-M1 ROBOT
Purpose:
Introduction to robots and programming methods.
Overview:
This laboratory will involve a basic tutorial on the use of the robot, including safety. The
students will have prepared a program for the robot, and tested it ahead of class
time using the simulator. During the laboratory the robot will be programmed and
tested using the prepared programs. A simple accuracy and repeatability test will
be conducted.
Pre-Lab (individual):
1. Use Netscape Communicator to access the robots in the laboratory, explore the site.
2. Review the notes on the Mitsubishi RV-M1. After this use the on-line robot to write a
simple test program.
3. Write a program to pick up a pop can at one point, and drop it off at a pallet. The pro-
gram should repeat six times in a row.
In-Lab:
1. Follow the robot tutorial, and then examine the robot manual.
2. Set up the pop can feeders and fixtures.
3. Enter your prelab program and modify it as required.
4. If not already done, connect the sensors on the feeders and fixture to the robot control-
ler.
5. Add commands to the program that will examine inputs and take appropriate actions.
6. Put the robot in an extended position (tool far away from the base). Set up a dial gauge
indicator so that it touches a solid point on the tool. Set the gauge so that it reads
zero. Move the robot away and back to the same position, and read the value from
the dial gauge indicator. Repeat this process to get 10 readings.
7. Position the robot so that the tool is in the middle of the workspace. Take similar mea-
surements to those in step 3.
Submit (individually):
1. A copy of your prelab program.
2. A copy of the programs written during the laboratory.
3. Statistical estimates of repeatability for both positions.
9.8 TUTORIAL - MITSUBISHI RV-M1
page 297
1. Turn on the robot power. The switch is located on the back of the unit.
2. Find the teach pendant (Note: It looks somewhat like a calculator). Turn the switch at the top
left to on. This will allow the teach pendant to control the robot.
3. Home the robot by pressing <NST><ENT>. The robot will move each joint to one end of its
range. This is an important step whenever a robot is turned on to find the end of the range of
motion.
4. The robot can be moved to new positions using the buttons on the right hand side of the teach
pendant. Use the following buttons to move the arm. Notice that the buttons move one joint at a
time.
<B+><B-> - moves the base right/left
<S+><S-> - moves the shoulder up/down
<E+><E-> - moves the elbow up/down
<P+><P-> - pitches the gripper up/down
<R+><R-> - rolls the gripper
<O><C> - opens/closes gripper
5. The robot tool (at the end of the arm) can be moved in cartesian coordinates by pressing
<XYZ><ENT> and then using the buttons indicated below.
<X+><X-> - move right/left
<Y+><Y-> - move forward/back
<Z+><Z-> - move up/down
6. The robot tool can be moved relative to the tools current orientation by pressing
<TOOL><ENT>. The buttons below will move the robot to preserve the tool orientation.
<Z+><Z-> - advance/retract the tool
<P+><P-> - pitch the tool up/down
7. Pressing <PTP><ENT> returns the robot to joint motion mode. While programming robot
points an operator will often switch between different robot programming modes.
8. Pressing <ORG><ENT> will move the robot to the origin position where all of the joint angles
are equal to zero.
9. At this point we are ready to record positions. This is done by moving the robot to a position
and then storing that position in a position memory location. These locations start at zero and
go up to 100 (?). Move the robot to three different positions and then record the points using the
keystrokes below. (Note: To clear positions you can use <PC><#><ENT> where # is the posi-
tion number.)
<PS><1><ENT> - this will record position 1
<PS><2><ENT> - this will record position 2
<PS><3><ENT> - this will record position 3
10. The robot can be moved to points using the keystrokes below. If the last point entered above
was 3, then it will be the current focus. The commands <INC> and <DEC> will increment
and decrement to other positions.
<DEC><ENT> - decrement to position 2
<DEC><ENT> - decrement to position 1
<DEC><ENT> - try to decrement to position 0 - this will cause an error
<INC><ENT> - increment to position 2
<INC><ENT> - increment to position 3
<MOV><1><ENT> - move to position 1
<MOV><2><ENT> - move to position 2
page 298
<MOV><3><ENT> - move to position 3
11. Connect the RS-232 port of the robot controller to a PC with a serial cable.
12. Run a terminal emulator on the PC and give it the following settings
9600 baud
8 data bits
no parity
1 stop bit
hardware flow control
echo typed characters locally
13. Turn the teach pendant off. This will allow you to control the robot from the remote terminal.
14. Type in NT to home the robot. All commands should be typed in UPPER CASE. If an error
occurs a tone will be heard. To clear the error press the reset button on the front of the robot.
15. Type the following commands and observe their effect.
MO 1
MO 2
MO 3
GO
GC
16. Type the following program in a text editor. Cut and paste it into the terminal window when
done. This program could be run with GT 10, RN 10 or RN.
10 MO 1
20 MO 2
30 MO 3
40 GT 10
17. Try other program in this chapter.
page 299
10. OTHER INDUSTRIAL ROBOTS
This chapter discussed other industrial robots.
10.1 SEIKO RT 3000 MANIPULATOR
In general
Degrees of freedom 4
Maximum payload 5kg (11 lb)
Repeatability (based on constant temp., load, speed) +/-0.025mm (+/- 0.001 in.)
Weight 108kg (237 lb)
Operating Temperature 0C to 40C (32F to 104F)
Humidity (based on constant temp. load, speed) 20% to 90%
Power Requirements 200-240 VAC
Other 50-70 psig air
A-axis
motion revolute
Range +/-145 degrees
Resolution 0.005 deg.
Speed
max. speed 150 deg/sec
max. torque 383. in.lbs
Z-axis
motion linear
Range 4.72 in (120mm)
Resolution 0.0005 in (0.012mm)
Speed
max. speed 14 in/sec (360 mm/sec)
max. force 23.3-35.2 lbs (10.6-16.0 kg)
R-axis
motion linear
Range 11.8 in (300mm)
Resolution 0.001 in (0.025mm)
Speed
max. speed 29.5 in/sec (750 mm/sec)
page 300
max. force 40 lbs
T-axis
motion revolute
Range 290 degrees
Resolution 0.003 deg.
Speed
max. speed 90 deg/sec
max. torque 358. in.lbs
The workspace is pictured below,
10.1.1 DARL Programs
All DARL comments follow at any position on a line.
Statements are ended with a colon, and as long as colons are used, more than one statement
can be used on a line.
Line numbering is required for DARL programs.
A-axis (290 deg)
R-axis (300mm)
Z-axis (120mm)
page 301
Dimensions are given in millimeters in the programs.
Commas and spaces are treated as equivalent.
A sample program is given below with comments for explanation,
10.1.1.1 - Language Examples
First, points can be defined in programs, they can also be defined by moving the robot to the
location and storing the value. This allows the robot to accurately find points without measuring.
It also means that points location values dont need to appear in programs, they are stored in
memory.
A example that uses for-next, if-then, goto and gosub-return commands is shown below.
These commands are very standard in their use.
10 SPEED 250 set the speed of the robot
20 T1 = 0. -350. -50. 0. first point
30 T2 = 0. -50. -350. 0. second point
40 T3 = 30. -50. -350. 30. third point
50 MOVE T1:MOVE T2:MOVE T3 move the gripper to different points in space
60 OUTPUT +OG0 200 open gripper
70 MOVE T1 + T2 add two positions and move there
70 OUTPUT +OG1 200 close gripper
80 STOP
page 302
A example that uses motion is shown below. The move command causes a motion to
another point by only turning the needed joints. moves causes a more complex motion resulting
in a straight line tool motion between points. movec allows a circular interpolation dictated by
three points (the start, and the two given). The shave command forces the robot to fully complete
a motion and stop before going to the next point. The sync command will move the robot, but
keep the gripper in the original position relative to the real world.
10 FOR A = 2 TO 10 start a loop that will count from 2 to 10
40 IF A = 4 THEN GOTO 100 when a has a value of 4 jump to line 100
50 IF A = 6 THEN GOSUB 200 when a has a value of 6 go to subroutine
60 NEXT A go back to line 10 and increase the value of a until it reaches 10
70 END end the program
100 MOVE T1 go to point 1
110 NEXT A go back to line 10
200 MOVE T2 go to point 2
210 RETURN go back to where we left line 50
10 T1 = 30. 10. 10. 40.
20 T2 = 15. 5. 5. 10.
30 T3 = 0. 0. 0. 0.
40 MOVE T1 move to a start point
50 SHAVE allow motions to only get close before moving to the next point
60 MOVE T2: MOVE T3 slows down at t2 before going to t3
70 NOSHAVE make motion stop fully before going to the next point
80 MOVE T1 return to the start
90 MOVE T2: MOVE T3 stops at t2 before going to t3
100 MOVE T1 return to the start
110 MOVES T2: MOVES T3 moves in a straight line from t1 to t2 and from t2 to t3
120 MOVE T1 back to the start again
130 MOVEC T2 T3 follows a smooth path, not slowing down at t2
140 MOVE T1 back to the start again
150 SYNC make gripper stay stationary relative to ground
160 MOVEC T2 T3 the arm moves, but the gripper stays at 0
170 NOSYNC make gripper follow robot
page 303
A example that defines tool location offsets is shown below. This is particularly useful for a
robot that has more than one tool attached. The normal tool location is on the end of the arm. With
multiple tools attached we will have multiple tool center points. We can have a tool definition for
each one of these. Note that the x-axis is the normal forward for the tool. The tool axis can only be
changed in the x-y plane (or the plane perpendicular to the gripper rotation).
A example that uses pallet commands is shown below. Basically a pallet allows us to create
an array of points (it does the calculations). We can then give a location on a pallet and move to
that point. The basic pallet definition requires that we indicate the number of rows and columns.
We also need to define the physical locations of the rows and columns. We do this by giving an
origin point, and then defining where the first row and column end. To use the pallet location we
can simply refer to the pallet location index.
30 A = 0.1 the tool center point x offset from the gripper
40 B = 0.2 the tool center point y offset from the gripper
50 C = 0.3 the tool center point z offset from the gripper
60 D = 1 define an offset for an axis
70 E = 0 define a zero offset for an axis
80 DEF TL2 D E A B C tool 2 at (0.1, 0.2, 0.3) with the x-axis pointing forward (1,0)
90 DEF TL3 E D C B A tool 3 at (0.3, 0.2, 0.1) with the x-axis pointing to the left (0,1)
100 TOOL 1 indicate that you are using tool 1
110 MOVE T1 move to position 1 with the tool pointing in the normal direction
111 remark note that the robot gripper will be positioned (-0.1, -0.2, -0.3) from normal
120 TOOL 2 choose the tool on the gripper pointing to the left
130 MOVE T1 this will move the robot to (-0.3, -0.2, -0.1)
140 remark the robot will also move so that the tool is pointing to the left.
page 304
A example that defines and uses new frames is shown below. We define a new frame of ref-
erence by using points. The first point becomes the new origin. The second point determines
where the new x-axis points. The z-axis remains vertical, and the y-axis is shifted appropriately.
A example that uses simple inputs and outputs is shown below. Note that there are two con-
nectors for I/O. The main or External connector is on the main controller box. The other I/O
110 R = 3 define the number of rows on the pallet
120 C = 4 define the number of columns
130 DEF PA2 (R,C) T1 T2 T3 pallet with first row from t1 to t2, the first column from
t1 to t3
140 FOR I = 0 TO R-1 loop for the rows
150 FOR J = 0 TO C-1 loop for the columns
160 MOVE T4 move the pickup point
170 OUTPUT +OG3 close the gripper
180 MOVE PA2(J,I) move to the location on the pallet
190 OUTPUT -OG3 open the gripper
200 NEXT J: NEXT I continue the loop to the next parts
20 T1 = 2. 1. 0. 0. define a point
30 T2 = 1. 1. 0. 0.
40 T3 = 2. 2. 0. 0.
50 DEF FR1 T2 T1 defines frame with origin at (1,1,0), but x-y axis in original
direction
60 DEF FR3 T1 T2 defines origin at T1 and x-axis pointing T2-T1=(-1,0,0)
70 DEF FR2 T2 T3 defines origin at T2 and x-axis pointing T3-T2 = (.71,.71,0)
80 MOVE T2 THIS WILL MOVE TO (1 1 0 0)
90 FRAME 1 USE REFERENCE FRAME #1
100 MOVE T2 THIS WILL MOVE TO FR1+T2 = (2, 2, 0, 0)
110 FRAME 2 USE REFERENCE FRAME #2
120 MOVE T2 THIS WILL MOVE TO FR2+T2 = ( 1, 0, 0, 0)
130 FRAME 3 USE REFERENCE FRAME #3
140 MOVE T2 THIS WILL MOVE TO FR3+T2 = (1.71, 1.71, 0, 0)
150 FRAME 0 GO BACK TO THE MAIN COORDINATES
80 MOVE T2 THIS WILL MOVE TO (1 1 0 0)
page 305
lines are on the Gripper. We can check the states of inputs and set the states of outputs. The +
sign indicates inputs/outputs high (5v) and the - sign indicates low (0V). The ranges for input
points are ie0-ie15, ig0-ig7, and for output points oe0-15, og0-7. The search command allows us
to move the robot until an input is activated. This is useful when attempting to find a part by
touching it.
10.1.1.2 - Commands Summary
A summary of the commands is given below,
100 WAIT +IE3 wait for external input #3 to turn on
110 WAIT -IG4 wait for gripper input #4 to turn off
120 IF IE5 AND NOT IE6 THEN 110 check to see if external input5 is on and 6 is off
130 OUTPUT +OG4 turn on output #4 on the gripper
140 OUTPUT -OE4 turn on output #4 on the external connector (not the gripper)
150 SEARCH +IG7 T1 THEN 200 ELSE 300 move towards t1 until gripper input 7 goes on
CLEAR <variable> This will clear a variable or point value. If none is
specified then all the variable memory is cleared.
DEF FR <1-9> Tn Tn This command will allow the workspace axes to be
redefined.
DEF PA <0-9> (etc. For defining pallets
DEF TL <1-9> X1 Y1 X2 Y2
Z1
Defined tool offsets
page 306
DELAY <1-32767> Will delay for the specified time in milliseconds
END Specifies the end of a program.
FOR TO / NEXT Allows the standard BASIC for next loop.
FRAME Specifies a current frame of reference.
GOSUB / RETURN Functions for creating subroutines.
GOTO An unconditional jump to another line number.
HERE <Tn> Will define the current position to the location
variable.
HOME Move the robot to an initial position
INPUT Fill a variable with an input from the keyboard
IF/THEN/ELSE Standard flow control commands
page 307
JOGRT Sets the robot to move in cylindrical mode
JOGSP <1-100> Sets the jogging speed
JOGXY Sets the robot to move in cartesian coordinates
relative to the current frame.
MOVE <Tn> Move to a specified position.
MOVEC <Tn> <Tn> [C]
MOVEC <Tn> <rad> [L,C]
Move the robot in a circular continuous path
MOVES <Tn> Move the robot with straight line motion
NOSHAVE Sets the robot to stop fully at the end of each
OD = n Sets one of the four binary output bits (0-15)
OUTPUT <+/-> <OE,OGn>
[10-32767]
Opens and closes gripper or externally connected
devices.
PRINT Output a structured string to the output unit or
SHAVE Allow the robot to start the next motion before the
previous one is complete.
page 308
10.2 IBM 7535 MANIPULATOR
In general
Degrees of freedom 4
Maximum payload 6kg (13.2 lb)
Repeatability (based on constant temp., load, speed) +/-0.05mm (+/- 0.002 in.)
Weight 99kg (218 lb)
Operating Temperature 10C to 40.6C (50F to 106F)
Humidity (based on constant temp. load, speed) 8% to 80%
Theta 1 axis
motion revolute
Range 0 to 200 degrees +/- 1deg.
Resolution 0.00459 deg.
Low speed (note: this is set by a switch)
max. speed 700 mm/sec (28 in./sec)
SPEED Sets the speed of the manipulator
STOP Terminate the execution of the program.
TOOL n Set motions to be relative to a tool.
WAIT <+/-> <IE,IG> <0-15> Wait for a certain input condition.
OUTPUT <+/-> <OE,OGn>
[10-32767]
Opens and closes gripper or externally connected
devices.
page 309
max. load 6 kg(13.2 lb)
Medium speed
max. speed 1100 mm/sec (43 in./sec)
max. load 6 kg(13.2 lb)
High speed
max. speed 1450 mm/sec (57 in./sec)
max. load 1 kg(2.2 lb)
Theta 2 axis
motion revolute
Range 0 to 160 degrees +/- 1deg.
Resolution 0.009 deg.
Low speed (note: this is set by a switch)
max. speed 525 mm/sec (21 in./sec)
max. load 6 kg(13.2 lb)
Medium speed
max. speed 825 mm/sec (32 in./sec)
max. load 6 kg(13.2 lb)
High speed
max. speed 1000 mm/sec (39 in./sec)
max. load 1 kg(2.2 lb)
Roll axis
motion revolute
Range +/- 180 degrees +/- 1.5 deg.
Holding Torque 35 kg-cm (30.4 in.-lb.)
Maximum load centered on Z-Axis 6 kg (13.2 lb)
Maximum speed 3.7 rad/sec (210 deg./sec. +/-5%)
Rotating Torque 14 kg-cm (12.2 in-lb)
Max. load inertia 0.1 kg-m**2 (0.074 slug-ft**2)
(Note: effects of off centre loads not
considered, and lower maximum)
Resolution 0.36 deg.
Z-Axis
motion prismatic
Range 75 mm (2.95 in.)
Maximum Payload 6.0 kg (13.2 lb)
Resolution Not Applicable
Compressed Air
Maximum Pressure 6 kg/cm**2 (85 psig)
page 310
Conditioning Must be moisture free, as through a
moisture separator, and filtered with
regulator.
The workspace is shown below,
650 0 0 , , ( )
0 650 0 , , ( )
650 0 0 , , ( )
x
y
z
page 311
7535/7540 LINEAR Rate Values Available
Programmed Rate
1
2
3
4
5
6
7
8
9
10
20
30
50
0
Arm speed at tool tip
mm/sec. (in./sec)
60 (2.4)
100 (3.9)
140 (5.5)
180 (7.1)
225 (8.9)
265 (10.4)
305 (12.0)
345 (13.6)
385 (15.2)
430 (16.9)
430 (16.9)
430 (16.9)
430 (16.9)
Exit linear speed and motion
Straight line error
mm (in.)
3.0 (0.12)
3.7 (0.15)
4.4 (0.17)
5.3 (0.21)
6.2 (0.24)
6.9 (0.27)
7.6 (0.30)
8.4 (0.33)
9.3 (0.37)
10.0 (0.39)
11.5 (0.45)
11.5 (0.45)
11.5 (0.45)
7535 Program Speed Values for PAYLOAD Command
Program speed values
1
2
3
4
5
6
7
8
9
10
0
Speed of theta1
at the tool tip
mm/sec (in./sec)
300 (11.8)
500 (19.7)
700 (27.6)
750 (29.5)
900 (35.4)
1000 (39.3)
1100 (43.3)
1200 (47.2)
1300 (51.2)
1450 (57.1)
Default to speed switches
Speed of theta2
at the tool tip
mm/sec (in./sec)
225 (8.9)
375 (14.8)
525 (20.7)
575 (22.6)
675 (26.6)
750 (29.5)
825 (32.4)
900 (35.4)
950 (37.4)
1000 (39.3)
Maximum
payload for speed
kg (lb)
6 (13.2)
6 (13.2)
6 (13.2)
6 (13.2)
6 (13.2)
6 (13.2)
6 (13.2)
3.5 (7.7)
2 (4.4)
1 (2.2)
NOTE: Speeds in the table are for planning purposes only and are typical minimum
values. Speed values only consider a single joint moving. Speed at the end
of the arm is greater when multiple joints are used on a single move.
page 312
10.2.1 AML Programs
All AML comments start with two dashes -- at any position on a line
Statements are ended with a semi-colon, and as long as semi-colons are used, more than one
statement can be used on a line.
Line numbering is done by the AML Editor
the free form variables/identifiers must: start with a letter; be up to 72 characters in length;
use letters numbers and underscores, except in the last position.
Statements have the general form,
A sample program is given below with comments for explanation,
IDENTIFIER:KEYWORD;
- IDENTIFIER is a unique name that the user has selected
- the colon separates the two elements
- KEYWORD indicates the significance of the IDENTIFIER to
the system
- the semi-colon indicates the end of the statement
page 313
A summary of the commands is given below,
NEWPROG:SUBR: --A subroutine called NEWPROG to pick up a part
RELEASE; -- open the gripper before dropping to prevent collision
DELAY(20); -- wait 2 seconds to ensure the gripper is open
DOWN; -- drop down to the work surface
DELAY(10); -- wait 1 second just to be sure everything has settled down
GRASP; -- close the gripper
DELAY(10); -- wait 1 second to allow everything to settle down
UP; -- go up so that we can move over other objects
PMOVE(PT(300,300,0)); -- move to 300,300 in robot coordinates
END; -- return to the calling routine
BRANCH(label);
(flow command)
This will force a branch to the statement having the
label.
BREAKPOINT;
(flow command)
When this command is executed, it will examine the
stop and Mem key on the robot. If either is pressed,
the program execution will stop.
DECR(name);
(logic command)
Decrement name by one.
DELAY(seconds);
(flow command)
This commands will wait for the number of tenths of
seconds given, this can be used when motions must finish
before continuing. If the value is 10, then the delay
will be 1 second.
page 314
DOWN(value);
(motion command)
Instructs the robot to drop the gripper (z-axis). The
program delays until the gripper has dropped. If the axis
has not reached its limit within the given time, then an
error message will be generated. The timeout can be
altered (from 1.5 seconds) by supplying a value
argument in tenths of a second. A value of zero means
wait forever
DPMOVE(x,y,z,r);
DPMOVE(x,y,r);
(motion command)
A relative cartesian motion is made in the direction
specified. if the z-axis has a height control, the z can
be included.
GETC(counter_name);
(communication command)
The program is halted briefly while the host computer
is polled the a new counter value.
GETPART(name);
(pallet command)
Move to the current part on the pallet.
GRASP;
(motion command)
The EOAT gripper will be closed when this command is
issued.
INCR(name);
(logic command)
Variable name is incremented by one.
LINEAR(quality);
(setting command)
When the robot moves it can follow a number of paths,
but this command will set all motions to follow a
straight path. As the value goes from 50 to 1 the path
quality improves. If the value is zero, the linear mode
is turned off.
page 315
NEXTPART(name);
(pallet command)
move the pallet reference ahead by one.
PAYLOAD(value);
(setting command)
As the mass carried changes, so do the maximum speeds.
This command will allow modification of the motion
speeds. As value changes from 10 to 1 the load
increases, and the robot will go slower. A value of
zero will turn the function off.
PMOVE(PT(x,y,r);
PMOVE(PT(x,y,z,r));
PMOVE(name);
(motion command)
The PMOVE portion of this nested command will cause a
movement to a point. The PT statement indicated the
position of a point. A point name could also be used.
Here x and y are the cartesian coordinates on the work
plane, and r is the roll of the gripper (180). Home,
with the arm stretched to the far left is (650,0,0)
PREVPART(name);
(pallet command)
reduce the current pallet part count by one.
RELEASE;
(motion command)
This command is the opposite of GRASP, and will
release the gripper.
SETC(name, value);
(logic command)
Set the counter name to a value.
SETPART(name, value);
(pallet command)
set the pallet name to the given value.
page 316
A summary of some of the keywords is,
TESTC(name, value, label);
TESTI(DIpoint,value,label);
TESTP(name,value,label);
(logic command)
TESTC does a conditional branch statement that
compares name to value. TESTI does the same for a DI
point, and a value. TESTP compares a pallet name and
value. All statements branch to label if the comparison
is equal.
UP(value);
(motion command)
This commands is the reverse of DOWN, as it raises the
z-axis.
WAITI(DIpoint,value,time);
(logic command)
Pause while waiting for the DI point to reach value.
Time specifies a maximum value before an error message
should be generated.
WRITEO(DO point, value);
(logic command)
Set DO point to the given value.
ZMOVE(position); Move the z-axis to a given position, if variable
positioning is available.
ZONE(factor);
(setting command)
The accuracy of a point to point move is set using
this command. As the value factor changes from 15 to 1
the motion times increase, but the final position is more
accurate. If factor has a value of zero, the function
is turned off.
END; causes a return from a subroutine.
name:NEW PT(x,y,r);
name:NEW PT(x,y,z,r);
Defines a point name with the values x,y,r and z if
the robot supports it.
page 317
10.3 ASEA IRB-1000
In general
maximum payload (for a 200mm tool offset) 6 kg
Maximum moment of inertia 2.5 Nm (dynamic)
Maximum static moment 12 Nm (static)
weight 125 kg
accuracy at wrist +/- 0.20mm
Axis 1
name:NEW string; A string is assigned to variable name.
name:NEW n; Create a variable name, and assign a numeric value to
ident:SUBR;
ident:SUBR(parameter);
A subroutine called ident is created. A parameter list
can be associated by adding it to the definition.
name:STATIC
COUNTER;
a counter variable called name is created.
name:STATIC
PALLET(ll,lr,ur,ppr,parts
);
a pallet definition name can be defined. The pallet is
assumed to be rectangular with the three corners given,
ll, lr and ur (lower left, lower right, and upper right
respectively). the parts per row (ppr), and total number
of parts are also given.
label:statement; A label can be arbitrarily inserted before any command
to set a branch point.
page 318
joint type revolute
range 340 deg.
speed 95 deg/sec
actuator servo
Axis 2
joint type revolute
range +/-40 deg.
speed 0.75 m/sec
actuator servo
Axis 3
joint type revolute
range +/-25 deg. to -40 deg.
speed 1.1 m/s
actuator servo
Axis 4
joint type revolute
range +/- 90 deg.
speed 115 deg/sec.
actuator servo
Axis 5
joint type revolute
range +/- 180 deg.
speed 195 deg/sec
actuator servo
Gripper
Pneumatic 2 solenoid valves are located in the
upper arm, and can be operated by
the programs.
electrical There is a four pole electrical outlet
in the upper arm for use with more
advanced grippers having search
functions.
page 319
10.4 UNIMATION PUMA (360, 550, 560 SERIES)
In general,
- an articulated arm with 3 dof for positioning, and 3 dof for orientation
- left/right arm configurations are possible
- uses DC servo motors for drive
- uses 110-130 VAC, 50-60Hz, 1.5KW
- weight 120 lb
- repeatability 0.004in
- RS-232C port for dumb terminal
- 32 parallel I/O lines
- memory 16K
- programming language is VAL
joint 1 (Waist)
joint type revolute
range 315
max slew rate 1.9 rad/sec.
resolution .0001 rad/bit
maximum static torque 9.9Nm
joint 2 (Shoulder)
joint type revolute
range 320
max slew rate 1.8 rad/sec.
resolution .00009 rad/bit
maximum static torque 14.9Nm
joint 3 (Elbow)
joint type revolute
range 300
max slew rate 2.6 rad/sec.
resolution .000146 rad/bit
maximum static torque 9.1Nm
joint 4 (Wrist Rotation)
joint type revolute
range 575
max slew rate 8.7 rad/sec.
resolution .000181 rad/bit
page 320
maximum static torque 1.5Nm
joint 5 (Wrist Bend)
joint type revolute
range 235
max slew rate 5.6 rad/sec.
resolution .000199 rad/bit
maximum static torque 1.4Nm
joint 6 (Flange Rotation)
joint type revolute
range 525
max slew rate 5.2 rad/sec.
resolution .000247 rad/bit
maximum static torque 1.1Nm
10.5 PRACTICE PROBLEMS
2. Write a short program to direct a robot to pick up and put down a block. Assume the points
have already been programmed with the teach pendants.
a) Write program for the IBM 7535.
b) Write program for the Seiko RT-3000.
page 321
10. You have been asked to write a program for a Seiko RT-3000. The program is to pick up
a part at point T1, move to point T2, and then load the part into a pallet. The robot should then
return to point A to pick up then next part. This should continue until the pallet is full.
T1 = (300, 300, 20)
T2 = (-300, 300, 0)
Pallet has 6 rows and 7 columns
Pallet origin T3 = (300, 0, 0)
Pallet end of row T4 = (350, 0, 0)
Pallet end of column T5 = (300, 60, 0)
NEWPROG:BLOCK;
RELEASE; -- open the gripper
DELAY(5); -- delay 1/2 second to allow the gripper to open
PMOVE(OVER); -- move to the point over the pickup point called OVER
DOWN; -- move the arm down
DELAY(2); -- wait for the motion to complete and settle
GRASP; -- close the gripper
DELAY(2); -- wait for the gripper to close
UP; -- raise the block
DELAY(20); -- wait for a couple of seconds
DOWN; -- drop the block back to the surface of the table
OPEN; -- open the gripper
UP; move the arm away from the block
END; - terminate the program
ans. a)
page 322
11. An IBM 7535 industrial robot is to be used to unload small 1 lb. cardboard boxes (5 by
4 by 1) from a conveyor, and stack them in a large cardboard box (20 by 8 and 2 deep). After
the large box is loaded, it will be removed automatically and replaced with an empty one. The
conveyor will be controlled by a robot output, and it will be stopped when an optical sensor
detects a small box. When the box is full the conveyor will be stopped and a light turned on until
an unload button is pushed. The entire system uses a start and stop button combination. The stop
button is not an e-stop, but it will stop the cycle after the small box is placed in the large box.
a) Layout the position of the conveyor, sensor, large box and robot so that all positions can
be reached. Indicate critical points of objects.
b) Design a robot gripper to pick up the boxes.
c) Develop a flow chart for the robot operations.
d) Write an AML program for the flowchart.
ans.
10 T1 = 300. 300. 20. 0.
20 T2 = -300. 300. 0. 0.
30 T3 = 300. 0. 0. 0.
40 T4 = 350. 0. 0. 0.
50 T5 = 300. 60. 0. 0.
60 R = 6
70 C = 7
80 OUTPUT +OG3
90 DEF PA2(R, C) T3 T4 T5
100 FOR I = 0 TO R-1
110 FOR J = 0 TO C-1
120 MOVE T1
130 OUTPUT -OG3 200
140 MOVE T2
150 MOVE PA2(J, I)
160 OUTPUT +OG3 200
170 NEXT J
180 NEXT I
190 STOP
page 323
First, we need to convert the given dimensions to mm.
small boxes = 127x101.6x25.4mm
large boxes = 508x203.2x76.2mm
Next, we need to overlay these on the robot workspace. In this case there is abun-
dant space and can be done by inspection.
650 0 0 , , ( )
0 650 0 , , ( )
650 0 0 , , ( )
x
y
z
A
B C
D
A = (0, 650-101.6/2, 0) = (0, 599.2, 0)
B = (-400, -1.5*127, 0) = (-400, -190.5, 0)
C = (-400 + 101.6, -1.5*127, 0) = (-298.4, -190.5, 0)
D = (-400, 1.5*127, 0) = (-400, 190.5, 0)
ans. a)
photo
sensor 127/2mm
page 324
For this application, vacuum grippers should work effectively because the mass is light,
and the boxes should have clean cardboard faces. Because the application has been
designed to lift the boxes in the centers, we should be able to use a single suction cup,
but a large factor of safety will be used to compensate (>= 3). We will assume that we
are using a venturi valve to generate the suction, so a pressure differential of 3psi is rea-
sonable.
W ( )FS PA
min
=
1lb3 3
lb
in
2
-------A
min
=
A
min
1in
2
=
A
min
d
min
2
----------
2
ans. b)
1in
2
d
min
2
----------
2
d
min
1.13in =
Based on this calculation I would select a suction cup that is 1.25 or 1.5 dia.
page 325
12. Repeat the previous problem for the Seiko RT-3000 robot.
ans. c)
Start
start
button pushed?
pick up small box
index pallet
move above box
turn off conveyor
is box full?
turn on light
reset button?
reset pallet values
stop pushed?
yes
no
yes
no
yes
no
yes
no
page 326
First, we need to convert the given dimensions to mm.
small boxes = 127x101.6x25.4mm
large boxes = 508x203.2x76.2mm
Next, we need to overlay these on the robot workspace. In this case there is abun-
dant space and can be done by inspection.
500 0 0 , , ( )
0 500 0 , , ( )
x
y
A
B C
D
A = (0, 500-101.6/2, 0) = (0, 449.2, 0)
B = (-350, -1.5*127, 0) = (-350, -190.5, 0)
C = (-350 + 101.6, -1.5*127, 0) = (-248.4, -190.5, 0)
D = (-350, 1.5*127, 0) = (-350, 190.5, 0)
ans. a)
photo
sensor
127/2mm
page 327
For this application, vacuum grippers should work effectively because the mass is light,
and the boxes should have clean cardboard faces. Because the application has been
designed to lift the boxes in the centers, we should be able to use a single suction cup,
but a large factor of safety will be used to compensate (>= 3). We will assume that we
are using a venturi valve to generate the suction, so a pressure differential of 3psi is rea-
sonable.
W ( )FS PA
min
=
1lb3 3
lb
in
2
-------A
min
=
A
min
1in
2
=
A
min
d
min
2
----------
2
ans. b)
1in
2
d
min
2
----------
2
d
min
1.13in =
Based on this calculation I would select a suction cup that is 1.25 or 1.5 dia.
page 328
ans. c)
Start
start
button pushed?
pick up small box
index pallet
move above box
turn off conveyor
is box full?
turn on light
reset button?
reset pallet values
stop pushed?
yes
no
yes
no
yes
no
yes
no
page 329
14. The IBM 7535 robot arm moves its TCP to point (-450, 250)mm at speeds programmed
by payload(5) and decelerates from the resultant speed to zero in 0.5 seconds. The tool has a
ans.
10 R = 3: C = 4: H = 0 define rows and column variables
20 SPEED 100 set the robot speed
30 T1 = 0. 449.2 0. 0. set point A
40 T2 = -350. 449.2 -190.5 0. set point B
50 T3 = -248.4 449.2 -190.5 0. set point C
60 T4 = -350. 449.2 190.5 0. set point D
70 T5 = 0. 0. -50. 0. a displacement to the conveyor height
80 T6 = 0. 0. -100.4 0. a displacement to the bottom layer of the large box
90 T7 = 0. 0. -75. 0. a displacement to the top layer of the large box
100 DEF PA2(4,2) T1 T2 T3 define pallet
110 WAIT +IE1 wait for external input #1 to go on, this is the start button
120 FOR H = 0 TO 1 set box layers
130 FOR I = 0 TO R-1 loop for rows
140 FOR J = 0 TO C-1 loop for columns
150 OUTPUT +OE1 turn on external output #1, this is the conveyor
160 MOVE T1 move to the conveyor pickup point
170 WAIT +IE2 wait for the input from the optical sensor to go on
180 OUTPUT -OE1 turn off the conveyor
190 MOVE T1 + T5 move to pick up box
200 OUTPUT +OG1 turn on suction cup on gripper
210 MOVE T1 pick up the box
220 MOVE PA2(I, J) move to the pallet position in the large box
230 IF H = 1 THEN GOTO 260 jump if on the top layer
240 MOVE PA2(I, J) + T6 move to the bottom layer of the box
250 GOTO 270
260 MOVE PA2(I, J) + T7 move to the bottom layer of the box
270 OUTPUT -OG1 turn off the suction cup
280 MOVE PA2(I, J) move out of box
290 IF NOT IE3 THEN GOTO 310
300 WAIT +IE1 wait for the start button
310 NEXT J: NEXT I: NEXT H end of the loops
320 OUTPUT +OE2 turn on box full light
330 WAIT +IE4 wait for the reset button
340 GOTO 110 go back to start anew
page 330
mass of 1.5 kg with its center of gravity at 3cm from the TCP and transfers a mass of 4kg with its
C.G. at 5cm from the TCP.
a) determine the inertia torque about the theta1 axis showing all correct units
b) compare the value in a) with a maximum inertia torque estimated from decelerating a
6kg mass from 1100mm/s to zero in 0.5 sec.
c) Estimate the combined error at the CG of the load due to theta1 and theta 2 resolution
10.6 LABORATORY - SEIKO RT-3000 ROBOT
Purpose:
Introduction to the Seiko RT-3000 robot and programming methods.
Overview:
This laboratory will involve a basic tutorial on the use of the robot, including safety. The
students will have prepared a program for the robot ahead of class. During the lab-
oratory the robot will be programmed and tested using the prepared programs. A
simple accuracy and repeatability test will be conducted.
Pre-Lab:
1. Use Netscape Communicator to access the robots in the laboratory, explore the site.
2. Review the note section on the Seiko RT-3000. After this use the on-line robot to write
a simple test program.
3. Write a program to pick up pop cans at one point, and put them down at another point.
This program should repeat five times in a row. Test the program on the robot.
In-Lab:
1. Examine the robot and all associated cables, including the pneumatics. Make sure the
settings match the manual specifications.
2. Examine the buttons on the front and connectors on the back of the controller box.
Match these up to the input/output points. Determine if these are TTL, sourcing, or
some other type.
3. Turn on the robot and use the teach pendant, with the commands below, to control the
robot.
4. Turn the robot controller off, connect it to a computer, and then turn it back on. Turn the
servo power on and then type in the command home. The robot will move and find
its reference position. You may then type in commands at the prompt.
page 331
5. Program some points using the here command. (refer to manual).
6. Enter the simple program below to move between the programmed points. Add in com-
mands that will open and close the gripper.
7. Add lines the the program that will turn on/off outputs and examine inputs. Use the
appropriate electrical equipment to test the new parts of the program.
8. Enter and test your prelab program with no parts present. Set up the parts and run the
program again. Cooperate with the other group and add a part present sensor to the
part pickup point, connect it to the robot, and add a line to the program to wait for
the part.
9. Move to the other robot and complete the other part of the first step.
10. For the robot you are currently using, put the robot in an extended position (tool far
away from the base). Set up a dial gauge indicator so that it touches a solid point
on the tool. Set the gauge so that it reads zero. Move the robot away and back to
the same position, and read the value from the dial gauge indicator. Repeat this
process to get 10 readings.
11. Position the robot so that the tool is in the middle of the workspace. Take similar mea-
surements to those in step 3.
Submit (individually):
1. A copy of your prelab program.
2. A copy of the final program with the part detector sensor.
3. Statistical estimates of repeatability for both positions.
10.7 TUTORIAL - SEIKO RT-3000 ROBOT
1. Look at the robot and controller. Indentify the controller, teach pendant (programming termi-
nal) and robot.
2. Turn on the robot power and look at the programming terminal. There should be a message that
says " ". If there are any error messages inform the instructor.
3. Turn on the servo motor power by pressing the Servo ON button on the front of the controller.
After this the robot can be moved to the home position with the HOME command. After the
robot goes through the startup procedure it will be ready for use.
4. The robor joints can be moved with the arrows on the right side of the keyboard. Move each
joint and observe the range of motion.
5.
page 332
10.8 LABORATORY - ASEA IRB-1000 ROBOT
Purpose:
Introduction to robots and programming methods.
Overview:
Pre-Lab:
In-Lab:
Submit:
10.9 TUTORIAL - ASEA IRB-1000 ROBOT
1. Look at the robot and controller. Indentify the controller, teach pendant (programming termi-
nal) and robot.
2.
page 333
11. ROBOT APPLICATIONS
The nice definition of a robot by the Robot Institute of America is A robot is a reprogram-
mable multifunctional manipulator designed to move material, parts, tools, or specialized devices
through variable programmed motions for the performance of a variety of tasks. The not-so-nice
definition is "Robots are one armed, blind, stupid, deaf, mute, and cannot feel and understand
what they are doing".
11.0.1 Overview
Unlike many machines, robots are easy to imagine performing tasks, because of their simi-
larity to the human form. This has caused many companies to adopt robots without properly
assessing what their strengths and weaknesses are.
The early days of experimentation lead to many failed applications, as well as some notable
successes.
A useful dichotomy is,
Point-to-Point - A robot that typically only has 2 (or very few) possible positions. These
are good for pick and place type operations, and they are often constructed with
pneumatic cylinders.
Manipulation - A robot that assembles, or moves parts requires good end of path motion,
but does not require as much accuracy in the middle of the path. A higher speed
between path endpoints is often desired.
Path Tracking - When arc welding, gluing, etc. the robot must follow a path with high
accuracy, and constant speed. This often results in slower motion, and more
sophisticated control software.
Operating - The robot will be expected to apply forces to perform work at the end of the
tool, such as doing press fits. While the demands for these robots is essentially the
same, they must be capable of handling the higher forces required when in work-
ing contact with the work.
Telerobotics - Acts as a remote extension of human control, often for safety or miniatur-
ization purposes. In these cases the robots often mimic the human form, and pro-
vide some forms of physical feedback.
Services - mail delivery, vacuuming, etc.
page 334
Biomedical - prosthetic and orthotic devices.
The number of degrees of freedom of the robot should be matched to the tasks.
Note: 5 d.o.f. robots will allow the tool to reach all points in space if the tool has an axis of
symmetry. For example, a welding torch flame has a symmetrical axis.
Some commercial applications that have been done with robots are,
- die casting - used for unloading parts from dies, quenching parts, and trimming them
with a trim press. The robot may also be used to put inserts into the die.
- spot welding - spot welding electrodes are clamped in place, and the weld is made. The
robot allows many welds to be done.
- arc welding- continuous path robots are used to slowly track a path with a continuous
rate, and with control of welding parameters.
- investment casting - robots can be used in the pick and place operations involved in mak-
ing the molds.
- forging- a robot can be used to precisely position the work under the impact hammer,
freeing a worker from the handling hot heavy work pieces.
- press work- the robot handles loading parts into the press, and removing the resulting
work pieces.
- spray painting- a very popular application in which the robot sweeps the paint head
across the surface to deposit a spray. This process has been coupled with electro-
statics to improve efficiency and distribution.
- plastic molding - they can be used for loading the hoppers, and unloading the parts. This
is most effective when the parts are hard to handle.
- foundry process- robots can be used for ladling materials, and preparation of molds.
- machine tools- robots can be used for loading and unloading machine tools, and material
transfer systems.
- heat treatment process - parts can be loaded into the ovens, unloaded from the ovens,
quenched and dried by robots.
- metal deburring - continuous path robots can be used to track rough edges with a compli-
ant tool design.
- palletizing process - parts can be placed in boxes, or on skids in preparation for shipping.
Most robots have program commands to support this.
- brick manufacture - a robot can be used for loading and unloading a kiln, and stacking
bricks for shipping.
- glass manufacture - a robot can handle the breakable glass with a wide EOAT that pre-
vents sagging, etc. The robot can also be used for grinding edges.
page 335
11.0.2 Spray Painting and Finishing
Air spraying - air under pressure causes the paint to atomize and be propelled to the article
to be painted
Airless spraying - finishing materials, such as paint, are sprayed under considerable hydrau-
lic pressure through a fixed orifice, which causes the paint to be atomized directly without the
need for air.
Electrostatic spraying - Atomized particles (paint or powder droplets) are electrostatically
charged. These are attracted to the object being sprayed by the applied electrostatic field. Consid-
erable material savings are achieved since very little of the sprayed material bypasses the object
and is lost. Objects being sprayed are kept at a ground potential to achieve a large electrostatic
field.
Heating of materials - paint decreases in viscosity when heated and can be sprayed with
lower pressures. Less solvent is required and there is less overspray of paint. Heating may be used
with any of the preceding systems
Air spraying and electrostatic spraying are the most common methods of application for
paints, enamels, powders, and sound absorbing coatings.
11.0.3 Welding
These tasks are characterized by the need for,
- smooth motion
- conformity to specified paths
- consistent tool speed
page 336
11.0.4 Assembly
General concepts are,
one or more robots
each robot may perform a variety of sub-assemblies
requires a conveyor and inspection station
A host computer must synchronize robot actions
A bad part rejection function should be available
An organized output should be used, e.g. pallets, or shipping crates.
These tasks are common, but face stiff competition from fixed automation and manual
labor.
11.0.5 Belt Based Material Transfer
When a robot is used in a workcell, the raw part is delivered in, worked on, and then moved
out. This can be done using moving belts, etc.
Parts are placed directly on the belt, or placed on pallets first.
Belts can travel in straight paths, or in curved paths if flexible belt link designs are used.
If straight belts are used, transfer points can be used at the end to change part/pallet direc-
tion
When pallets are used, there is a fixture on top designed to hold the part in an accurate posi-
tion so that robots and other equipment will be able to locate the part within some tolerance.
Vision systems may be necessary if part orientation cannot be fixed.
page 337
11.1 END OF ARM TOOLING (EOAT)
The best known universal gripper - the human hand
Useful classifications are,
- Grippers
- multiple/single
- internal/external
- Tools
- compliant
- contact
- non-contact
End of arm tooling is typically purchased separately, or custom built.
11.1.1 EOAT Design
Typical factors to be considered are,
Workpiece to be handled
part dimensions
mass
pre- and post- processing geometry
geometrical tolerances
potential for part damage
Actuators
mechanical
vacuum
magnet
etc.
Power source of EOAT
electrical
pneumatic
hydraulic
mechanical
Range of gripping force
object mass
friction or nested grip
coefficient of friction between gripper and part
maximum accelerations during motion
page 338
Positioning
gripper length
robot accuracy and repeatability
part tolerances
Maintenance
number of cycles required
use of separate wear components
design for maintainability
Environment
temperature
humidity
dirt, corrosives, etc.
Temperature protection
heat shields
longer fingers
separate cooling system
heat resistant materials
Materials
strong, rigid, durable
fatigue strength
cost and ease of fabrication
coefficient of friction
suitable for environment
Other points
interchangeable fingers
design standards
use of mounting plate on robot
gripper flexible enough to accommodate product design change
The typical design criteria are,
- low weight to allow larger payload, increase accelerations, decrease cycle time
- minimum dimensions set by size of workpiece, and work area clearances
- widest range of parts accommodated using inserts, and adjustable motions
- rigidity to maintain robot accuracy and reduce vibrations
- maximum force applied for safety, and to prevent damage to the work
- power source should be readily available from the robot, or nearby
- maintenance should be easy and fast
- safety dictates that the work shouldnt drop when the power fails
Other advanced design points,
- ensure that part centroid is centered close to the robot to reduce inertial effects. Worst
case make sure that it is between the points of contact.
page 339
- holding pressures/forces/etc are hard to control, try to hold parts with features or shapes
- compliance can help guide work into out-of-alignment conditions.
- sensors in the EOAT can check for parts not in the gripper, etc.
- the gripper should tolerate variance in work position with part alignment features
- gripper changers can be used to make a robot multifunctional
- multiple EOAT heads allow one robot to perform many different tasks without an EOAT
change.
- *** Dont try to mimic human behavior.
- design for quick removal or interchange of tooling by requiring a small number of tools
(wrenches, screwdrivers, etc).
- provide dowels, slots, and other features to lead to fast alignment when changing grip-
pers.
- use the same fasteners when possible.
- eliminate sharp corners/edges to reduce wear on hoses, wires, etc.
- allow enough slack and flexibility in cables for full range of motion.
- use lightweight materials, and drill out frames when possible.
- use hard coatings, or hardened inserts to protect soft gripper materials.
- examine alternatives when designing EOAT.
Part
Gripper
Better - less chance of slippage
robot arm
Gripper
Part
robot arm
part will be more stable, and well located
page 340
- the EOAT should be recognized as a potential bottleneck, and given extra design effort.
- use shear pins, and other devices to protect the more expensive components.
- consider dirt, and use sealed bearings where possible.
- move as much weight away from the tip of the gripper towards the robot.
11.1.2 Gripper Mechanisms
A gripper is specifically EOAT that uses a mechanical mechanism and actuator to grasp a
part with gripping surfaces (aka fingers)
Quite often gripper mechanisms can be purchases, and customized fingers attached.
Fingers are designed to,
1. Physically mate with the part for a good grip
2. Apply enough force to the part to prevent slipping
Movements of the fingers
- pivoting (often uses pivotal linkages)
- linear or translational movement (often uses linear bearings and actuators)
Typical mechanisms
- linkage actuation
- gear and rack
- cam
n
f
F
g
wgS =
coeff. of friction between part and gripper =
n
f
number of contacting fingers =
F
g
gripper force =
w weight of part =
g gravity =
S factor of safety =
(for basic applications 2 to 3 should be the
absolute minimum, but high speed applications
will require more force to resist inertial forces)
page 341
- screw
- rope and pulley
- miscellaneous - eg. bladder, diaphragm
Two Finger Gripper - as the pneu-
matic cylinder is actuated, the
fingers move together and
apart.
Parallel finger actuator - as the
cylinder is actuated, the fin-
gers move together and apart
in parallel.
page 342
11.1.2.1 - Vacuum grippers
Suction cups can be used to grip large flat surfaces. The cups are,
- typically made of soft rubber or plastic
- typically round, or oval shapes
A piston operated vacuum pump (can give a high vacuum), or a venturi valve (simpler) can
Two Fingered Pneumatic Actuated - as the cylinder is
actuated, it translates to the fingers opening or clos-
ing. The extra links help increase holding force.
Two Finger Internal Gripper - as
the cylinder is actuated, the
fingers move outward.
page 343
be used to generate the vacuum.
The surfaces should be large, smooth, clean.
The force of a suction cup depends on the effective area of the vacuum and the difference in
the vacuum, and air pressures.
e.g.
F PA = F maximum gripping force =
P difference between vacuum and air pressure =
A total effective area of the vacuum =
We have a suction cup gripper with two 5diameter cups that is to be used
to lift 1/4 steel plates cut to 2 by 3. How much vacuum pressure must
be applied to just hold the plates? Suggest a realistic value.
w 0.28
lb
in
3
-------
1
4
--- in ( ) 24 in ( ) 36 in ( ) 60.48 lb ( ) = =
A 2
5
2
---
2
2 19.63 in
2
( ) [ ] 39.26 in
2
( ) = = =
P
w
A
----
60.48 lb ( )
39.26 in
2
( )
-------------------------- 1.54 psi ( ) = = =
Minimum to hold plate
Assume low moving speed for robot, use factor of safety = 2.0
P
S
2.0 P 3.08 psi ( ) = =
Note: this is much less than atmospheric pressure (15 psi), there-
fore it is realistic.
page 344
Advantages,
- requires only one surface of a part to grasp
- a uniform pressure can be distributed over some area, instead of concentrated on a point
- the gripper is light weight
- many different types of materials can be used
Disadvantages,
- the maximum force is limited by the size of the suction cups
- positioning may be somewhat inaccurate
- time may be needed for the vacuum in the cup to build up
11.1.3 Magnetic Grippers
Can be used with ferrous materials
Electromagnets,
- easy to control, requires a power supply, and a controller
- polarity can be reversed on the magnet when it is put down to reverse residual magne-
tism
Permanent magnets,
- external power is not required
- a mechanism is required to separate parts from the magnet when releasing
- good for environments that are sensitive to sparks
Advantages,
- variation in part size can be tolerated
- ability to handle metal parts with holes
- pickup times fast
- requires only one surface for gripping
- can pick up the top sheet from a stack
Disadvantages,
- residual magnetism that remains in the workpiece
- possible side slippage
page 345
11.1.3.1 - Adhesive Grippers
Can handle fabrics and other lightweight materials
These grippers are basically a sticky surface on the end of the robot
As the adhesive gripper is repeatedly used, it loses stickiness, but a tape roll can be used to
refresh the sticky surface.
11.1.4 Expanding Grippers
Some parts have hollow cavities that can be used to advantage when grasping.
A bladder can be inserted into a part, and then inflated. This forms a friction seal between
the two, and allows manipulation. When done the pressure is released, and the part freed.
page 346
Expanding grippers can also be used when gripping externally.
11.1.5 Other Types Of Grippers
Most grippers for manipulation are sold with mounts so that fingers may be removed, and
replaced.
bladders inflate inwards
page 347
Gripper fingers can be designed to reduce problems when grasping.
11.2 ADVANCED TOPICS
11.2.1 Simulation/Off-line Programming
How a robot interacts with the environment makes it difficult to program off-line. To do this
successfully, a complete simulation of the robot workspace is required.
One excellent example of a simulation package is CIMStation by Silma. It allows full con-
struction of the robots workspace, and subsequent testing.
Self Aligning Finger Pads - small rock-
ing pads are placed on the end fingers,
these are also covered with a high
friction material, such as rubber.
These allow some locational inaccu-
racy when grasping parts.
Multiple Part Gripper - the gripper
has a number of holes cut for dif-
ferent parts. In this case the grip-
per can hold three different radii,
and the rubber lining will help
hole the part.
page 348
Examples of simulated operation in CIMStation are,
- painting
- NC code verification
- tool and fixture simulation
- Design For Manufacturing
- process planning
- composite tape layup
- composite filament layup
- spot welding
- arc welding
- material/work manipulation
- collision detection
- deburring
- inspection
- kinematic and dynamic simulation
- controller simulation
The simulators available for the robots in the lab allow off-line programming and simula-
tions.
11.3 INTERFACING
- TTL IO
- sourcing/sinking
- serial communications
11.4 PRACTICE PROBLEMS
page 349
7. Suggest a type of robot suitable for the following tasks. Briefly explain your suggestion.
a) placing pallets on rack shelving
ans. cartesian - well suited to cartesian layout of shelves.
b) electronics assembly
ans. scara - will work on a flat table well.
c) loading and unloading parts from an NC mill
ans. articulated - can easily move around obstructions.
8. Suggest a type of robot suitable for the following tasks. Briefly explain your suggestion.
a) a gas pump robot for placing the gas nozzle into the fuel tank.
b) for drilling holes in a printed circuit board.
c) to vacuum a hotel.
3. We plan to use a pneumatic gripper to pick up a 4 by 8 sheet of glass weighing 40 lbs. Sug-
gest a gripper layout and dimensions of the cups. State any assumptions.
4. A vacuum pump to be used in a robot vacuum gripper application is capable of drawing a
ans.
FS L ( ) Nr
2
P =
For stability we want to set up an array of cups. A set of 3 or 4 would be reason-
able to help support the sheet. - I will pick 4. Now, the diameter of the cup
should be determined. We will assume that the vacuum pressure will be 5 psi
below atmosphere, and we will use a factor of safety of 2.
2 40lb ( ) 4r
2
5psi =
4
--- r
2
= r 1.128in >
page 350
negative pressure of 4.0 psi compared to atmospheric. The gripper is to be used for lifting stain-
less steel plates, each plate having dimensions of 15 by 35, and weighing 52 lbs. Determine the
diameter of the suction cups to be used for the gripper if it is decided to use two cups for greater
stability. A factor of safety of 1.5 should be used in the computations.
5. Consider the following gripper design problems.
a) We plan to use a friction gripper to pick up a 50 lb iron plate. Suggest a gripper design and
specify the force required.
b) Design an end effector, and describe the path planning approach for a robot unloading sat-
ellites from the space shuttle.
11.5 LABORATORY - ROBOT INTERFACING
Purpose: Basic robot interfacing
Overview:
Pre-Lab (individual):
1. Develop a program that will put down and pick up balls at two different point for both
robots.
2. Test both programs on-line.
3. Plan for a mode of robot operation either one robot can deposit a ball in a center pickup
point, or at their own private pickup points. (Only a single ball will be used) Each
robot will have a button connected to it. If the robot button and the other robot has
the button, the robot will request the ball from other robot (using an I/O line). A
list of the inputs and outputs is given below. Develop a simple diagram showing
outputs and inputs to connect two robots and sensors. Develop a state diagram for
the operation of both robots. Rewrite the robot programs from step 1 so that they
will use the inputs.
input #1 ball in my private point
input #2 other robot wants ball
input #3 ball request button
output #1 request ball from other robot
In-Lab (groups of 4):
page 351
1. The instructor will discuss interfacing issues.
2. Each group should do each of the three parts below in turn.
1a. Test programs on the RV-M1, and add grippers/fixtures as required
1b. Test programs on the RT-3000, and add grippers/fixtures as required
1c. Connect and test the wiring for each of the robots and the interface
2. Integrate all of the equipment for the final task.
Submit:
1. Individually developed programs for the robots.
2. Group programs for the robots and PLC.
11.6 LABORATORY - ROBOT WORKCELL INTEGRATION
Purpose: Interfacing robots to workcells using PLCs.
Overview:
Pre-Lab (individual):
1. Develop a program that will draw a square on both robots, and test them on-line.
2. Develop a program that will draw a circle on both robots, and test them on-line.
3. Develop ladder logic for a micrologix that will watch for inputs from both robots. The
two inputs will indicate when either of the robot is using the drawing paper. The
PLC will also have outputs connected to both robots. Each robot will have two
inputs. One input will cause a circle to be drawn, the other will cause the square to
be drawn. The PLC will use inputs from push-button switches to indicate when a
circle or square is to be drawn. The ladder logic should share the work between the
robots.
4. Combine and modify the robot programs so that they will interface to the PLC program.
In-Lab (groups of 3):
1. Each group should do one of the tasks below,
1a. Enter and test the program on the RT-3000 robot. Use a voltage source to test
the program.
1b. Enter and test the program on the RV-M1 robot. Use a voltage source to test the
program.
1c. Enter and test the program on the micrologix.
2. Rotate between the stations until you have done all three modules.
3. Connect the PLC and two robots electrically, and enter and test the programs.
Submit:
1. Individually developed programs for the robots and PLC.
2. Group programs for the robots and PLC.
page 352
12. SPATIAL KINEMATICS
Basically mechanisms that are 3D (not planar).
12.1 BASICS
When we deal with geometries in two dimensions we have three position variables (dof) for
each rigid body (two for position, one for orientation).
When a problem is expanded to three dimensions we then have six position variables (dof)
for a rigid body (three for position, and three for orientation).
These added degrees of freedom expand the complexity of the problem solutions. There are
a few potential approaches,
- look for regularities that simplify the problem (scalar)
- vector based approaches (positions)
- matrix based approaches (positions and orientations)
Consider the example of the spherical joint - all of the axes of rotation coincide.
page 353
12.1.1 Degrees of Freedom
The scalar and vector approaches are easily extended to 3D problems. One significant dif-
ference is that the polar notations are no longer available for use.
We can determine the number of degrees of freedom using a simple relationship that is an
extension of the Kutzbach criteria,
page 354
Consider the number of degrees of freedom in the linkage below,
12.2 HOMOGENEOUS MATRICES
This method still uses geometry to determine the position of the robot, but it is put into an
ordered method using matrices.
m 6 n 1 ( ) 5j
1
4j
2
3j
3
2j
4
j
5
=
where,
m mobility of the mechanism (d.o.f.) =
n number of links =
j
1
j
2
, , the number of joints with 1, 2, ... dof respectively =
x
y
z
A
B
C
D
E
10
6
40
3
page 355
Consider the planar robot below,
The basic approach to this method is,
1. On the base, each joint, and the tool of the robot, attach a reference frame (most often x-
y-z). Note that the last point is labels T for tool. This will be a convention that I
will generally follow.
2. Determine a transformation matrix to map between each frame. It is important to do this
(xb, yb)
(xT, yT)
1m
1m
0.2m
TCP
2
(x1,y1)
x
y
z
x
y
z
x
y
z
x
y
z
2
F
0
F
1
F
2
F
T
T
0 1 ,
T
1 2 ,
T
2 T ,
page 356
by assuming the joints are in their 0 joint positions. Put the joint positions in as
variables.
T
0 1 ,
= T
1 2 ,
= T
2 T ,
=
trans x y z , , ( )
1 0 0 x
0 1 0 y
0 0 1 z
0 0 0 1
=
rot y , ( )
cos 0 sin 0
0 1 0 0
sin 0 cos 0
0 0 0 1
=
rot x , ( )
1 0 0 0
0 cos sin 0
0 sin cos 0
0 0 0 1
=
rot z , ( )
cos sin 0 0
sin cos 0 0
0 0 1 0
0 0 0 1
=
page 357
3. Multiply the frames to get a complete transformation matrix.
ASIDE: The structure of these matrices describe the position (P) and orientation
of the x (N), y (O), z (A), axes.
N
X
O
X
A
X
P
X
N
Y
O
Y
A
Y
P
Y
N
Z
O
Z
A
Z
P
Z
0 0 0 1
x (N)
y (O)
z (A)
P
T
0 1 ,
1
cos
1
sin 0 0
1
sin
1
cos 0 0
0 0 1 0
0 0 0 1
1 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
rot z
1
, ( )trans 1 0 0 , , ( ) = =
T
1 2 ,
2
cos
2
sin 0 0
2
sin
2
cos 0 0
0 0 1 0
0 0 0 1
1 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
rot z
2
, ( )trans 1 0 0 , , ( ) = =
T
2 T ,
1 0 0 0.2
0 1 0 0
0 0 1 0
0 0 0 1
trans 0.2 0 0 , , ( ) = =
page 358
The position and orientation can be read directly from the homogenous transformation
matrix as indicated above.
T
0 T ,
T
0 1 ,
T
1 2 ,
T
2 T ,
=
T
0 T ,
1
cos
1
sin 0 0
1
sin
1
cos 0 0
0 0 1 0
0 0 0 1
1 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
2
cos
2
sin 0 0
2
sin
2
cos 0 0
0 0 1 0
0 0 0 1
1 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0.2
0 1 0 0
0 0 1 0
0 0 0 1
=
T
0 T ,
1
cos
1
sin 0 0
1
sin
1
cos 0 0
0 0 1 0
0 0 0 1
1 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
2
cos
2
sin 0 0
2
sin
2
cos 0 0
0 0 1 0
0 0 0 1
1 0 0 1.2
0 1 0 0
0 0 1 0
0 0 0 1
=
T
0 T ,
1
cos
1
sin 0 0
1
sin
1
cos 0 0
0 0 1 0
0 0 0 1
1 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
2
cos
2
sin 0 1.2
2
cos
2
sin
2
cos 0 1.2
2
sin
0 0 1 0
0 0 0 1
=
T
0 T ,
1
cos
1
sin 0 0
1
sin
1
cos 0 0
0 0 1 0
0 0 0 1
2
cos
2
sin 0 1.2
2
cos 1 +
2
sin
2
cos 0 1.2
2
sin
0 0 1 0
0 0 0 1
=
T
0 T ,
1
2
+ ( ) cos
1
2
+ ( ) sin 0
1
cos 1.2
1
2
+ ( ) cos +
1
2
+ ( ) sin
1
2
+ ( ) cos 0
1
sin 1.2
1
2
+ ( ) sin +
0 0 1 0
0 0 0 1
=
Position
Orientation
complete the multiplication
and simplify to get......
page 359
To reverse the transform, we only need to invert the transform matrix - this is a direct result
of the loop equation.
12.2.1 Denavit-Hartenberg Transformation (D-H)
Designed as more specialized transforms for robots (based on homogenous transforms)
Zi-1 axis along motion of ith joint
Xi axis normal to Zi-1 axis, and points away from it.
Basic transform is,
1. rotate about Zi-1 by thetai (joint angle)
2. translate along Zi-1 by di (link offset)
3. translate along Xi by ai (link length)
4. rotate about Xi by alphai (link twist)
T
T 0 ,
T
0 T ,
( )
1
=
T
0 1 ,
T
1 2 ,
T
2 T ,
T
T 0 ,
I =
where,
I = Identity matrix
T
0 T ,
T
T 0 ,
I =
We can manipulate the equation,
page 360
We can see how the D-H representation is applied using the two link manipulator from
before
T
i 1 i ,
rot z
i 1
i
, ( )trans 0 0 d
i
, , ( )trans a
i
0 0 , , ( )rot x
i
i
, ( ) =
T
i 1 i ,
i
cos
i
cos
i
sin
i
i
sin sin a
i
i
cos
i
sin
i
cos
i
cos
i
i
cos sin a
i
i
sin
0
i
sin
i
cos d
i
0 0 0 1
=
z
i
z
i 1 +
x
i 1 +
y
i 1 +
x
i
y
i
a
i 1 +
d
i 1 +
i 1 +
z
i
i 1 +
x
i
Robot
Base
page 361
12.2.2 Orientation
The Euler angles are a very common way to represent orientation in 3-space.
T
0 1 ,
1
cos
1
sin 0
1
cos
1
sin
1
cos 0
1
sin
0 0 1 0
0 0 0 1
=
i
1
=
d
i
0 =
a
i
1 =
i
0 =
T
1 2 ,
2
cos
2
sin 0
2
cos
2
sin
2
cos 0
2
sin
0 0 1 0
0 0 0 1
=
i
2
=
d
i
0 =
a
i
1 =
i
0 =
T
2 T ,
1 0 0 0.2
0 1 0 0
0 0 1 0
0 0 0 1
=
i
0 =
d
i
0 =
a
i
0.2 =
i
0 =
T
0 T ,
T
0 1 ,
T
1 2 ,
T
2 T ,
=
T
0 T ,
1
cos
1
sin 0
1
cos
1
sin
1
cos 0
1
sin
0 0 1 0
0 0 0 1
2
cos
2
sin 0
2
cos
2
sin
2
cos 0
2
sin
0 0 1 0
0 0 0 1
1 0 0 0.2
0 1 0 0
0 0 1 0
0 0 0 1
=
T
0 T ,
1
2
+ ( ) cos
1
2
+ ( ) sin 0
1
cos 1.2
1
2
+ ( ) cos +
1
2
+ ( ) sin
1
2
+ ( ) cos 0
1
sin 1.2
1
2
+ ( ) sin +
0 0 1 0
0 0 0 1
=
page 362
The main problem in representing orientation is that the angles of rotation must be applied
one at a time, and by changing the sequence we will change the final orientation. In other words
the three angles will not give a unique solution unless applied in the same sequence every time.
By fixing a set of angles by convention we can then use the three angles by themselves to
define an orientation.
The convention described here is the Euler angles.
The sequence of orientation is,
Therefore to reorient a point in space we can apply the following matrix, to the position vec-
tors, or axes vectors, (there will be more on these matrices shortly)
In order,
rot ( ) rot ( ) rot ( ) , ,
where,
rotation about z axis =
rotation about new x axis =
rotation about new z axi s =
R
x
'
R
y
'
R
z
'
cos sin 0
sin cos 0
0 0 1
1 0 0
0 cos sin
0 sin cos
cos sin 0
sin cos 0
0 0 1
R
x
R
y
R
z
=
R
x
'
R
y
'
R
z
'
cos cos sin cos sin ( ) sin cos cos sin cos + ( ) sin sin ( )
sin cos cos cos sin ( ) sin sin cos cos cos + ( ) cos sin ( )
sin sin ( ) sin cos ( ) cos ( )
R
x
R
y
R
z
=
page 363
We can find these angles given a set of axis before and after.
12.2.3 Inverse Kinematics
Basically we can find the joint angles for the robot based on the position of the end effector.
This is not a simple problem, and there are few reliable methods. This is partly caused by
the non-unique nature of the problem. At best there are typically multiple, if not infinite numbers
of equivalent solutions. The 2 dof robot seen before has two possible solutions.
We can do simple inverse kinematics with trigonometry.
If we have more complicated problems, we may try to solve the problem by examining the
transform matrix,
x
0
1
0
0
= x
1
0.71
0.71
0
= y
0
= y
1
=
page 364
12.2.4 The Jacobian
T
0 T ,
1
2
+ ( ) cos
1
2
+ ( ) sin 0
1
cos 1.2
1
2
+ ( ) cos +
1
2
+ ( ) sin
1
2
+ ( ) cos 0
1
sin 1.2
1
2
+ ( ) sin +
0 0 1 0
0 0 0 1
=
x
T
1
cos 1.2
1
2
+ ( ) cos + =
y
T
1
sin 1.2
1
2
+ ( ) sin + =
x
T
1
cos
1.2
-------------------------
1
2
+ ( ) cos =
y
T
1
sin
1.2
------------------------
1
2
+ ( ) sin =
Combine the two to eliminate the compound angles,
1
1
2
+ ( ) cos ( )
2
1
2
+ ( ) sin ( )
2
+ =
Separate positions and simplify,
1
x
T
1
cos
1.2
-------------------------
2
y
T
1
sin
1.2
------------------------
2
+ =
1.44 x
T
2
2x
T
1
cos
1
cos ( )
2
y
T
2
2y
T
1
sin
1
sin ( )
2
+ + + =
0.44 x
T
2
x
T
2
( ) 2x
T
1
cos 2y
T
1
sin =
0.44 x
T
2
x
T
2
2
---------------------------------
x
T
1
cos y
T
1
sin + ( ) =
ETC.....
page 365
A matrix of partial derivatives that relate the velocity of the joints, to the velocity of the
tool.
The inverse Jacobian is used for motion control
Find the Jacobian and inverse Jacobian for the 2 dof robot.
d
dt
-----x
T
d
dt
-----y
T
d
dt
-----z
T
x
T
1
--------
x
T
2
--------
x
T
3
--------
y
T
1
--------
y
T
2
--------
y
T
3
--------
z
T
1
--------
z
T
2
--------
z
T
3
--------
d
dt
---- -
1
d
dt
---- -
2
d
dt
---- -
3
J
d
dt
---- -
1
d
dt
---- -
2
d
dt
---- -
3
= =
J
1
x
T
y
T
z
3
=
x
y
z
x
y
z
x
y
z
x
y
z
2
F
0
F
1
F
2
F
T
T
0 1 ,
T
1 2 ,
T
2 T ,
page 366
12.3 SPATIAL DYNAMICS
The basic principles of planar dynamics are expanded up for 3D spatial problems. The
added dimension adds some complexity that should be addressed.
12.3.1 Moments of Inertia About Arbitrary Axes
Moments of Inertia are normally found for a single axis of rotation. When the object is
T
0 T ,
1
2
+ ( ) cos
1
2
+ ( ) sin 0
1
cos 1.2
1
2
+ ( ) cos +
1
2
+ ( ) sin
1
2
+ ( ) cos 0
1
sin 1.2
1
2
+ ( ) sin +
0 0 1 0
0 0 0 1
=
Find the Jacobian matrix for the matrix given below. This will give a
matrix that relates tool velocity to joint velocities.The joint angles are 30 and
20 for joints 1 and 2, find the joint velocities if the tool velocity is 0.05 m/s
page 367
rotating about another axis, we must recalculate the moments of inertia.
If we take the moments of inertia for the original axes, and project these values onto new
vectors, we can get new values,
We start by defining the vector equivalencies for rotated axes,
R' R iR
x
jR
y
kR
z
+ + i' R'
x
j'R'
y
k' R'
k
+ + = = =
We can project this vector to the other set of axes,
R'
x
i' ( ) iR
x
jR
y
kR
k
+ + ( ) R
x
i' i
cos R
y
i' j
cos R
z
i' k
cos + + = =
R'
y
j' ( ) iR
x
jR
y
kR
k
+ + ( ) R
x
j' i
cos R
y
j' j
cos R
z
j' k
cos + + = =
R'
z
k' ( ) iR
x
jR
y
kR
k
+ + ( ) R
x
k' i
cos R
y
k' j
cos R
z
k' k
cos + + = =
Next we integrate for moment of inertia for the shifted x axis,
I
x' x'
i' R'
x
( ) i' R'
x
( ) m d
=
R
x
i' i
cos R
y
i' j
cos R
z
i' k
cos + + ( )
2
m d
=
R
x
i' i
cos ( )
2
R
y
i' j
cos ( )
2
R
z
i' k
cos ( )
2
2 R
x
i' i
R
y
i' j
cos cos ( ) + + + +
=
2 R
x
i' i
R
z
i' k
cos ( ) cos ( ) 2 R
y
i' j
R
z
i' k
cos ( ) cos ( )dm +
I
x' x'
I
xx
i' i
cos ( )
2
I
yy
i' j
cos ( )
2
I
zz
i' k
cos ( )
2
2I
xy
i' i
i' j
cos cos ( ) + + + + =
2I
xz
i' i
i' k
cos cos ( ) 2I
yz
i' j
i' k
cos cos ( ) +
Next we integrate for the product of inertia for the shifted x and y axis,
I
x' y'
i' R'
x
( ) i' R'
y
( ) m d
=
Similarly for the shifted y and z axes,
I
y' y'
I
xx
j' i
cos ( )
2
I
yy
j' j
cos ( )
2
I
zz
j' k
cos ( )
2
2I
xy
j' i
j' j
cos cos ( ) + + + + =
2I
xz
j' i
j' k
cos cos ( ) 2I
yz
j' j
j' k
cos cos ( ) +
I
z' z'
I
xx
k' i
cos ( )
2
I
yy
k' j
cos ( )
2
I
zz
k' k
cos ( )
2
2I
xy
k' i
k' j
cos cos ( ) + + + + =
2I
xz
k' i
k' k
cos cos ( ) 2I
yz
k' j
k' k
cos cos ( ) +
page 368
This will lead to,
I
x' y'
I
xx
i' i
j'i
cos cos ( ) I
yy
i' j
j'j
cos cos ( ) I
zz
i' k
j' k
cos cos ( ) + + + =
I
xy
i' i
j' j
cos cos
i' j
j' i
cos cos + ( ) I
yz
i' j
j' k
cos cos
i' k
j' j
cos cos + ( ) + +
I
xz
i'k
j' i
cos cos
i' i
j' k
cos cos + ( )
I
x' y'
I
xx
k' i
i' i
cos cos ( ) I
yy
k' j
i' j
cos cos ( ) I
zz
k'k
i' k
cos cos ( ) + + + =
I
xy
k' i
i' j
cos cos
k' j
i' i
cos cos + ( ) I
yz
k' j
i' k
cos cos
k' k
i' j
cos cos + ( ) + +
I
xz
k' k
i' i
cos cos
k' i
i' k
cos cos + ( )
I
y' z'
I
xx
j' i
k'i
cos cos ( ) I
yy
j' j
k' j
cos cos ( ) I
zz
j' k
k' k
cos cos ( ) + + + =
I
xy
j' i
k' j
cos cos
j' j
k' i
cos cos + ( ) I
yz
j' j
k' k
cos cos
j'k
k' j
cos cos + ( ) + +
I
xz
j' k
k' i
cos cos
j' i
k' k
cos cos + ( )
R
x
'' R
x
' d
x
' + = R
y
'' R
y
' d
y
' + = R
z
'' R
z
' d
z
' + =
We can define the new coordinate system in terms of translated axes,
This can be integrated for the shifted x axis,
I
x'' x''
R
y
''
2
R
z
''
2
+ ( ) m d
R
y
' d
y
' + ( )
2
R
z
' d
z
' + ( )
2
+ ( ) m d
= =
R
y
'
2
2R
y
' d
y
' d
y
'
2
R
z
'
2
2R
z
' d
z
' d
z
'
2
+ + + + + ( ) m d
=
R
y
'
2
R
z
'
2
+ ( ) m d
2R
y
' d
y
' ( ) m d
2R
z
' d
z
' ( ) m d
d
y
'
2
d
z
'
2
+ ( ) m d
+ + + =
I
y' z'
2mR
M
y'
d
y'
2mR
M
z'
d
z'
d
y
'
2
d
z
'
2
+ ( )m + + + =
page 369
12.3.2 Eulers Equations of Motion
We can use Eulers equations of motion to determine moments produced by angular veloci-
ties and accelerations.
These can be used to examine rotating three dimensional masses. Consider the following,
This eventually leads to,
I
x'' x''
I
x'x'
2mR
M
y'
d
y'
2mR
M
z'
d
z'
m d
y'
( )
2
m d
z'
( )
2
+ + + + =
I
y'' y''
I
y'y'
2mR
M
x'
d
x'
2mR
M
z'
d
z'
m d
x'
( )
2
m d
z'
( )
2
+ + + + =
I
z'' z''
I
z' z'
2mR
M
x'
d
x'
2mR
M
y'
d
y'
m d
x'
( )
2
m d
y'
( )
2
+ + + + =
I
x'' y''
I
x'y'
2mR
M
x'
d
y'
2mR
M
y'
d
x'
md
x'
d
y'
+ + + =
I
y'' z''
I
y' z'
2mR
M
y'
d
z'
2mR
M
z'
d
y'
md
y'
d
z'
+ + + =
I
x'' z''
I
x' z'
2mR
M
x'
d
z'
2mR
M
z'
d
x'
md
x'
d
z'
+ + + =
M
M
ij
y
I
M
yy
y
I
M
xx
I
M
zz
( )
x
z
=
M
M
ij
x
I
M
xx
x
I
M
yy
I
M
zz
( )
y
z
=
M
M
ij
z
I
M
zz
z
I
M
xx
I
M
yy
( )
x
y
=
page 370
12.3.3 Impulses and Momentum
Momentum is a convenient alternative to energy in analysis of systems.
12.3.3.1 - Linear Momentum
momentum is defined as,
The disk and shaft shown are rotated at
2000 rpm, and there is an angular acceleration
of 20 rev/(sec.sec.). The steel part is held in a
cantilevered bearing that can be approximated
with the forces shown.
2 6
8
1
8
1
F
F
page 371
If no external forces are applied, momentum remains constant (is conserved). In this case L
is a constant.
An impulse is a force applied that will change momentum.
12.3.3.2 - Angular Momentum
Angular momentum is for rotating objects. The rotation about some center tends to make
these equations a bit more complicated than linear momentum.
We can start to find this as a velocity times a distance of rotation, and this will lead to the
eventual relationships,
These equations show the angular momentum H, along with other familiar terms.
F t ( ) t d
t
1
t
2
mA t ( ) t d
t
1
t
2
mV t
2
( ) mV t
1
( ) L t ( ) = = =
Momentum
Impulse
M
M
x
I
M
xx
x
I
M
xy
y
I
M
xz
z
y
H
z
z
H
y
+ =
M
M
y
I
M
yx
x
I
M
yy
y
I
M
yz
z
z
H
x
x
H
z
+ + =
M
M
z
I
M
xzx
x
I
M
zy
y
I
M
zz
z
x
H
y
y
H
x
+ + =
page 372
12.4 DYNAMICS FOR KINEMATICS CHAINS
There are a variety of common methods,
- Euler-Lagrange - energy based
- Newton-Euler - DAlemberts equations
12.4.1 Euler-Lagrange
This method uses a Lagrangian energy operator to calculate torques
For a typical link,
L
i
i
i
, ( ) K
i
P
i
=
L , ( ) K
i
P
i
=
where,
L = lagrangian
K = kinetic energy of link i
P = potential energy of link i
d
dt
-----
L
i
L
i
Q
i
=
Q = forces and torques
page 373
If we have used matrices to formulate the problem, we use the Jacobian to find velocities.
Consider the example below,
K
i
m
i
V
Ci
T
V
Ci
2
-----------------------
i
T
I
i
i
+ =
where,
m = mass of link i
V = velocity of center of mass of link i
omega = angular velocity of link i
I = mass moment of inertia of link i
P
i
m
i
g
T
R
Ci
=
where,
g = gravity vector
R = displacement from base of robot to center of mass of link
V
Ci
i
J ( ) =
page 374
(xb, yb)
(xT, yT)
1m
1m
0.2m
TCP
2
M
links
5kg =
M
tool
0.5kg =
I
links
10 =
I
tool
1 =
page 375
12.4.2 Newton-Euler
We can sum forces and moments, and then solve the equations in a given sequence.
These equations can be written in vector form,
To do these calculations start at the base, and calculate the kinematics up to the end of the
manipulator (joint positions, velocities and accelerations). Then work back from the end and find
forces and moments.
12.5 REFERENCES
Erdman, A.G. and Sandor, G.N., Mechanism Design Analysis and Synthesis, Vol. 1, 3rd Edi-
F
i
m
i
A
i
0 =
M
i
I
i
i
i
2
+ ( ) 0 =
f
i 1
f
i
m
i
g m
i
A
i
+ 0 =
where,
f = forces between link i and i+1
A = acceleration of center of mass of link i
n
i 1
n
i
r
i Ci ,
f
i
r
i 1 Ci ,
f
i 1
I
i
i
i
I
i
i
( ) + 0 =
where,
f = forces between link i and i+1
A = acceleration of center of mass of link i
page 376
tion, Prentice Hall, 1997.
Fu, Gonzalez, and Lee,
Shigley, J.E., Uicker, J.J., Theory of Machines and Mechanisms, Second Edition, McGraw-
Hill, 1995.
12.6 PRACTICE PROBLEMS
1. For the Stanford arm below,
a) list the D-H parameters (Hint: extra dummy joints may be required)
b) Find the forward kinematics using homogenous matrices.
c) Find the Jacobian matrix for the arm.
d) If the arm is at
1
= 45 degrees,
2
= 45 degrees, r = 0.5m, find the speed of the TCP if
the joint velocities are
1
= 1 degree/sec,
2
= 10 degrees/sec, and r = 0.01 m/
sec.
r
x
y
z
1
d
1
(0,0,0)
TCP
TOP VIEW
FRONT VIEW
page 377
3. Robotics and Automated Manipulators (RAM) has consulted you about a new robotic
manipulator. This work will include kinematic analysis, gears, and the tool. The robot is pictured
below. The robot is shown on the next page in the undeformed position. The tool is a gripper (fin-
ger) type mechanism.
The robot is drawn below in the undeformed position. The three positioning joints are shown,
and a frame at the base and tool are also shown.
Tool
page 378
The tool is a basic gripper mechanism, and is shown as a planar mechanism below. As the
cylinder moves to the left the fingers close.
a) The first thing you do is determine what sequence of rotations and translations are needed
to find the tool position relative to the base position.
x
0
y
0
z
0
x
0
y
0
z
0
x
T
y
T
z
T
x
T
y
T
z
T
r
1
c
b
a
d
e
g
f
Finger
Pneumatic
cylinder
page 379
b) As normal, you decide to relate a cartesian (x-y) velocity of the gripper to joint velocities.
Set up the calculation steps needed to do this based on the results in question #1.
c) To drive the revolute joints RAM has already selected two similar motors that have a max-
imum velocity. You decide to use the equations in question #2, with maximum specified tool
velocities to find maximum joint velocities. Assume that helical gears are to be used to drive the
revolute joints, specify the basic dimensions (such as base circle dia.). List the steps to develop
the geometry of the gears, including equations.
d) The gripper fingers may close quickly, and as a result a dynamic analysis is deemed neces-
sary. List the steps required to do an analysis (including equations) to find the dynamic forces on
the fingers.
e) The idea of using a cam as an alternate mechanism is being considered. Develop a design
that is equivalent to the previous design. Sketch the mechanism and a detailed displacement graph
of the cam.
f) The sliding joint r has not been designed yet. RAM wants to drive the linear motion,
without using a cylinder. Suggest a reasonable design, and sketch.
4. For an articulated robot, find the forward, and inverse kinematics using geometry, homog-
enous matrices, and Denavit-Hartenberg transformations.
5. Assign Denavit-Hartenberg link parameters to an articulated robot.
page 380
6. For the Stanford arm below,
a) list the D-H parameters (Hint: extra dummy joints may be required)
b) Find the forward kinematics using homogenous matrices.
c) Find the Jacobian matrix for the arm.
d) If the arm is at
1
= 45 degrees,
2
= 45 degrees, r = 0.5m, find the speed of the TCP if
the joint velocities are
1
= 1 degree/sec,
2
= 10 degrees/sec, and r = 0.01 m/
sec.
7. Consider the forward kinematic transformation of the two link manipulator below. Given
the position of the joints, and the lengths of the links, determine the location of the tool centre
point using a) basic geometry, b) homogenous transforms, and c) Denavit-Hartenberg transforma-
tions.
r
x
y
z
1
d
1
(0,0,0)
TCP
TOP VIEW
FRONT VIEW
page 381
a) For the robot described in question 1 determine the inverse kinematics for the robot. (i.e.,
given the position of the tool, determine the joint angles of the robot.) Keep in mind that in this
case the solution will have two different cases. Determine two different sets of joint angles
required to position the TCP at x=5, y=6.
b) For the inverse kinematics of question #2, what conditions would indicate the robot posi-
tion is unreachable? Are there any other cases that are indeterminate?
8 Find the dynamic forces in the system below,
L1 = 12
L2 = 10
theta1 = 30 deg.
theta2 = 45 deg.
Pw(x, y)
x
y
page 382
9. Examine the robot figure below and,
a) assign frames to the appropriate joints.
x
y
z
A
B
C
D
E
10
AB rotates 20rad/s c.c.w. in the
xy plane, there are ball joints
at B and C, and the collar at D
slides along the prismatic
shaft. What are the positions,
velocities and accelerations of
the links?
6
40
3
page 383
x
y
z
x
y
z
1
L
1
l
2
l
3
L
4
page 384
b) list the transformations for the forward kinematics.
c) expand the transformations to matrices (do not multiply).
x
y
z
x
y
z
ANS.
x
y
z
x
y
z
x
y
z
F0
F1
F2
F3
FT
ans.
T
1 2 ,
trans l
2
0 0 , , ( )rot z 90 , ( ) =
T
0 1 ,
trans 0 L
1
0 , , ( ) =
T
2 3 ,
trans l
3
0 0 , , ( )rot z 90
1
+ , ( ) =
T
3 T ,
trans L
4
0 0 , , ( )rot z 90 , ( )rot x 90 , ( ) =
page 385
10. Given the transformation matrix below for a polar robot,
a) find the Jacobian matrix.
ans.
T
1 2 ,
1 0 0 l
2
0 1 0 0
0 0 1 0
0 0 0 1
90 cos 90 sin 0 0
90 sin 90 cos 0 0
0 0 1 0
0 0 0 1
=
T
0 1 ,
1 0 0 0
0 1 0 L
1
0 0 1 0
0 0 0 1
=
T
2 3 ,
1 0 0 l
3
0 1 0 0
0 0 1 0
0 0 0 1
90
1
+ ( ) cos 90
1
+ ( ) sin 0 0
90
1
+ ( ) sin 90
1
+ ( ) cos 0 0
0 0 1 0
0 0 0 1
=
T
3 T ,
1 0 0 L
4
0 1 0 0
0 0 1 0
0 0 0 1
90 cos 90 sin 0 0
90 sin 90 cos 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 90 cos 90 sin 0
0 90 sin 90 cos 0
0 0 0 1
=
T
0 T ,
( ) cos ( ) sin 0 r ( ) cos
( ) sin ( ) cos 0 r ( ) sin
0 0 1 0
0 0 0 1
=
page 386
b) Given the joint positions, find the forward and inverse Jacobian matrices.
c) If we are at the position below, and want to move the tool at the given speed, what joint
velocities are required?
11. Examine the robot figure below and,
a) assign frames to the appropriate joints.
ans.
d
dt
-----x
d
dt
-----y
r
x
x
r
y
y
d
dt
-----r
d
dt
-----
( ) cos r ( ) sin
( ) sin r ( ) cos
d
dt
---- -r
d
dt
-----
= =
30 = r 3in =
ans.
J
1
0.866 0.5
0.167 0.289
=
J
30 ( ) cos 3 30 ( ) sin
30 ( ) sin 3 30 ( ) cos
0.866 1.5
0.5 2.598
= =
d
dt
---- -x 1
in
s
----- =
d
dt
-----y 2
in
s
---- - =
ans.
d
dt
-----r
d
dt
-----
0.866 0.5
0.167 0.289
1
2
0.134
0.745
= =
page 387
b) list the transformations for the forward kinematics.
c) expand the transformations to matrices (do not multiply).
12. Given the transformation matrix below for a polar robot,
a) find the Jacobian matrix.
b) Given the joint positions, find the forward and inverse Jacobian matrices.
c) If we are at the position below, and want to move the tool at the given speed, what joint
velocities are required?
x
0
y
0
z
0
x
0
y
0
z
0
y
T
x
T
z
T
y
T
x
T
z
T
r
1
c
b
a
T
0 T ,
1
2
+ ( ) cos
1
2
+ ( ) sin 0
1
cos 1.2
1
2
+ ( ) cos +
1
2
+ ( ) sin
1
2
+ ( ) cos 0
1
sin 1.2
1
2
+ ( ) sin +
0 0 1 0
0 0 0 1
=
1
30 =
1
40 =
page 388
13. Find the forward kinematics for the robots below using homogeneous and Denavit-
Hartenberg matrices.
14. Use the equations below to find the inverse Jacobian. Use the inverse Jacobian to find the
joint velocities required at t=0.5s.
d
dt
---- -x 1
in
s
----- =
d
dt
-----y 2
in
s
---- - =
x
y
x
y
x
y
x
y
x
y
x 4
1
( ) cos 6
1
2
+ ( ) in. cos + =
y 4
1
( ) sin 6
1
2
+ ( ) in. sin + =
page 389
ANS.
P 0.5 ( )
3
5
2t
3
3t
2
+ ( )
5
2
+
5.5
6
= =
First, find tool and joint positions,
r 5.5
2
6
2
+ =
6
5.5
-------
atan =
r
2
4
2
6
2
2 4 ( ) 6 ( ) 180
2
( ) cos + =
2
180
r
2
4
2
6
2
+ ( )
2 4 ( ) 6 ( )
---------------------------------
acos =
1
( ) sin
6
----------------------------
180
2
( ) sin
r
--------------------------------- =
1
6 180
2
( ) sin
r
------------------------------------
asin + =
Next, the Jacobian,
J
4
1
( ) sin 6
1
2
+ ( ) sin 6
1
2
+ ( ) sin
4
1
( ) cos 6
1
2
+ ( ) cos + 6
1
2
+ ( ) cos
=
Substitute and solve
d
dt
-----
1
2
J
1
7.5
3
=
page 390
13. MOTION CONTROL
13.1 KINEMATICS
A robot must be able to map between things that it can control, such as joint angles, to the
position of the tool in space.
Describing the position of the robot in terms of joint positions/angles is Joint Space.
Real space is often described with a number of coordinate systems,
- cartesian
- polar
- spherical
Positions can also be specified with respect to the robot base (Robot Coordinates), or glo-
bally (World Coordinates).
13.1.1 Basic Terms
Robot base coordinates dont move and are often used to specify robot tool position and ori-
entation. (centre of the robots world)
base coordinates
link/joint coordinates
tool coordinates
page 391
Link/Joint Coordinates - specify where joints, endpoints or centers are located.
Tool coordinates - determine where the tool is and what orientation it is in.
World Coordinates - relates various robots to other robots and devices.
Coordinate transformation - Can map from one set of coordinates to another. Most common
method is matrix based. One special case of this is the Denavit-Hartenrberg transformation.
13.1.2 Kinematics
Forward kinematics involves finding the endpoint of the robot (xT, yT) given the joint coor-
dinates (theta1, theta2)
There a number of simple methods for finding these transformations,
(xb, yb)
(xT, yT)
theta1
theta2
1m
1m
0.2m
TCP
(x1,y1)
Note: When defining angles is is more
convenient to indicate the positive direc-
tion and origin (as shown with the solid
line for theta 2). With more classical
sketching we would use the dashed line,
page 392
- basic geometry
- transformation matrices
- Denavit-Hartenberg transformations
13.1.2.1 - Geometry Methods for Forward Kinematics
For simple manipulators (especially planar ones) this method is often very fast and efficient.
The method uses basic trigonometry, and geometry relationships.
To find the location of the robot above, we can see by inspection,
page 393
The problem with geometrical methods are that they become difficult to manage when more
complex robots are considered. This problem is overcome with systematic methods.
13.1.2.2 - Geometry Methods for Inverse Kinematics
To find the location of the robot above, we can see by inspection,
x
T
x
b
l
1
1
cos l
2
0.2 + ( )
1
2
+ ( ) cos + + =
y
T
y
b
l
1
1
sin l
2
0.2 + ( )
1
2
+ ( ) sin + + =
often set to zero
1
2
, , ( ) x
T
y
T
z
T
T
x
T
y
T
z
, , , , , ( )
The general form of the operation is as below,
Also note that the orientation of the tool is included, as well as position, therefore for
the example,
T
x
0 =
T
y
0 =
T
z
1
2
+ =
1
2
, , ( ) x
T
y
T
z
T
T
x
T
y
T
z
, , , , , ( )
ASIDE: later we will see that the opposite operation
maps from tool coordinates, and is called the
inverse kinematics.
page 394
Mathematically this calculation is difficult, and there are often multiple solutions.
13.1.3 Modeling the Robot
If modeling only one link in motion, the model of the robot can treat all the links as a single
moving rigid body,
1
2
, , ( ) x
T
y
T
z
T
T
x
T
y
T
z
, , , , , ( )
Inverse kinematics maps from the tool coordinates to the joint coordinates.
page 395
If multiple joints move at the same time, the model becomes non-linear, in this case there
are two approaches taken,
1. Develop a full non-linear controller (can be very complicated).
2. Develop linear approximations of the model/control system in the middle of the normal
workspace.
13.2 PATH PLANNING
Basic - While moving the robot arm from point A to B, or along a continuous path, the
choices are infinite, with significant differences between methods used.
13.2.1 Slew Motion
The simplest form of motion. As the robot moves from point A to point B, each axis of the
manipulator travels as quickly as possible from its initial position to its final position. All axis
begin moving at the same time, but each axis ends it motion in a length of time that is proportional
to the product of its distance moved and its top speed (allowing for acceleration and deceleration)
Note: slew motion usually results in unnecessary wear on the joints and often leads to unan-
, ,
CG M J , ,
page 396
ticipated results in the path taken by the manipulator.
Example - A three axis manipulator with revolute joints starts with joint angles (40, 80, -
40)degrees, and must move to (120, 0, 0)degrees. Assume that the joints have maximum absolute
accelerations/decelerations of (50, 100, 150) degrees/sec/sec, and the maximum velocities of (20,
40, 50) degrees/sec. Using slew motion, what is the travel time for each joint?
-90
90
180
time(sec)
Joint angle (degrees)
Joint velocity (degrees/sec)
max
max
t
acc
t
max
t
dec
page 397
13.2.1.1 - Joint Interpolated Motion
Similar to slew motion, except all joints start, and stop at the same time. In the last example
for slew motion, all of the joints would have moved until all stopping simultaneously at 4.4 sec-
onds.
This method only demands needed speeds to accomplish movements in least times.
13.2.1.2 - Straight-line motion
t
acc
t
dec
max
max
------------
20
50
------
40
100
---------
50
150
-------- - , ,
0.4 0.4 0.333 , , ( )sec. = = = =
acc.
dec.
t
acc
max.vel.
2
----------------------------
0.4 20 ( )
2
------------------
0.4 40 ( )
2
------------------
0.333 50 ( )
2
------------------------ , ,
4 8 8.33 , , ( )deg. = = = =
The next step is to examine the moves specified,
move
end
start
120 40 0 80 0 40 ( ) , , ( ) 80 80 40 , , ( )deg. = = =
Remove the angles covered during accel./deccel., and find the travel time at maximum
velocity.
t
max
move
2
acc
max
-----------------------------------
80 2 4 ( )
20
-----------------------
80 2 8 ( )
40
-----------------------
40 2 8.333 ( )
50
--------------------------------- , ,
= =
t
max
3.6 1.6 0.46668 , , ( )sec. =
t
total
t
acc
t
max
t
dec
+ + 4.4 2.4 1.13 , , ( )s = =
The area under the velocity curve is the distance (angle in this case) travelled. First we
can determine the distance covered during acceleration, and deceleration and the
time during acceleration, and deceleration.
Note: below zero the speeds will
never reach maximum velocity
before starting to decelerate.
page 398
In this method the tool of the robot travels in a straight line between the start and stop
points. This can be difficult, and lead to rather erratic motions when the boundaries of the work-
space are approached.
NOTE: straight-line paths are the only paths that will try to move the tool straight through
space, all others will move the tool in a curved path.
The basic method is,
1. Develop a set of points from the start and stop points that minimize acceleration.
2. Do the inverse kinematics to find the joint angles of the robot at the specified points.
Consider the example below,
page 399
P
0
5 5 5 , , ( )in. = P
1
5 5 5 , , ( ) =
d
dt
-----P
0
0 0 0 , , ( ) =
d
dt
---- -P
1
0 0 0 , , ( ) =
Given,
s t ( ) At
3
Bt
2
Ct D + + + =
d
dt
---- -s t ( ) 3At
2
2Bt C + + =
s 0 ( ) A 0 ( )
3
B 0 ( )
2
C 0 ( ) D + + + 0 = =
s 2 ( ) A 2 ( )
3
B 2 ( )
2
C 2 ( ) D + + + 1 = =
d
dt
-----s 0 ( ) 3A 0 ( ) 2B 0 ( ) C + + 0 = =
C 0 =
8A 4B + 1 =
8A 4
3
2
---
A + 1 =
t
0
0 = t
1
2 =
P t ( ) P
0
P
1
P
0
( )s t ( ) + =
d
dt
-----s t
0
( ) 0 =
d
dt
---- -s t
1
( ) 0 = s t
0
( ) 0 = s t
1
( ) 1 =
Model the path with a function that allows acceleration/deceleration, in this case
a third order polynomial will be used. The equation will be parameterized for sim-
plicity (i.e., s = [0,1], where s=0 is the path start, and s=1 is the path end).
Next, numerical values will be entered to find equation values
d
dt
-----s 2 ( ) 3A 2 ( ) 2B 2 ( ) C + + 0 = =
D 0 =
3
2
---
A B =
A
1
2
--- = B
3
4
--- =
This can now be put in the final form,
P t ( ) P
0
P
1
P
0
( )
t
3
2
----
3
4
---t
2
+ =
page 400
13.2.2 Computer Control of Robot Paths (Incremental Interpolation)
Path Planning is a simple process where the path planning methods described before (such
as straight line motion) are used before the movement begins, and then a simple real-time lookup
table is used.
The path planner puts all of the values in a trajectory table.
The on-line path controller will look up values from the trajectory table at predetermined
time, and use these as setpoints for the controller.
The effect of the two tier structure is that the robot is always shooting for the next closest
knot-point along the path.
page 401
The above scheme leads to errors between the planned, and actual path, and lurches occur
when the new setpoints are updated for each servo motor.
Desired
configuration
Current
Configuration
Trajectory
table
Off-line
path
planning
Kinematic
Transforms
Set point
table
Interrupt
Clock
Set-point
table
Choose new
point from
trajectory table
Return
desired
Time based interrupt
routine
Servo motor routine runs
for each axis
Done before motion begins
Done during motion, and all other times
Compute
error
Output actuator
signal
Read
desired
page 402
The quantization of the desired position requires a decision of what value to use, and this
value is fixed for a finite time.
The result is that the path will tend to look somewhat bumpy,
speed
trajectory table
actual position
time
trajectory table time step
required
actual
position
time
page 403
13.3 PRACTICE PROBLEMS
1.
a) A stepping motor is to be used to actuate one joint of a robot arm in a light duty pick and
place application. The step angle of the motor is 10 degrees. For each pulse received from the
pulse train source the motor rotates through a distance of one step angle.
i) What is the resolution of the stepper motor?
ii) Relate this value to the definitions of control resolution, spatial resolution, and accu-
racy, as discussed in class.
b) Solve part a) under the condition that the three joints move at different rotational veloci-
ties. The first joint moves at 10 degrees/sec., the second joint moves at 25 degrees/sec, and the
third joint moves at 30/sec.
2. A stepping motor is to be used to drive each of the three linear axes of a cartesian coordi-
nate robot. The motor output shaft will be connected to a screw thread with a screw pitch of
0.125. It is desired that the control resolution of each of the axes be 0.025
a) to achieve this control resolution how many step angles are required on the stepper
motor?
start
knot 1
knot 2
knot 3
knot 4
knot 5
end
The desired path tends to deviate from the points in the trajectory
table, and the tool tends to follow a path like
that pictured below. Moreover this scheme
will lead to uneven acceleration over
the path segments
Path segments
In this case an
extra step is
added to
compensate for
the position errors
**Note: this occurs with straight-line motion also
page 404
b) What is the corresponding step angle?
c) Determine the pulse rate that will be required to drive a given joint at a velocity of 3.0/
sec.
3. For the stepper motor of question 6, a pulse train is to be generated by the robot controller.
a) How many pulses are required to rotate the motor through three complete revolutions?
b) If it is desired to rotate the motor at a speed of 25 rev/min, what pulse rate must be gen-
erated by the robot controller?
4. A stepping motor is to be used to actuate one joint of a robot arm in a light duty pick and
place application. The step angle of the motor is 10 degrees. For each pulse received from the
pulse train source the motor rotates through a distance of one step angle.
a) What is the resolution of the stepper motor?
b) Relate this value to the definitions of control resolution, spatial resolution, and accu-
racy, as discussed in class.
5. Find the forward kinematics for the robots below using geometry methods.
6. Consider the forward kinematic transformation of the two link manipulator below.
x
y
x
y
x
y
x
y
x
y
page 405
a) Given the position of the joints, and the lengths of the links, determine the location of
the tool centre point using basic geometry.
b) Determine the inverse kinematics for the robot. (i.e., given the position of the tool,
determine the joint angles of the robot.) Keep in mind that in this case the solution
will have two different cases.
c) Determine two different sets of joint angles required to position the TCP at x=5, y=6.
d) What mathematical conditions would indicate the robot position is unreachable? Are
there any other cases that are indeterminate?
7. Find a smooth path for a robot joint that will turn from = 75 to = -35 in 10 seconds.
Do this by developing an equation then calculating points every 1.0 seconds along the path for a
total motion time of 10 seconds.
L1 = 12
L2 = 10
theta1 = 30 deg.
theta2 = 45 deg.
Pw(x, y)
x
y
page 406
8. A jointed arm robot has three rotary joints, and is required to move all three axes so that the
first joint is rotated through 50 degrees; the second joint is rotated through 90 degrees, and the
third joint is rotated through 25 degrees. Maximum speed of any of these rotational joints is 10
degrees/sec. Ignore effects of acceleration and deceleration and,
a) determine the time required to move each joint if slew motion (joint motion is indepen-
dent of all other joints) is used.
t ( ) At
3
Bt
2
Ct D + + + =
d
dt
----- t ( ) 3At
2
2Bt C + + =
ans.
0 ( ) 75 =
d
dt
---- - 0 ( ) 0 =
10 ( ) 35 =
d
dt
---- - 10 ( ) 0 =
75 A 0 ( )
3
B 0 ( )
2
C 0 ( ) D + + + =
0 3A 0 ( )
2
2B 0 ( ) C + + =
35 A 10 ( )
3
B 10 ( )
2
C 10 ( ) D + + + =
0 3A 10 ( )
2
2B 10 ( ) C + + =
Solving
For A, B, C, D we get
t ( ) 0.22 ( )t
3
3.3 ( )t
2
75 ( ) + + =
t (sec)
0
1
2
3
4
5
6
7
8
9
10
theta(t)
75
71.92
63.56
51.24
36.28
20
3.72
-11.24
-23.56
-31.92
-35
page 407
b) determine the time required to move the arm to a desired position and the rotational
velocity of each joint, if joint interpolated motion (all joints start and stop simulta-
neously) is used.
c) Solve question 4 under the condition that the three joints move at different rotational
velocities. The first joint moves at 10 degrees/sec., the second joint moves at 25
degrees/sec, and the third joint moves at 30/sec.
9. Consider the following motion planning problem.
a) A jointed arm robot has three rotary joints, and is required to move all three axes so that
the first joint is rotated through 50 degrees; the second joint is rotated through 90
degrees, and the third joint is rotated through 25 degrees. Maximum speed of any
of these rotational joints is 10 degrees/sec. Ignore effects of acceleration and decel-
eration and,
b) determine the time required to move each joint if slew motion (joint motion is indepen-
dent of all other joints) is used.
c) determine the time required to move the arm to a desired position and the rotational
velocity of each joint, if joint interpolated motion (all joints start and stop simulta-
neously) is used.
10. We are designing motion algorithms for a 2 degree of freedom robot. To do this we are
developing sample calculations to explore the basic process.
a) We want to move the tool in a straight line through space from (3, 5) to (8, 7). Develop
equations that will give a motion that starts and stops smoothly. The motion should be complete in
1 second.
b) Find the velocity of the tool at t=0.5 seconds.
P t ( )
3
5
2t
3
3t
2
+ ( )
5
2
+ =
ANS.
d
dt
-----P t ( )
7.5
3
=
ANS.
page 408
c) Plot out the tool position, joint positions and velocities as functions of time.
11. Why do robots not follow exact mathematical paths?
12. We are designing motion algorithms for a 2 degree of freedom robot. To do this we are
developing sample calculations to explore the basic process. We want to move the tool in a
straight line through space from (8, 7) to (3, 5). Develop equations that will give a motion that
starts and stops smoothly. The motion should be complete in 2 seconds. Show all derivations.
13.
13.4 LABORATORY - AXIS AND MOTION CONTROL
Purpose:
To .
Overview:
.
Pre-Lab:
To be determined.
In-Lab:
1. To be determined.
Submit (individually):
1. To be determined.
page 409
14. CNC MACHINES
Computer Numerical Control machines use a computer to guide a process that might other-
wise be done manually.
14.1 MACHINE AXES
14.2 NUMERICAL CONTROL (NC)
The use of numerical data to drive a machine for processes such as,
- milling
- turning
- drilling
- grinding
- shot peening
- tube bending
- flame cutting
- automated knitting machines
- automatic riveting
- etc.
Basic components of NC systems,
- program
- controller unit
- machine tool
Most suited to,
- parts are processed frequently in small lot sizes
- complex part geometry
- close tolerances on workpart
- many operations on part in processing
- large amounts of metal to be removed
- engineering design will possibly change
- parts that are too expensive for mistakes
page 410
The methods for developing NC programs include,
- manual part programming
- computer-assisted part programming
- computer generated programs
The manual and computer aided methods use various NC programming languages,
- APT (Automatically Programmed Tools)
- AUTOSPOT (Automatic System for Positioning Tools)
- SPLIT (Sundstrand Processing Language Internally Translated)
- COMPACT II
- ADAPT (ADaptation of APT)
- EXAPT (Extended Subset of APT)
- UNIAPT
These languages are used by a parts programmer to define the motion of the cutting tool.
The languages may be preprocessed, and then used for a number of various control types,
such as,
- punched paper tape
- Computer Numerical Control (CNC)
- Direct Numerical Control (DNC)
The automatic methods work with geometry created in a CAD program.
14.2.1 NC Tapes
NC Programs are preprocessed on computers, and punched onto paper or mylar tapes.
Simple NC machines can use a tape reader to direct the machine.
Problems,
- required storage, transportation, and manual loading of NC tapes
- has to reread the tape for each new part
- tapes tend to wear, and become dirty, thus causing misreadings
page 411
- the readers are slow, and can cause dwell marks on complex pieces
- the mechanical parts in the readers reduced reliability
- testing had to be done on the NC machine
- no program editing abilities (increased lead time)
The end of tapes was the result of two competing developments
- DNC used remote computers to replace tape readers, these were displaced in most cases
by CNC
- CNC allowed the use of a local computer to overcome problems with tapes, and the
problems with distant computers. While CNC was used to enhance tapes for a
while, they eventually allowed the use of other storage media, and currently pro-
gram transfer media are not required.
14.2.2 Computer Numerical Control (CNC)
A computer controller is used to drive an NC machine directly.
Characteristics are,
- controls a single machine
- located very close to machine tool
- allows storage/retrieval/entry of NC programs without preprocessing of NC code
Advantages of CNC,
- program is only entered into memory once, so it is more reliable
- the programs can be tested and altered at the machine
- increased flexibility and control options on the local computer
- easy to integrate into FMS systems
The Background,
- the problems with NC tapes were approached using DNC networks
- the communication problems with DNC systems became obvious, and local computers
were added to act as tape readers which would read tapes once, and play them back
to the NC machine indefinitely
- CNC controllers began using other storage media like magnetic tapes, and floppy disks
- CNC now offers features like,
- local programming,
- communication over interfaces,
- hard disk storage,
- program simulation
page 412
- etc.
ASIDE: Direct Numerical Control is similar to CNC, except a remote computer is used to
control a number of machines. This gives the advantage of more computer power. This approach
is no longer popular, as the dropping cost of computers offsets any advantages.
Some companies use proprietary NC Languages, such as the example of DYNA Mill NC
code shown later
These machines are often programmed by downloading NC code from a computer, or man-
ually programming the controller computer.
Future trends involve,
- adaptive feed rates to increase speeds as the metal removal rate varies
- tool wear detection
-
14.2.3 Direct/Distributed Numerical Control (DNC)
Uses a few methods,
- the oldest methods used modems, and a mainframe which emulated a tape reader, to con-
trol the NC machine (no storage)
- a more recent advance used a local computer which acts as a storage buffer. Programs are
downloaded from the main DNC computer, and then the local controller feeds
instructions to the hardwired NC machine, as if they have been read from tape.
- the newer methods use a central computer which communicates with local CNC comput-
ers (also called Direct Numerical Control)
DNC controllers came before CNC machines, but as computer technology improved it
became practical to place a computer beside the NC machine, and DNC changed in form.
Characteristics of modern DNC systems are,
- uses a server (with large storage capacity) to store a large number of part programs
page 413
- the server will download part programs on demand to local machines
- may have abilities to,
- display and edit part programs
- transmit operator instructions and other data needed at the machines
- collect and process machine status information for management purposes
Advantages are,
- eliminates the need for NC tapes (the advantages are obvious)
- design changes are immediate
- NC programs may be edited quickly
- can be used to support an FMS system
- increase efficiency of individual machine tools
- more shop up-time than with stand alone machines
- simplifies implementation of group technology, computer aided process planning, and
other CIM concepts
- reduces peripheral costs with NC tapes
A Brief History,
Mid 60s
- concept proved by Cincinnati Milacron and G.E.
- telephone links used to send instructions from large computers to hard wired NC
machines. Basically replaced a tape reader.
1970
- several commercial DNC systems announced.
Mid 70s
- Aerospace companies used DNC because of the large number of distributed
machines in their facilities.
Initial resistance to DNC technology was (previously) based on,
- high cost of computer hardware
- the number of machines which could be controlled by one computer was limited
- computer software was limited for maintenance, scheduling, control, and data collection
- a backup computer was usually required
- was hard to justify on the basis of downloading parts programs
when downloading programs there are two popular opinions,
- a program should only be downloaded in part, this accommodates easy engineering
changes in a real-time environment.
- many programs should be downloaded to the local controller to provide protection
against system failure, and eliminating the cost of real-time response in the DNC
central computer.
page 414
14.3 EXAMPLES OF EQUIPMENT
The number of NC machines available commercially will be well into the thousands.
14.3.1 EMCO PC Turn 50
This is a small desktop lathe capable of turning parts in metal.
The basic physical specifications are,
The basic sequence of operations for this machine are,
1. Unpack components.
2. Connect devices to power, air supply, and attach interface cables.
Cutting Volume
Max. Holding Vol-
ume
Max. Tool Size
Chuck
Spindle
Resolution
Feed
Feed Force
Power
radial travel 48mm rad.
axial travel 228mm
radial 30-65mm
axial 300mm
12mm by 12mm
max 80mm dia.
130-3000 rpm
0.001mm
0-750 mm/min
<=600N below 500mm/min
100/110/230VAC, 0-6KVA
840 by 695 by 345 mm
page 415
3. Install RS-485 card in PC.
4. Install software.
5. Test basic system (Done initial setup here).
6. Start and initialize lathe and PC with software.
7. Setup tools for new job. Find zero positions/offsets, and enter values for turret.
8. Load NC code.
9. Simulate program.
10. Load stock and close automatic chuck.
11. Close door.
12. Run program on Lathe.
13. Open door and open chuck.
14. If cutting a similar part go to step 8, if doing a new setup go to step 7.
14.3.2 Light Machines Corp. proLIGHT Mill
This is a small desktop lathe capable of turning parts in metal.
The basic physical specifications are,
page 416
The basic sequence of operations for this machine are,
1. Unpack components.
2. Connect devices to power, air supply, and attach interface cables.
3. Install software.
4. Test basic system (Done initial setup here).
5. Start and initialize mill and PC with software.
6. Setup tool for new job. Find zero position/offset.
7. Load NC code.
8. Simulate program.
9. Run program on Mill.
10. If cutting a similar part go to step 7, if doing a new setup go to step 6.
Cutting Volume
Max. Holding Volume
Max. Tool Size
Spindle
Resolution
Feed
Feed Force
Power
Dimensions
Weight
Controller
Control Interface
Programming
Spindle
200-5000 rpm
50ipm x,y and 40ipm z
IBM compatible computer
IBM compatible computer
G-Codes and Dos software
1 H.P.
page 417
14.4 PRACTICE PROBLEMS
1.
14.5 TUTORIAL - EMCO MAIER PCTURN 50 LATHE (OLD)
The lathe is shipped with software that is meant to emulate shop floor interfaces. We dont have
the standard keyboard, so we need to use special key stroke sequences on the PC keyboard.
Procedure:
1. Connect the air supply to the lathe and make sure that the regulator on the lathe is
between 25 and 75 psi - 50 psi is good. Ensure that the lath is connected to the PC
with the DNC cable. The computer card must also have a terminator on the second
connector - this is an empty connector. Turn on the lathe, and the PC.
2. Once the PC is booted, run the emco control software. The screen may come up with
warnings. If these warnings dont disappear when you hit ESC call the instructor.
3. First we must zero the lathe. To do this first hit F1 and then F7?-ZRN. A small label
ZRN should appear near the bottom of the screen. Press 4 on the number pad of
the keyboard - the lathe should move in the x direction. Next, press 8 on the
keyboard, the lathe should move in the z direction. After all motion has stopped
the lathe is calibrated, and it will be put in jog mode.
4. You can move the lathe with the keys on the number pad as well as perform other func-
tion.
4 - move carriage left
6 - move carriage right
2 - cross slide out
8 - move cross slide in
<SFT>7 - turn spindle on
<SFT>6 - turn spindle off
<SFT>2 - turn on/off chip blower
<SFT>1 - turn tool turret
+/- - increase/decrease feed
5. You can now put the mill in MDI mode by pressing F1 then F6?-MDI. Push the
door open and hold it for a second, it will then stay open. Clear the error on the
screen with ESC and press <SFT>~ the chuck should open and close. Mount a
work piece and then close the door.
page 418
6. Put the computer in program mode ----------------
14.6 TUTORIAL - PC TURN 50 LATHE DOCUMENTATION: (By Jonathan
DeBoer)
SETUP:
The lathe is controlled by a computer through an RS485 port. RS485 is a serial data bus
that can be chained from one device to another and must be terminated.
The controlling computer must be running Windows 3.1 or 3.11 and must have the RS485
card installed. Windows 95 will not get along with the interface card, and the soft-
ware refuses to use an RS232 port with an RS485 adapter. The machine should
have as few peripherals as possible; if one device happens to use any of the IRQs/
DMAs/IO ports as the RS485 card, there will be problems. So remove sound
cards, extra interface cards, etc. The RS485 card has two DB9F connectors on the
back, plug the cable from the lathe in one and a terminator in the other.
Install WinNC (the control software) under Windows 3.1. There are two disks; the
installer and a machine data disk.
The lathe needs to be plugged in to the computer, to a power outlet (of course), and to an
air supply at 50-75 psi (less than 50 and there isn't enough pressure to open the
door). A pressure gauge is on the left side of the machine, all plugs/etc are on the
right.
POWER ON/OFF:
To Turn On:
Turn on the computer and machine. To turn on the machine, turn the key on the
right side. On the computer, launch Windows if neccisary. Once windows is
running, launch WinNC. Make sure NumLock is on before launching
WinNC. WinNC will then establish communication with the machine.
To Turn Off:
To just shut off the lathe but not the computer, just turn the key on the lathe. An
error will come up in WinNC indicating it lost RS485 communication. Not to
worry; when the lathe is turned back on later, hit ESC and the error will go away.
To turn off both, exit WinNC by hitting Alt-F4 and then exit Windows. Then
Simply switch off both the machine and the computer.
OPERATION:
Some notes:
The EMCO software is distinguished by having the most counter-intuitive, unnatu-
ral, information-withholding, and ornery interface known to man. Most techni-
cal references available are in German.
The software periodically pops up error messages for minor and major errors.
page 419
Errors can be dismissed by pressing ESC. If they don't go away, there is a prob-
lem that needs to be looked into.
At the bottom of the screen is a menu of options you can select with the F3-F7
keys. This is called the "softkey list" by the Emco documentation, and will
henceforth be referred to as the "menu".
A note on coordinates:
The X axis is into/out of the material. X = 0 should be the center of rotation. As
long as X is a positive value, moving along X in the positive is moving the tool
out of the material and away from center. Moving along X in the negative is
moving into the material and toward center.
The Z axis is along the length of the part (along the axis of rotation). Moving
along Z in the negative direction is moving toward the spindle head (to the left,
facing the machine). Moving along Z in the positive direction is moving away
from the spindle head (to the right, facing the machine).
Modes:
The software is ruled by modes. What mode the software is in determines what it
can do and what it displays. If something doesn't work or doesn't look right,
check what mode the software is in. Remember operational modes are set
independently of display modes. The operational mode can be EDIT but pro-
grams cannot be edited until the view mode is set to PRGRM, and vice versa.
Hit F1 to get a menu of operational modes:
ZRN mode is used for zeroing the tool position. This should be done the
first thing after the machine is turned on.
JOG is used for manual control of the lathe.
MDI is used for changing tools, opening chuck, etc. (actually, you can do
all this with JOG)
EDIT is used for editing, loading, and exporting programs.
AUTO is used for running programs.
Hit F12 to get display modes:
Note: when you switch view modes, the menu changes.
The default is ALARM mode, which displays operator messages and
alarms. Hit F3 to display alarms, F5 to display operator messages.
POS mode displays positions. Hit F3 to display the current absolute posi-
tion, F4 for the current relative position, and F5 for a variety of details.
PRGRM mode displays the program. Hit F3 to display the program code,
hit F4 for a list of all the programs available. If the operational mode is
EDIT, you can also edit the code when you hit F3
OFFSET is used for displaying and changing offset values. Hit F3 for wear
adjustment and F4 for geometry. These are both parameters for tools.
Data for up to 16 tools can be stored at once. Hit F5 for work shift. This
is how the working reference point is set. See below.
PARAM is used for changing setup parameters and viewing system infor-
mation. Hit F3 for setup see below for details. Hit F4 for diagnostics on
the RJ485 port and the software version.
page 420
GRAPH is used to simulate output with a graph
The fact that all these modes must share the menu can cause confusion.
Remember that if you should be seeing a menu and you aren't, the menu
you are looking for may be "behind" the one you are seeing. For exam-
ple, when you switch to a display mode, you should see the menu for that
display mode. If you hit F1, that menu is "covered up" by the menu to
select an operational mode. Once you select something from that menu,
you will see the view mode's menu again.
Keyboard control:
Note on keyboard control: Many of the keys outlined in the manual are for Ger-
man keyboards only and are mapped differently on US keyboards. Use this as
reference, NOT the manual:
Alt-F4 - Exit
ESC - Dismiss error message
F1 - mode menu
F3 thru F7 - select item from current menu
F11 - scroll through menus when they are too wide to fit on the screen (like
the MORE key on a Ti-85 calculator)
F12 - function key menu
Ctrl-\ - open/close chuck (must not be in EDIT mode, door must be open)
Ctrl-] - open/close door (spindle must be off)
Ctrl-1 - change tool (must not be in EDIT or ZRN mode, door must be
closed)
Ctrl-2 - Turn on/off blower
Ctrl-6 - Turn off spindle (JOG mode)
Ctrl-7 - Turn on spindle (JOG mode, door must be shut)
arrows - move cursor in the editor
on the numeric keypad:
4 - move -Z in JOG mode, or zero Z axis in ZRF mode
6 - move +Z in JOG mode, or zero Z axis in ZRF mode
2 - move -X in JOG mode, or zero X axis in ZRF mode
8 - move +X in JOG mode, or zero X axis in ZRF mode
5 - zero both axis in ZRF mode
Parameter setup:
There are several screens of setup parameters, you can scroll through the pages
with the up and down arrow keys and set these parameters:
On the first page:
INCH =: Sets the unit system. Hit 0 for metric (mm), hit 1 for English
(inches)
I/O =: Sets the device for I/O (exporting programs, etc). Hit 1 or 2 for
COM port 1 or 2. Hit A for the a: drive (root directory). Hit B for B
drive (root directory). Hit C for the hard drive, the c:\WinNC\fan0.t\prg
directory, or whatever is specified as the path.
On the third page:
page 421
Baudrate, data bits, stop bits, etc. can be set up for the COM ports
On the sixth page:
GEAR =: Sets the gear for the spindle. See the manual.
PATH =: Sets the working path, the default is c:\WinNC\fan0.t\prg. It
would be wise not to change this.
REFERENCE POINTS:
Setting the working reference point (that is, setting 0,0):
The working reference point is the point that your programs will consider to be 0,0
and should be placed at the center of the point where the part enters the jaws of
the chuck. The working reference point is defined in terms of the machine refer-
ence point. The machine reference point is the center of the face of the spindle
head. This is the center of the point where the chuck is fastened to the spindle
head, NOT the face of the chuck.
The X zero reference is already at the center of rotation. Don't change it.
To set the Z zero reference, do this:
Hit F12 and select POS view mode.
Hit F3 in the POS view mode to select absolute view.
Hit F1 and select JOG mode
Now, move the tool holder so that it's left edge is at the point which should be 0 in
the Z direction. If you want zero to be the first point of the material that is out of
the jaws of the chuck, VERY CAREFULLY move the tool holder (NOT the
tool)so that it is just touching the jaws of the chuck. The manual suggests using
a piece of paper. Place a sheet of paper between the tool holder and the jaws of
the chuck. When the sheet of paper is pinched between the two and can't move,
stop moving the tool holder.
Look at the value for Z on the screen, it would be wise to write it down on a sheet
of scrap paper.
Hit F12 and select OFFSET mode.
Hit F5 for work shift.
Type the negative of the value for Z you wrote down as a Z code. That is, type "Z"
followed by "-" followed by the value you wrote down.
Your zero reference has been set. however, you still need to calibrate the tools.
Tool offset setup:
Tools must be matched with tool properties in programs. You can have as many as
16 sets of tool properties, and the PC Turn 50 has three tool holders. Thus, a
command in a program to change tools should be of the form "T0316" where T
is the command to change tools, the first two numbers are the tool to switch to,
and the second two numbers are the tool offset description to use.
To get the Z offset:
Hit F1 and select JOG mode.
Having gotten the Z zero reference, rotate the tool into position and then
move the tool to the zero position just as the tool holder was moved to
the zero position when setting the zero reference.
page 422
Hit F12 and select OFFSET mode.
Hit F4 for Geometry settings.
Properties for up to 16 tools can be stored at once, and are listed on this
screen. Use the arrow keys to move the cursor to the tool description
number 1-16 that the X offset is to be stored in.
Hit Z and then hit enter. The Z offset will be saved in that tool description
number.
To get the X offset:
Hit F1 and select JOG mode.
Measure the radius of any round part and place it in the chuck.
CAREFULLY move the tool so the tip is just touching the surface of the
material.
Hit F12 and select POS mode.
Hit F3 for absolute position display. Observe the value for X. Subtract the
value of the radius of the sample part and write this value down.
Hit F12 and select OFFSET mode.
Hit F4 for Geometry settings.
Use the arrow keys to move the cursor to the tool description number 1-16
that the X offset is to be stored in.
Type "X" followed by the value you wrote down, then hit Enter. The X off-
set will be saved in that tool description.
PROGRAMMING:
Multiple programs (up to 9499) can be stored on the hard drive of the computer itself and
be used by WinNC. They are treated as subprograms, and addressed with O codes.
So a program name is O0001 or O4365, etc.
Creating/opening/exporting programs:
Hit F1 and select EDIT mode from the menu
Hit F12 and select PRGRM mode
Type Oxxxx where xxxx is a number between 1 and 9499 and is the number of the
program. Then:
To create a program, hit Enter. If the number specified already exists, nothing will
happen.
To open an existing program, hit down arrow. If the number specified does not
exist, nothing will happen.
To delete a program, hit Delete. If the number specified does not exist, nothing
will happen.
To export a program, hit F9. If the number specified does not exist, nothing will
happen. The program will be exported to the device specified by the I/O param-
eter under the settings menu (see above). If the export device is a disk, the file
name will be oprgxxxx where xxxx is the program number
Running a program:
Hit F1 and select AUTO mode.
Hit F12 and select PRGRM mode.
Open the program: type Oxxxx where xxxx is the program number and hit down
arrow.
page 423
Hit 0 on the numeric keypad (this is RESET)
Hit Enter on the numeric keypad. (this is RUN)
Loading a program:
The interface for this is unusable and completely undocumented. Do this instead:
Exit WinNC by hitting Alt-F4.
Open the Windows File Manager, and copy the G-code file from your disk to the
c:\WinNC\fan0.t\prg directory.
rename the file o1, o2, o4567, or whatever you want the new program number to
be.
Now when you get back into WinNC, the file will be there as if you had created a
program by that number right in WinNC.
Notes on the editor:
The editor is a basic text editor with some restrictions to make sure you enter valid
codes.
Type a "word" (that is, a code: N00, G01, X5.395, etc.) and hit enter. Hit enter
twice to start a new line. You can use the cursor to move about and insert text.
It's a bit hard to control, but fairly intuitive.
Notes on G-codes for the PC Turn 50:
The PC Turn 50 takes a fairly standard set of G codes, which is the only thing cov-
ered well in the manual. Note that WinNC and the PC Turn 50 use command
definition set C in the manual. There are several things worth noting.
O codes are not allowed, as they are used for identifying programs.
There are only two axis, X and Z, so all the 3d aspect of G codes do not apply.
Keep in mind most tools are designed to cut only in one direction in the Z axis.
There are some G codes relatively unique to the PC Turn 50. G20, G21, G24, and
G33 are new cycles for turning and threading for example.
STEP BY STEP TUTORIAL:
assumes you have written a G-code file.
1. Switch on the lathe with the key.
2. Switch on the computer, launch Windows File Manager.
3. Copy the G-code file from your disk to the c:\WinNC\fan0.t\prg directory and rename it
o---- where ---- is a number that isn't already being used.
4. Exit the File Manager, launch WinNC.
6. Close the door if necessary with Ctrl-]
5. Hit F1 to bring up the operating mode menu, and hit F7 for ZRN mode.
6. On the numeric keypad, hit 5 to move the tool to the machine's reference point. The
machine should then go to JOG mode.
7. Set zero references and tool offsets if they haven't been set already. See above for
details.
8. Open the door with Ctrl-], then open the chuck with Ctrl-\.
9. Place a part to turn in the chuck's jaws and close the chuck with Ctrl-\. Close the door.
8. Hit F1 to bring up the operating mode menu, and hit F4 for EDIT mode.
7. Hit F12 to bring up the view mode menu, and hit F4 for PRGRM mode.
8. Type what you renamed your file to, ("O0042" for example) and hit the down arrow
key. Your program should be displayed on screen.
page 424
9. Hit F1 and hit F3 for AUTO mode.
10. Hit 0 on the numeric keypad to reset, and then hit Enter on the numeric keypad to run
the file.
11. Once the program is done, hit F1 and hit F5 for MDI mode.
12. Open the door, then open the chuck and remove the finished part.
13. Close the door, exit WinNC with Alt-F4, exit Windows, and turn off the computer and
lathe.
14.6.1 LABORATORY - CNC MACHINING
Purpose:
The students will be introduced to the basics of CNC equipment.
Overview:
A simple tutorial will be used to introduce the students to the CNC equipment in the labo-
ratory. The students will develop a simple G-code program to cut their initials on
the mill and a candle stick on the lathe. Both programs can be simulated off-line,
and then tested in the laboratory. You will also be introduced to automatic part pro-
gramming software.
Pre-Lab:
1. Review the course material on CNC machines, and specifics for the PC-turn 50, and
Pro-light machines.
2. Use netscape to explore the NC machines in the laboratory.
3. Develop by hand a program to cut your initials using the Pro-light NC mill. The initials
will be cut on a 2 square piece of aluminum. Correct speeds and feed should have
also been determined.
4. Develop by hand a program to cut a candlestick in brass with a 1 dia on the PC-turn 50
lathe. Correct speeds and feed should have also been determined.
5. Simulate both programs before arriving at the laboratory.
In-Lab:
1. In the lab you will be shown how to set up the NC lathe and mill, fixture parts, and set
the origin.
2. You will then individually enter and manufacture your parts.
3. Learn how to use MasterCAM, SmartCAM, or ProEngineer to produce NC code. Tuto-
rial manuals will be provided in the lab.
Submit:
1. Part programs for both parts.
2. Digital photographs of both parts.
3. A simple part program generated on the software of your choice.
page 425
page 426
15. CNC PROGRAMMING
We need to be able to direct the position of the cutting tool. As the tool moves we will cut
metal (or perform other processes).
Obviously if we plan to indicate positions we will need to coordinate systems.
The coordinates are almost exclusively cartesian and the origin is on the workpiece.
For a lathe, the infeed/radial axis is the x-axis, the carriage/length axis is the z-axis. There is
no need for a y-axis because the tool moves in a plane through the rotational center of the work.
Coordinates on the work piece shown below are relative to the work.
For a tool with a vertical spindle the x-axis is the cross feed, the y-axis is the in-feed, and
the z-axis is parallel to the tool axis (perpendicular to the table). Coordinates on the work piece
shown below relative to the work.
Head
Tail Stock
x
z
WARNING: Be cautious,
the x axis is intuitively the
radius of the workpiece. But,
many systems use the dimen-
sion as a diameter. Make sure
y
page 427
For a tool with a horizontal spindle the x-axis is across the table, the y-axis is down, and the
z-axis is out. Coordinates on the work piece shown below relative to the work.
Some common programming languages include, (note: standards are indicated with an *)
ADAPT - (ADaptation of APT) A subset of APT
*APT - (Automatically Programmed Tool) A geometry based language that is compiled
into an executable program.
AUTOSPOT - A 2D language developed by IBM. Later combined with ADAPT.
COMPACT/COMPACTII - A higher level language designed for geometrical definitions
of parts, but it doesnt require compilation.
EXAPT - A european flavor of APT
*G-Codes (EIA RS-274 G&M codes)
MAPT - (Microcomputer APT) - Yet another version of APT
UNIAPT - APT controller for smaller computer systems
Other Proprietary languages
y
x
z
z
y
x
page 428
These languages have many similarities, but the syntax varies.
15.1 G-CODES
This language was originally designed to be read from paper tapes. As a result it is quite
simple.
The language directs tool motion with simple commands
Note, I show programs with spaces to improve readability, but these are not necessary.
A basic list of G operation codes is given below. These direct motion of the tool.
G00 - Rapid move (not cutting)
G01 - Linear move
G02 - Clockwise circular motion
G03 - Counterclockwise circular motion
G04 - Dwell
G05 - Pause (for operator intervention)
G08 - Acceleration
G09 - Deceleration
G17 - x-y plane for circular interpolation
G18 - z-x plane for circular interpolation
G19 - y-z plane for circular interpolation
G20 - turning cycle or inch data specification
G21 - thread cutting cycle or metric data specification
G24 - face turning cycle
G25 - wait for input #1 to go low (Prolight Mill)
G26 - wait for input #1 to go high (Prolight Mill)
G28 - return to reference point
G29 - return from reference point
G31 - Stop on input (INROB1 is high) (Prolight Mill)
G33-35 - thread cutting functions (Emco Lathe)
G35 - wait for input #2 to go low (Prolight Mill)
G36 - wait for input #2 to go high (Prolight Mill)
G40 - cutter compensation cancel
G41 - cutter compensation to the left
G42 - cutter compensation to the right
page 429
G43 - tool length compensation, positive
G44 - tool length compensation, negative
G50 - Preset position
G70 - set inch based units or finishing cycle
G71 - set metric units or stock removal
G72 - indicate finishing cycle (EMCO Lathe)
G72 - 3D circular interpolation clockwise (Prolight Mill)
G73 - turning cycle contour (EMCO Lathe)
G73 - 3D circular interpolation counter clockwise (Prolight Mill)
G74 - facing cycle contour (Emco Lathe)
G74.1 - disable 360 deg arcs (Prolight Mill)
G75 - pattern repeating (Emco Lathe)
G75.1 - enable 360 degree arcs (Prolight Mill)
G76 - deep hole drilling, cut cycle in z-axis
G77 - cut-in cycle in x-axis
G78 - multiple threading cycle
G80 - fixed cycle cancel
G81-89 - fixed cycles specified by machine tool manufacturers
G81 - drilling cycle (Prolight Mill)
G82 - straight drilling cycle with dwell (Prolight Mill)
G83 - drilling cycle (EMCO Lathe)
G83 - peck drilling cycle (Prolight Mill)
G84 - taping cycle (EMCO Lathe)
G85 - reaming cycle (EMCO Lathe)
G85 - boring cycle (Prolight mill)
G86 - boring with spindle off and dwell cycle (Prolight Mill)
G89 - boring cycle with dwell (Prolight Mill)
G90 - absolute dimension program
G91 - incremental dimensions
G92 - Spindle speed limit
G93 - Coordinate system setting
G94 - Feed rate in ipm (EMCO Lathe)
G95 - Feed rate in ipr (EMCO Lathe)
G96 - Surface cutting speed (EMCO Lathe)
G97 - Rotational speed rpm (EMCO Lathe)
G98 - withdraw the tool to the starting point or feed per minute
G99 - withdraw the tool to a safe plane or feed per revolution
G101 - Spline interpolation (Prolight Mill)
M-Codes control machine functions and these include,
M00 - program stop
M01 - optional stop using stop button
M02 - end of program
M03 - spindle on CW
M04 - spindle on CCW
page 430
M05 - spindle off
M06 - tool change
M07 - flood with coolant
M08 - mist with coolant
M08 - turn on accessory #1 (120VAC outlet) (Prolight Mill)
M09 - coolant off
M09 - turn off accessory #1 (120VAC outlet) (Prolight Mill)
M10 - turn on accessory #2 (120VAC outlet) (Prolight Mill)
M11 - turn off accessory #2 (120VAC outlet) (Prolight Mill) or tool change
M17 - subroutine end
M20 - tailstock back (EMCO Lathe)
M20 - Chain to next program (Prolight Mill)
M21 - tailstock forward (EMCO Lathe)
M22 - Write current position to data file (Prolight Mill)
M25 - open chuck (EMCO Lathe)
M25 - set output #1 off (Prolight Mill)
M26 - close chuck (EMCO Lathe)
M26 - set output #1 on (Prolight Mill)
M30 - end of tape (rewind)
M35 - set output #2 off (Prolight Mill)
M36 - set output #2 on (Prolight Mill)
M38 - put stepper motors on low power standby (Prolight Mill)
M47 - restart a program continuously, or a fixed number of times (Prolight Mill)
M71 - puff blowing on (EMCO Lathe)
M72 - puff blowing off (EMCO Lathe)
M96 - compensate for rounded external curves
M97 - compensate for sharp external curves
M98 - subprogram call
M99 - return from subprogram, jump instruction
M101 - move x-axis home (Prolight Mill)
M102 - move y-axis home (Prolight Mill)
M103 - move z-axis home (Prolight Mill)
Other codes and keywords include,
Annn - an orientation, or second x-axis spline control point
Bnnn - an orientation, or second y-axis spline control point
Cnnn - an orientation, or second z-axis spline control point, or chamfer
Fnnn - a feed value (in ipm or m/s, not ipr), or thread pitch
Innn - x-axis center for circular interpolation, or first x-axis spline control point
Jnnn - y-axis center for circular interpolation, or first y-axis spline control point
Knnn - z-axis center for circular interpolation, or first z-axis spline control point
Lnnn - arc angle, loop counter and program cycle counter
Nnnn - a sequence/line number
Onnn - subprogram block number
Pnnn - subprogram reference number
page 431
Rnnn - a clearance plane for tool movement, or arc radius, or taper value
Qnnn - peck depth for pecking cycle
Snnn - cutting speed (rpm), spindle speed
Tnnn - a tool number
Unnn - relative motion in x
Vnnn - relative motion in y
Wnnn - relative motion in z
Xnnn - an x-axis value
Ynnn - a y-axis value
Znnn - a z-axis value
; - starts a comment (proLight Mill), or end of block (EMCO Lathe)
The typical sequence of one of these programs is,
1. Introductory functions such as units, absolute coords. vs. relative coords., etc.
2. Define coordinates.
3. Feeds, speeds, etc.
4. Coolants, doors, etc.
5. Cutting tool movements and tool changes
6. Shutdown
A program is given for the sample part below. Complete the last few lines.
page 432
Notes:
1. Drawing not to scale
2. NC origin set to bot-
tom left of both views
3. the available tools are,
#1 5/8 dia. drill
#2 1/2 dia. mill
x
y
z
x
3
1 1 1
7
.5
2 holes 5/8dia.
2
.5
1
2
2
1
1
all rounds 1/4 rad.
3
1.5
1.5
N10 G70 G90 T01 M06
N20 G00 X1.000 Y2.000 Z2.200
N30 F12.0 S480 M03
N40 G81 Z-0.100 R2.200
N50 G81 Y4.000 Z-0.100 R2.200
N60 M05 T02 M06 F50 S2400 M03
N70 G00 X3.500 Y-0.600 Z2.200
N80 G00 Z1.000
N90 G01 Y7.200
N100 G00 X4.000
; set to inches & absolute coords and tool #1
; move to above first hole
; set speeds and feeds
; drill first hole
; drill second hole
; change to milling cutter and set speeds and
feeds
; move toward long slot cut
; move to right depth
; cut slot length
Note: The program above will cut the 1 slot too narrow. How can we fix
page 433
The following is an example of circular interpolation. This is valid for both milling and
turning. Note that here we move to the start point, the command indicates the direction (clockwise
or counterclockwise). The I, J values indicate the center of rotation, and the X, Y values indicate
the point to stop at. We can also cut circular paths on other planes by resetting the cutting planes
(G17, G18, G19).
When cutting, it is useful to change our point of reference. When doing mathematics we
tend to dimension relative to a main origin (absolute). In fact a machine will need to have coordi-
nates specified with reference to a main origin. But when we examine parts we tend to refer to
local origins for features. (Consider how you dimension details on a drawing.) These relative
points refer to as local origins. We can also do moves as distances to the next point.
N10G01X6Y1; MOVE TO (6, 1)
N11G03X2Y5I2J1; CUT CIRCULAR PATH
(0, 0)
(6, 1)
(2,5)
(2, 1)
page 434
When using the prolight mill we can add program elements to request that an external
device (ie robot) load or unload parts. We will assume that the robot has been connected to the
robotic interface port available. This port has four inputs and two outputs. The example below
assumes that the input #1 indicates a part has been dropped off and the mill can start. Output #1
will be turned on to request that the robot pick up a part and load new stock.
In previous examples we calculated the cutter offsets by hand. Modern NC machines keep a
record of the tool geometry. This can then be used to automatically calculate offsets (you dont
need to put the tool size in the program).
The best way to think of tool compensation is when cutting a profile, should we be to the
left or right of the line.
N0010G90 ; PUT IN ABSOLUTE MODE
N0011G01X1Y2 ; MOVE TO (1,2)
N0012G01X2Y2 ; MOVE TO (2,2)
N0013G91 ; PUT IN INCREMENTAL
MODE
N0014G01X1 ; MOVE TO (3,2)
(0, 0)
(1, 2)
(2, 2)
(3, 2)
(3, 3)
N20M26 ; SEND OUTPUT TO REQUEST ROBOT LOAD A PART
N21G26 ; WAIT UNTIL THE INPUT FROM THE ROBOT INDICATES PART HERE
N22M25 ; TURN OFF REQUEST TO ROBOT
N23G00.... ; START CUTTING THE PART
........
N89G00..... ; END PART CUTTING
page 435
In the previous example we notice how the shape is distorted by how the cutter navigates
the corners. There are additional commands to help with these problems.
Typical commanded cycles include,
G42
G00 X1.000 Y1.000
G01 Y2.000
G01 X2.000
G01 Y1.000
G41
G00 X1.000 Y1.000
G01 Y2.000
G01 X2.000
G01 Y1.000
M97 - compensate for corners larger
than step (requires more time)
G41
G01 X4.000
G01 X1 Y1 M97
M96 - compensate for corners
G41
G01 X4.000
G01 X1 Y1 M96
page 436
- rectangular pocket milling
- circular pocket milling
- slot or elongated hole milling
- peck drilling
- tapping
For practice, develop the part program for the component shown below
15.2 APT
This language allows tools to be programmed using geometrical shapes. This puts less bur-
den on the programmer to do calculations in their heads.
1 2 3 4 5 6 7
1
2
3
4
5
y
x
P4
L3
P2
L1 P3
P1
C1
L2
page 437
APT programs must be converted into low level programs, such as G-codes.
An example of an APT program is given below.
Some samples of the geometrical and motion commands follow. These are not complete,
but are a reasonable subset.
P0=POINT/0,-1.0,0
P1=POINT/6.0,1.125,0
P2=POINT/0,0,0
P3=POINT/6.0,0,0
P4=POINT/1.75,4.5,0
L1=LINE/P2,P3
C1=CIRCLE/CENTER,P1,RADIUS,1.125
L2=LINE/P4,LEFT,TANTO,C1
L3=LINE/P2,P4
PL1=PLANE/P2,P3,P4
FROM/P0
GO/TO,L1,TO,PL1,PAST,L3
GORGT/L1,TANTO,C1
GOFWD/C1,PAST,L2
GOFWDL2,PAST,L3
GOLFT/L3,PAST,L1
GOTO/P0
1 2 3 4 5 6 7
1
2
3
4
5
y
x
P4
L3
P2
L1 P3
P1
C1
L2
page 438
GEOMETRY: The simplest geometrical construction in APT is a point
p=POINT/x,y,z - a cartesian point
p=POINT/l1,l2 - intersection of two lines
p=POINT/c - the center of a circle
p=POINT/YLARGE,INTOF,l,c - the largest y intersection of a line and a circle
*Note: we can use YSMALL,XLARGE,XSMALL in place of YLARGE
GEOMETRY: Lines are one of the next simplest definitions,
l=LINE/x1,y1,z1,x2,y2,z2 - endpoint cartesian components
l=LINE/p1,p2 - endpoints
l=LINE/p,PARLEL,l - a line through a point and parallel to another line
l=LINE/p,PERPTO,l - a line through a point and perpendicular to a line
l=LINE/p,LEFT,TANTO,c - a line from a point, to a left tangency point on a circle
l=LINE/p,RIGHT,TANTO,c - a line from a point, to a right tangency point on a circle
l=LINE/LEFT,TANTO,c1,LEFT,TANTO,c2 - defined by tangents to two circles
l=LINE/LEFT,TANTO,c1,RIGHT,TANTO,c2 - defined by tangents to two circles
l=LINE/RIGHT,TANTO,c1,LEFT,TANTO,c2 - defined by tangents to two circles
l=LINE/RIGHT,TANTO,c1,RIGHT,TANTO,c2 - defined by tangents to two circles
GEOMETRY: Circles are very useful for constructing geometries
c=CIRCLE/x,y,z,r - a center and radius
c=CIRCLE/CENTER,p,RADIUS,r - a center point and a radius
c=CIRCLE/CENTER,p,TANTO,l - a center and a tangency to an outside line
c=CIRCLE/p1,p2,p3 - defined by three points on the circumference
c=CIRCLE/YLARGE,l1,YLARGE,l2,RADIUS,r - tangency to two lines and radius
*Note: we can use YSMALL,XLARGE,XSMALL in place of YLARGE
GEOMETRY: More complex geometric constructions are possible
PLANE/ - defines a plane
QUADRIC/a,b,c,d,e,f,g,h,i,j - define a polynomial using values
GCONIC/a,b,c,d,e,f - define a conic by equation coefficients
LCONIC/p1,p2,... - defines a conic by lofting (splining) points
RLDSRF/ - a ruled surface made of two splines
POLCON/ - define a surface using cross sections
PATERN/ - will repeat a motion in a linear or circular array
Once we have constructed points, lines and circles we can then proceed to direct the tool to
follow the path.
MOTION: We can use the basic commands to follow the specified geometry
page 439
FROM/p - specify a start point
FROM/x,y,z - specify a start point
GOTO/p - move to a final point
GOTO/x,y,z - move to a final point
GOTO/TO,p - move until the tool touches a point
GOTO/TO,l - move until the tool touches a line
GOTO/TO,c - move until the tool touches a circle
GOLFT/l1,TO,l2 - go on the left of l1 until the tool touches l2
GORGT/l1,TO,l2 - go on the right of l1 until the tool touches l2
GOBACK/l1,TO,l2 - reverses direction along l1 to l2
GOBACK/l1,TO,c1 - reverses direction along l1 to c1
GOUP/l1,TO,l2 - goes up along l1 to l2
GODOWN/1l,TO,l2 - goes down along l1 to l2
GODLTA/x,y,z - does a relative move
Note: TO can be replaced with PAST, ON to change whether the tool goes past the struc-
ture, or the center stops on the structure.
MOTION: The following commands will create complex motion of the tool
POCKET/ - will cut a pocket
PSIS/ - will call for the part surface
As would be expected, we need to be able to issue commands to control the machine.
CONTROL: The following instructions will control the machine outside the expected cut-
ting tool motion.
CUTTER/n1,n2 - defines diameter n1 and radius n2 of cutter
MACHIN/n,m - uses a post processor for machine n, and version m
COOL/ANT/n - either MIST, FLOOD or OFF
TURRET/n - sets tool turret to new position
TOLER/n - sets a tolerance band for cutting
FEDRAT/n - sets a feedrate n
SPINDL/n,CW - specifies n rpm and direction of spindle
We can also include some program elements that are only used for programming
PROGRAM: The following statements are programming support instructions
REMARK - starts a comment line that is not interpreted
$$ - also allows comments, but after other statements
NOPOST - turns off the post processor that would generate cutter paths
CLPRNT - prints a sequential history of the cutter center location
page 440
SQRTF(n) - calculates the floating point square root
FINI - stop program
PARTNO/n - allows the user to specify the part name
LOOPST and LOOPND - loop instructions
RESERV/n,m - defines an array of size n by m
JUMPTO/n - jump to line number
Note: variables can also be defined and basic mathematical operations can be performed.
Note: macro functions are also available.
15.3 PROPRIETARY NC CODES
page 441
NC code Example (for the Dyna Milling Machine)
15.4 GRAPHICAL PART PROGRAMMING
Basically,
000 START INS 01
001 TD = 0.125
002 FRXY = 10
003 FRZ = 4
004 SETUP > zcxyu
005 GOY -.625
006 GOZ -.125
007 GRa -180
008 ZERO AT
009 X .634
010 Y .5
011 GOr .125
012 a 90
013 GRa -30
014 > REF COODS
015 ZERO AT
016 X 1.50
017 Y 0
018 GOr .125
019 a 60
020 GRa -60
021 > REF COODS
022 ZERO AT
023 X 1.5
024 Y -0.3
025 GOr .125
026 a 0
027 GRa -90
028 GRX -1.3
029 END
2.00
0.50
0.50
30
0.20R
Start Program in inches
Set Tool Diameter
Set Feed Rates
Set Absolute Zero Position
Move to Start Position
X
Y
Z
End Program
A
B
A
B
C
D
C
D
E
F
E
F
page 442
1. Part geometry is entered in 2D or 3D.
2. Tool geometry and machine tool type are entered.
3. Speeds and feeds are entered or calculated based on tool and work material.
4. Inside/outside of geometry, and initial stock sizes are selected.
5. Cutter paths are generated.
6. Cutter paths are converted to a machine specific language (eg, G-codes).
These programs are usually built into better CAD systems or are available as stand alone
software
Some machine tools have these programmers built into the controller.
15.5 NC CUTTER PATHS
When we have simple features, paths are easy to generate. These features include,
- steps
- pockets
- holes
- etc.
Typically paths for these will repeat as shown below,
page 443
For complex surfaces we want to contour appropriately. These surfaces will almost always
be represented with spline patches.
Recall that a spline patch can be represented parametrically
page 444
A simple algorithm to cut the surface is shown below.
15.6 NC CONTROLLERS
NC control programs are essentially quite simple. The source code for a basic controller is
given below.
(u=0,v=0)
(u=0,v=1)
(u=1,v=0)
(u=1,v=1)
p u v , ( )
x
p
y
p
z
p
=
dirn_flag = 1; a direction flag
n=10 ; number of passes to cut the surface
step=1.0/n ; step sizes for u and v directions
start=step/2 ; the start offset in the u and v directions
[xp,yp,zp] = p(start,start) ; calculate the start position
print(G00 X,xp, Y,yp, Z,zp+0.2) ; move the tool to above the start position
for i=0 to (n-1) ; will increment in the u direction
for j=0 to (n-1) ; will increment in the v direction
; calculate next point
if dirn_flag=-1 then [xp,yp,zp]=p(start+i*step,start+j*step)
if dirn_flag=1 then [xp,yp,zp]=p(start+i*step,start+(n-j)*step)
print(G01 X,xp, Y,yp, Z,zp) ; instruction to cut to next point
next j ; make next step in v direction until done
dirn_flag = -dirn_flag ; reverse direction to cut in opposite direction
next i ; move to next cut line in the u direction
print(G00 Z,zp+0.2) ; move the tool to above the end position
page 445
********** Add in C-code for AMP project
15.7 PRACTICE PROBLEMS
1. Examine the part below. It is set up so that the origin is at the bottom left. The cutting tool
has a diameter of 1/2, and the material is 1/8 thick.
a) Write the equations needed to find the tangency point on the top left of the piece.
b) Develop an NC program to mill the part. The program should be complete and include all
instructions required. If necessary, assume a location for the tangency point.
R2.000
2.500
2.000
2.000 5.500
T
x
T
5.5 ( )
2
y
T
4.5 ( )
2
+ 2
2
=
L
AT
x
T
2
y
T
2
+ 2
2
5.5
2
4.5
2
+ ( )
2
+ = =
ans.
page 446
2. Examine the part below. It is set up so that the origin is at the bottom left corner. The cut-
ting tool has a diameter of 1/2, and the material is 1/8 thick. Develop an NC program to mill the
part. The program should be complete and include all instructions required.
3.
15.8 LABORATORY - CNC INTEGRATION
Purpose:
N10 G70 G90 T01 M06
N20 F20 S2000 M03
N30 G00 X-0.0 Y-0.25
N40 G01 Z-0.25
N50 G01 X5.75
N60 G01 Y1.75
N70 G01 X7.75
N80 G01 Y4.5
ans.
R2.000
2.500
2.000
2.000 5.500
T
page 447
Integration of CNC equipment.
Overview:
Students will develop programs to load and unload the NC machines with robots, and then
produce parts.
Pre-Lab:
1. Use your NC programming software to generate an NC program to cut the top 1/2 of a
3 radius ball on the mill. Test the program on-line.
2. Use the NC generation software to cut a 1/4 deep, 2long oval into the surface of a 1
brass bar. Test the program on-line.
3. Simulate both programs before arriving at the laboratory.
4. Develop a robot program to load/unload the NC mill with the RV-M1. Test the program
on-line
5. Develop a program for the RT-3000 to load/unload the lathe. Test the program on-line.
In-Lab:
1. In the lab test the programs on the different devices in groups of 3
2. One group of (6?) should connect the RV-M1 to the Mill, and the other group should
connect the RT-3000 to the lathe.
3. The groups that did the connection should split into smaller groups and modify the pro-
grams on the robots and NC machines.
Submit:
1. Your individual NC and robot programs.
2. The final group NC and robot programs.
page 448
16. DATA AQUISITION
16.1 INTRODUCTION
An analog value is continuous, not discrete, as shown in figure 17.1. In the previous chapters,
techniques were discussed for designing logical control systems that had inputs and outputs that
could only be on or off. These systems are less common than the logical control systems, but they
are very important. In this chapter we will examine analog inputs and outputs so that we may
design continuous control systems in a later chapter.
Figure 17.1 - Logical and Continuous Values
Typical analog inputs and outputs for PLCs are listed below. Actuators and sensors that can
be used with analog inputs and outputs will be discussed in later chapters.
Inputs:
oven temperature
fluid pressure
fluid flow rate
Outputs:
fluid valve position
motor position
motor velocity
This chapter will focus on the general principles behind digital-to-analog (D/A) and analog-
to-digital (A/D) conversion. The chapter will show how to output and input analog values with a
PLC.
Voltage
t
continuous
logical
page 449
16.2 ANALOG INPUTS
To input an analog voltage (into a PLC or any other computer) the continuous voltage value
must be sampled and then converted to a numerical value by an A/D converter. Figure 17.2
shows a continuous voltage changing over time. There are three samples shown on the figure. The
process of sampling the data is not instantaneous, so each sample has a start and stop time. The
time required to acquire the sample is called the sampling time. A/D converters can only acquire
a limited number of samples per second. The time between samples is called the sampling period
T, and the inverse of the sampling period is the sampling frequency (also called sampling rate).
The sampling time is often much smaller than the sampling period. The sampling frequency is
specified when buying hardware, but for a PLC a maximum sampling rate might be 20Hz.
Figure 17.2 - Sampling an Analog Voltage
A more realistic drawing of sampled data is shown in Figure 17.3. This data is noisier, and
even between the start and end of the data sample there is a significant change in the voltage
value. The data value sampled will be somewhere between the voltage at the start and end of the
sample. The maximum (Vmax) and minimum (Vmin) voltages are a function of the control hard-
voltage
time
Voltage is sampled during these time periods
T = (Sampling Frequency)
-1
Sampling time
page 450
ware. These are often specified when purchasing hardware, but reasonable ranges are;
0V to 5V
0V to 10V
-5V to 5V
-10V to 10V
The number of bits of the A/D converter is the number of bits in the result word. If the A/D con-
verter is 8 bit then the result can read up to 256 different voltage levels. Most A/D converters
have 12 bits, 16 bit converters are used for precision measurements.
Figure 17.3 - Parameters for an A/D Conversion
The parameters defined in Figure 17.3 can be used to calculate values for A/D converters.
V t ( )
t
where,
V t ( ) the actual voltage over ti me =
sample interval for A/D converter =
t time =
t
1
t
2
V t
1
( )
V t
2
( )
V
max
V
min
t
1
t
2
, time at start,end of sample =
V t
1
( ) V t
2
( ) , voltage at start, end of sample =
V
min
V
max
, input voltage range of A/D converter =
N number of bits in the A/D converter =
page 451
These equations are summarized in Figure 17.4. Equation 17.1 relates the number of bits of an A/
D converter to the resolution. Equation 17.2 gives the error that can be expected with an A/D con-
verter given the range between the minimum and maximum voltages, and the resolution (this is
commonly called the quantization error). Equation 17.3 relates the voltage range and resolution to
the voltage input to estimate the integer that the A/D converter will record. Finally, equation 17.4
allows a conversion between the integer value from the A/D converter, and a voltage in the com-
puter.
Figure 17.4 - A/D Converter Equations
Consider a simple example, a 10 bit A/D converter can read voltages between -10V and 10V.
This gives a resolution of 1024, where 0 is -10V and 1023 is +10V. Because there are only 1024
steps there is a maximum error of 9.8mV. If a voltage of 4.564V is input into the PLC, the A/D
converter converts the voltage to an integer value of 746. When we convert this back to a voltage
the result is 4.570V. The resulting quantization error is 4.570V-4.564V=+0.006V. This error can
be reduced by selecting an A/D converter with more bits. Each bit halves the quantization error.
R 2
N
=
where,
R resolution of A/D converter =
V
I
INT
V
in
V
min
V
max
V
min
-----------------------------
R =
V
I
the integer value representing the input voltage =
V
C
V
I
R
-----
V
max
V
min
( ) V
min
+ =
V
C
the voltage calculated from the integer value =
V
ERROR
V
max
V
min
2R
-----------------------------
=
V
ERROR
the maximum quantization error =
(17.1)
(17.3)
(17.4)
(17.2)
page 452
Figure 17.5 - Sample Calculation of A/D Values
If the voltage being sampled is changing too fast we may get false readings, as shown in Fig-
ure 17.6. In the upper graph the waveform completes seven cycles, and 9 samples are taken. The
bottom graph plots out the values read. The sampling frequency was too low, so the signal read
appears to be different that it actually is, this is called aliasing.
N 10 =
R 2
N
1024 = =
V
I
INT
V
in
V
min
V
max
V
min
-----------------------------
R 746 = =
V
C
V
I
R
-----
V
max
V
min
( ) V
min
+ 4.570V = =
V
ERROR
V
max
V
min
2R
-----------------------------
0.0098V = =
V
max
10V =
V
min
10V =
V
in
4.564V =
Given,
Calculate,
page 453
Figure 17.6 - Low Sampling Frequencies Cause Aliasing
The Nyquist criterion specifies that sampling frequencies should be at least twice the fre-
quency of the signal being measured, otherwise aliasing will occur. The example in Figure 17.6
violated this principle, so the signal was aliased. If this happens in real applications the process
will appear to operate erratically. In practice the sample frequency should be 4 or more times
faster than the system frequency.
There are other practical details that should be considered when designing applications with
analog inputs;
Noise - Since the sampling window for a signal is short, noise will have added effect on
the signal read. For example, a momentary voltage spike might result in a higher
than normal reading. Shielded data cables are commonly used to reduce the noise
levels.
Delay - When the sample is requested, a short period of time passes before the final sam-
ple value is obtained.
Multiplexing - Most analog input cards allow multiple inputs. These may share the A/D
converter using a technique called multiplexing. If there are 4 channels using an A/
f
AD
2f
signal
>
where,
f
AD
sampling frequency =
f
signal
maximum frequency of the input =
page 454
D converter with a maximum sampling rate of 100Hz, the maximum sampling rate
per channel is 25Hz.
Signal Conditioners - Signal conditioners are used to amplify, or filter signals coming
from transducers, before they are read by the A/D converter.
Resistance - A/D converters normally have high input impedance (resistance), so they
affect circuits they are measuring.
Single Ended Inputs - Voltage inputs to a PLC can use a single common for multiple
inputs, these types of inputs are called single ended inputs. These tend to be more
prone to noise.
Double Ended Inputs - Each double ended input has its own common. This reduces prob-
lems with electrical noise, but also tends to reduce the number of inputs by half.
page 455
Figure 17.7 - A Successive Approximation A/D Converter
16.3 ANALOG OUTPUTS
Analog outputs are much simpler than analog inputs. To set an analog output an integer is
converted to a voltage. This process is very fast, and does not experience the timing problems
D to A
converter
successive
approximation
logic
8
8
+
-
clock
reset
data out
+Vref
-Vref
Vin
Ve
Vin above (+ve) or below (-ve) Ve
ASIDE: This device is an 8 bit A/D converter. The main concept behind this is the succes-
sive approximation logic. Once the reset is toggled the converter will start by setting
the most significant bit of the 8 bit number. This will be converted to a voltage Ve that
is a function of the +/-Vref values. The value of Ve is compared to Vin and a sim-
ple logic check determines which is larger. If the value of Ve is larger the bit is turned
off. The logic then repeats similar steps from the most to least significant bits. Once the
last bit has been set on/off and checked the conversion will be complete, and a done bit
can be set to indicate a valid conversion value.
done
Quite often an A/D converter will multiplex between various inputs. As it switches the
voltage will be sampled by a sample and hold circuit. This will then be converted to a
digital value. The sample and hold circuits can be used before the multiplexer to collect
data values at the same instant in time.
page 456
with analog inputs. But, analog outputs are subject to quantization errors. Figure 17.11 gives a
summary of the important relationships. These relationships are almost identical to those of the A/
D converter.
Figure 17.11 - Analog Output Relationships
Assume we are using an 8 bit D/A converter that outputs values between 0V and 10V. We
have a resolution of 256, where 0 results in an output of 0V and 255 results in 10V. The quantiza-
tion error will be 20mV. If we want to output a voltage of 6.234V, we would specify an output
integer of 160, this would result in an output voltage of 6.250V. The quantization error would be
6.250V-6.234V=0.016V.
R 2
N
=
where,
R resolution of A/D converter =
V
I
INT
V
desired
V
min
V
max
V
min
-----------------------------------
R =
V
I
the integer value representing the desired voltage =
V
output
V
I
R
-----
V
max
V
min
( ) V
min
+ =
V
output
the voltage output using the integer value =
V
ERROR
V
max
V
min
2R
-----------------------------
=
V
ERROR
the maximum quantization error =
(17.5)
(17.7)
(17.8)
(17.6)
page 457
The current output from a D/A converter is normally limited to a small value, typically less
than 20mA. This is enough for instrumentation, but for high current loads, such as motors, a cur-
rent amplifier is needed. This type of interface will be discussed later. If the current limit is
exceeded for 5V output, the voltage will decrease (so dont exceed the rated voltage). If the cur-
rent limit is exceeded for long periods of time the D/A output may be damaged.
N 8 =
R 2
N
256 = =
V
I
INT
V
in
V
min
V
max
V
min
-----------------------------
R 160 = =
V
C
V
I
R
-----
V
max
V
min
( ) V
min
+ 6.250V = =
V
ERROR
V
max
V
min
2R
-----------------------------
0.020V = =
V
max
10V =
V
min
0V =
V
desired
6.234V =
Given,
Calculate,
page 458
Figure 17.12 - A Digital-To-Analog Converter
16.4 REAL-TIME PROCESSING
Any computer running a process should use a real-time operating system. The purpose of a
real-time operating system is primarily to ensure that a process runs within a specified time inter-
val, normally a small fraction of a system. This capability is often not a common part of most
Computer
bit 3
bit 2
bit 1
bit 0
MSB
LSB
-
+
20K
10K
40K
80K
5K
V
o
+
-
0
V
ss
V
+
V
V
+
0 V
= =
First we write the obvious,
Next, sum the currents into the inverting input as a function of the output voltage and the
input voltages from the computer,
V
b
3
10K
---------------
V
b
2
20K
---------------
V
b
1
40K
---------------
V
b
0
80K
--------------- + + +
V
o
5K
------------ =
V
o
0.5V
b
3
0.25V
b
2
0.125V
b
1
0.0625V
b
0
+ + + =
Consider an example where the binary output is 1110, with 5V for on,
V
o
0.5 5V ( ) 0.25 5V ( ) 0.125 5V ( ) 0.625 0V ( ) + + + 4.375V = =
ASIDE:
page 459
operating systems, but it is relatively easy to add. When it is not a real-time process, it common
for another process to monopolize the processor and cause erratic delays. When this happens the
control program may not respond to a control event for a second or more. This would generally be
a bad thing in a time critical system.
- need to be able to specify how often a process runs.
- RTLinux
- system clock for slower processes.
16.5 DISCRETE IO
16.6 COUNTERS AND TIMERS
16.7 ACCESSING DAQ CARDS FROM LINUX
Listing 16.1 - DAS08 Driver Header File (das08_io.h)
#include "../include/global.h"
#ifndef _DAS08__
#define _DAS08__
page 460
#define CARDBASE 0x300
#define ADCHIGH 0 // AD Data Registers
#define ADCLOW 1
/* A/D Status and Control Register */
#define ADCSTATUS2
/* Auxiliary port on analog bus */
#define PORTAUX 2
/* Programmable Gain Register */
#define GAIN 3
/* Counter Load & Read Registers */
#define LOADREAD14
#define LOADREAD25
#define LOADREAD36
#define CCONFIGPORT7// Counter Control Register
/* D/A 0 Control Registers */
#define DAC0LOW 8
#define DAC0HIGH9
/* D/A 1 Control Registers */
#define DAC1LOW 10
#define DAC1HIGH11
/* 82C55 Digital I/O Registers */
#define PORTA 12
#define PORTB 13
#define PORTC 14
#define PORTCL 12345 /* real port is 0x30e bits 0-3 */
#define PORTCH 6789 /* real port is 0x30e bits 4-7 */
/* 82C55 Control Register */
#define DCONFIGPORT15
#define DIGITALOUT 1
#define DIGITALIN 2
#define HIGHONLASTCOUNT 0
#define ONESHOT 1
#define RATEGENERATOR2
#define SQUAREWAVE3
#define SOFTWARESTROBE4
#define HARDWARESTROBE5
/* Range Codes */
#define BIP10VOLTS0x08
#define BIP5VOLTS0x00
#define BIP2PT5VOLTS0x02
#define BIP1PT25VOLTS0x04
#define BIPPT625VOLTS0x06
#define UNI10VOLTS0x01
#define UNI5VOLTS0x03
#define UNI2PT5VOLTS0x05
#define UNI1PT25VOLTS0x07
class das08{
protected:
public:
int base; // card setup information
page 461
int chan0;
int chan1;
int portA; // port data directions
int portB;
int portCL;
int portCH;
int *data_portA;// hooks to global values
int *data_portB;
int *data_portCL;
int *data_portCH;
int *data_portXI;
int *data_portXO;
int *data_AI0;
int *data_AI1;
int *data_AI2;
int *data_AI3;
int *data_AI4;
int *data_AI5;
int *data_AI6;
int *data_AI7;
int *data_AO0;
int *data_AO1;
das08();
~das08();
int configure(char*);
int connect();
int scan();
int disconnect();
int DConfigPort(int, int);
int DIn(int, int*);
int DBitIn(int, int, int*);
int DOut(int, int);
int DBitOut(int, int, int);
int C8254Config(int, int);
int CLoad(int, int);
int CIn(int, int*);
int AIn(int, int*);
int AOut(int, int);
};
#endif
Listing 16.2 - DAS08 Driver File (das08_io.cpp)
#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netinet/in.h>
page 462
#include <netdb.h>
#include <sys/time.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <unistd.h>
#include <sys/io.h>
#include "das08_io.h"
#include "../include/process.h"
int bits[]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
das08::das08(){
base = CARDBASE;// default cardbase
chan0 = BIP10VOLTS;// default AD ranges
chan1 = BIP10VOLTS;
portA = DIGITALIN;
portB = DIGITALIN;
portCH = DIGITALIN;
portCL = DIGITALIN;
}
das08::~das08(){
}
int das08::configure(char *file_name){
int error;
FILE *fp_in;
char params[200];
error = NO_ERROR;
if((fp_in = fopen(file_name, "r")) != NULL){
fgets(params, 200, fp_in);
while(feof(fp_in) == 0){
if((params[0] != #) && (strlen(params) > 3)){
if(params[0] == B){
base = atoi(&(params[1]));
} else if(strncmp("A0", params, 2) == 0){
if(strncmp("BIP10VOLTS", &(params[2]), 10) == 0){
chan0 = BIP10VOLTS;
} else if(strncmp("BIP5VOLTS", &(params[2]), 9) ==
0){ chan0 = BIP5VOLTS;
} else if(strncmp("BIP2PT5VOLTS", &(params[2]), 12)
== 0){ chan0 = BIP2PT5VOLTS;
} else if(strncmp("BIP1PT25VOLTS", &(params[2]),
13) == 0){ chan0 = BIP1PT25VOLTS;
} else if(strncmp("BIPPT625VOLTS", &(params[2]),
13) == 0){ chan0 = BIPPT625VOLTS;
} else if(strncmp("UNI10VOLTS", &(params[2]), 10)
== 0){ chan0 = UNI10VOLTS;
} else if(strncmp("UNI5VOLTS", &(params[2]), 9) ==
0){ chan0 = UNI5VOLTS;
} else if(strncmp("UNI2PT5VOLTS", &(params[2]), 12)
== 0){ chan0 = UNI2PT5VOLTS;
} else if(strncmp("UNI1PT25VOLTS", &(params[2]),
13) == 0){ chan0 = UNI1PT25VOLTS;
page 463
} else {
error_log(MINOR, "Unrecognized DAS08
analog A0 output range");
error = ERROR;
}
} else if(strncmp("A1", params, 2) == 0){
if(strncmp("BIP10VOLTS", &(params[2]), 10) == 0){
chan1 = BIP10VOLTS;
} else if(strncmp("BIP5VOLTS", &(params[2]), 9) ==
0){ chan1 = BIP5VOLTS;
} else if(strncmp("BIP2PT5VOLTS", &(params[2]), 12)
== 0){ chan1 = BIP2PT5VOLTS;
} else if(strncmp("BIP1PT25VOLTS", &(params[2]),
13) == 0){ chan1 = BIP1PT25VOLTS;
} else if(strncmp("BIPPT625VOLTS", &(params[2]),
13) == 0){ chan1 = BIPPT625VOLTS;
} else if(strncmp("UNI10VOLTS", &(params[2]), 10)
== 0){ chan1 = UNI10VOLTS;
} else if(strncmp("UNI5VOLTS", &(params[2]), 9) ==
0){ chan1 = UNI5VOLTS;
} else if(strncmp("UNI2PT5VOLTS", &(params[2]), 12)
== 0){ chan1 = UNI2PT5VOLTS;
} else if(strncmp("UNI1PT25VOLTS", &(params[2]),
13) == 0){ chan1 = UNI1PT25VOLTS;
} else {
error_log(MINOR, "Unrecognized DAS08
analog A1 output range");
error = ERROR;
}
} else if(strncmp("PAI", params, 3) == 0){ portA =
DIGITALIN;
} else if(strncmp("PAO", params, 3) == 0){ portA =
DIGITALOUT;
} else if(strncmp("PBI", params, 3) == 0){ portB =
DIGITALIN;
} else if(strncmp("PBO", params, 3) == 0){ portB =
DIGITALOUT;
} else if(strncmp("PCLI", params, 4) == 0){ portCL =
DIGITALIN;
} else if(strncmp("PCLO", params, 4) == 0){ portCL =
DIGITALOUT;
} else if(strncmp("PCHI", params, 4) == 0){ portCH =
DIGITALIN;
} else if(strncmp("PCHO", params, 4) == 0){ portCH =
DIGITALOUT;
} else {
error_log(MINOR, "DAS08 argument not recognized");
error = ERROR;
}
}
fgets(params, 200, fp_in);
}
fclose(fp_in);
}
return error;
}
int das08::connect(){
int error;
error = NO_ERROR;
if(ioperm(base, 16, 1) == 0){
page 464
DConfigPort(PORTA, portA);
DConfigPort(PORTB, portB);
DConfigPort(PORTCL, portCL);
DConfigPort(PORTCH, portCH);
} else {
error = ERROR;
error_log(MINOR, "Could not connect to DAS08 board - memory is probably in
use");
}
return error;
}
int das08::scan(){
int error;
error = NO_ERROR;
// update digital ports
if(portA == DIGITALIN){DIn(PORTA, data_portA);
} else {DOut(PORTA, data_portA[0]);}
if(portB == DIGITALIN){DIn(PORTB, data_portB);
} else {DOut(PORTB, data_portB[0]);}
if(portCL == DIGITALIN){DIn(PORTCL, data_portCL);
} else {DOut(PORTCL, data_portCL[0]);}
if(portCH == DIGITALIN){DIn(PORTCH, data_portCH);
} else {DOut(PORTCH, data_portCH[0]);}
DOut(PORTAUX, data_portXO[0]);
DIn(PORTAUX, data_portXI);
// Update analog inputs
AIn(0, data_AI0);
AIn(1, data_AI1);
AIn(2, data_AI2);
AIn(3, data_AI3);
AIn(4, data_AI4);
AIn(5, data_AI5);
AIn(6, data_AI6);
AIn(7, data_AI7);
// Update analog outputs
AOut(0, data_AO0[0]);
AOut(1, data_AO1[0]);
return error;
}
int das08::disconnect(){
int error;
error = NO_ERROR;
if(ioperm(base, 16, 0) != 0){
error = ERROR;
error_log(MINOR, "Could not release the DAS08 board - memory is probably in
use");
}
return error;
}
int das08::DConfigPort(int Port, int Direction){
page 465
// This command configures a port as an input or output.
// The Direction field can be either DIGITALIN or DIGITALOUT
// depending on whether the port is to be configured as an
// input or output. Valid ports are PORTA, PORTB, PORTCL and
// PORTCH. Direction bit can be either DIGITALIN or DIGITALOUT.
int error,
mask, OldByte, NewByte;
//printf("Configuring port %d with direction %d \n", Port, Direction);
error = NO_ERROR;
OldByte = inb(DCONFIGPORT + base); /*read the current register*/
if(Direction == DIGITALIN){ /* determine mask for DIGITALIN */
if(Port == PORTA){ mask = 0x10;
} else if(Port == PORTB){ mask = 0x02;
} else if(Port == PORTC){ mask = 0x09;
} else if(Port == PORTCL){ mask = 0x01; Port = PORTC;
} else if(Port == PORTCH){ mask = 0x08; Port = PORTC;
} else {
error_log(MINOR, "Digital port must be PORTA, PORTB, PORTC,
PORTCL or PORTCH");
error = ERROR;
mask = 0;
}
NewByte = OldByte | mask; /* new data for register */
} else if(Direction == DIGITALOUT){ /* determine mask for DIGITALOUT */
if(Port == PORTA){ mask = 0xef;
} else if(Port == PORTB){ mask = 0xfd;
} else if(Port == PORTC){ mask = 0xf6;
} else if(Port == PORTCL){ mask = 0xfe; Port = PORTC;
} else if(Port == PORTCH){ mask = 0xf7; Port = PORTC;
} else {
error_log(MINOR, "Digital port must be PORTA, PORTB, PORTC,
PORTCL or PORTCH");
error = ERROR;
}
NewByte = OldByte & mask; /* new value for register */
} else {
error_log(MINOR, "Direction must be set to DIGITALIN or DIGITALOUT");
error = ERROR;
}
if(error == NO_ERROR){
//printf("port thingy %d %d \n", NewByte, DCONFIGPORT);
outb(NewByte, DCONFIGPORT + base); /* write config data to register */
}
return error; /* no errors detected */
}
int das08::DBitIn(int Port, int BitNum, int *BitData){
// This function determines whether a bit within the
// requested port is set. The value (1 or 0) is returned
// in the variable pointer sent to the function. Port may
// be PORTA, PORTB, PORTCL or PORTCH. BitNum must be in the
// range 0-7.
int error,
mask = 0, data;
error = NO_ERROR;
if((Port == PORTCL) || (Port == PORTCH)){ data = inb(PORTC + base);
} else { data = inb(Port + base);}
//printf("GOT %d %d %d %d \n", Port, data, BitNum, BitData[0]);
page 466
if((Port == PORTA) || (Port == PORTB) || (Port == PORTC)){
if((BitNum >= 0) && (BitNum <= 7)){
mask = bits[BitNum];
} else {
error_log(MINOR, "Bit numbers should be between 0 and 7");
error = ERROR;
}
} else if((Port == PORTCL) || (Port == PORTAUX)) {
if((BitNum >= 0) && (BitNum <= 3)){
mask = bits[BitNum];
} else {
error_log(MINOR, "Bit numbers should be between 0 and 3");
error = ERROR;
}
} else if(Port == PORTCH) {
if((BitNum >= 4) && (BitNum <= 7)){
mask = bits[BitNum];
} else {
error_log(MINOR, "Bit numbers should be between 4 and 7");
error = ERROR;
}
} else if(Port == DCONFIGPORT) {
mask = bits[BitNum];
} else {
error_log(MINOR, "Input port not recognized");
error = ERROR;
}
if(error == NO_ERROR){
BitData[0] = 0;
if((mask & data) != 0) BitData[0] = 1;
}
return error;
}
int das08::DBitOut(int Port, int BitNum, int BitValue){
// This function sets a bit of the requested port to either
// a zero or a one. Port may be PORTA, PORTB, PORTCL or
// PORTCH. BitNum must be in the range 0 - 7. BitValue
// must be 1 or 0.
int error,
mask, NewByte, OldByte;
error = NO_ERROR;
if((Port == PORTCL) || (Port == PORTCH)){
OldByte = inb(PORTC + base);
} else {
OldByte = inb(Port + base);
}
if((Port == PORTAUX) && (BitValue == 1)){
mask = bits[BitNum+4];
NewByte = OldByte | mask;
//printf("ddo %x %x \n", mask, OldByte);
} else if((Port == PORTAUX) && (BitValue == 0)) {
mask = bits[BitNum+4];
NewByte = OldByte & ~mask;
} else if(((Port==PORTA) || (Port==PORTB) || (Port == PORTC)) && (BitValue==1)){
mask = bits[BitNum];
NewByte = OldByte | mask;
}else if(((Port==PORTA) || (Port==PORTB) || (Port==PORTC)) && (BitValue == 0)){
mask = bits[BitNum];
page 467
NewByte = OldByte & ~mask;
} else if((Port == PORTCL) && (BitValue == 1)){
mask = bits[BitNum];
NewByte = OldByte | mask;
} else if((Port == PORTCL) && (BitValue == 0)){
mask = bits[BitNum];
NewByte = OldByte & ~mask;
} else if((Port == PORTCH) && (BitValue == 1)){
mask = bits[BitNum];
NewByte = OldByte | mask;
} else if((Port == PORTCH) && (BitValue == 0)){
mask = bits[BitNum];
NewByte = OldByte & ~mask;
} else {
error = ERROR;
}
if((Port == PORTCL) || (Port == PORTCH))
Port = PORTC;
//printf("OUT %d %d\n", NewByte, Port + base);
if(error == NO_ERROR) outb(NewByte, Port + base);
return error;
}
int das08::DIn(int Port, int *Value){
// This function reads the byte value of the specified port
// and returns the result in the variable pointer sent to the
// function. Valid ports are PORTA, PORTB, PORTCL and PORTCH.
int error;
// int result;
// int BitData;
int temp;
error = NO_ERROR;
// if(Port == PORTA){
// result = DBitIn(DCONFIGPORT, 4, &BitData);
// } else if(Port == PORTB){
// result = DBitIn(DCONFIGPORT, 1, &BitData);
// } else if(Port == PORTC){
// result = DBitIn(DCONFIGPORT, 0, &BitData)
// + DBitIn(DCONFIGPORT, 3, &BitData);
// } else if(Port == PORTCL){
// result = DBitIn(DCONFIGPORT, 0, &BitData);
// } else if(Port == PORTCH){
// result = DBitIn(DCONFIGPORT, 3, &BitData);
// } else if(Port == PORTAUX){
// } else {
// error_log(MINOR, "ERROR: Port not recognized");
// error = ERROR;
// }
//////////////
//printf("sss %d %d \n", Port, result);
// if((error == NO_ERROR) && (BitData == 0)){
// error_log("ERROR: Port not configured for read");
// error = ERROR;
// }
if(error == NO_ERROR){
if(Port == PORTCL){
temp = inb(PORTC + base);/* read the port data */
Value[0] = (temp & 0x0f);/* mask off the high bits */
} else if(Port == PORTCH){
page 468
temp = inb(PORTC + base);/* read the port data */
Value[0] = (temp & 0xf0);/* mask off the low bits */
} else if(Port == PORTAUX){
Value[0] = 0x7 & (int)((inb(Port + base) / 16));
} else {
Value[0] = 0xff & inb(Port + base);/* read the port data */
}
}
return error;
}
int das08::DOut(int Port, int ByteValue){
// This function writes the byte value to the specified port.
// Valid ports are PORTA, PORTB, PORTCL and PORTCH.
int error;
error = NO_ERROR;
if(Port == PORTAUX){
ByteValue = (0x07 & inb(Port+base)) | (ByteValue * 16);
}
if((ByteValue > 255) || (ByteValue < 0)){
error = ERROR;
}
//printf("Writing byte %d to port %d\n", ByteValue, Port);
if(error == NO_ERROR){
if(Port == PORTCL){
outb((ByteValue & 0x0f), PORTC + base);
} else if(Port == PORTCH){
outb((ByteValue & 0xf0), PORTC + base);
} else {
outb(ByteValue, Port + base); /* write the port data */
}
}
return error; /* no errors detected */
}
int das08::C8254Config(int CounterNum, int Config){
int error,
NewByte,
// TempByte,
BCD, mask, counter;
// int temp;
error = NO_ERROR;
/* BCD = 0xfe - 16-bit binary count
BCD = 0xf1 - 4 decade Binary Coded Decimal */
BCD = 0xfe;
switch (Config){
case HIGHONLASTCOUNT:mask = 0xf1; break;
case ONESHOT: mask = 0xf3; break;
case RATEGENERATOR:mask = 0xf5; break;
case SQUAREWAVE: mask = 0xf7; break;
case SOFTWARESTROBE:mask = 0xf9; break;
case HARDWARESTROBE:mask = 0xfb; break;
default: error = ERROR;; break;
}
switch (CounterNum){
page 469
case 1: counter = 0x3f; break;
case 2: counter = 0x7f; break;
case 3: counter = 0xbf; break;
default: error = ERROR; break;
}
if(error == NO_ERROR){
NewByte = (BCD & mask) & counter;
//printf("The value of TempByte & mask is --> %x.\n", NewByte);
outb(NewByte, CCONFIGPORT + base);
}
return error;
}
int das08::CLoad(int CounterNum, int value)
{
char LoadValue[6];
int error;
int TempByte, TempByte1, Register, CounterMask;
int WriteLowByteMask1 = 0x20;/* RL1 | */
int WriteLowByteMask2 = 0xef;/* RL0 & */
int WriteHighByteMask1 = 0xdf;/* RL1 & */
int WriteHighByteMask2 = 0x10;/* RL0 | */
char LowByte[5];
char HighByte[5];
long HighByteValue, LowByteValue;
int test;
error = NO_ERROR;
switch (CounterNum){
case 1: Register = LOADREAD1; CounterMask = 0x3f; break;
case 2: Register = LOADREAD2; CounterMask = 0x7f; break;
case 3: Register = LOADREAD3; CounterMask = 0xbf; break;
default: error = ERROR; break;
}
HighByte[0] = LoadValue[0];
HighByte[1] = LoadValue[1];
HighByte[2] = LoadValue[2];
HighByte[3] = LoadValue[3];
LowByte[0] = 0;
LowByte[1] = x;
LowByte[2] = LoadValue[4];
LowByte[3] = LoadValue[5];
if(error == NO_ERROR){
HighByteValue = (int)strtol(HighByte, NULL, 0);
LowByteValue = (int)strtol(LowByte, NULL, 0);
TempByte = (CounterMask | WriteLowByteMask1) & WriteLowByteMask2;
TempByte1 = TempByte & 0xf0;
//printf("The value in config low is --> %x.\n", TempByte1);
outb(TempByte1, CCONFIGPORT + base);
outb(LowByteValue, Register + base);
//printf("The register chosen is --> %x.\n", Register);
test = inb(Register + base);
//printf("The value read in counter low is --> %x.\n", test);
TempByte = (0x30 & WriteHighByteMask1) | WriteHighByteMask2;
//printf("The value in config high is --> %x.\n", TempByte);
outb(TempByte, CCONFIGPORT + base);
outb(HighByteValue, Register + base);
outb(TempByte, CCONFIGPORT + base);
test = inb(Register + base);
page 470
//printf("The value in counter high is --> %x.\n", test);
}
return error;
}
int das08::CIn(int CounterNum, int *CountValue){
int error;
int TempByte, Register;
int ReadLowByteMask1 = 0x20;/* RL1 | */
int ReadLowByteMask2 = 0xef;/* RL0 & */
int ReadHighByteMask1 = 0xdf;/* RL1 & */
int ReadHighByteMask2 = 0x10;/* RL0 | */
int CountValue1, CountValue2;
error = NO_ERROR;
switch (CounterNum){
case 1: Register = LOADREAD1; break;
case 2: Register = LOADREAD2; break;
case 3: Register = LOADREAD3; break;
default: error = ERROR; break;
}
if(error == NO_ERROR){
TempByte = (0x3f | ReadLowByteMask1) & ReadLowByteMask2;
outb(TempByte, CCONFIGPORT + base);
CountValue1 = inb(Register + base);
//printf("The low value is --> %x.\n", CountValue1);
TempByte = (0x3f & ReadHighByteMask1) | ReadHighByteMask2;
outb(TempByte, CCONFIGPORT + base);
CountValue2 = inb(Register + base);
//printf("The high value is --> %x.\n", CountValue2);
}
return error;
}
int das08::AIn(int ADChannel, int *Value){
// This function requires three arguments to perform the
// analog to digital conversion. ADChannel must be in the
// range 0-7 and Range must be a valid range code
// i.e. BIP5VOLTS. The value of the conversion will be
// returned to the address specificed through the pointer
// variable. This value will be in the range 0-4095.
int error;
int value1, value2, value3, curr_status, new_status, ADbusy;
int ADCmask1, ADCmask2;
int ADValue_low, ADValue_low1, ADValue_low2, ADValue_high;
int EOC = 1;
error = NO_ERROR;
curr_status = inb(ADCSTATUS + base); /* current value in status */
switch(ADChannel){
case 0:ADCmask1 = 0xf8;ADCmask2 = 0x00;break;
case 1:ADCmask1 = 0xf9;ADCmask2 = 0x01;break;
case 2:ADCmask1 = 0xfa;ADCmask2 = 0x02;break;
case 3:ADCmask1 = 0xfb;ADCmask2 = 0x03;break;
case 4:ADCmask1 = 0xfc;ADCmask2 = 0x04;break;
case 5:ADCmask1 = 0xfd;ADCmask2 = 0x05;break;
page 471
case 6:ADCmask1 = 0xfe;ADCmask2 = 0x06;break;
case 7:ADCmask1 = 0xff;ADCmask2 = 0x07;break;
default:error = ERROR;; break; /* error */
}
if(error == NO_ERROR){
outb(chan0, GAIN + base); /* set the gain/range value */
new_status = (curr_status & ADCmask1) | ADCmask2;
outb(new_status, ADCSTATUS + base); /* set the channel number */
outb(0x00, ADCLOW + base); /* start a 12 bit A/D conversion */
}
while((error == NO_ERROR) && (EOC == 1)){ /* check for end of conversion */
ADbusy = inb(ADCSTATUS + base); /* read status register */
if(ADbusy >= 128){
EOC = 1; /* A/D still converting */
} else {
EOC = 0; /* A/D done converting */
}
}
if(error == NO_ERROR){
ADValue_low = inb(ADCLOW + base); /* get the lower eight bits */
ADValue_high = inb(ADCHIGH + base); /* get the upper four bits */
switch(ADValue_high){
case 0x00:value1 = 0;break;
case 0x80:value1 = 1;break;
case 0x40:value1 = 2;break;
case 0xc0:value1 = 3;break;
case 0x20:value1 = 4;break;
case 0xa0:value1 = 5;break;
case 0x60:value1 = 6;break;
case 0xe0:value1 = 7;break;
case 0x10:value1 = 8;break;
case 0x90:value1 = 9;break;
case 0x50:value1 = 10;break;
case 0xd0:value1 = 11;break;
case 0x30:value1 = 12;break;
case 0xb0:value1 = 13;break;
case 0x70:value1 = 14;break;
case 0xf0:value1 = 15;break;
default:error = ERROR;break;
}
ADValue_low1 = (ADValue_low & 0x0f); /* mask off bits 4-7 */
switch(ADValue_low1){
case 0x00:value2 = 0;break;
case 0x01:value2 = 16;break;
case 0x02:value2 = 32;break;
case 0x03:value2 = 48;break;
case 0x04:value2 = 64;break;
case 0x05:value2 = 80;break;
case 0x06:value2 = 96;break;
case 0x07:value2 = 112;break;
case 0x08:value2 = 128;break;
case 0x09:value2 = 144;break;
case 0x0a:value2 = 160;break;
case 0x0b:value2 = 176;break;
case 0x0c:value2 = 192;break;
case 0x0d:value2 = 208;break;
case 0x0e:value2 = 224;break;
case 0x0f:value2 = 240;break;
default:error = ERROR;break;
}
page 472
ADValue_low2 = (ADValue_low & 0xf0); /* mask off bits 0-3 */
switch(ADValue_low2){
case 0x00:value3 = 0;break;
case 0x10:value3 = 256;break;
case 0x20:value3 = 512;break;
case 0x30:value3 = 768;break;
case 0x40:value3 = 1024;break;
case 0x50:value3 = 1280;break;
case 0x60:value3 = 1536;break;
case 0x70:value3 = 1792;break;
case 0x80:value3 = 2048;break;
case 0x90:value3 = 2304;break;
case 0xa0:value3 = 2560;break;
case 0xb0:value3 = 2816;break;
case 0xc0:value3 = 3072;break;
case 0xd0:value3 = 3328;break;
case 0xe0:value3 = 3584;break;
case 0xf0:value3 = 3840;break;
default: error = ERROR; /* error - unknown conversion result */
}
*Value = value1+value2+value3; /* total value for conversion */
}
return error; /* no errors detected */
}
int das08::AOut(int DAChannel, int DAValue){
// This function performs a digital to analog conversion
// routine. The DAChannel must be either 0 or 1 and the
// digital value must be in the range 0-4095.
int error;
int low, high, DACLOW, DACHIGH;
error = NO_ERROR;
switch(DAChannel){
case 0:DACLOW = DAC0LOW;DACHIGH = DAC0HIGH;break;
case 1:DACLOW = DAC1LOW;DACHIGH = DAC1HIGH;break;
default:error = ERROR;break;
}
/* The following table converts the digital value into
three hex values encompassing two 8-bit registers. The
layout of the registers follow:
low - DA7 DA6 DA5 DA4 DA3 DA2 DA1 DA0
high - x x x x DA11 DA10 DA9 DA8 */
if(DAValue <= 255){
low = DAValue;
high = 0x00;
} else if((DAValue >= 256) && (DAValue <= 511)){
low = DAValue - 256;
high = 0x01;
} else if((DAValue >= 512) && (DAValue <= 767)) {
low = DAValue - 512;
high = 0x02;
} else if((DAValue >= 768) && (DAValue <= 1023)) {
low = DAValue - 768;
high = 0x03;
} else if((DAValue >= 1024) && (DAValue <= 1279)) {
page 473
low = DAValue - 1024;
high = 0x04;
} else if((DAValue >= 1280) && (DAValue <= 1535)) {
low = DAValue - 1280;
high = 0x05;
} else if((DAValue >= 1536) && (DAValue <= 1791)) {
low = DAValue - 1536;
high = 0x06;
} else if((DAValue >= 1792) && (DAValue <= 2047)) {
low = DAValue - 1792;
high = 0x07;
} else if((DAValue >= 2048) && (DAValue <= 2303)){
low = DAValue - 2048;
high = 0x08;
} else if((DAValue >= 2304) && (DAValue <= 2559)){
low = DAValue - 2304;
high = 0x09;
} else if((DAValue >= 2560) && (DAValue <= 2815)){
low = DAValue - 2560;
high = 0x0a;
} else if((DAValue >= 2816) && (DAValue <= 3071)){
low = DAValue - 2816;
high = 0x0b;
} else if((DAValue >= 3072) && (DAValue <= 3327)){
low = DAValue - 3072;
high = 0x0c;
} else if((DAValue >= 3328) && (DAValue <= 3583)){
low = DAValue - 3328;
high = 0x0d;
} else if((DAValue >= 3584) && (DAValue <= 3839)){
low = DAValue - 3584;
high = 0x0e;
} else if((DAValue >= 3840) && (DAValue <= 4095)){
low = DAValue - 3840;
high = 0x0f;
} else{
error = ERROR; /* error - D/A value must be 0-4095 */
}
if(error == NO_ERROR){
outb(low, DACLOW + base); /* write the low byte value */
outb(high, DACHIGH + base); /* write the high byte value */
}
return error; /* no errors detected */
}
Listing 16.1 - DAS08 Driver Test File (testdaq.cpp)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "das08_io.h"
int ChooseCounter();
int ChooseConfig();
int ChooseDir(int DirectNum);
page 474
#define QUERY 350
#defineCHOOSE_PORT 351
#defineCHOOSE_COUNTER352
#define CHOOSE_CONFIG353
#defineCHOOSE_DIRECTION 354
int query(int, char*, int);
int main(){
int choice;
das08 *A;
int value;
A = new das08();
A->configure("das08.conf");
A->connect();
do{
printf("\n\n------------ DAS08 Test Harness Menu --------------\n");
printf("1. Digital Configure\n");
printf("2. Digital Input Bit\n");
printf("3. Digital Input Word\n");
printf("4. Digital Output Bit\n");
printf("5. Digital Output Word\n\n");
printf("6. Counter Configure\n");
printf("7. Counter Load Value\n");
printf("8. Counter Input Value\n\n");
printf("9. Analog Input Value\n");
printf("10. Analog Output Value\n\n");
printf("11. Quit\n\n");
printf("Select: ");
scanf("%d", &choice);
if(choice == 1){
A->DConfigPort(query(CHOOSE_PORT, NULL, 0),
query(CHOOSE_DIRECTION, NULL,
0));
} else if(choice == 2){
A->DBitIn(query(CHOOSE_PORT, NULL, 0),
query(QUERY, "Choose a bit (0-7): ", 0),
&value);
printf("The Bit Value is [%d] \n", value);
} else if(choice == 3){
A->DIn( query(CHOOSE_PORT, NULL, 0), &value);
printf("The Value is [%d] or [%d]hex\n", value, value);
} else if(choice == 4){
A->DBitOut(query(CHOOSE_PORT, NULL, 0),
query(QUERY, "Choose a bit (0-7): ", 0),
query(QUERY, "Choose a value (0 or 1): ",
0));
} else if(choice == 5){
A->DOut( query(CHOOSE_PORT, NULL, 0),
query(QUERY, "Choose a value (-128 to
127): ", 0));
} else if(choice == 6){
A->C8254Config(query(CHOOSE_COUNTER, NULL, 0),
query(CHOOSE_CONFIG, NULL, 0));
} else if(choice == 7){
A->CLoad( query(CHOOSE_COUNTER, NULL, 0),
page 475
query(QUERY, "Enter a value in the form
0x____ : ", 0));
} else if(choice == 8){
A->CIn( query(CHOOSE_COUNTER, NULL, 0), &value);
printf("The Counter value was [%d]\n", value);
} else if(choice == 9){
A->AIn( query(QUERY, "Enter Channel Number (0-7): ", 0),
&value);
printf("The value is [%d]\n", value);
} else if(choice == 10){
A->AOut( query(QUERY, "Enter Channel Number (0-1): ", 0),
query(QUERY, "Enter Value (0- 4095): ",
0));
} else if(choice == 11){
} else {
printf("ERROR: Choice not recognized\n");
}
} while(choice != 11);
A->disconnect();
delete A;
}
int query(int type, char *text, int def){
char work[20];
int value;
if(type == QUERY){
printf("%s [%d]: ", text, def);
scanf("%s", work);
printf("<%s>\n", work);
if(strlen(work) == 0){
return def;
} else {
return atoi(work);
}
} else if(type == CHOOSE_PORT){
printf("Which port (1=A, 2=B, 3=C, 4=CH, 5=CL, 6=AUX): ");
scanf("%d", &value);
if(value == 1) return PORTA;
if(value == 2) return PORTB;
if(value == 3) return PORTC;
if(value == 4) return PORTCL;
if(value == 5) return PORTCH;
if(value == 6) return PORTAUX;
return ERROR;
} else if(type == CHOOSE_COUNTER){
printf("Which counter (1, 2, 3): ");
scanf("%d", &value);
if((value >= 1) || (value <= 3)) return value;
return ERROR;
} else if(type == CHOOSE_CONFIG){
printf("Which mode (1=HighOnLastCount, 2=OneShot, 3=RateGenerator,
4=SquareWave, 5=SoftwareStrobe, 6=HardwareStrobe): ");
scanf("%d", &value);
if(value == 1) return HIGHONLASTCOUNT;
if(value == 2) return ONESHOT;
if(value == 3) return RATEGENERATOR;
if(value == 4) return SQUAREWAVE;
if(value == 5) return SOFTWARESTROBE;
if(value == 6) return HARDWARESTROBE;
return ERROR;
} else if(type == CHOOSE_DIRECTION){
printf("Which direction (1=In, 2=Out): ");
page 476
scanf("%d", &value);
if(value == 1) return DIGITALIN;
if(value == 2) return DIGITALOUT;
return ERROR;
} else {
return ERROR;
}
}
void error_log(int code, char *string){
printf("ERROR %d: %s \n", code, string);
}
16.8 SUMMARY
A/D conversion will convert a continuous value to an integer value.
D/A conversion is easier and faster and will convert a digital value to an analog value.
Resolution limits the accuracy of A/D and D/A converters.
Sampling too slowly will alias the real signal.
Analog inputs are sensitive to noise.
The analog I/O cards are configured with a few words of memory.
BTW and BTR functions are needed to communicate with the analog I/O cards.
16.9 PRACTICE PROBLEMS
1. You need to read an analog voltage that has a range of -10V to 10V to a precision of +/-0.05V.
What resolution of A/D converter is needed?
2. We are given a 12 bit analog input with a range of -10V to 10V. If we put in 2.735V, what will
the integer value be after the A/D conversion? What is the error? What voltage can we calcu-
late?
R
10V 10V ( )
0.1V
---------------------------------- 200 = =
7 bits = 128
8 bits = 256
(ans.
The minimum number of bits is 8.
page 477
3. We need to select a digital to analog converter for an application. The output will vary from -5V
to 10V DC, and we need to be able to specify the voltage to within 50mV. What resolution will
be required? How many bits will this D/A converter need? What will the accuracy be?
4. Write a program that will input an analog voltage, do the calculation below, and output an ana-
log voltage.
5. Develop a program to sample analog data values and calculate the average, standard deviation,
and the control limits. The general steps are listed below.
1. Read sampled inputs.
2. Randomly select values and calculate the average and store in memory. Calculate the
standard deviation of the stored values.
3. Compare the inputs to the standard deviation. If it is larger than 3 deviations from the
mean, halt the process.
4. If it is larger than 2 then increase a counter A, or if it is larger than 1 increase a second
counter B. If it is less than 1 reset the counters.
5. If counter A is =3 or B is =5 then shut down.
6. Goto 1.
(ans.
N 12 = R 4096 = V
min
10V = V
max
10V =
V
I
INT
V
in
V
min
V
max
V
min
-----------------------------
R 2608 = =
V
C
V
I
R
-----
V
max
V
min
( ) V
min
+ 2.734V = =
V
in
2.735V =
(ans.
A card with a voltage range from -10V to +10V will be selected to cover the
entire range.
R
10V 10V ( )
0.050V
---------------------------------- 400 = =
minimum resolution
8 bits = 256
9 bits = 512
10 bits = 1024
The A/D converter needs a minimum of 9 bits, but this number of bits is not
commonly available, but 10 bits is, so that will be selected.
V
ERROR
V
max
V
min
2R
-----------------------------
10V 10V ( )
2 1024 ( )
---------------------------------- 0.00976V = = =
V
out
V
in
( ) ln =
page 478
16.10 LABORATORY - INTERFACING TO A DAQ CARD
Purpose:
To use a data aquisition card to aquire data.
Overview:
The daq card will be placed into a Linux computer and then controlled with the drive pro-
grams listed in this chapter.
Pre-Lab:
1. Visit the computer boards web site (www.computerboards.com) and review the manual
for the DAS-08 ISA board.
In-Lab:
1. Complete the tutorial for the DAS-08 DAQ card.
2. Modify the tutorial program so that the analog input value from the board is read once a
second and written to a database.
Submit (individually):
1. The program developed during the laboratory.
X X
j
j 1 =
m
=
UCL X 3
X
+ =
LCL X 3
X
=
page 479
17. VISIONS SYSTEMS
Vision systems are suited to applications where simpler sensors do not work.
17.1 OVERVIEW
Typical components in a modern vision system.
page 480
17.2 APPLICATIONS
An example of a common vision system application is given below. The basic operation
involves a belt that carries pop (soda) bottles along. As these bottles pass an optical sensor, it trig-
gers a vision system to do a comparison. The system compares the captured image to stored
images of acceptable bottles (with no foreign objects or cracks). If the bottle differs from the
acceptable images beyond an acceptable margin, then a piston is fired to eject the bottle. (Note:
Scene
Lighting
lens iris
CCD
control
electronics
Camera
Frame Grabber
Hardware
(A/D converter
and memory)
Image Processing
Software (Filtering,
Segmentation and
Recognition)
Action or Reporting
Software (Robot,
Network, PLC, etc)
Computer
page 481
without a separate sensor, timing for the piston firing is required). Here a PLC is used as a com-
mon industrial solution controller. - All of this equipment is available off-the-shelf ($10K-$20K).
In this case the object lighting, backgrounds and contrast would be very important.
17.3 LIGHTING AND SCENE
There are certain features that are considered important in images,
- boundary edges
- surface texture/pattern
- colors
- etc
Stuff!
Stuff!
Stuff!
Stuff!
Stuff!
Vision Module
Programmable Logic Controller
(aka PLC)
Camera
Pneumatic Piston
Pneumatic Solenoid
Light Source
Light Light
Emitter Detector
Air Supply
Air Exhaust
page 482
Boundary edges are used when trying to determine object identity/location/orientation. This
requires a high contrast between object and background so that the edges are obvious.
Surface texture/pattern can be used to verify various features, for example - are numbered
buttons in a telephone keypad in the correct positions? Some visually significant features must be
present.
Lighting,
- multiple light sources can reduce shadows (structured lighting).
- back lighting with luminescent screens can provide good contrast.
- lighting positions can reduce specular reflections (light diffusers help).
- artificial light sources provide repeatability required by vision systems that is not possi-
ble without natural light sources.
17.4 CAMERAS
Cameras use available light from a scene.
The light passes through a lens that focuses the beams on a plane inside the camera. The
focal distance of the lens can be moved toward/away from the plane in the camera as the scene is
moved towards/away.
An iris may also be used to mechanically reduce the amount of light when the intensity is
too high.
The plane inside the camera that the light is focussed on can read the light a number of
ways, but basically the camera scans the plane in a raster pattern.
An electron gun video camera is shown below. - The tube works like a standard CRT, the
electron beam is generated by heating a cathode to eject electrons, and applying a potential
between the anode and cathode to accelerate the electrons off of the cathode. The focussing/
deflecting coils can focus the beam using a similar potential change, or deflect the beam using a
page 483
differential potential. The significant effect occurs at the front of the tube. The beam is scanned
over the front. Where the beam is incident it will cause electrons to jump between the plates pro-
portional to the light intensity at that point. The scanning occurs in a raster pattern, scanning many
lines left to right, top to bottom. The pattern is repeated some number of times a second - the typ-
ical refresh rate is on the order of 30Hz
Charge Coupled Device (CCD) - This is a newer solid state video capture technique. An
array of cells are laid out on a semiconductor chip. A grid like array of conductors and insulators
is used to move a collection of charge through the device. As the charge moves, it sweeps across
the picture. As photons strike the semiconductor they knock an electron out of orbit, creating a
negative and positive charge. The positive charges are then accumulated to determine light inten-
sity. The mechanism for a single scan line is seen below.
heated cathode
anode
electron
accelerator
focus and
deflection coils
scanning
photon
signal
electron beam
page 484
-V
L
i-1
+V
L
i
-V
L
i+1
control electrodes
oxide insulator
p-type semiconductor
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
p
+
photon
The charge is trapped in this location by voltages on
the control electrodes. This location corresponds to a
pixel. An incident photon causes an electron to be liber-
ated.
-V
L
i-1
0V
L
i
-V
L
i+2
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
e
-
+V
L
i+1
The charges can be
moved to the next pixel
location by changing the
electrode voltages
page 485
Color video cameras simply use colored filters to screen light before it strikes a pixel. For
an RGB scan, each color is scanned 3 times.
The description of moving the charge is for a single scan line, this can be expanded
to consider the entire CCD.
L
11
L
10
L
9
L
8
L
7
L
6
L
5
L
4
L
3
L
2
L
1
L
0
n-type barriers to control charge (on bottom)
charge moves this way
e
-
e
-
e
-
e
-
e
-
page 486
17.5 FRAME GRABBER
A simple frame grabber is pictured below,
These items can be purchased for reasonable prices, and will become standard computer
components in the near future.
17.6 IMAGE PREPROCESSING
Images are basically a set of pixels that are often less than a perfect image representation.
By preprocessing, some unwanted variations/noise can be reduced, and desired features
enhanced.
Some sources of image variation/noise,
- electronic noise - this can be reduced by designing for a higher Signal to Noise Ratio
(SNR).
- lighting variations cause inconsistent lighting across an image.
- equipment defects - these cause artifacts that are always present, such as stripes, or pixels
stuck off or on.
signal
splitter
video
signal
pixel
intensities
line start
picture start
fast A/D
address
generator
digital
RAM
Computer
bus
values
page 487
17.7 FILTERING
Filtering techniques can be applied,
- thresholding
- laplace filtering
- fourier filters
- convolution
- histograms
- neighborhood averaging
17.7.1 Thresholding
Thresholding basically sets a transition value. If a pixel is above the threshold, it is switched
fully on, if it is below, it is turned fully off.
17.8 EDGE DETECTION
1 2 3 4
5 6 7 5
3 7 7 4
2 3 1 2
Original Image
1 7 7 7
7 7 7 7
7 7 7 7
7 7 1 7
e.g. Threshold = 2
1 1 1 1
7 7 7 7
1 7 7 1
1 1 1 1
e.g. Threshold = 5
It can be difficult to set a good
threshold value, and the results are prone
to noise/imperfections in the image.
an array of pixel brightness
page 488
An image (already filtered) can be checked to find a sharp edge between the foreground and
background intensities.
Lets assume that the image below has been prefiltered into foreground (1) and background
(0). An edge detection step is then performed.
17.9 SEGMENTATION
An image can be broken into regions that can then be used for later calculations. In effect
this method looks for different self contained regions, and uses region numbers instead of pixel
intensities.
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 1 0 0 0
0 0 1 0 0 1 0 0
0 1 0 0 0 1 0 0
0 0 1 1 0 1 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 1 1 0 0 0
0 0 1 1 1 1 0 0
0 1 1 1 1 1 0 0
0 0 1 1 1 1 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0
A simple algorithm might create a new image (array) filled with zeros, then look at
the original image. If any pixel has a vertical or horizontal neighbor that is 0, then the
Actual Scene Thresholded Image Edge Detected Image
page 489
A simple segmentation algorithm might be,
1. Threshold image to have values of 1 and 0.
2. Create a segmented image and fill it with zeros (set segment number variable to one).
3. Scanning the old image left to right, top to bottom.
4. If a pixel value of 1 is found, and the pixel is 0 in the segmented image, do a flood fill
for the pixel onto the new image using segment number variable.
5. Increment segment # and go back to step 3.
6. Scan the segmented image left to right, top to bottom.
7. If a pixel is found to be fully contained in any segment, flood fill it with a new segment
as in steps 4 and 5.
0 0
0 0
1 0
1 0
0 0
0 0
0 0
0 0
0 0
0 0
1 1
1 1
1 1
1 1
1 1
1 1
2 1
2 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
2 2
2 2
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 3
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
3 3
3 4
3 1
3 1
3 3
1 1
3 1
1 1
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
1 0
1 0
1 0
0 0
0 0
0 1
1 1
1 0
0 0
0 0
1 1
0 0
Actual Scene
Thresholded
Segmented
page 490
17.9.1 Segment Mass Properties
When objects are rotated in the vision plane it may become difficult to use simple measures
to tell them apart. At this point global attributes, such as perimeter lengths, length/width ratios, or
areas can be used.
The centroid of a mass can be determined with the expression for the x direction (y is iden-
tical)
Area is simply the sum of all pixels in the segment,
Perimeter is the number of pixels that can be counted around the outside of an object.
x
M
i
x
M
i
------------------
1
n
--- x
i
i 1 =
n
= =
where,
x
the distance from the left of the screen to the pixel centre =
A p
i
=
A Area of image (in pixels) =
p
i
1 if the pixel is in the segment =
where,
page 491
Compactness can be a measure of mass distribution,
Another measure of mass distribution is thickness,
17.10 RECOGNITION
17.10.1 Form Fitting
1 1
1 1
1 1
1 1
1 1
0 0
1 1
0 0
1 1
1 1
1 0
1 0
1 1
0 0
1 0
0 0
e.g.
Area = 21
Perimeter = 16
x Centroid = 3.5
y Centroid = 1.5
0 8
0
4
C
P
2
A
------ =
where,
C = compactness
P = perimeter
A = area
T
min
D
min
A
----------- =
where,
T = thickness
Dmin/Dmax = smallest/largest diameters
A = Area
T
max
D
max
A
------------ =
page 492
It can sometimes help to relate a shape to some other geometric primitive using compact-
ness, perimeter, area, etc.
- ellipse
- square
- circle
- rectangle
17.10.2 Decision Trees
In the event that a very limited number of parts is considered, a decision tree can be used.
The tree should start with the most significant features first, then eventually make decisions on the
least significant. Typical factors considered are,
- area
- hole area
- perimeter
- maximum, minimum and average radius
- compactness
An example of a decision tree is given below. (Note: this can be easily implemented with if-
then rules or Boolean equations)
Part A
Part B
Part C
Part D
Part E
C<10
C>=10
Dmin<0.1
Dmin>=0.1
C>=20
A>=20
A<20
page 493
Bar Codes
Bar codes are a common way to encode numbers, and sometimes letters.
The code is sequential left to right, and is characterized by bars and spaces of varied widths.
The bar widths corresponds to a numerical digits. These are then encoded into ASCII characters.
To remain noise resistant there are unused codes in the numerical sequence. If any value
scanned is one of the unused values the scan is determined to be invalid.
There are different encoding schemes.
Code 39/Codabar - these use bars of two different widths for binary encoding
Code 128 - these use different bar widths uses proportional widths to encode a range of
values
UPC (Universal Product Code) -
EAN (European Article Numbering) -
The example below shows how a number is encoded with a bar code.
page 494
17.11 PRACTICE PROBLEMS
1. Consider a circle and an ellipse that might be viewed by a vision system. The circle has a
4 radius, whereas the ellipse has a minor and major radius of 2 and 4. Compare the two defini-
tions using form factors (compactness and thickness) and show how they differ.
page 495
2. Describe image resolution in vision systems.
ans. Resolution of a video image describes the number of rows and columns of pixels in a
video image. A higher resolution means that there are more rows of pixels in the images, and
therefore we can distinguish smaller details.
3. An image has been captured from a video camera, and stored in the matrix below.
ans.
C
P
2
A
------ 12.5 = =
circle
R 4 =
A R
2
50.3 = =
P 2R ( ) 25.1 = =
C
P
2
A
------ 15.8 = =
circle
R
1
2 =
A R
1
R
2
25.1 = =
P 2
R
1
2
R
2
2
+
2
------------------ 19.9 =
R
2
4 =
T
min
T
max
D
min
A
----------- 0.16 = = =
D
min
4 = D
max
8 = D
min
8 = D
max
8 =
T
min
D
min
A
----------- 0.16 = =
T
max
D
max
A
------------ 0.32 = =
Compactness values differ
the min/max values are the same for the circle
page 496
a) Use a threshold of 100 to filter the image.
b) Perform an edge detection on the thresholded image.
64 87
36 57
54 64
76 24
12 35
84 26
22 36
63 74
84 187
54 78
201 234
197 198
195 222
34 75
198 25
218 74
25 9
37 25
84 202
57 98
194 213
93 95
192 79
91 89
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 1
0 0
1 1
1 1
1 1
0 0
1 0
1 0
0 0
0 0
0 1
0 0
1 1
0 0
1 0
0 0
ANS.
page 497
c) Segment the image into distinct regions.
d) Calculate the compactness and thickness for the region above the threshold.
e) Calculate form factors including perimeter, area, centroid, compactness and minimum and
maximum thickness.
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 1
0 0
1 1
1 1
1 1
0 0
1 0
1 0
0 0
0 0
0 1
0 0
1 1
0 0
1 0
0 0
ANS.
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 1
0 0
1 1
1 1
1 1
2 2
1 0
1 0
0 0
0 0
0 1
0 0
1 1
0 0
1 0
0 0
ANS.
C
22 ( )
2
13
------------- =
ANS.
T
3
13
----- -OR
6
13
----- - =
page 498
4. We have four part shapes (as listed below) that will be arriving on a conveyor. We want to
develop a decision tree for the vision system to tell them apart. We also need to find their cen-
troids relative to the top left of the image so that a robot may pick them up.
Isosceles triangle 6 per side
Rectangle 2 by 8
Triangle with side lengths 8, 5 and 4
Circle 5 Radius
ans.
First, calculate the form factors
Form
isosceles tri-
angle
rectangle
Area
15.5
9
16
Perim
eter
18
20
Com-
pact
20.78
25
Tmin
0.333
3
0.125
circle
A > 40
A < 40 Tmin < 0.18
Tmin > 0.18
rectangle
C > 28
C < 28
odd triangle
isosceles triangle
page 499
17.12 TUTORIAL - LABVIEW BASED IMAQ VISION
1. Locate the appropriate hardware and software for the laboratory. This includes a video camera
with an appropriate lens attached. A BNC cable to connect to the computer. A computer with
the National Instruments IMAQ PCI-1408 vision card and IMAQ software installed.
2. We will start by verifying that the vision system is working properly. To do this run the IMAQ
Configuration Utility. You should see a screen that shows the computer and PCI-1408 card.
Click on the + to the left of the card and you should see four input channels appear. The first
of these is channel 0, click on it. Next, select Aquire, Grab, a window should appear that
shows a video feed. Adjust/focus the lens until a clear image appears. Note that the lens
attached is a TV lens. For small distances (less than 2-3 feet) the lens will be very sensitive to
focus, when a longer focus is used it will be much less sensitive. Explore the software settings
for the camera. Feel free to change values, but record the original value so that it may be
changed back. When you feel comfortable that the video images are being captured properly,
continue to the next step.
3. Run Labview, and open a New vi. Construct the vi below to capture an image and display it
on the screen.
(From left to right) First create a string, and enter test or something else. Next create the
IMAQ icon using IMAQ Vision, Management, IMAQ. This will create a generic place
to store images. At this point the image size, etc is not important. Now that we have a place to
store the image, we can grab images from the camera with the snap icon found at Image
Aquisition, Snap. Finally we can display the images using the last icon found at IMAQ
Panel Diagram
IMAQ snap test
page 500
Vision, Display (basics), IMAQ WindDraw. Connect these together and run the vi. You
should see an image from the camera. Notice that these icons are doing a lot that is not on the
screen. The vision add-on to Labview does not fully follow the philosophy of graphical pro-
gramming. Things like the display window are not shown in the panel where they should be.
These cheats are necessary because of the huge amount of data required for vision tasks.
Take some time to explore the other vision tools, and try modifying the vision program.
4. Close the vi and do not save changes to any other vi (this could save some settings per-
manantly). Next, use Open vi and open examples, vision, barcodedemo.vi. Run the vi.
An image of a barcode should appear. Use the mouse to put a rectangle over the bar code. Then
accept the Region of Interest ROI. After this the program will use images saved on disk to
test the routine. The codes should match the displayed images. Stop the vi and look at the dia-
gram to see the general operation - it is set up to use a sequence. Notice that the first frame in
the sequence pulls an image from a file, and displays it on the screen. The next couple of
frames deal with getting the region of interest. The fourth sequence (3 of 0 to 4) captures
images and decodes the barcodes. The last sequence is used to release the vision memory, etc.
Notice that the images are being supplied by a function called simu GRAB, replace this with
the normal snap routine and run the program (put a vi in front of the camera). You should now
see the images, but they are not decoded properly. Notice that the barcode icon has an integer
digit input of 3, you will need to change this value to get the barcodes to decode properly.
5. Close the vi (dont save any changes). Open the example vi caliperdemo.vi, and run the vi.
This vi can be used to check the presence of objects. Draw lines across the image. Each point
where the line goes from light/dark or dark/light an edge will be detected. If the line is
accepted you will see it appear on the list, you will want to change the number of edges. You
can have more than one test line. When done run the test and see how it behaves. Look at the
diagram for the vi and modify it to use the camera (as you did for the barcode reader).
17.13 LABORATORY - VISION SYSTEMS FOR INSPECTION
Purpose:
A vision system will be explored and implemented in the laboratory setting.
Overview:
The vision system is based on Labview. A dedicate PC will be used in the cell to process
the vision commands. Using labview the PC can then be connected to the Soft PLC
controller.
Pre-Lab:
1. Review labview programming using tutorials found at the national instruments site
(www.natinst.com).
In-Lab:
page 501
1. Complete the Labview vision tutorial.
2. Modify the appropriate test program to read bar codes, and save them to a file
3. Modify the appropriate test program to read a dimension of arbitrary parts and write the
dimension to a serial port.
Submit:
1. Printouts of the modified test programs.
page 502
18. INTEGRATION ISSUES
18.1 CORPORATE STRUCTURES
First consider the major functions within a company,
- Production
- Materials
- Process Planning
- Design
- Customer Orders / Service
- Marketing
- Accounting
- Management
All of these functions generate and use common information which must be communicated
between departments.
Since computers handle information, we must be aware of what we get, and what we pro-
duce.
18.2 CORPORATE COMMUNICATIONS
Previous paper based systems provided support for data transfer between departments, and
provided a good basis for the introduction of computers
ASIDE: Computers can make a good system better, but they will always make a bad system
worse. This is because a system which is not well defined and poorly understood cannot be pro-
grammed, or optimized.
Characteristics of paper based manufacturing systems,
page 503
- Multiple copies of same information.
- Revising information is hard when multiple copies exist.
- Delays for the transfer of paper.
- Easy to lose paper.
- Paper is not interactive.
- Paper requires bulky storage.
Computers overcome and reduce the problems above, but introduce some technological
challenges,
- Creating programs to support corporate functions.
- Software to support interdepartmental communication and data sharing.
- Hardware to support the software.
page 504
This figure below shows various departments, and the information flow [source - ???
P
l
a
n
t
F
u
n
c
t
i
o
n
a
l
E
n
t
i
t
i
e
s
E
x
t
e
r
n
a
l
E
n
t
i
t
i
e
s
C
u
s
t
o
m
e
r
C
u
s
t
o
m
e
r
A
c
c
o
u
n
t
i
n
g
P
u
r
c
h
a
s
i
n
g
M
a
r
k
e
t
i
n
g
a
n
d
S
a
l
e
s
C
o
r
p
o
r
a
t
e
R
&
D
M
a
r
k
e
t
i
n
g
a
n
d
S
a
l
e
s
T
r
a
n
s
i
t
C
o
m
p
a
n
y
A
c
c
o
u
n
t
i
n
g
M
a
r
k
e
t
i
n
g
a
n
d
S
a
l
e
s
S
u
p
p
l
i
e
r
/
V
e
n
d
o
r
P
r
o
c
e
s
s
O
r
d
e
r
s
1
S
c
h
e
d
u
l
e
P
r
o
d
u
c
t
i
o
n
2
M
a
n
a
g
e
P
r
o
d
u
c
t
i
o
n
3
A
s
s
u
m
e
Q
u
a
l
i
t
y
6
M
a
n
a
g
e
P
r
o
d
u
c
t
I
n
v
e
n
t
o
r
y
7
M
a
n
a
g
e
P
r
o
d
u
c
t
S
h
i
p
p
i
n
g
8
M
a
n
a
g
e
P
r
o
d
u
c
t
C
o
s
t
s
9
M
a
n
a
g
e
R
a
w
M
a
t
e
r
i
a
l
a
n
d
E
n
e
r
g
y
4
M
a
n
a
g
e
P
r
o
c
u
r
e
m
e
n
t
5
O
r
d
e
r
I
n
v
o
i
c
e
S
u
p
p
l
i
e
r
P
e
r
f
o
r
m
a
n
c
e
S
u
p
p
l
i
e
r
D
a
t
a
P
a
y
m
e
n
t
R
e
l
e
a
s
e
Purchase
Or der Req
Order Req
Incoming
Communication
L
o
n
g
T
e
r
m
M
a
t
e
r
i
a
l
a
n
d
E
n
e
r
g
y
R
e
q
u
i
r
e
m
e
n
t
s
P
a
r
t
s
R
M
&
E
n
e
r
g
y
I
n
c
o
m
i
n
g
M
a
t
e
r
i
a
l
a
n
d
E
n
e
r
g
y
R
e
q
d
M
a
t
e
r
i
a
l
a
n
d
E
n
e
r
g
y
I
n
v
e
n
t
o
r
y
A
p
p
r
o
v
a
l
s
O
r
d
e
r
S
t
a
t
u
s
K
n
o
w
H
o
w
D
a
t
a
O
r
d
e
r
R
e
q
u
e
s
t
Q
A
R
e
s
u
l
t
s
S
T
D
S
P
e
r
f
o
r
m
a
n
c
e
&
C
o
s
t
s
C
o
s
t
O
B
J
Capacity
Schedule
M
e
t
h
o
d
s
R
e
q
m
t
s
Q
A
R
e
s
u
l
t
W
a
i
v
e
r
s
R
e
q
m
t
s
C o n f i r m
S h i p
R e l e a s e
T o S h i p
Inventory Balance
R
e
s
e
r
v
a
t
i
o
n
P
a
c
k
O
u
t
S
c
h
e
d
u
l
e
I
n
v
e
n
t
o
r
y
I nvoice and
Shipping
Documents
I n v o i c e
T r a n s p o r t
O r d e r
Release I nvoice
S
h
i
p
p
i
n
g
C
o
s
t
A
c
c
e
p
t
e
d
O
r
d
e
r
M
F
G
R
M
&
E
n
e
r
g
y
C
o
s
t
s
P
r
o
d
u
c
t
i
o
n
C
o
s
t
C r e d i t L i m i t
a n d O t h e r P o l i c y
S a l e s
F o r e c a s t
A n n u a l
S a l e s
Confirm
Order
P r o d u c t i o n
O r d e r
A v a i l a b i l i t y
page 505
Requirements for interfacing corporate management and staff functional entities to the fac-
tory [source - find]
Assumed functional hierarchy computer system structure for a large manufacturing com-
M
K
T
G
a
n
d
S
A
L
E
S
H
u
m
a
n
R
E
S
R
D
&
E
P
U
R
C
H
A
C
C
T
C
O
R
P
M
G
M
T
F
A
C
T
O
R
Y
L
E
V
E
L
0
.
0
P
o
l
i
c
i
e
s
E
x
t
e
r
n
a
l
E
n
t
i
t
i
e
s
V
e
n
d
o
r
C
o
n
t
r
a
c
t
s
K
n
o
w
-
H
o
w
R
e
q
u
i
r
e
-
m
e
n
t
s
M
a
n
p
o
w
e
r
M
a
n
u
-
f
a
c
t
u
i
n
g
p
o
l
i
c
i
e
s
R
e
q
u
i
r
e
-
m
e
n
t
s
page 506
plex [source - find]
Operational and
Production
Supervision
Supervisors
Console
Management
Data
Presentation
Dedicated
Programmable
Logic Controllers
Plant Production
Scheduling and
Operational
Inter-area
Coordination
(Shop coordination)
Work Cell
(Direct Numerical
Control)
Work Station
(Computerized
numerical Control)
Plant
Management
Information
Supervisors
Console
Operators
Console
PROCESS
Management
Level 1
Level2
Level3
Level4
S
a
l
e
s
O
r
d
e
r
s
C
o
m
m
u
n
i
c
a
t
i
o
n
s
w
i
t
h
o
t
h
e
r
a
r
e
a
s
C
o
m
m
u
n
i
c
a
t
i
o
n
s
w
i
t
h
o
t
h
e
r
s
u
p
e
r
v
i
s
o
r
y
s
y
s
t
e
m
s
C
o
m
m
u
n
i
c
a
t
i
o
n
s
w
i
t
h
o
t
h
e
r
c
o
n
t
r
o
l
s
y
s
t
e
m
s
page 507
Report interfacing to corporate management and staff functional entities from the factory
[source - find]
M
K
T
G
a
n
d
S
A
L
E
S
H
u
m
a
n
R
E
S
R
D
&
E
P
U
R
C
H
A
C
C
T
C
O
R
P
M
G
M
T
F
A
C
T
O
R
Y
L
E
V
E
L
0
.
0
C
o
r
p
o
r
a
t
e
E
x
t
e
r
n
a
l
E
n
t
i
t
i
e
s
r
a
w
m
a
t
e
r
i
a
l
,
e
n
e
r
g
y
a
n
d
s
p
a
r
e
p
a
r
t
s
R
e
q
u
e
s
t
s
f
o
r
i
n
f
o
r
m
a
t
i
o
n
,
S
t
a
t
u
s
o
f
P
r
o
d
u
c
t
i
o
n
M
a
n
p
o
w
e
r
o
p
e
r
a
t
i
o
n
a
l
p
e
r
f
o
r
m
a
n
c
e
P
o
l
i
c
i
e
s
C
o
s
t
r
e
p
o
r
t
i
n
g
P
e
r
f
o
r
m
a
n
c
e
r
e
p
o
r
t
i
n
g
p
e
r
f
o
r
m
a
n
c
e
d
a
t
a
a
n
d
r
e
q
m
t
s
o
r
d
e
r
s
p
l
a
n
t
t
e
s
t
s
o
r
d
e
r
s
page 508
The Shop Floor Production Model (SFPM):
[ source - find]
The ISO Reference Model for Factory Automation adds a couple of layers
[ source - find]
Level Sub-Activity Responsibility
4 Section/
Area
Supervise shop
floor production process
Supervising and coordinating
the production and supporting the
jobs and obtaining and allocating
resources to the jobs.
3 Cell
Coordinate shop
floor production
process
Sequencing and supervising
the jobs at the shop floor produc-
tion process
2 Station
Command shop
floor production process
Directing and coordinating the
shop floor production process
1 Equipment
Execute shop floor
production process
Executing the job of shop
floor production according to com-
mands
Level/
Hierarchy
Area of Con-
trol
Responsibility Basic Functions
6 /
Enterprise
Managing the
corporation
Achieving the
enterprises mission
and managing the
corporation
Corporate management
Finance
Marketing and sales
Research and Development
page 509
5 /
Facility or
plant
Planning Pro-
duction
Implementing
the enterprise func-
tions and planning
and scheduling pro-
duction
Product design and production
engineering
Production management (upper
level)
Resource management (upper
level)
Procurement (upper level)
Maintenance management
(upper level)
4 /
Section or
area
Allocating and
supervising materi-
als and resources
Coordinating
production and
obtaining and allocat-
ing resources to jobs
Production management (lower
level)
Procurement (lower level)
Resource management (lower
level)
Maintenance management
(lower level)
Shipping
Waste material treatment
3 / Cell Coordinating
multiple machines
and operations
Sequencing and
supervising shop
floor jobs and super-
vising various sup-
porting services
Shop floor production (cell level)
2 / Station commanding
machine sequences
and motion
Directing and
coordinating the
activity of the shop
floor equipment
Shop floor production (station
level)
Level/
Hierarchy
Area of Con-
trol
Responsibility Basic Functions
page 510
1 / Equip-
ment
Activating
sequences and
motion
Taking action on
commands to the
shop floor equipment
Shop floor production (equip-
ment level)
Level/
Hierarchy
Area of Con-
trol
Responsibility Basic Functions
page 511
A LAN (Computer Network) Hierarchy for Shop Floor Control [source - find]
Dev ic e
Lev e l 6 :
En terp rise
Lev e l 5 :
Fac ility or Plan t
Lev e l 4 :
Sec tion or Are a
Lev e l 3 :
Ce ll
Lev e l 2 :
Statio n
Lev e l 1 :
Eq uip m en t
Sec tion
C o ntro lle r A
Se ctio n
Co ntro lle r B
Sec tion
Co n tro ller C
s imila r to A sim ila r to A
Ente rp rise LA N
Fac tory B ac k bo n e LAN
Sec tion A LA N
Ce ll A LA N C ell B LA N
Cell
Co n tro ller A
Cell
Co ntro lle r B
De vic e
C on tro ller A
De vic e
Co n tro ller B
De v ice
Co n trolle r A
De v ice
C on tro ller B
D ev ice
De v ice
De v ice
De vic e
D ev ice
D ev ice
De v ice
De vic e
De vic e
D ev ic e
D ev ice
page 512
Typical Architecture for Manufacturing Components [ update]
Item Equipment Workstation Cell
EXAM-
PLES
Hardware
Lathe, Mill, T-10
Bridgeport Series I
IBM 7545 Robot
Robot tended
Machine Center, Car-
trac Material Handling
System
Variable Mission
System, Several Inte-
grated workstations
Controller
Hardware
Mark Century
2000, Accuramatic
9000, Custom-single-
board system.
Allen-Bradley
PLC-5, IBM-PC, etc.
Windows NT,
SUN workstation, etc.
Type Con-
troller
Single-board pro-
cessors, Machine tool
controller, Servo-Con-
troller, etc
PLC, PC, Mini-
computer
PC, Microcom-
puter, Super-MiniCom-
puter
Language
Application
Assembler, Part
programming, Robot
programming, etc.
C, Ladder logic,
Pascal and other
sequential languages
C, LISP, FOR-
TRAN, and other high
level languages
Memory/
Size Require-
ments
8k-128k RAM
plus custom ROM,
EPROM, etc.
32M RAM, >1M
Hard Drive
128M RAM,
>1Gigabyte Hard drive
Response
Time
< 10
-3
sec
< 1 sec < 20 sec
Machines/
Interconnects
1-1 connect 1-many
1-[1,8] Machine
tools,
1-[1-50] Material
handling
1-many
1-[1-15] worksta-
tions
page 513
Functional Breakdown of Control Architecture
In all of these models we must consider the value of the information being passed. At the
low level control stages, information that is more than a few seconds old may be completely
Equipment Workstation Cell
Planning Tool selection, parame-
ter specification, tool path
refinement, GMT code, tool
assignment to slots, job setup
planning
Resource allocation
jobs
Batch splitting and
equipment load balancing
Batching, Workload
balancing between worksta-
tions, Requirements planning
Task allocation to
workstations
Planning
Horizon
Milliseconds - Minutes Minutes - Hours/Days Hours - Days/weeks
Schedul-
ing
Operation sequencing
at individual equipment
Sequence equipment
level subsystems
Deadlock detection
and avoidance
Gantt chart or E.S.
based scheduling
Buffer management
Assignment of due
dates to individual worksta-
tions
Look ahead ES/simu-
lation based scheduling
Optimization based
tech
Batch sequencing
Control Interface to worksta-
tion controller
Physical control
(motion control at NC and
robot pick and place level)
Execution of control
programs (APT, AML, etc.)
Monitor equipment
states and execute part and
information flow actions
based on states
Synchronize actions
between equipment (eg.
robot & machine while load-
ing/unloading parts)
Ladder logic execu-
tion
Organizational control
of workstations, Interface
with MPS, generation of
reports, etc.
page 514
worthless, while the same information at the higher level may be valuable for quality tracking
months later.
We can draw part of a simple flow chart that illustrates a simple CIM system. The elements
shown include a PLC, NC machine, and stand alone sensors. These are all integrated by a single
computer running cell control software.
18.3 COMPUTER CONTROLLED BATCH PROCESSES
The nature of Batch processes,
- Batch processes deal with discrete quantities of raw materials or products.
- batch processes allow the tracking of these discrete quantities of materials or products
- batch processes allow more than one type of product to be processed simultaneously, as
CNC
Controller
Actuators,
Structure,
Sensors
NC NC Quality
Programs Status
Gauges
and Meters
Measurements
Cell
Controller
Operation Cell status and
plans quality reports
(IBM PC)
CNC
Controller
Actuators,
Sensors
page 515
long as the products are separated by the equipment layout.
- Batch processes entail movement of discrete product from processing area to processing
area
- Batch processes have recipes (or processing instructions) associated with each load of
raw material to be processed into product.
- Batch processes have more complex logic associated with processing than is found in
continuous processes
- Batch processes often include normal steps that can fail, and thus also include special
steps to be taken in the event of a failure.
The nature of steps in a batch process,
- Each step can be simple or complex in nature, consisting of one or more operations
- Generally, once a step is started it must be completed to be successful.
- It is not uncommon to require some operator approval before leaving one step and start-
ing the next.
- There is frequently provision for non-normal exits to be taken because of operator inter-
vention, equipment failure or the detection of hazardous conditions.
- Depending on the recipe for the product being processed, a step may be bypassed for
some products.
- The processing operations for each step are generally under recipe control, but may be
modified by operator override action.
A typical process step
Bypass Step
Hold
at step
completion
Perform Step
Operation
Operator or
Recipe Bypass
Command
Operator or
Recipe Hold at
Completion
Operator
Abort
Command
Command
Yes
No
Yes
No Previous
Step
Fault Detected
or Operator Abort
Next
Step
Fault Exit to
pre-defined step
page 516
18.4 PRACTICE PROBLEMS
1. List 5 industries that are well suited to integration, and 5 that are not. Indicate why you
think so.
2. In an automated factory there as many as six levels of control. Discuss the equipment
available in the lab and how this relates to the 6 level model of factor floor control.
3. Information drives an automated factory from the initial entry of geometry in CAD, to the
final production of parts with CAM. Discuss how data networks support this and the impact of
open network standards.
4.
18.5 LABORATORY - WORKCELL INTEGRATION
Purpose:
All of the components explored in the laboratories of previous weeks will be integrated
into a final working cell.
Overview:
Pre-Lab:
The lab equipment (right now) only satisfies the first couple of levels. You can
ans.
page 517
To be determined.
In-Lab:
1. To be determined.
Submit (individually):
1. To be determined.
page 518
19. MATERIAL HANDLING
Basic purpose is to provide automatic transfer of workparts between automated machines,
and interface with individual work stations.
19.1 INTRODUCTION
Basic layouts for material handling include,
- lines - stations arranged along a fixed part transfer path.
- batch - stations are grouped by function and batches of raw materials/WIP are brought in
batches
- job shop - individual parts are carried through one or more stages by one worker
- job site - equipment is brought to the work
These transfer systems can also be categorized by their timing approach,
- synchronous - the entire line moves parts with a fixed period cycle. This is well suited to
mass production of similar products.
- asynchronous - parts are moved as completed or needed. Often buffers are required, but
this is more tolerant of problems than synchronous systems.
- continuous - the product flows by without stopping
Basic Requirements,
Random, independent movement of palletized workparts between workstations in the
FMS
- pallets can flow from any station to any other
- parts are mounted in pallet fixtures
- pallets can move independently to avoid interference
Temporary storage or banking of workparts
- queues allow parts to wait for machines, thus increasing efficiency
Convenient access for loading and unloading workparts
- easy to do manual load/unload.
- automatic loading/unloading of parts at workstations
- can load/unload from either side of system
Compatible with computer control
Provision for future expansion
page 519
- modular extensions to system are desirable
Adherence to all applicable industrial codes
- safety, noise, etc.
Access to machine tools
- allow unobstructed floor level access to each workstation
Operation in shop environment
- must be reliable when exposed to metal chips, cutting fluids, oil, dirt, etc.
Common type of Material handling systems
- power roller conveyors
- power and free overhead conveyors
- shuttle conveyors
- floor towline systems
page 520
- robots (in a limited sense)
- indexing (geneva mechanism)
- walking beam
19.2 VIBRATORY FEEDERS
When small parts are hard to orient we can dump them in a vibratory feeder.
The vibrations cause parts to hop forward.
Various cutouts, tracks, etc are added to sort parts.
page 521
19.3 PRACTICE QUESTIONS
1. What are pallets used for?
(ans. to acts as holders for work that is being transported)
2. List possible methods for guiding an AGV.
(ans. guide wire, vision, painted lines, chain)
19.4 LABORATORY - MATERIAL HANDLING SYSTEM
For this lab the class will be divided into two halves. One group will do part A, the other group
will do part B. Both groupswill have to work together for a successful lab.
System Objective: When done the system should be able to pass a shuttle in a continuous loop.
19.4.1 System Assembly and Simple Controls
Purpose:
The SoftPLC and devicenet will be used to control the material handling system Lock and
go stations.
Overview:
The material handling system is designed in a modular format. Each of the track sections
can be disassembled and reassembled in other configurations. In total there are,
4 turnstations
6 straight track sections (2 have stands for suspending overhead gear)
2 90 degree track sections
1 conveyor system for a straight track section
12 shuttles
The material handling system will be outfitted with the devicenet based controls system to
move the shuttles around the system. This system will be added to in later labs.
The shuttles are actuated using solenoid valves for an air supply. By actuating the
lock and go stations the cart can be stopped, or ejected.
page 522
Pre-Lab:
Examine the system components and determine (as a group) how the system will work.
Implement ladder logic to control the system.
In-Lab:
1. Connect the track sections.
2. Connect solenoid valves to the lock an go stations - except on the turnstations. Add
sensors to detect the presence of a shuttle
3. Wire the solenoid valves to the softPLC and write the ladder logic required to control
the stations.
Submit:
1. All design work.
page 523
19.5 AN EXAMPLE OF AN FMS CELL
19.5.1 Overview
A workcell has been constructed using one light industrial robot, and one NC milling
machine. Some automated fixtures are also used.
All of the devices in the workcell are controlled from a single Sun computer. This is an
engineering workstation with UNIX. Thus, it is capable of multitasking (running more than one
program at once).
Software drivers, interfaces, and applications have been developed, to aid in teaching and
demonstration.
The following pages will describe the interfacing in the workcell, as an example of the con-
nection between process control computers and a plant floor computer. A project in development
will be discussed for networking Plant Floor (and higher) computers.
page 524
Ethernet Ethernet
RS 232
Process Controllers
rocesses
Sun Computer (Sunbane)
Sun Computer (RA)
IBM PC Compatible
(Running CAM/CAM
Software)
CRS Robot Controller Dyna Controller Microbot Controller
DYNA NC
Milling Machine CRS Plus Robot
Microbot Teach Mover
Pneumatic Vice
Conveyor Belt
RS 232 RS 232
RS 232
FMS Cell Connection Diagram
Plant Floor Control & Up (Network Based Level)
Interface Level
Sensors and Actuator Level
page 525
19.5.2 Workcell Specifications
Workcell Layout
Devices:
1 Sun Computer
2. CRS-Plus robot
A five axis, articulated robot arm
Communicates over an RS232 serial data line
Interprets a language called RAPL
Has 16 Digital I/O lines
Uses a pneumatically controlled gripper
The robot controller is 8088 based
3. DYNA-Mite Milling Machine
A 3-axis 2.5D milling machine
Uses a proprietary NC code
Can be run locally, or remotely (over RS232 serial communication lines)
Programs may be executed as they are entered, or when they are completely
ordered
Can handle objects of dimensions 6 by 5 by 4
Conveyor
Robot
NC Milling Machine
Robot Controller
NC Milling
Sun 3/60 Computer
Controller
Pneumatic Vice
gripper
Machine
Pneumatic Vice
Controller
page 526
Can machine plexiglass, wax, aluminum, steel (at low feed rates)
4. Pneumatic Vice
Has a maximum opening of 4 inches
Has a maximum travel of 1 inches
Controlled by a pneumatic solenoid
Pneumatic solenoid controlled from CRS-Plus robot controller
5. Conveyor
A former undergraduate student project
Activated electronically by the CRS-Plus robot controller
6. Fixtures (for making customized keytags)
These are highly specific to the task being performed
Parts Feeder - Provides a structured environment so that the robot may easily
pick up the parts.
Robot Gripper - Designed to provide a reasonable reach into the vice (and parts
feeder), and to firmly grasp the workpiece.
Vice Fixture - Designed to hold the workpiece at a level fixed height, and has a
location for drill through of the keytag. This part does not effect the travel
of the vice.
19.5.3 Operation of The Cell
page 527
Developed/Proprietary software in the workcell
Robot
Control
Subroutines
Vice
Control
Subroutines
Conveyor
Control
Subroutines
DynaMill
Control
Subroutines
Serial Communication Subroutines
CRS-Plus Robot Controller
DynaMill
Controller
CRS-Plus
Robot
Pneumatic Conveyor
Belt
DynaMill
Milling
Machine
Vice
User
Interface
Device
Specific
Routines
on Sun
Serial
Interface
Routines
on Sun
Controllers
and
Operating
Systems
Hardware
Routines
on Sun
User Interface
(written with the Sunview Window Interface Library)
Programming
Module
High Level User Interface ( or application program)
Hardware and Controllers Supplied by Manufacturers (except Conveyor)
Low Level Device Drives and Communication Routines
proprietary
Hardware
Purchased
Software
Written
or Built
page 528
2.1.4 - Example of Robot and Vice Software Driver Use
void demo()
{
static double a1, a2, a3, a4, a5;
crs_init();
crs_speed(40.0);
crs_open();
crs_close();
conv_on();
crs_xy_r_move(-5.0, -5.0, 0.0);
crs_xy_status(&a1, &a2, &a3, &a4, &a5);
conv_off();
crs_xy_a_move(a1+3.0, a2+2.0, a3);
crs_depart(-2.0);
crs_depart(2.0);
crs_home();
crs_r_move(0.0, 10.0, 0.0, 0.0, 0.0);
crs_speed(100.0)
vice_closed();
crs_a_move(-90.0, 0.0,0.0,0.0,0.0);
vice_open();
}
Set up Robot
Set speed to 40% of Maximum
Open the Gripper
Close the Gripper
Turn on Conveyor
Move Robot with relative
Cartesian Coordinates
Return Cartesian Position of
End Effector
Turn off Conveyor
Move Robot to absolute
Cartesian Position
Move robot gripper 2 forward
Move robot gripper 2 backward
Move robot to home position
Move robot in relative joint
coordinates
Close the Vice
Move the Robot in
Absolute Joint Coordinates
Open the Vice
page 529
NC code Example (for the Dyna Milling Machine)
000 START INS 01
001 TD = 0.125
002 FRXY = 10
003 FRZ = 4
004 SETUP > zcxyu
005 GOY -.625
006 GOZ -.125
007 GRa -180
008 ZERO AT
009 X .634
010 Y .5
011 GOr .125
012 a 90
013 GRa -30
014 > REF COODS
015 ZERO AT
016 X 1.50
017 Y 0
018 GOr .125
019 a 60
020 GRa -60
021 > REF COODS
022 ZERO AT
023 X 1.5
024 Y -0.3
025 GOr .125
026 a 0
027 GRa -90
028 GRX -1.3
029 END
2.00
0.50
0.50
30
0.20R
Start Program in inches
Set Tool Diameter
Set Feed Rates
Set Absolute Zero Position
Move to Start Position
X
Y
Z
End Program
A
B
A
B
C
D
C
D
E
F
E
F
page 530
An Example of the Dyna Mill Software Drivers
void demo()
{
char ret[100];
/* Initialize Dyna Mill and check for failure */
if(dyna_init() == NO_ERROR){
/* Send NC Program to Dyna Mill */
dyna_load(/usr/people/cim/nc.code/test1.nc);
/* Download program from NC Mill */
dyna_download(/usr/people/cim/nc.code/test);
/* Send program to mill 1 step at a time */
dyna_step(/usr/people/cim/nc.code/test2.nc);
}
/* Deinitialize mill */
dyna_kill();
}
page 531
A User interface for Workcell Control
Robot Control
Subwindow
Vice and Conveyor
Controls
Dyna Mill Control
Subwindow
Key Tag Programs
Programming
Master Control
(Also uses Dyna Mill)
page 532
Actual Communication with devices, via a report window
page 533
Workcell Programming window
Advantages:
UNIX Based system allows easy control of cell in modes which are both parallel and/or
concurrent
A blend of high level computers with low level devices allows for a very modular sys-
tem, with a variety of computing resources.
Synchronization of processes is very simple.
Allows rapid reconfiguration of the workcell.
This workcell will perform all of the basic CAD/CAM/CIM functions.
The hierarchical design of software tools has simplified the development of new applica-
tions.
Disadvantages:
page 534
Many Equipment manufacturers have not considered this type of control (they prefer
stand alone modes), and thus their machines lack self calibration features, and soft-
ware is made to be user interactive, and batch, but is not very friendly for software
applications.
Requires technical people to operate the equipments.
19.6 THE NEED FOR CONCURRENT PROCESSING
An individual computer is not powerful enough to control an entire factory. And, a single
program would be too complex. Therefore, there is a need for many computers and programs
which interact.
The example below involves two programs. The first program will control the robot, and the
second will cut key tags with the NC machine.
While the keytags are being cut, the robot program will move pegs around in the cell. This
requires that the control software be very complex, or that two programs be used.
if two programs are used, then some communication is required for sequencing tasks in the
work cell.
Concurrent tasks in the workcell use message passing between programs,
page 535
Strategies for Concurrent processing, involve how the processes are split apart, and how
they communicate,
- Have a number of processes which communicate directly to one another (point to point).
This is synchronous and well suited to real-time control.
- Use a buffered message passing system. This allows asynchronous communication
between processes running at different speeds, which do not do real-time control.
- Remote Procedure Calls allows one program to run other programs remotely. This is
suited to well defined problems, but every program must have knowledge of the
other computers in the network.
Is
Another
Name
Left ?
Stop
Start
Is
Dyna Mill
Waiting for
Part ?
Yes
Load
Part
Is
Dyna Mill
Done with
Part ?
Yes
Unload
Part
Swap a
Peg
Start
Call for
New Part
Wait for
Part Loaded
Move to
Milling Position
Mill out
Keytag
Move to
Unload Position
Call for
Unloading Keytag
Wait for
Part Unloaded
Yes
messages
passed through
file #1
messages
passed through
file #2
Program #1 Program #2
No
No
No
page 536
19.7 PRACTICE PROBLEMS
1. What is concurrent (parallel) processing and why is it important for workcell control?
(ans. to allow equipment to do other tasks while one machine is processing)
2. What is meant by the term Device Driver?
(ans. a piece of hardware that allows a connections to a specific piece of hardware)
page 537
20. PETRI NETS
20.1 INTRODUCTION
Petri nets are useful tools for modelling systems with control flow. In particular they aid in
modelling systems with concurrency, and parallelism. A set of routines have been developed at
UWO to serve as the basis for a manufacturing simulation. The routines will support a number of
various Petri net functions. The basic operation of the Petri net may be simulated. As well the
EOR transitions will also be modelled. An attempt has been made to add colors to the tokens,
but at the present there is insufficient information (i.e., no references) to verify the implementa-
tion.
The routines have been written in a user friendly way to allow simple application interface.
Places and Transitions are specified with textual names. A brief theory of petri nets follows.
These are like state diagrams, except multiple states can be active at the same time.
Other techniques, such as GRAFCET, are based on Petri nets.
20.2 A BRIEF OUTLINE OF PETRI NET THEORY
There are four basic elements in a petri net; places, transitions, arcs, and tokens. If we are to
think in terms of a factory, tokens are equivalent to work parts. Arcs are the paths the work will
follow through the factory. Places are buffers where parts are stored temporarily, and transitions
are equivalent to machines where the parts are used to make new parts.
page 538
The basic operation is that tokens are introduced to the network, and then transitions are fired
in different orders, and thus tokens are created and destroyed at the transitions. The example
below follows the petri net for a few cycles. The first figure shows the Petri Net with the initial
markings.
Token Place Arc Transition
stock from
inventory
stock from
supplier
stock from
cutter
feeder hopper
Bolt Maker Nut Maker
Bolt Hopper
Nut Hopper
Screwing Machine
Finished Part
Petri Net Model
page 539
this transition was fired
this transition was fired
page 540
The reader should note that there are a few interesting properties found in Petri nets.
Transitions are fired when all of their inputs are satisfied, and the user specifies that transi-
tion.
Most analysis of petri nets uses random firings of the transitions to obtain statistical perfor-
mance.
Other basic references to the petri net theory are available in Peterson [1981] and Reisig
[1985].
20.3 MORE REVIEW
Ideal for parallel control problems
this transition was fired
page 541
Token - Indicates place active (control)
Place - Indicates part of a system state (as before). If there is a token
here, the place is valid, or active.
Transition - This will wait until all inputs have a token. Those tokens
are destroyed and new tokens are put into all the outputs
e.g. An example of basic operation
The Petri Net (with no tokens)
page 542
Initial State : The tokens are added below, based upon the system
Step 1 : One of the states gives up a token (this is arbitrary and depends on the state)
transition
condition
fires
Step 2 : Another state gives up a token (again arbitrary)
In this case the transition can fire because both
input places now have tokens, we are only wait-
ing for the condition to occur.
page 543
Basic logic functions are shown below,
Step 3: Here the conditions of the transition are met. The two input tokens are con-
sumed and a new token is created for the output place.
This continues on indefinitely.........
Step 4: We see the condition for the transition met.
page 544
We can model various logic functions with Petri nets,
state machines (only 1 input/output on transitions)
action
if/wait
(state transition)
synchronize
loop/repeat
or
regulator
exclusive or
and
page 545
Reachability allows us to determine if a state (set of places) is possible given an initial con-
dition.
Boundedness determines whether the number of states will be controlled, or grow/shrink.
Deadlock and liveliness - will the controller find itself unable to continue.
Recirculator - keeps only one action at a time
Or - one or the other input will start the process
If - this state can chose to send the token on either arc
And - Both inputs must be present to fire
Parallel - both processes will run in parallel at the same time
page 546
The procedure for producing ladder logic and other programs from the Petri Nets, is identi-
cal to producing Ladder Logic for SFC diagrams.
page 547
e.g. Petri Net for a single cup coffee maker
Try:
1. Add a coffee strength selection to the Petri Net.
2. Draw the petri net above using a Parallel Process Flowchart
3. Develop some ladder logic for the petri net diagram
start
grinder
stop
grinder
drop cup
start water
heater
heater off
filter
coffee
pour
coffee
start
cleaning
cleaning
off
money
added
3 sec delay temp. sensor
10 sec delay
cleaning done
cup removed
page 548
Petri nets have been used for the modeling, control and validation of the control model
[Teng and Black, 1988]
20.4 USING THE SUBROUTINES
20.4.1 Basic Petri Net Simulation
The subroutines are applied in a methodical manner. Before the user can integrate the subrou-
tines into their program, they must draw out the petri net, and label all places and transitions. The
example given above is illustrated below.
After these labels are determined, they are defined using the petri net subroutines. The arcs in
the petri net are also defined in the program. There are defined with respect to the transitions. That
is to say that an arc is an input to, or output from a transition. After the petri net structure has been
defined, tokens may be placed in the places of the net. The tokens are as given in the previous
example.
p1
p3
p4
p5 p2 t1 t2
t3
t4
page 549
The transitions are then selectively fired in the net, by function calls in the program. This pro-
gram also has calls to functions which print the petri net structure after each transition. The code
is show below for the example above.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include global.h
#include petri.h
int test1()
/*
* BASIC TEST NET (Peterson book, 1981, pg. 19)
*/
{
static int error;
static struct petri_net net;
static int p1, p2, p3, p4, p5;
static int t1, t2, t3, t4;
error = petri_init(&net);
p1 = petri_place(&net, p1);
p2 = petri_place(&net, p2);
p3 = petri_place(&net, p3);
p4 = petri_place(&net, p4);
p5 = petri_place(&net, p5);
t1 = petri_transition(&net, t1);
t2 = petri_transition(&net, t2);
t3 = petri_transition(&net, t3);
t4 = petri_transition(&net, t4);
petri_input(&net, p1, t1, 1);
petri_input(&net, p2, t2, 1);
petri_input(&net, p3, t2, 1);
p1
p3
p4
p5 p2
t1
t2
t3
t4
page 550
petri_input(&net, p4, t2, 1);
petri_input(&net, p4, t3, 1);
petri_input(&net, p4, t3, 1);
petri_input(&net, p5, t4, 1);
petri_output(&net, p2, t1, 1);
petri_output(&net, p3, t1, 1);
petri_output(&net, p4, t1, 1);
petri_output(&net, p4, t1, 1);
petri_output(&net, p2, t2, 1);
petri_output(&net, p5, t3, 1);
petri_output(&net, p3, t4, 1);
petri_output(&net, p4, t4, 1);
petri_add_tokens(&net, p1, 1);
petri_add_tokens(&net, p4, 2);
petri_add_tokens(&net, p5, 1);
petri_print(&net);
petri_event(&net, t4);
petri_print(&net);
petri_event(&net, t1);
petri_print(&net);
petri_event(&net, t3);
petri_print(&net);
return error;
}
As can be seen this method of implementation is very simple. The user is able to define a
number of nets, and refer to transitions and places by name.
20.4.2 Transitions With Inhibiting Inputs
In some cases we want to prevent a transition from firing. To do this, the idea of inhibiting
inputs has been proposed. If a transition has an inhibiting input from a place, that has any tokens
in it, then the transition cannot fire. Otherwise the transition may fire normally. A sample net has
been devised for this case, it is seen below.
page 551
The program below shows that the inhibiting input is simply defined when the arc is defined.
int test2()
/*
* INHIBITED TEST NET (Peterson book, 1981, pg. 196)
*/
{
static int error;
static struct petri_net net;
static int p1, p2, p3, p4, p5, p6;
static int t1, t2, t3, t4;
error = petri_init(&net);
p1 = petri_place(&net, p1);
p2 = petri_place(&net, p2);
p3 = petri_place(&net, p3);
p4 = petri_place(&net, p4);
p5 = petri_place(&net, p5);
p6 = petri_place(&net, p6);
t1 = petri_transition(&net, t1);
t2 = petri_transition(&net, t2);
t3 = petri_transition(&net, t3);
t4 = petri_transition(&net, t4);
petri_input(&net, p1, t1, 1);
petri_input(&net, p2, t2, 1);
petri_input(&net, p3, t2, 1);
petri_input(&net, p5, t3, 1);
petri_input(&net, p3, t4, INHIBIT);
petri_input(&net, p4, t4, 1);
petri_input(&net, p6, t4, 1);
Inhibiting input
p1
p2
p3
p4
p5 p6
t1
t2
t3
t4
page 552
petri_output(&net, p1, t1, 1);
petri_output(&net, p3, t1, 1);
petri_output(&net, p2, t2, 1);
petri_output(&net, p4, t3, 1);
petri_output(&net, p5, t3, 1);
petri_output(&net, p6, t4, 1);
petri_add_tokens(&net, p1, 1);
petri_add_tokens(&net, p2, 1);
petri_add_tokens(&net, p5, 1);
petri_add_tokens(&net, p6, 1);
petri_print(&net);
petri_event(&net, t1);
petri_print(&net);
petri_event(&net, t3);
petri_print(&net);
petri_event(&net, t4);
petri_print(&net);
petri_event(&net, t2);
petri_print(&net);
petri_event(&net, t4);
petri_print(&net);
return error;
}
20.4.3 An Exclusive OR Transition:
The inhibitory inputs are complimentary to the exclusive or function. Thus another research
proposed an Exclusive or transition which will fire when one (and only one) input is from a place
with tokens. An example of a problem using this, a ring shift register was modelled. This net is
modelled as shown below.
page 553
In this example the EOR transition is marked with a plus in a circle (at t7). When run, a
token will appear in p1, p3, and p5 in a repeating cycle. The program to set this up is seen below.
int test3()
/*
* EOR TEST NET (Peterson book, 1981, discussed pg. 190)
* This is for a single bit shifter
*/
{
static int error;
static struct petri_net net;
static int p1, p2, p3, p4, p5, p6, p7, p8, p9, p10;
static int t1, t2, t3, t4, t5, t6, t7;
error = petri_init(&net);
p1 = petri_place(&net, p1);
p2 = petri_place(&net, p2);
p3 = petri_place(&net, p3);
p4 = petri_place(&net, p4);
p5 = petri_place(&net, p5);
p6 = petri_place(&net, p6);
p7 = petri_place(&net, p7);
p8 = petri_place(&net, p8);
p9 = petri_place(&net, p9);
p1
p2
p3
p4
p5
p6
p7
p8 p9
p10
t1
t2 t3
t4 t5 t6
t7
EOR transition
page 554
p10 = petri_place(&net, p10);
t1 = petri_transition(&net, t1);
t2 = petri_transition(&net, t2);
t3 = petri_transition(&net, t3);
t4 = petri_transition(&net, t4);
t5 = petri_transition(&net, t5);
t6 = petri_transition(&net, t6);
t7 = petri_transition(&net, t7);
petri_input(&net, p6, t1, 1);
petri_input(&net, p7, t1, 1);
petri_input(&net, p2, t2, 1);
petri_input(&net, p7, t2, 1);
petri_input(&net, p4, t3, 1);
petri_input(&net, p7, t3, 1);
petri_input(&net, p1, t4, 1);
petri_input(&net, p3, t5, 1);
petri_input(&net, p5, t6, 1);
petri_input(&net, p8, t7, 1);
petri_input(&net, p9, t7, 1);
petri_input(&net, p10, t7, 1);
petri_output(&net, p1, t1, 1);
petri_output(&net, p3, t2, 1);
petri_output(&net, p5, t3, 1);
petri_output(&net, p2, t4, 1);
petri_output(&net, p8, t4, 1);
petri_output(&net, p4, t5, 1);
petri_output(&net, p9, t5, 1);
petri_output(&net, p6, t6, 1);
petri_output(&net, p10, t6, 1);
petri_output(&net, p7, t7, 1);
petri_type_transition(&net, t7, EOR);
petri_add_tokens(&net, p1, 1);
petri_print(&net);
petri_event(&net, t4);
petri_print(&net);
petri_event(&net, t7);
petri_print(&net);
petri_event(&net, t2);
petri_print(&net);
petri_event(&net, t5);
petri_print(&net);
petri_event(&net, t7);
petri_print(&net);
petri_event(&net, t3);
petri_print(&net);
petri_event(&net, t6);
petri_print(&net);
petri_event(&net, t7);
petri_print(&net);
return error;
}
page 555
20.4.4 Colored Tokens
This section should be considered incorrect. The theory has not been found, although the
approach should adhere to the concept. The concept is that each token may now have a color, and
a second bit of private information. If a transition is specified to be colored, it will only fire if
tokens of the specified color are available at the inputs. The subroutines will then require that the
user supply a new set of instance information so that new tokens may be issued.
The net used has tokens of mixed colors in it, an is seen below.
The code is shown below. The reader should note that a second subroutine is used. This is
done because there is a bit of code which would be repeated for each update of tokens at the tran-
sition.
int test4()
/*
* COLOR TEST NET (Assumed for now)
* Two consumers of different colors and one input. The instances of tokens
* are kept track of.
*/
p1 p2
p3
t1 t2
page 556
{
static int error, i;
static struct petri_net net;
static int p1, p2, p3;
static int t1, t2;
static int color1 = 1, color2 = 2;
static int instance[20], instance_pnt;
error = petri_init(&net);
p1 = petri_place(&net, p1);
p2 = petri_place(&net, p2);
p3 = petri_place(&net, p3);
t1 = petri_transition(&net, t1);
t2 = petri_transition(&net, t2);
petri_input(&net, p1, t1, 1);
petri_input(&net, p3, t1, 1);
petri_input(&net, p2, t2, 1);
petri_input(&net, p3, t2, 1);
petri_output(&net, p1, t1, 1);
petri_output(&net, p2, t2, 1);
petri_type_transition(&net, t1, COLORED);
petri_type_transition(&net, t2, COLORED);
for(i = 0; i < 20; i++) instance[i] = i;
instance_pnt = 0;
petri_add_color_token(&net, p1, color1, instance[instance_pnt]);
instance_pnt++;
petri_add_color_token(&net, p2, color2, instance[instance_pnt]);
instance_pnt++;
petri_add_color_token(&net, p3, color1, instance[instance_pnt]);
instance_pnt++;
petri_add_color_token(&net, p3, color2, instance[instance_pnt]);
instance_pnt++;
petri_print(&net);
sub4(&net, t2, color1, instance, &instance_pnt);
petri_print(&net);
sub4(&net, t1, color1, instance, &instance_pnt);
petri_print(&net);
sub4(&net, t1, color1, instance, &instance_pnt);
petri_print(&net);
sub4(&net, t2, color2, instance, &instance_pnt);
petri_print(&net);
return error;
}
int sub4(net, transition, color, instance, instance_pnt)
struct petri_net *net;
int transition, color, *instance, *instance_pnt;
page 557
{
static int error, i, list[20], n, outputs;
error = ERROR;
if(petri_in_event(net, transition, color) == NO_ERROR){
if(petri_get_consumed(net, transition, &color, list, &n, &outputs) ==
NO_ERROR){
for(i = 0; i <= n; i++) instance[list[i]] = -1000;
if(petri_set_produced(net, transition,
&(instance[*instance_pnt]),outputs) == NO_ERROR){
*instance_pnt += outputs;
error = petri_out_event(net, transition);
}
}
}
return error;
}
20.4.5 RELATIONAL NETS
Relational nets will use various firing rules for each transition. This is by far the most useful
for varied manufacturing conditions. An example is seen below.
page 558
This may be seen in the fifth test subroutine in the program.
20.5 C++ SOFTWARE
At present there is one data structure used which holds structures for Places and for Transi-
tions. Arc information is stored (redundantly) in both. These are defined when a Place or Transi-
tion number is requested for one that does not exist. Each place and transition have reference
numbers, which are used by all other net functions.
a
a b
b
a
a
b
b
b
a
b
p1
p2
p3
p4
t1
b
a b
b
a
a
b
b
b
a
b
p1
p2
p3
p4
t1
a
a
b
b
a
a
b
b
b
a
b
p1
p2
p3
p4
t1
fired with rule 1
fired with rule 2
a
b
page 559
The software is still undergoing development, and testing, thus a list of functions would be
premature.
20.6 IMPLEMENTATION FOR A PLC
Consider the example of a parts buffer. Parts enter the buffer and are added to the top of the
stack. The part at the bottom of the stack is checked and sorted (ejected differently) based on a
quality check.
page 560
This can be implemented in ladder logic, but unlike the sequential techniques, there may be
multiple tokens in the places, so counters are used to keep track of token counts.
keep
alive
part not
entering
sorter
part enters
sorter
part waiting
waiting for
for next
part at
bottom
of sorter
part check
eject bad
eject
part ejected
P1
good
part good
part not good
no part at
bottom of
sorter
P2
P3
P4
P5
P6
P7
P8
T1
T2
T3
T4
T5
T6
page 561
MOV
source 1
dest. CNT C5:1.ACC
first scan
RES
RES
RES
RES
RES
C5:2
C5:3
C5:4
C5:5
C5:8
GRT
source A C5:4.ACC
source B 0
eject bad
GRT
source A C5:4.ACC
source B 0
eject good
RES
RES
C5:6
C5:7
page 562
GRT
source A C5:3.ACC
source B 0
CTU
C5:4
CTD
C5:3
part good
GRT
source A C5:2.ACC
source B 0
CTD
C5:2
CTD
C5:6
CTU
C5:3
GRT
source A C5:6.ACC
source B 0
GRT
source A C5:3.ACC
source B 0
CTU
C5:5
CTD
C5:3
part good
GRT
source A C5:1.ACC
source B 0
CTD
C5:1
CTU
C5:2
CTU
C5:7
part entering
page 563
For practice,
GRT
source A C5:7.ACC
source B 0
CTU
C5:1
CTD
C5:7
part entering
GRT
source A C5:8.ACC
source B 0
CTU
C5:6
CTD
C5:8
part at sorter bottom
GRT
source A C5:5.ACC
source B 0
CTU
C5:8
CTD
C5:5
GRT
source A C5:4.ACC
source B 0
CTU
C5:8
CTD
C5:4
page 564
20.7 PRACTICE PROBLEMS
1. Develop a Petri net to control a part sorting station. Parts enter on a conveyor belt and are
detected by a proximity sensor. The part can then be checked with a vision system that will signal
to the PLC that the part is good/bad. There are then two cylinders that can eject the part into a
good or bad bin.
turn the coffee machine petri net diagram into ladder logic
page 565
20.8 REFERENCES
Peterson, J.L., Petri Net Theory and the Modelling of Systems, Prentice-Hall, Inc., N.J.,
U.S.A., 1981.
Reisig, W., Petri Nets; An Introduction, Springer-Verlag, 1985.
page 566
21. PRODUCTION PLANNING AND CONTROL
21.1 OVERVIEW
A design must be converted to a process plan before it may be produced.
But, if we have thousands of process plans, and hundreds of customer orders, with dozens
of parts in each, which machines do we use when to make the products? What parts do we need?
Traditionally jobs have been scheduled on a first come, first served basis. This resulted in a
lineup of various jobs waiting to be done at each work center.
When jobs are not scheduled efficiently, we often will get jobs sitting half completed, while
we wait for simple parts to be processed. This costs money, wastes time, takes up floor space,
makes the customer unhappy, etc.
Eventually computers were used to figure out how to schedule jobs so that parts were made
before they were needed, and so that work was done on time.
As computers were used more it also became obvious that strict schedules were a nice idea,
but they dont work. A schedule is only valid until the first breakdown.
Newer control programs called Production Planning and Control (PPC) systems were used
to generate schedules, and fix problems that came up.
Most systems, manual, and automatic either push, or pull the work through the factory. If
the work is pushed, then customer orders tend to drive the production. If the work is pulled, the
factory often tries to satisfy some continuous demand, and when things are about to run out, more
is produced.
page 567
Regardless of which system is used, Scheduling is not exact, and never optimal, but you can
get a near optimal schedule with the right tools and methods.
Some of the traditional Production, Planning and Control subject include,
1. Forecasting - Estimating the production demands using a horizon of a few month to a
few years for long range planning.
2. Production Planning - Matching needed production to available resources.
Note: This is more of a CIM topic.
21.2 SCHEDULING
We often know well in advance what has to be produced
We can use computer programs to come up with a near perfect schedule for all jobs, ahead
of time.
These methods at the present time are not well enough developed to handle sudden disrup-
tions on the shop floor (See next section on Shop Floor Control).
Schedules are often made up weekly
*************** ADD DETAILS FOR MRP I and MRP II
21.2.1 Material Requirements Planning (MRP)
page 568
This is one very popular approach to planning
Uses Master Production Schedules to determine how much of each product should be pro-
duced within given periods. Master Production Schedules are based on customer, or projected
demand.
The elements used by MRP to plan are,
- Master Production Plan (Schedule)
- On-hand inventories
- Bill of Materials
- Current of Purchased and Manufactured Orders
- Rules for each part produced (including WIP)
The rules about each step in production include,
- Lead time
- Order quantity per final part
- Scrap rate
- Buffer stock quantity
- etc.
MRP then tries to determine quantities required using the data input from the users, and a
set of rules, such as,
- Fixed Order Quantity - Product are produced as required using a prespecified lot size.
- Economic Order Quantity - The cost of carrying inventory is weighed off against the cost
of setup for one production run.
- Lot for lot - Lots are produced as required, any batch size.
- Fixed-period Order Quantity - Produce parts to cover more than a single order.
Lot sizes required are subtracted from available stocks.
The required production quantities are used to order from suppliers, etc, while considering
lead times, and delays.
You should note that this approach is concerned more with inventory minimization than
with utilization of machines.
page 569
While this system can lead to easy production scheduling, it is susceptible to errors in
BOMs, routings, etc.
Advantages,
- improved Customer Service
- better Scheduling
- reduced inventory
- reduced component shortages
- reduced manufacturing costs
- reduced lead times
- higher production quality
- less scrap, and rework
- higher morale in production
- improved communication
- improved plant efficiency
- improved competitive position
- improved coordination of marketing and finance
MRP II (Manufacturing Resources Planning) - A closed-loop MRP system that, at a mini-
mum, includes detailed capacity analysis (see next section). Some MRP II systems include the
business plan in the closed-loop system.
21.2.2 Capacity Planning
While MRP is concerned with determining how much should be produced, it is not con-
cerned with how to produce it.
Capacity planners attempt to determine how to assign jobs to machines, people, etc.
Information used by capacity planners includes,
- Planned orders (from MRP)
- Orders in process (order status)
- Routings, including setup and run time (from process plans)
page 570
- Available facilities
- Workforce availability
- Subcontracting potential
There are some strategies used by the Capacity Planner to Assign jobs to machines,
- Splitting of lots (batches) across identical machines
- Splitting of lots to expedite a smaller quantity
- Sequencing of lots to minimize setup times
- Alternative routings that require different resources
- Loading a facility by weight, volume, etc. (eg. heat treating)
After jobs have been assigned to machines, the capacity of the machines must be consid-
ered.
21.3 SHOP FLOOR CONTROL
No factory is perfect, and a schedule can become invalid at any time because of,
- Machine breakdown
- Sudden material shortage
- Workforce vacancy
- Tool breakage
- etc.
What to do about it,
- Wait and See
- Try to find alternative production plans/parts
- Ask engineering for replan
- Bump other jobs
- ?????
21.3.1 Shop Floor Scheduling - Priority Scheduling
Instead of scheduling before production (MRP and Capacity planning), a manufacturer may
page 571
opt to do scheduling on the fly.
Some of these methods include,
- Earliest operation due date - soonest date. This gives time until due, but ignores process-
ing time.
- Order Slack - soonest date minus processing time. This gives the amount of time to play
with.
- Shortest operation first - Do the quickest jobs first. This just clears out WIP faster.
21.3.2 Shop Floor Monitoring
It is important to know what is happening on the factory floor.
To do this we must pay attention to obvious problems like machine operation, and hidden
problems such as quality, and production quantities.
Inspection covers a number of areas,
- Inspection of raw materials
- Inspection of manufactured product
- preprocess
- in-process
- post process
- Inspection of production process parameters
- tools
- fixtures
- production machinery
- Verification/calibration
- inspection fixtures
- Inspection gauges
- Inspection machinery
page 572
22. SIMULATION
Some complex systems cant be modeled because of,
- random events
- changing operating conditions
- too many interactions
- exact solutions dont exist
Simulation is used to determine how these systems will behave
Simulation typically involves developing a model that includes discrete stations and events
that occur with some probable distribution.
We can then examine the simulation results to evaluate the modeled system. Examples
include,
- machine utilization
- lead time
- down time
- etc.
This is a very effective tool when considering the effect of a change, comparing decision
options, or refining a design.
Some simulation terms include,
System - the real collection of components
Model - a reasonable mathematically (simpler) representation of the system
State - the model undergoes discrete changes. A state is a snapshot of the system
Entity - a part of the system (eg machine tool)
Attributes - the behavior of an entity
Event - something that changes the state of a machine
Activity - when an entity is going through some activity. (eg, press cycling)
Delay - a period of time with no activity
Good approach to simulation,
1. Determine what the problem is
2. Set objectives for the simulation
page 573
3. Build a model and collect data
4. Enter the model into a simulation package
5. Verify the model then check for validity
6. Design experiments to achieve goals
7. Run simulations and collect results
8. Analyze and make decisions
22.1 MODEL BUILDING
If we are building a model for a plant floor layout, we will tend to have certain elements,
- material handling paths (transfer)
- buffers/waiting areas (delays)
- stock rooms (source)
- shipping rooms (destination)
- machine tools (activities)
Some of these actions can be stated as exact. For example, a transfer time can be approxi-
mated and random (manual labor), or exact (synchronous line), or proportional to a distance.
Some events will occur based on availability. For example, if there are parts in a buffer, a
machine tool can be loaded and activity occurs.
Some activities and events will be subject to probabilities. Consider that the operation time
in a press may vary, and there is probability of scrapping a part.
The random variations can be modeled as,
- discrete - for individual units
- continuous for variations
Well known distributions include,
page 574
Normal/Gaussian
Probability Density Cumulative Probability
1
0.5
0
mean mean
Poisson/Exponential
Probability Density Cumulative Probability
1
0
page 575
This data may be found using data provided by the manufacturer, sampled in-house, etc.
22.2 ANALYSIS
To meet goals, simple tests may be devised. These tests should be formulated as hypotheses.
We can then relate these to the simulation results using correlation.
Uniform
Probability Density Cumulative Probability
1
0.5
0
mean mean
Normal/Gaussian
Probability Density Cumulative Probability
1
0
mean mean
page 576
Simulation software will provide information such as,
- production rates
- machine usage
- buffer size
- work in process
22.3 DESIGN OF EXPERIMENTS
WHAT? combinations of individual parameters for process control are varied, and their
effect on the output quality are measured. From this we determine the sensitivity of the process to
each parameter.
WHY? Because randomly varying individual parameters takes too long.
e.g. A One-Factor-At-A-Time-Experiment
cov x
i
x
( ) y
i
y
( )
y
=
corr
cov
y
------------ =
where,
cov = covariance of data sets x and y
corr = correllation of sets x and y
corr = 1 completely related
corr = 0 no relationship
corr = -1 inversely related
page 577
The example shows how the number of samples grows quickly.
A better approach is designed experiments
e.g. DESIGNED EXPERIMENT for springs in last section
Effect: We are finding the causes of cracks in steel springs.
Causes:
1. Steel temperature before quenching 1450F or 1600F
2. Carbon Content .5% or .7%
3. Oil quench temperature 70F or 50F
Experiments 1 and 2:
Run 1:
1. 1450F
2. 0.5%
3. 70F
yield(%) 72 70 75 77, X=73.5%
Run 2:
1. **1600F
2. 0.5%
3. 70F
yield(%) 78 77 78 81, X=78.5%
Observation: 1600F before quench gives higher yield.
Run 3:
1. 1600F
2. **0.7%
3. 70F
yield(%) 77 78 75 80, X=77.5%
Observation: Adding more carbon has a small negative effect on yield.
Run 4:
1. 1600F
2. 0.5%
3. **50F
yield(%) 79 78 78 83, X=79.5%
Observation: We have improved the quality by 6%, but it has required 4 runs,
and we could continue.
page 578
- set up orthogonal array
Run
1
2
3
4
5
6
7
8
1.
1450
1600
1450
1600
1450
1600
1450
1600
2.
0.5
0.5
0.7
0.7
0.5
0.5
0.7
0.7
3.
50
50
50
50
70
70
70
70
Yield%
79 78 78 83
72 70 75 77
78 77 78 81
77 78 75 80
Ri = X
79.5
73.5
78.5
77.5
Note the binary sequence
- Find effects of each factor
Main Effect Average at High ( ) Average at Low ( ) =
Main Effect of A
R
2
R
4
R
6
R
8
+ + + ( )
4
------------------------------------------------
R
1
R
3
R
5
R
7
+ + + ( )
4
------------------------------------------------ =
Main Effect of B
R
1
R
2
R
5
R
6
+ + + ( )
4
------------------------------------------------
R
3
R
4
R
7
R
8
+ + + ( )
4
------------------------------------------------ =
Main Effect of C
R
1
R
2
R
3
R
4
+ + + ( )
4
------------------------------------------------
R
5
R
6
R
7
R
8
+ + + ( )
4
------------------------------------------------ =
- these can be drawn on an effect graph
Yield
%
A- A+ B- B+ C- C+
page 579
22.4 RUNNING THE SIMULATION
When a simulation is first run it will be empty. If it is allowed to run for a while it will settle
down to a steady state. We will typically want to,
- run the simulation for a long time
- or, delay the start of data collection
- or, preload the system will parts
22.5 DECISION MAKING STRATEGY
The general sequence of thought when making decisions is,
- purpose
- direction
- plans
- action
- results
General properties of strategy include,
- time horizon
- impact
- concentration of effort
- patterns of decisions
Problem area
page 580
- pervasiveness
The levels of strategies include,
- corporate
- business
- departmental/functional
Decisions can be categorized,
hardware/fixed
- capacity
- facilities
- technology
- vertical integration
software/flexible
- workforce
- quality
- production planning/material control
- organization
Typical criteria for making decisions might include,
- consistency
- harmony
- contribution
page 581
23. PLANNING AND ANALYSIS
23.1 FACTORS TO CONSIDER
There are a number of factors in a company which must be considered when evaluating the
need for CAD/CAM/CAE/CIM/etc systems. Some of these are listed below,
external
- company crisis
- markets Niche/Global/Home/ etc.
- competition
- customer requirements
internal
- corporate objectives, mission and culture
technological
- available technology
- research & development
success factors
- the role of management
- worker security
- corporate organization
- unions
- middle management
- worker motivation
- training / worker abilities
- cash
- purchasing
- design engineering
- etc.
Current popular planning strategies include,
Cost management
- direct costing
- effective capital investments
- space utilization
Cycle time reduction
- continuous flow manufacturing and vendor supply
- pull manufacturing
page 582
- business and process reengineering
Market driven quality
- defining market needs
- first to market
- agile manufacturing
- 6 sigma quality
Automation
- process
- warehouse
- information
CIM
- simplifying and automated processes
- increased information access
We can draw a chart that illustrates the issues that might be encountered,
Structure Infrastructure
Micro
Macro
fiscal/tax
monetary
trade
industrial
capital market
political structure
labor organization
culture
tradition
religion
values
social behavior
business market
plant/equipment
- capacity
- location
- process technology
vertical integration
measure and control work-
force
vendors
management
capital budget
organization
page 583
23.2 PROJECT COST ACCOUNTING
When considering the economic value of a decision, one method is the payback period.
Simple estimates for the initial investment and yearly savings are,
There are clearly more factors than can be considered, including,
- changes in material use
- opportunity cost
- setup times
- change in inventory size
- material handling change
N
C
I
S
A
----- =
C
I
initial investment ($) =
where,
S
A
savings per year ($/yr) =
N payback period (years) =
C
I
C
E
I
S
=
where,
C
E
cost of new equipment =
I
S
revenue from sale of old equipment (salvage) =
S
A
L
0
H
0
L
1
H
1
( ) M
0
M
1
( ) + =
where,
L
0
L
1
, labor rate before and after =
H
0
H
1
, labor hours before and after =
M
0
M
1
, maintenance costs before and after =
page 584
The simple models ignore the conversion between present value and future value. (ie,
money now is worth more than the same amount of money later)
Quite often a Rate of Return (ROR) will be specified by management. This is used in place
of interest rates, and can include a companies value for the money. This will always be higher
than the typical prime interest rate.
So far we havent considered the effects of taxes. Basically corporate taxes are applied to
profits. Therefore we attempt to distribute expenses evenly across the life of a project (even
though the majority of the money has been spent in the first year). This distribution is known as
depreciation.
PW C
0
R
A
j
C
A
j
( ) P F i j , , ( ) [ ]
+ =
where,
PW present worth of the money (in todays dollars) =
R
A
j
Annual revenues (income) for year j =
C
A
j
Annual costs (expenses) for year j =
j j years in the future =
i interest rate (fractional) =
n number of years for consideration =
P F i j , , ( )
1
1 i + ( )
j
----------------- = P A i n , , ( ) P F i j , , ( )
1 i + ( )
n
1
i 1 i + ( )
n
--------------------------- = =
page 585
Methods for depreciation are specified in the tax laws. One method is straight line deprecia-
tion.
Consider an assembly line that is currently in use, and the system proposed to replace it.
The product line is expected to last 5 years, and then be sold off. The corporate tax rate is 50%
and the company policy is to require a 17% rate of return. Should we keep the old line, or install
the new one?
A B T B tax
rate
C ( ) B 1 tax
rate
( ) Dtax
rate
+ = = =
where,
A after tax cash ($/yr) =
B before tax cash ($/yr) =
D depreciation of equipment ($/yr) =
tax
rate
the corporate tax rate =
D
C
E
I
S
n
----------------- =
page 586
Current Manual Line:
- used 2000 hrs/yr with 10 workers at $20/hr each
- maintenance is $20,000/yr
- the current equipment is worth $20,000 used
Proposed Line:
- the equipment will cost $100,000 and the expected salvage value at the
end of the project is $10,000
- 2 workers are required for 1000 hours year at $40/hr each
- yearly maintenance will be $40,000
page 587
24. REFERENCES
Bollinger, J.G. and Duffie, N.A., Computer Control of Machines and Processes, Addison-Wesley,
1989.
Chang, T.-C., Wysk, R.A. and Wang, H.-P., Computer-Aided Manufacturing second edition,
Prentice Hall, 1991.
Kalpakjian, S., Manufacturing Engineering and Technology, Addison-Wesley (3rd. ed.), 1995.
page 588
25. APPENDIX A - PROJECTS
Objective: Students will learn how to design an integrated manufacturing system by selecting
and building a complete integrated system from beginning to end.
Method: The basic steps are outlined below,
1. Course begins
2. Students (individuals or groups) will submit a proposal for a project within the first
three weeks.
3. The instructor will review the proposal, and suggest changes as necessary.
4. During the term students will design, build and test their proposed projects.
5. In the last week of classes the final project will be demonstrated and formally presented.
25.1 TOPIC SELECTION
The following topics are some possible topics, in priority,
1. Projects for the workcell
a) Develop a computer program for scheduling.
b) Design and build a material handling station for the lab.
c) Develop a product information database
d) Develop a quality monitoring systems
e) Write a workcell control program (either C or Java)
2. Select a problem from a local company
3. Select a project based on your interests
a) Build a CMM that uses an arm with measured joint angles.
b) Design and build a robot.
c) Develop an idea of your own.
d) Design and build an NC machine.
25.1.1 Previous Project Topics
GVSU Workcell (Jenny Agnello, Tom Johnson, Colin Moore, Lisa Nahin, Jeremy
page 589
Scott) The material handling system at GVSU was designed to produce puzzles.
The heart of the system was an Allen Bradley SoftPLC and Devicenet. It con-
trolled a material handling system supplid by Worksmart Systems. The system
included a robot for loading/unloading the mill. A CNC mill for cutting the parts.
A vision system for inspecting the final parts. Various feeder and fixtures were
designed and build by students in EGR450.
Hole in Sphere Project (Alex Wong, Robert Krygier, Andre Cargnelli, Ahmed Nensey)
A mechanism will be designed and built for orienting spherical balls with small
through holes. This will be done with a mechanism that uses three rollers for orien-
tation, and an optical pair to detect the hole. An electromechanical control system
will be used.
Automated Robot Arm (Lev Mordichaev, Karl Fung, Dennis Ngo, Nikko Chan, Edwin
Wen, Elaine Rodrigues) A robot arm will be designed and built that can move up/
down, left/right, and has a gripper that will open/close. The robot will be con-
trolled via a computer program, and electrical connections to the robot.
A Manually Controlled Robot (Keith Lou, Sue Lee, Richard Dankworth, Phat N.
Huynh, Howie Lam, Tarius Makmur) To build a manually controlled robot to per-
form a certain task using a joystick for control. This small scale robot will be capa-
ble of picking up an object, and positioning it in another location. And, for proof of
concept, a set of fixtures, jigs or feeders will be constructed for a simple robotic
task. Note: This project has too many people for construction of a robot only.
A Box Sorting System (Joey Aprile, Don Christie, Gabe Fusco, Mike Poczo) A con-
veyor based system will be designed and built for sorting boxes by a switched con-
veyor path. This will include construction of the conveyor, sensors, actuators, and
control system.
Automated Drink Dispenser (Keith German, Dave Van Den Beld, Jeff Kempson, Brent
Rubeli, Michael Staples) Glasses on a conveyor belt will be transported to/from a
dispensing station where they will be filled by an automated mechanism. The sys-
tem will be designed and built, possibly using a PLC, or a PC for control.
Self Leveling Platform (Gerard Biasutto, Mario Borsella, Dino Farronato, Marco Gaet-
ano, John Yuem) An actuated system will be designed and built to level a platform
under tilting conditions. This will involve actuators positioned at four corners. A
control system will be constructed to drive the actuating cylinders.
Raytracing and Animation (Greg Squires, Ed Hoskins, Marie Malyj, Allan Zander, Tara
Hillebrandt) POVray was used to animate a sequence of images to illustrate a pipe
layout
NC Machining with SmartCAM (Neil Babcock) A fishing reel was designed. The reel
was cut on an NC machine using Smartcam software for programming.
A graphical computer program for flow analysis on PCs (James Barr) A computer pro-
gram was written to do an analysis of a sphere moving through a fluid.
Manufacturing Database (K. Beute, M. Mead) A manufacturing database will be devel-
oped that allows operators to call up machine configurations based on part num-
bers. This system uses an HMI to allow easy operator access.
Construction and control of Stiquito Robot (T. Cowan and J. Cummings) A kit for a
stiquito robot will be purchased and assembled. The appropriate interface electron-
ics and software will be written to control the robot.
page 590
Virtual Reality Modeling (N. Dunklin) VRML will be explored and used to implement a
3D model of a complex part. This will allow a user to explore the 3D world using a
simple internet browser.
Automatic Generation of CNC Programs (K. Gehrke) A computer program will be writ-
ten in C/C++ to automatically generate computer programs in C or C++ to cut ini-
tials in keytags.
Java Programming (N. Kaye) The Java language will be learned, and a program will be
written to cover some aspect of integration or automation.
Computer Based Analysis of Battery Discharge Data (R. Sietsema) A computer applica-
tion will be developed using Excel, and a scripting language, to allow a user to do
an analysis of battery discharge data.
Force Feedback Joystick (R. Serebryakov) A force feedback joystick will be designed
and built. It will be interfaced to a PC and controlled with Labview.
Design and Construction of Robot (S. Williams) A robot will be designed and built. The
robot will be interfaced to a computer for control.
25.2 CURRENT PROJECT DESCRIPTIONS
Name:
Title:
Description:
Deliverables:
page 591
26. APPENDIX B - COMMON REFERENCES
26.1 JIC ELECTRICAL SYMBOLS
The Joint International Committee (JIC) developed a standard set of symbols for representing
electrical circuit elements. These are given below:
disconnect circuit interrupter
breaker (3 phase AC)
normally open
limit switch
normally closed
limit switch
normally open
push-button
normally closed
push-button
double pole
push-button
mushroom head
push-button
F
Fuse
thermal
motor (3 phase AC)
(3 phase AC) (3 phase AC)
liquid level
normally open
liquid level
normally closed
vacuum pressure
normally open
vacuum pressure
normally closed
overload relay
page 592
26.2 NEMA ENCLOSURES
NEMA has provided a set of ratings for cabinets housing voltages less than 1000V AC. The
basic classifications are outlined below,
temperature
normally open
temperature
normally closed
flow
normally open
flow
normally closed
relay contact
normally open
relay contact
normally closed
relay coil
relay time delay on
normally open
relay time delay on
normally closed
relay time delay off
normally open
relay time delay off
normally closed
H1 H2 H3 H4
X1 X2
horn buzzer bell
control transformer
2-H
solenoid 2-position
hydraulic solenoid
R
indicator lamp
page 593
Type 1 - General purpose - indoors
Type 2 - Dirt and water resistant - indoors
Type 3 - Dust-tight, rain-tight and sleet(ice) resistant - outdoors
Type 3R- Rainproof and sleet(ice) resistant - outdoors
Type 3S- Rainproof and sleet(ice) resistant - outdoors
Type 4 - Water-tight and dust-tight - indoors and outdoors
Type 4X - Water-tight and dust-tight - indoors and outdoors
Type 5 - Dust-tight and dirt resistant - indoors
Type 6 - Waterproof - indoors and outdoors
Type 6P - Waterproof submersible - indoors and outdoors
Type 7 - Hazardous locations - class I
Type 8 - Hazardous locations - class I
Type 9 - Hazardous locations - class II
Type 10 - Hazardous locations - class II
Type 11 - Gas-tight, water-tight, oiltight - indoors
Type 12 - Dust-tight and drip-tight - indoors
Type 13 - Oil-tight and dust-tight - indoors
FACTOR
prevent human contact
falling dirt
liquid drop/light splash
airborne dust/particles
wind blown dust
liquid heavy stream/splash
oil/coolant seepage
oil/coolant spray/splash
corrosive environment
temporarily submerged
prolonged submersion
1
x
x
2
x
x
x
3
x
x
3R
x
3S
x
x
4
x
x
x
x
x
x
4X
x
x
x
x
x
x
x
5
x
x
x
6
x
x
x
x
x
x
x
6P
x
x
x
x
x
x
x
x
x
11
x
x
x
x
12
x
x
x
x
x
12K
x
x
x
x
x
13
x
x
x
x
x
x
*source Omron catalogs - check