You are on page 1of 14

IE 4230 - Systems Integration IE 4230 - Systems Integration

CNC Machining

CNC Machine

Continuous path motion control Closed loop (PID) control Components

Drive motors Position feedback Computer controller

Drive Motors

DC servo motors AC servo motors Stepper motors Hydraulic motors

Position Feedback

Incremental encoder Quadrature Absolute encoder Resolver Tachometer No feedback (open loop)

Mechanical Components

Ball screw Ball nut (anti-backlash) Ways Linear bearings


Desired path (p, v, a)

3-axis position control (encoder feedback) Velocity control (tachometer feedback) Torque control (current feedback) Linear interpolation Circular interpolation Complex path interpolation (contouring)

Path generator

CNC Programming


Write code directly Draw cutter path Draw the part Cutter path is generated



CNC Integration

Two Versions of DNC

Distributed Numerical Control

Program is stored in a computer Program is loaded to CNC machine and executed automatically CNC commands are individually transmitted from a computer to the CNC machine and executed immediately

Direct Numerical Control

Galil DMC Programming

All units are counts Independent axis movements Coordinated (vector mode) movements Typical sequence

Specify parameters Specify motion Begin motion After motion

Independent Axis Moves



2000 ppi in X and Y 10000 ppi in Z

PA position absolute PR position relative BG begin motion AM after motion ST stop motion


Sequence control

SP speed AC acceleration DC deceleration

Vector Mode Moves



VM vector mode plane VS vector speed VA vector acceleration VD vector deceleration

VP linear position

(from local origin) (rad, start, sweep)

CR circular arc

VE end sequence BGS begin sequence AMS after motion sequence

Sequence control

Galil Program Segment

Other Galil Statements



Begin with # 8 characters total #DRILL Begin with letter 8 characters total SAFEZ=8000

Line begins with REM Ignored during load Begin with label #MY_PROG End with EN

Program structure


Galil Subroutines

Jump to subroutine (by label) from main program: JS #MYSUB Place subroutine after main program When subroutine end (EN) is encountered, returns to main program just after JS statement One subroutine can be called many times