CPNC Product Requirements Doc
Posted by
Ron Ginger
on 2000-05-12 06:23:18 UTC
This is a first draft of a product requirements document for CPNC,
Conversationaly Programmed Numeric Control.
It is being distributed to the CAD_CAM_EDM_DRO mailing list to solicit
input before this project is written. It is planned that this effort
will
be conducted under the general license form known as GPL. Copyright of
this
document and the subsequent revisions are held by Ron Ginger. As with
all
GPL work this document and all the code derived from it may be freely
used for non-commercial use as long as this copyright remains attached.
The document specifies the functions that will be built into the first
version
of the software. Lines enclosed in [..] define optional features that
may
be incorporated if time or interest permits.
This spec is based on my experience writing a similar program under
Visual Basic
This effort should be viewed as a V2 improvement of that work. Please
refer to http://plsntcov.8m.com/CNH.html for some screen shots and
description
of that effort. CPNC will built on that base.
Scope
CPNC is complete package for the operation of a milling machine. It will
support the full process of designing a part and runing the machine
without
the need for any additional software beyond the operating suystem and
drivers.
Specifically, no CAD or CAM package is needed, and no use is required of
G-codes.
[It is desireable to allow the input of various input files (HPGL,
DXF,
G-code) and saving of files in G-code form.]
Environment
CPNC should run on Linux, Win95 or Win98 and MAC. To support this it
will
be written in a widely available languge probably Tcl/Tk. CPNC
will be a GUI environment, with 'hot keys' as needed to make it easy to
use.
The realtime portion of CPNC will depend on the o/s. Under Linux CPNC
will
interface to the EMC package and be able to drive servomotors or
steppers
as supported by EMC.
Under Win or Mac machine control will require an intelligent hardware
box.
The interface to the box is expected to be a serial port (RS232).
If FlashCut will open their spec a driver will be written for it. A
driver
will be written for Simple Step. [A driver to INDEXER.LPT is desireable]
CPNC is best considered a 2 1/2D program. It is not expected to make
full
3D contoured parts. It will be a config option to support only 2D
machines
which will present a dialog box to the user for all Z up or down
motions.
A major effort will be made to make the program as user configurable as
possible. All config options will be held in a clear text .ini file. [A
GUI to edit the config file (and error check it) would be usefull]
No assumption is made as to metric or english. A units/step config param
will let the user adjust values.
Operation
The main screen of CPNC will have 4 major areas:
A program list box where the program steps are added
A graphic window to show the part being programmed
A set of command buttons to select objects
A control area for display of feeds, tool in use, etc
To use CPNC a user will build a part program by selecting from various
common elemnets, line, arc, circle, rectangle, etc. Each selected
feature will open a dialog box where the feature is specified by fillng
in
blanks. When complete the <USE> button is pressed to add this element to
the program.
A user may add to the end of the program, insert or delete items, or
edit
previously defined items. As the program is built it will be listed in a
text box on the screen.
As the part is built a graphical window will display the part being
generated.
A status area will show modal parameters like tool diameter, feed rate,
and a DRO position indicator of the 'current point'.
When the part is complete, a <RUN> button is selected to open a manual
control
window. The operator may manually move the motors and set a coordinate
reference point. When ready the user will push <OK> and the entire part
will
be run.
While the part is running the user could press an <E-STOP> button to
stop
operation. The graphic screen will be updated as the part is running to
show
current tool position.
The user may save programs to disk, and load previously saved programs.
The
format of the saved files will be unique to CPNC.
Objects or Features
The user will be offered a series of butons to select the elements of
the
program. The following list details the planned elements.
In all text boxes where a numberic entry is expected a simple expression
may be entered- ie if a diameter is known but the box is asking radius
the
user can enter 123.45/2. The value will be calculated and stored, the
expression is not saved. [It would be nice to allow these expressions to
include
trig functions.]
XY Point entry may also be made from a 'learn' operation. The user
presses a
key and the manual move screen will open. He may move the machine around
to
any point, then hit <OK> to return that point to the program. Note this
mode
is usefull when modifying existing parts. The mill becomes in effect a
coordinate measuring machine to pick off points from the object.
Note that all object geometry is entered in real part dimensions, tool
offset is calculated as the part is run based on the tool setting in
effect.
Tool
Sets the current tool diameter and type. This is modal, remains in
effect
until a new Tool command is entered. A Z value for tool up above
the work is set. A feed rate can be set here that will apply to all
following objects. When this command is run a dialog box opens to tell
the
operator to change tools, and allows manual control of the Z axis and a
reset of the Z reference.
Position/Drill
Go to a specified XY point and drill a hole. Plunge and Peck drillng is
provided. Dialog box opens with the current XY value loaded.
Line
Specify the start and end point XY values. The dialog box opens with the
start values taken from the current point (same as the end point of a
previous
line command). Cutter path can be chosen from LEFT, CENTER, RIGHT.
Rectangle
Specify the center XY, Height(y) and Width(x) and a tilt angle. Allows a
corner
radius to be specified to make slots. Suports options to mill out the
rectangle
as a pocket, or simply to make a frame cut around the rectangle. Cutter
path
can be chosen from LEFT, CENTER, RIGHT.
Circle
Specify the center XY, and radius. Supports a pocket cut to clean out
the
entire area inside the circle, or cutter path can be chosen from LEFT,
CENTER,
RIGHT. Also support a 'ring' operation to cut inside one circle but
leaving
an island in the center.
Arc
Specify the center XY, and radius, and start and end points. Start and
end
can be either XY values or angle values. Cutter path can be chosen from
LEFT,
CENTER, RIGHT.
Bolt Circle
Specify the center XY, and radius, and start and end points and number
of
holes. May be stored a s a single operation or can be 'exploded' into a
series of independent holes. This is usefull when you want an array, but
one
hole is missing. Specify peck or plunge drill.
Hole Array
Specify the center XY, Height(y) and Width(x) and a tilt angle. Select
either a frame of holes or an entire array. Selct number of holes on
each
axis. May be stored a s a single operation or can be 'exploded' into a
series of independent holes. Specify peck or plunge drill.
Line of Holes
Specify start and end points of a line, and number of holes to drill.
Specify peck or plunge drill. May be useful to allow explode as above.
Text
Specify the XY point of the start of a line of text. Select text size.
Support at least a simple block font, would be nice to allow a
selection
of fonts. [would be nice to allow text to be based on an arc or circle]
Pause
Insert a pause into the run. Usefull to allow moving a clamp. Accepts
a line of text to be displayed in a dialog box when the pause runs.
Repeat
Select a range of program lines by number to repeat. Specify an offset
XYZ value to offset each repeat loop. This creates a 'step and repeat'
operation for making multiple identical parts. Z only offset is usefull
to
make multiple passes around a set of points, each going deeper into the
work.
The Repeat function takes effect at program time, adding all the steps
into
the program then. Once completed the steps all appear as independent
steps,
hence a repeat cannot be simply deleted, all of its steps must be
deleted.
Rotate
Select a range of program lines by number to repeat. Specify a rotation
center and angle of rotation. This creates a wheel and spoke
arrangement.
As with Repeat the effect is at program time.
Mirror
Select a range of program lines by number to mirror. Specify a line of
rotation. Mirror all the items around this line.
As with Repeat the effect is at program time.
Blend
Used as in insert between previously entered lines or line and arc.
Specify a blend radius. Assume tool offset from previous object.
Blend will alter the end and start points of the objects it is blending.
This
makes it like a CAD trim and extend function.
GCODE
Insert a file of gcode to run. No error checking of the code, just
accept it
and run it.
Conversationaly Programmed Numeric Control.
It is being distributed to the CAD_CAM_EDM_DRO mailing list to solicit
input before this project is written. It is planned that this effort
will
be conducted under the general license form known as GPL. Copyright of
this
document and the subsequent revisions are held by Ron Ginger. As with
all
GPL work this document and all the code derived from it may be freely
used for non-commercial use as long as this copyright remains attached.
The document specifies the functions that will be built into the first
version
of the software. Lines enclosed in [..] define optional features that
may
be incorporated if time or interest permits.
This spec is based on my experience writing a similar program under
Visual Basic
This effort should be viewed as a V2 improvement of that work. Please
refer to http://plsntcov.8m.com/CNH.html for some screen shots and
description
of that effort. CPNC will built on that base.
Scope
CPNC is complete package for the operation of a milling machine. It will
support the full process of designing a part and runing the machine
without
the need for any additional software beyond the operating suystem and
drivers.
Specifically, no CAD or CAM package is needed, and no use is required of
G-codes.
[It is desireable to allow the input of various input files (HPGL,
DXF,
G-code) and saving of files in G-code form.]
Environment
CPNC should run on Linux, Win95 or Win98 and MAC. To support this it
will
be written in a widely available languge probably Tcl/Tk. CPNC
will be a GUI environment, with 'hot keys' as needed to make it easy to
use.
The realtime portion of CPNC will depend on the o/s. Under Linux CPNC
will
interface to the EMC package and be able to drive servomotors or
steppers
as supported by EMC.
Under Win or Mac machine control will require an intelligent hardware
box.
The interface to the box is expected to be a serial port (RS232).
If FlashCut will open their spec a driver will be written for it. A
driver
will be written for Simple Step. [A driver to INDEXER.LPT is desireable]
CPNC is best considered a 2 1/2D program. It is not expected to make
full
3D contoured parts. It will be a config option to support only 2D
machines
which will present a dialog box to the user for all Z up or down
motions.
A major effort will be made to make the program as user configurable as
possible. All config options will be held in a clear text .ini file. [A
GUI to edit the config file (and error check it) would be usefull]
No assumption is made as to metric or english. A units/step config param
will let the user adjust values.
Operation
The main screen of CPNC will have 4 major areas:
A program list box where the program steps are added
A graphic window to show the part being programmed
A set of command buttons to select objects
A control area for display of feeds, tool in use, etc
To use CPNC a user will build a part program by selecting from various
common elemnets, line, arc, circle, rectangle, etc. Each selected
feature will open a dialog box where the feature is specified by fillng
in
blanks. When complete the <USE> button is pressed to add this element to
the program.
A user may add to the end of the program, insert or delete items, or
edit
previously defined items. As the program is built it will be listed in a
text box on the screen.
As the part is built a graphical window will display the part being
generated.
A status area will show modal parameters like tool diameter, feed rate,
and a DRO position indicator of the 'current point'.
When the part is complete, a <RUN> button is selected to open a manual
control
window. The operator may manually move the motors and set a coordinate
reference point. When ready the user will push <OK> and the entire part
will
be run.
While the part is running the user could press an <E-STOP> button to
stop
operation. The graphic screen will be updated as the part is running to
show
current tool position.
The user may save programs to disk, and load previously saved programs.
The
format of the saved files will be unique to CPNC.
Objects or Features
The user will be offered a series of butons to select the elements of
the
program. The following list details the planned elements.
In all text boxes where a numberic entry is expected a simple expression
may be entered- ie if a diameter is known but the box is asking radius
the
user can enter 123.45/2. The value will be calculated and stored, the
expression is not saved. [It would be nice to allow these expressions to
include
trig functions.]
XY Point entry may also be made from a 'learn' operation. The user
presses a
key and the manual move screen will open. He may move the machine around
to
any point, then hit <OK> to return that point to the program. Note this
mode
is usefull when modifying existing parts. The mill becomes in effect a
coordinate measuring machine to pick off points from the object.
Note that all object geometry is entered in real part dimensions, tool
offset is calculated as the part is run based on the tool setting in
effect.
Tool
Sets the current tool diameter and type. This is modal, remains in
effect
until a new Tool command is entered. A Z value for tool up above
the work is set. A feed rate can be set here that will apply to all
following objects. When this command is run a dialog box opens to tell
the
operator to change tools, and allows manual control of the Z axis and a
reset of the Z reference.
Position/Drill
Go to a specified XY point and drill a hole. Plunge and Peck drillng is
provided. Dialog box opens with the current XY value loaded.
Line
Specify the start and end point XY values. The dialog box opens with the
start values taken from the current point (same as the end point of a
previous
line command). Cutter path can be chosen from LEFT, CENTER, RIGHT.
Rectangle
Specify the center XY, Height(y) and Width(x) and a tilt angle. Allows a
corner
radius to be specified to make slots. Suports options to mill out the
rectangle
as a pocket, or simply to make a frame cut around the rectangle. Cutter
path
can be chosen from LEFT, CENTER, RIGHT.
Circle
Specify the center XY, and radius. Supports a pocket cut to clean out
the
entire area inside the circle, or cutter path can be chosen from LEFT,
CENTER,
RIGHT. Also support a 'ring' operation to cut inside one circle but
leaving
an island in the center.
Arc
Specify the center XY, and radius, and start and end points. Start and
end
can be either XY values or angle values. Cutter path can be chosen from
LEFT,
CENTER, RIGHT.
Bolt Circle
Specify the center XY, and radius, and start and end points and number
of
holes. May be stored a s a single operation or can be 'exploded' into a
series of independent holes. This is usefull when you want an array, but
one
hole is missing. Specify peck or plunge drill.
Hole Array
Specify the center XY, Height(y) and Width(x) and a tilt angle. Select
either a frame of holes or an entire array. Selct number of holes on
each
axis. May be stored a s a single operation or can be 'exploded' into a
series of independent holes. Specify peck or plunge drill.
Line of Holes
Specify start and end points of a line, and number of holes to drill.
Specify peck or plunge drill. May be useful to allow explode as above.
Text
Specify the XY point of the start of a line of text. Select text size.
Support at least a simple block font, would be nice to allow a
selection
of fonts. [would be nice to allow text to be based on an arc or circle]
Pause
Insert a pause into the run. Usefull to allow moving a clamp. Accepts
a line of text to be displayed in a dialog box when the pause runs.
Repeat
Select a range of program lines by number to repeat. Specify an offset
XYZ value to offset each repeat loop. This creates a 'step and repeat'
operation for making multiple identical parts. Z only offset is usefull
to
make multiple passes around a set of points, each going deeper into the
work.
The Repeat function takes effect at program time, adding all the steps
into
the program then. Once completed the steps all appear as independent
steps,
hence a repeat cannot be simply deleted, all of its steps must be
deleted.
Rotate
Select a range of program lines by number to repeat. Specify a rotation
center and angle of rotation. This creates a wheel and spoke
arrangement.
As with Repeat the effect is at program time.
Mirror
Select a range of program lines by number to mirror. Specify a line of
rotation. Mirror all the items around this line.
As with Repeat the effect is at program time.
Blend
Used as in insert between previously entered lines or line and arc.
Specify a blend radius. Assume tool offset from previous object.
Blend will alter the end and start points of the objects it is blending.
This
makes it like a CAD trim and extend function.
GCODE
Insert a file of gcode to run. No error checking of the code, just
accept it
and run it.
Discussion Thread
Ron Ginger
2000-05-12 06:23:18 UTC
CPNC Product Requirements Doc
Paul Corner
2000-05-12 15:55:15 UTC
Re: [CAD_CAM_EDM_DRO] CPNC Product Requirements Doc