Numeryx Home

NCPlus 2000 - What's New

Copyright © 1988, 2007 by Gil Hagiz

Last updated Mar-20-2007



NCPLUS software is in use since 1988.
Version 4.204 was closed in 1999 and is not supported anymore.
This older version is still in use by Numatix, which is not a customer of Numeryx or Gil Hagiz.
The newest release of the software is called NCPLUS 2000, version 6.11

Numatix Upgrade

Upgrade information from version 4.204 can be found in the User/Programmer section.

Partial list of customers who upgraded from Numatix

Sharnoa's Tiger 3-4 Upgrade

Upgrade information from Tiger 3-4 can be found in the User/Programmer section.

Now Shipping - Version 6.11

Version 6 works in graphic mode so there is no delay when switching between alpha and graphic displays, and some newer displays don't even support the old 720x400 alpha mode.
In VGA's 640x480 mode there is 20% more room on the screen; this enables displaying 8 axes simultaneously on the screen and displaying 30 lines in the editor (instead of 25). Look

Mar-20-2007 version 6.11

Up to 2 pairs of gantry axes are supported.


New RTCP extensions:
HBRA5 - B-tilt & A rorary.
HBRC5 - B-tilt & C rorary.

Oct-22-2006 version 6.10

Mar-05-2006 Version 6.02

A new programming manual has been released for version 6.02.
New features:

Nov-28-2005 6.01f

All new and upgraded 5.11 systems may have running program time display, trace error display, G0-override, and auto power-off on M2.

Extended fixture offsets

The number of offsets can be seamlessly extended beyond #12 (g59.3), up to 99.
This requires additional code in the cnx file.
The extended offsets can be set up with an edge finder the same way as the good old ones- one axis at a time or 2 or 3 together, as many times as desired.
Both regular and extended offsets can be viewed and modified with a new HOME.CNC utility. Look
In a user program an extended offset is called by G54.1 O_ (O= 13 to 99)
See application note in the user/programmer section.


This sub-program can engrave constant or variable text in any size, mirror, and in a slope.
See application note in the user/programmer section.

New Features Nov-14-2005 - 6.01f


Projection of Y on A. 2 bugs from version 4.2 have been fixed.


Circular interpolation with tool radius compensation had a face-lift.
In earlier versions, the start point XY and IJ were used to calculate the absolute center and because of the limited 4 decimals accuracy of XYIJ the endpoint was most likely off the arc and consequently could sometimes skip a full circle or create one.
Now the program finds the absolute center based on the start and end points so these points are inherently on the arc. The absolute center is calculated with 15 digit accuracy.


This utility replaces the old makepcx.exe. The program is provided by the installer/retrofitter. It cannot be used with earlier versions.
In the INI file enter:

New Features Oct-25-2005 - 6.01E1

New Features Aug-16-2005

Total number of I/O's increased from 288 to 640 (more I/O boards are required).
The new driver for up to 640 I/O's is IOPDRIVE.SYS.
The old driver PORTSDRV.SYS can be used if less than 288 I/O's are required.
There is no change in functionality of current plc programs.
A new IOPSET.EXE is backward compatible with the old driver.
A new feature is saving and loading a text file mirror of the IO map.

New Features May-05-2005

New rigid tapping command

This command simplifies the writing of the tapping cycle.

Tapping(C-axis, ratio)  begin rigid tapping
Tapping(0,0)            end rigid tapping
New tapping canned cycles, either pitch or TPI can be used (TPI works in metric system too):
g84 - Flexible tap, Pitch
g84.1 Flexible tap, TPI
g84.2 Rigid tap, Pitch
g84.3 Rigid tap, TPI

To cut a left hand thread enter negative value for S.
If a rigid-tapping cycle is interrupted by Reset the operator can still jog Z-away while the spindle follows.

Virtual W on-the-fly in Auto mode:

Multi spindle machine

Ks can be used to program the max Rpm, overriding S-max in n19.


When using Trans to move A instead of Y, setting plc#78 to the A axis number makes the graphic display use A instead of Y too.


To run version 5 user programs w/o modification add in the INI file:
With this setting G-codes 20 to 25 and 51 are recognized (as well as their new replacements 10.1 to 15.1 and 5.1).
Switching g70/71 to g20/21 is disabled.
G53 assumes XYZ dimension in mm.

8000 parameters

The unused matrix memory can be used for regular parameters, up to #8000.
If used, the highest possible parameter number is displayed in the info window after compilation.

G0 Override

This is done by setting plc#66 to the percentage.
The percentage is applied to G0 only and can be changed any time. The regular feed override affects all motions.
Plc#66 can be set by a selector, up/down pushbuttons or keys, e.g. 1 to 4 for 25% steps.


The rarely used spherical coordinates G-codes 20 to 25 have been replaced by 10.1 to 15.1.
This frees g20/21 to be used instead of g70/71 (by setting a parameter).

G5.1 replaces g51 (graphic zero). This frees g51 for a user defined function.
3D tool radius compensation is done by g41.1 and g42.1 (g41.1 instead of previous g44).
G42.1 uses negative IJK vector, same as using negative TR & TS.

Mapping DT channels

DT channels can be associated with NCPlus axes not in their sequential order.
In the INI file define the order:

This can be used to reserve DT's channel #4 for the spindle and use channels #5 and #6 for the 4th and 5th axes.

Nanometer Technology

Resolution as small as 1 nanometer can be used (was 0.00025 mm). All internal motion calculations are performed in 1 nanometer resolution (ultra-high-precision nano interpolation), regardless of the encoders. However, the encoder count should be limited to 4,000,000 count/sec (by limiting the feedrate).
The motion routine has been improved and is smoother than before, even with sub-micron increments.
A new dtsdrive.sys, which is backward compatible with version 5.xx, should be used.

G and M code with decimals

Both G and M accept numbers with one decimal:
g1.1, m17.2

G-1, G-11

These codes are used with tool compensation to approach a contour similar to positioning (tangent to the next move) but using feed.
They are one shot and are always converted to g1 and g11.
Same approaching procedure is used if g1 or g11 is the first g-code after g41/g42.

Additional Fixture Offsets

G59.1 to g59.3 use offsets 10 to 12.
To select these offsets from the keyboard use alt-A to alt-C.

Setting Machine Zero and Table Limits

This setting can be done by a superuser in Set-Home mode.
To set the machine zero for an axis move it to the desired position, select Home #0, and set the axis same as any other Home.
Table limits are set the same way, and to select them use alt-P or alt-N for the positive and negative limits. While selected, 'Pos Limit' or 'Neg Limit' is displayed instead of Home #.
The setting is saved in the update.txt file.

Overriding Limits

If the machine zero is outside table limits, g-53 lets you go up to that zero.
If an ATC requires this feature set the change-position as the machine zero.
Using g53 or selecting home #0 does not enable limit overriding.

G53, g54-g59

These codes can be programmed with other g-codes in the same block.
G53 and offset #0 use xyz data in current unit (inch-mm). However, scale, rotation, and g91 are ignored.
G-53 is for use in the Cnx file.
G+53 is for use in the cnx. It is a single shot like g-53 but it uses offset #3 as reference. It can be used in a g28 routine so that the user can set it in set-home mode.
G-53, G+53, set-ref and chk-ref always use xyz data in mm.
The letter address O is not used anymore. Current home number is saved in plc#94.

Offset Setup

Offsets g54 and above can be set from within a program. For example, to set offset #5 at x10 y20 write:
g92 g55 x10 y20

Leadscrew Compensation

Compensation data is entered via a built-in data-entry program.
The span between the data points must be a whole number of millimeters.
The comp data has the following structure: Look  

Scope mode

Graph command is replaced by new commands.
x,y are coordinates or x-y related data, c=color:


Gain sets the gain for a dual trace oscilloscope mode.
X is the time base, in msec per pixel, Y1 is the gain for channel #1 and Y2 is for channel #2.
If the time base is zero the scope runs in XY mode where channel #2 is X.
Y1 and/or Y2 can be negative to reverse the polarity.

Scope takes a plc register-number to display.
PosY is an offset in pixels from Y-zero.
C is the color.

Example: Look  
Motion parameters that are of interest are trace error (#391 to #398) position (#21 to #28), leadscrew comp (#401 to #408).


This command was modified as follows:
Place variables:

1 - 15: as before.
16 : column for the min-max values in SetHome. (Row and Size are ignored).
17 - 20: reserved.
21 -699: PLC register to display.

The total number of displayed registers in any mode is up to 40.

Plc 300 to 369 are not reserved for Place anymore. (They are reserved for NCPlus).

Place(Reg, row,col,$71)

Size of $71 (or $73) displays time format- HH:MM:SS
Reg is the first in a pair of 2 plc registers.
The first is the time in seconds up to 3599,
The second is time in hours, up to 99 (100 rollovers to zero).

Place(Reg, row,col,size+4)

When the size is 5 (or 7), if the ones digit of Reg is an axis number, the contents of that register is displayed as dimension for that axis, assuming that it holds encoder counts.
The display begins with the axis letter and follows inch-mm switching.
This function can display on-the-fly offset, trace error, leadscrew comp, etc.


All axes can be followers in any combination.
Follower() takes axis number for On and negative number for Off;
Zero clears all followers.

Extended functions

putini('var', dat) dat can be either a string (as before) or a number (up to 8 decimals are saved).
Getini$('var') returns a string, as before.
Getini('var') returns a number.

Length(x,y) - SQRT(sum Squares) can take more arguments:

#1=len(1,2,3,4,5) - up to 255

Ball and Bull Nose 3D Cutter Radius Comp.

It also does tool radius comp for 5-axis profiling.
This function requires a post-processor generated contouring file of g1 moves with the normal vector given in each block under IJK.
G44 activates the 3D cutter radius compensation.
The tool table was expanded to hold the bull nose smaller radius. Look

For a ball nose enter tool radius in that column.
While reading tool data, the new radius is copied to variable TS, along with TL and TR.

Logical Operators

The logical operators AND, OR, XOR, convert the values on both sides to boolean, that is, any non-zero value is converted to 1.
There is no change to existing code.
In version 5, a value in a simple IF statement is evaluated as true if it is non-zero, but logical operations has to be performed on logical values of 0 or 1.
For example:
if #1<>0  and #2<>0 then...
#1= #1&$04<>0 and #2&$08<>0
In version 6 these statements work just fine (in both plc and cnc programs):
if #1 and #2 then...
#1= #1&$04 and #2&$08


Tabs: the compiler treats Tab same as space.

Trace command was renamed to buffers. This command lets you reduce the number of buffers if so desired. (required in cases of real-time feedback).

Big('text') displays text in double size characters. All 256 ASCII characters are supported.

Aspect ratio is the ratio between screen's X and Y. For a screen with resolution of 640x480, 800x600 or 1024x768 it is 1 and needn't be set. For resolution of 1280x1024 it is 0.9375 and it is entered in line n100 under @R (where the screen default zoom is entered under R).

Trace test: all axes are displayed. It is recommended to use small font in the Place command (size=1).

Canceled Commands

Projection, Jig, Virtual, Magnify, Location, Loctable.
Also Location table, Teach-Box and 3D correction have been canceled.

version 5.11

Delta Tau PCI board

New DT device driver dtxdrive.sys replaces dtsdrive.sys and can be used with both ISA and PCI boards.
It can take command line parameters /s and /t as before but not /i.
The default is /sD800 /t2.
A new !!deltau.cnc works with both ISA and PCI boards.
A program DTPCI.EXE should be called from the AUTOEXEC.BAT.
This program identifies the PCI board and sets its memory space.
It works okay with ISA boards.
In mill*.pmc add:

In the motion program change line:
m113=0 x(m71) y(m72) . . . . . m113=1
x(m71) y(m72) . . . . . m100=1

Hardware lock

The hardware lock is part of the NCPlus package and must be plugged into the parallel port or NCPlus works in offline only.
The Lock can be programmed to expire after 30 days or to work indefinitely with a permanent enable code.
Expiration date lets the user test all available features, like TCP, before ordering them.

The Lock is field programmable from MDI with the command zulu, which takes 3 parameters.
4 commands are currently available:

  1. Set permanent code
  2. Set permanent TCP
  3. Set expiration date
  4. Read expiration date

To read the expiration date use zulu(0,0,0).
All other commands are encoded by a setup program available to retrofitters; the command is emailed to the user and entered by the user in MDI.
Note: If the computer date is tampered with then the program expires immediately

Table limits

Soft table limits can be overridden and re-defined. This feature is required for some tool-changers.

Drilling cycles

Standard drilling cycles work with 5-axis TCP.
Rigid tapping can be used on machines with servo spindle.

RPM up to 999,999

Max RPM is defined in the machine data line n19.
When S is read from a block it is limited to that value.
The PLC spindle routine is independent of the actual RPM. 100% is represented by 10000.
Ks is a read only parameter that holds the ratio between the RPM and the PLC routine.
To convert actual S in the CNX to the PLC registers it is multiplied by Ks.
A menu lets the operator set the 100% RPM in Manual. This value is saved in the ini file.

Machine Zero

Table limit moved from lines n8, n9 to n11, n12.
This lets you change the machine zero in line n10 without affecting the table limits.

Pick List

Additional functionality to the PickList function enables selection by the arrow keys in the Incremental/MPG jog windows

Tool Length Display

Place var 10 is Tool Length. Its format is 4.3 or 3.4 and it is updated on any change.
locate(14,66) pr 'TL'; place(10,0,0,1)

4 & 5-axis machines

For these machines additional files are defined in the INI file.
The following geometries are supported:
Heads: CA, B (tilt), BA.
Rotary: AB, AC.

In addition to TCP programming the new features are:

Version 5.0


Editor capacity increased to 3-4 million lines.
Long Search and Replace sluggish behavior has been fixed.
ESC can be used to abort long operations like Find or file R/W.

New directory structure

The main dir is C:\RR.
The system files are in the c:\rr\cnx dir.
Files compiled from this dir are stored in c:\rr\cnx\bin dir.
These are the cn$, pl$, tool-table, leadscrew-comp, and utilities.

User dirs can be sub dirs of RR, and they all have a BIN dir (created automatically) for the user compiled files.


Key is a CNX parameter that holds the last keyboard-key returned by:
Readkey, Inkey, Input(), and Input$().

It can be used after Readkey or Inkey to test more values:

if readKey==41 or key==42 then....end

Loop until CS

Such a loop can now be interrupted by Esc.

Plane select g16..g19

These codes can be written with other g-codes in the same block.

Drilling canned cycles

The standard format is now:

n1 g x.. y.. z.. g81 r...z...q... f... [g91] [g99] [d..]

This works with both Cartesian and Polar coordinates.
The letter-addresses R,Z,Q,D and the g-codes represent:
R- Reference plane
Z- Z at the bottom of the drill
Q- step for g83
D- delay at end of drilling.

G90/91- with g90 (default) Z is absolute, with g91 it is the depth of the hole.
G98/99- with g98 (default) the tool retracts to the initial Z, with g99 it retracts to the R plane.

Virus protection

Virus protection turns system to offline in case a virus has modified the exe file.

Tool table

Tool table definition in line n100 of the machine data creates or modifies the length of existing table.
T can be zero if no tool table is required. In such a case T can be used for any function.


G8 prevents deceleration at the end of current block (one shot).
G0 now always decelerates before the next move, unless g8 is used.

Virtual W-axis

This axis can be used to move Z up and down on top of the program.
W is displayed and behaves like a real axis, but it moves Z instead.
It can be jogged in Manual or used on-the-fly in Auto.
Its traverse is same as Z and it checks the soft limits.
It replaces the previous on-the-fly function that had a limited traverse and didn't check the soft limits.

Insert tool-length works correctly regardless of W.
M50 clears W w/o any motion.

GetPort, PutPort

These procedures synchronize a Plc register with its corresponding I/O immediately.


This Plc function reads encoder input and returns any change.
It eliminates the need for additional Delta-Tau encoder input. More than one encoder can be programmed.
Can be used for a tool changer or MPG.


This function can generate or check 16 bit data for parity.
For even parity it returns 0 and for odd parity it returns FFFF.

plc [5]

This cycle is called from NCplus background.
For 300 MHz Pentium, 100,000 calls/sec are average and 10,000 can be considered safe.
It is used for high-speed operations like reading an MPG.

Program lines display while running

Program lines can be displayed while running, in a programmable size window.
This function can be turned on and off.
The printing of the lines is done by NCPLUS.

Upon Reset or CS the display starts from the first line.
While running, the display runs concurrently with the program and a blue bar indicates current line.
In Single the display can be scrolled by the up/down arrow keys, but when CS is pressed the program is resumed from the correct line.

INI file

Vendor or OEM name can be entered and displayed in the opening window.
The Model= line is not required for basic machines without any transformation.
For 4 and 5 axis machines additional files are used for TCP and transformation.