Questions and Answers to the 9 Axis CNC Program

Q: For what is this program usefull? What is new?
A: Usefull for common milling-, lathe- and mock-up works and also robotics with many axis.
New: 6D and Automatic Correction with Reference-drive if Steps lost (Overload)!
New: 2,3,4,5 and 6D Linear- or Circularinterpolation[2D] with 14-digit Precision!
New: Helix-Interpolation (Circuit or Parabola with linear Motion of 3. Axis)!
New: Triangle- and Squarecycles with 3D bended bottom planes!
New: 3D Workzone with more than 10^51 Positions (0.01mm Raster, 1/18 Microstep)!
New: Acceleration- and Brake-Ramps for smooth Motions nearly steplessly adjustable!
New: 4 Axis-Interpolation (4D) and Teach-In-Drive through one parallel Port!
New: Designed for high-speed Microstep-Applications with Auto-Shift to lower steps!

Pin15 als Sensor am Gravierstichel

Q: What kind of PC is the minimum hardware requirement for operate this CNC-Program?
A: Use a PC 486 DX with 33 Mhz or higher. It requires a DOS Operation System installed,
e.g. MS-DOS 6.22. MS-Windows 3.1/95/98 also includes an usefull DOS-Mode.
The motion speed control works with program-loops, depending on the PC's performance.
There are more than 4 Billion gears (speed-reductions) available.
Pre-adjust the PC's groundspeed in the file "paramet", which is delivered with the package.
For 6D applications we recomment use a Pentium PC or equals with min. 166Mhz.

Q: Which steppermotor-driverboards are compatible to this CNC-Program?
A: Those with 5V CMOS/TTL logic and 2 Bit (direction and clock/enable) standard signals.
Please notice our own 3A/55V STEPPERMOTOR-BOARDS with up to 1/30 Microstep!

Q: How do I have to wire the parallel port to the steppermotor-driverunits?
A: Call in DOS mode "startcnc" or "cnc". Or you may read the information table below.


Clock & Boost X,R,U (Pin2) Direction X,R,U (Pin3) GND X,R,U (Pin19)
Clock & Boost Y,S,V (Pin4) Direction Y,S,V (Pin5) GND Y,S,V (Pin20)
Clock & Boost Z,T,W (Pin6) Direction Z,T,W (Pin7) GND Z,T,W (Pin21)
Spindlemotor-Relay s1 (Pin8) GNDs1 (Pin22)
Coolingpump-Relay (pulsed) s2 (Pin9), inverted GNDs2 (Pin22)
1.Additional-Relay (Fullversion) s3 (Pin14), inverted GNDs3 (Pin25)
2.Additional-Relay (Fullversion) s4 (Pin16) GNDs4 (Pin25)
3.Additional-Relay (Fullversion) s5 (Pin17), inverted GNDs5 (Pin25)
Current Reduction & Hardware Brake (Pin1), Fullvers. inverted GND (Pin18)
Reference-Switch (Pin11) Start, when Pin11 Low GND (Pin23)
End-Switch (Pin10) Stop, when Pin10 High GND (Pin24)
Step-Encoder (Pin12/13/15) Auto-Correction of Realpos. GND (Pin24/24/23)

Q: How does it work about the reference- and end-switches?
A: Pin11(reference-switch) must be on signal-ground when the program starts and ends.
Pin10(end-switch) is normally closed to GND. If open, it can trigger a reference drive.
When reference(Pin11) is open and end-switch(Pin10) opens also, then drive back to orgin!
This saves time in case of interruption of processing. Pin10 is also good for overload use.
All 9 axis will be driven back to orgin, one after the other. Order: W-V-U T-S-R Z-Y-X.

Q: How is the order of signals sending out to the printerports?
A: First the direction signal send out, e.g. if X-forward and spindle enabled [binary 64].
At second the direction signal inclusive the clock signal send out [binary 65].
A step is executing with pos. edge of clock! Code in C: outp(0x378,64); outp(0x378,65);
The databits 1,3,5 are the direction bits. If forward set on [0], if backwards set on [1].
The signal of current boost should be connected to the clock signal in parallel.
Make sure that the primary current (30% to 70% of boost) is enabled on the driver-unit
to hold the motor in constant position while don't have motions.

Q: How do I have to connect the step-encoders and how does it work?
A: When the program starts Pin 10,11,12,13,15 must be on ground (Low)!
Pin 12(X),13(Y),15(Z) will be checked every 4th fullstep whether they are on GND (Low).
Otherwise it should exist a High-Level.
If the Low-Level won't be reached at 4th fullstep (because of overload), then the program
try to push more steps (microsteps) on the printerport until the Low-Level will be reached.
The max. amount of failed microsteps until automatic program stop and beginning of
auto-reference-drive can be adjusted in the file "paramet".
An immediate reference-drive also can be triggered if any key is hit on the keyboard.
You may design your step-encoders by yourself with a disk and photogap.
The position of the photogap must be adjusted precisely that it does pass the
current if the fullstep is reached. Then it pulls down the High-Level to Low-Level.
If the design is an open design, please protect from daylight or other light on photogap.

Q: Some producers of steppermotor-driverunits offer a "parallel-interface". Do I need it?
A: Not required!
If you want to drive more than 3 axis, then you have to install a 2. or 3. port in your PC.
The order of parallel ports are: 378h 278h 3BCh (special requirements on request).

Q: If switch s1 (Bit7 = milling spindle on) is enabled, why does Bit8 pulsing while motions?
A: Bit8 puts an impuls out, depending on length of motion (adjustable), while s1 is enabled.
Good for drive an electromechanic coolingpump, working with diaphragm or piston.
With s2 (Bit8) you can put an extraimpuls on coolingpump, e.g. short before drilling a hole.

Q: Is it possible milling from CAD data and drawings?
A: Yes! With the Fullversion we deliver a tool for DXF- and HPGL-Import.
You may also use the integrated Teach-In function for draw figures and then
plot with your machine. It is generated a programcode in the file "teachdat".
Call of Teach-In: "cnc teach 100 bs" The "100" means 100 percent screenscale!
With this function it is possible to scale the screen. So you can put a foil on the screen
and then use the mousepointer to move along the figures.
Call "cnc teachdat 0" in DOS Mode and your machine will mill the figure in 1:1 or other scale!
The "0" is the reduction of speed, means fastest gear (most slowly == "").

Q: How do I realise effective programming, axis-transportation and serial works?
A: Choose a cutter with suitable diameter for your most common works, e.g. Dia 4mm.
Do coding only for this specific tool-diameter. Use the integrated cycles!
The application of the cycles avoids often tool changes and cutter radius compensation.
Axis-Transportation with self-coded assisting programs will transport the Start/Endposition.
Serial works with batch procedures (*.bat) is possible!

Q: Why the Z-Axis is counting positive when it comes down? (Different to DIN-ISO standard).
A: A logical improvement! You save time not always type the "minus" in front of the figure.
The basic scale system is absolute, means that the scale is measuring from a zero-position.
All measurements of the triangle-, square- and sparkerosion-cycles are completely increment.
From the circle-cycle just the Radius is increment, the other data is measured absolute.
The startposition of a cycle is the actual position (automatic zero-point compensation).
After finish a cycle the automatic zero-point compensation is reset to the old position.

Q: Do the axis need all the same mechanic gear and spindle slopes?
A: Each axis can have a different gear and spindle slope. The program does account it right.
Do write the axis-adjustments in the file "paramet".>/P>

Q: How driving to more precise positions than the standard 0.1mm raster?
A: Full values in the CNC-code are 1/10mm-Motions. This makes coding quick and easy.
Decimal values, e.g. g 50.12 22.4 11.7 are in real X=5.012mm Y=2.24mm Z=1.17mm.

Q: And how does the CNC code look like? You see it is so easy!
A: Milling a hole at position X 100.0mm Y 50.0mm Z 8.0mm deep and then back home.
g 1000 500 0
v 3000
g 1000 500 80
v 0
g 1000 500 0
g 0 0 0

Q: How does the 6D Linear Motion works and for what is it usefull?
A: While in 3D mode the axisplanes XYZ, RST and UVW will operate seperately,
so in 6D mode the axisplanes XYZ and RST are well combined and have to be called
"XYZ 6" at the beginning or at any other line of the CNC-Code.
The graphic output of 3D and 6D seems similar, but in 6D it is possible to move not only 3,
but up to 6 axis in all directions and angles.
This works in positive, negative or mixed sections and even if some axis stand still!
The RST axis does orientate to the XYZ axis, so far any of XYZ axis have motion.
If none of the XYZ axis do move, then the RST axis can't find orientation and
the program switch automaticly down to 3D mode for RST and back to 6D if required.
The integrated cycles are made for linear axis-gears. Switch to 2.5D mode if use cycles!
This CNC Programm is designed for driving a 6D-Robot incl. a 3D-Turn/Swingdesk!
A widely useful and economic alternative for assistant-, temporary- and exchange works!
Declinations of turn back to orgin haven't be found even after hours of duty motion tests!
This is a simple CNC code operating 6 axis in 6D mode:
g 333 222 111 -333 111 55
g 0 0 0 0 0 0

Q: What is a cycle, especially the one for spark-erosion?
A: A cycle is a complex procedure, fixed in only a single command-line.
This is a complete programm with spark-erosion cycle:
e 50 6 4 8 3 50000
[XYZ] Choosing the XYZ-Axisplane (Begin of Code)
[s1] electric current on
[e] Call of cycle for spark-erosion
[50] Starting at height above workpiece in 1/10mm == 5mm
[6] Sink down into workpiece in 1/10mm == 0.6mm
[4] Amount of repeating the sinking to the same step down on workpiece
[8] Pullback for cut the sparks and for cooling in 1/10mm == 0.8mm
[3] Amount of microsteps above workpiece, where motion is slowly (sparks doing their job)
[50000] Speed reducement for the motion-section of listed microsteps
[s0] electric current off (End of Code)

Q: Where are the limits of calculation and motion for this program??
A: With this CNC program you are always on the right side and far from the limits!
In opposite to many other competitive CNC programs, this one uses datatypes with
very high values and precision. The internal range of calculation reach from
2.2E-308 to 1.8E+308 and this even with 14 digit precision.
With the Studentversion the circular-interpolation is free for Radius from 0 - 50mm.
Radius above 50mm to exclusively 50m are locked for the Studentversion.
Circuits with Radius from 50m to more than 1 BILLION Kilometer are permitted and free!
This is the code for the half of circuit with 1 BILLION Km Radius plus 0.01mm!
Tip: You may try this code, but better wipe out some zeros, else it take too long time!
Remember, the distance from Earth to Sun is just 148 Million Km!
b 0.00000000000001
k+y 10000000000000000.1 10000000000000000.1 0 0 20000000000000000.2 0 0 10
g 20000000000000000 0 0

The from the Author tested and proved distance is RADIUS = 10Km and Line = 20Km.
Additional to the circular motion it is possible to drive a linear motion of the 3. Axis.
The last figure of the circuit's code is the linear motion of 3. Axis, in this example 1mm.
Each line in the CNC-Code must not exceed 79 characters plus Return (End-Of-Line).
While the Fullversion is calculating all correctly, the Studentversion sometimes calculate
the circuits 1 microstep too short or too far and the precise return to orgin will fail.
This is the Author's intention.

At final some usefull tips:
*For build up a power supply, please notice that the direct voltage is squareroot 2
  higher than the alternating voltage of transformator. Trafo 18V~ delivers about 25V=.
*With 1.3Nm Motors and standardgearing you will get motionforce of up to 1000N!
  This is about equal to lift up 100Kg!!! Bearings of the spindle must be stable!
*Clearance-free and adjustable ballbearing-spindlegears are available from Fa. Isel.
*Choose steppermotors with low induktivity and min. 200 fullsteps per turn!
*Cutters with Titan-Aluminiumnitride have best duration; usefull for nearly all materials.
*If the motors have unsteady conditions, then you may connect all signal grounds.
*Here you find a packed early source code of this CNC Programm:  sourcepack.exe

National-Motion-Control   Dipl.-Ing. Uwe Wulf   Hauptstr. 39   D-23847 Grinau