FAQ Mach3


 



Where do I learn more about Mach3 itself?

The best place is on the Mach Support website itself! 

  • They have a Product Manuals page that has these very useful manuals (Make sure to click on the Mach3 tab near the top):
    • Mach3 Installation and Configuration Guide
    • Usage Guide for Mach3 Mill/Plasma
    • Usage Guide for Mach3 Turn
    • Rich's Guide to Mach3 Threading
    • Tangential with Mach3
    • Mach3 CV Notes
    • Mach3 Macro Programmers Reference
    • Mach3 VBScript Command Reference
    • And more!
  • They have a Videos & Tutorials page, with lots of videos.
  • And they have a support forum too.

 



How do I make Mach3 go full screen?

First, in Menu -> Config -> General Config… Make sure your Auto Screen Enlarge is checked

To make Mach3 go full screen:

  1. Then maximize the Mach screen so it takes up the whole screen.  You will see a lot of empty space, that is okay.
  2. Close Mach3, and then reopen it.  Since Mach3 will remember to open full screen, it will then fill the screen up correctly.

To make Mach3 show correctly in a mid-sized window:

  1. Adjust the Mach3 screen so it takes up the portion of the screen you desire.  A lot of the stuff inside the Mach window will be hidden, that is okay.
  2. Close Mach3, and then reopen it.  Since Mach3 will remember to open its window to the size used last time, it will then fill the screen up correctly.

Screen Control



Game Pad and/or Pendent Issues

The biggest issue with the Pendent or Game Pad is not working, is caused by not using the recommended version of Mach3.

If you jog, and the axis continues to move after you release the control, it is because Mach 3 is set to continuous mode.  When in incremental jog mode, you can hold down the Shift key on the keyboard, and then press the jog key, and it will jog continuously.   Your game pad might be emulating the press of the shift key or continuous mode may have been left on.   

Solutions:

      • Remember to press and hold the Shift key, and then hold the jog key.  When you are where you want to be release the jog key first, and then release the Shift key.  (Thank you Jeff Birt!)  If you release the Shift key before you release the jog key, it will keep running until you either repeat the process and release the Shift key last or you press the Reset or an E-Stop button!
      • In Mach3 press the Tab key and look to see if the Cont. button is yellow for Jog Mode in the MPG controller window.  Press Shift to disengage it if it is stuck on with Step Mode.

 

 


 

Abrupt stops in Circles or Arcs while in CV mode

Once you have motor tuning set up correctly for your hardware, the SmoothStepper will move your motors very smoothly.  You should not see abrupt jerks or harsh movements. 

However, there is one situation where we have seen jerky movement and abrupt stopping and starting, and that is on Arcs and Circles when feedrate override is being used.  When the feedrate override is turned back down to normal (to the rate commanded in the G-Code) everything is  smooth and continuous again.  

What is happening is that Mach3 is miscalculating the information (due to the feedrate override) and corrupting the movement.   If you adjust your G-Code file to use your new desired feedrate, with no feedrate override, you should be able to cut your parts smoothly at the faster speed.


 

Jogging Issue: It keeps jogging and doesn't want to stop

If you jog, and the axis continues to move after you release the control, it is because Mach 3 is set to continuous mode.  When in incremental jog mode, you can hold down the Shift key on the keyboard, and then press the jog key, and it will jog continuously.

Solutions:

      • Remember to press and hold the Shift key, and then hold the jog key.  When you are where you want to be release the jog key first, and then release the Shift key.  (Thank you Jeff Birt!)  If you release the Shift key before you release the jog key, it will keep running until you either repeat the process and release the Shift key last or you press the Reset or an E-Stop button!
      • In Mach3 press the Tab key to see the MPG Mode window.  Look to see if the Cont. button is yellow for Jog Mode.  If it is your Game Pad or pendant is activating it.

MPG Mode

 


 

In Motor Tuning (and Setup), what does the 'Step Pulse' and 'Direction Pulse' field do?

Mach3's Menu -> Config -> Motor Tuning (and Setup).

The Step Pulse and Direction Pulse fields are used for a Parallel Port connection from your computer to your hardware.  Since you are using an external motion controller, a SmoothStepper, they are unused and may be ignored.

The Steps per Unit, Velocity (Units per Minute) and Acceleration fields are critical for tuning your motors.  The Steps per Unit is determined by your hardware for each axis.  The velocity is the maximum speed you want your axis to move.  The acceleration is the maximum acceleration rate your motors should run at (to prevent stalling or missed steps).  This needs to be done for each of your axes.

 How do you calculate your steps per unit?  Try this Excel spreadsheet made by RICH.

Step and Dir Pulse

 


 

In Port Setup and Axis Selection, what does the 'Kernel Speed' do?

Mach3's Menu -> Config -> Ports & Pins -> Port Setup and Axis Selection.

This Kernel Speed field controls the timing setting for a Parallel Port connection from your computer to your hardware.  Since you are using an external motion controller, a SmoothStepper, this can be ignored for the most part.  Some older versions of Mach3 had internal timing issues at speeds other than 25 kHz.  So it is best to just leave it at 25 kHz all the time when connected to a SmoothStepper.


The Port #1 and Port #2 fields are also only for Parallel Port connections, and you should ignore them when using the SmoothStepper.

Kernel Speed

 


 

In the ESS Config, how do I change the direction for Pins 2 through 9 on ports 2 and 3??

Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version

General Config Pin 2 Through 9 Direction

You may choose to assign the bidirectional Pins 2 through 9 on Port 2 to be all inputs or all outputs.

You may choose to assign the bidirectional Pins 2 through 9 on Port 3 to be all inputs or all outputs.

Here is a schematic of the ESS input and outputs per port.

ESS Port IO

 

 


 

In ESS Config, what does the 'Controller Frequency' Frequency' do?

Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version

General Config Controller Frequency

 

The ESS has a fixed amount of memory, and the controller frequency is a setting for how many motion positions per second there are, or how many times each second the velocity is sent from Mach 3 to the ESS.  Having it output data faster means that if can buffer less data.  If your system is running out of data, try slowing this down to a slower frequency so  the SmoothStepper can go for longer periods of times between updates from the PC/Mach3.

      • 4 kHz gives a buffer of 250 ms or 1/4 second:  This provides a faster response to commands like feed hold, since it uses only a quarter second buffer.  This also becomes more necessary when you have very high step frequencies, like you would if you use servos with a high encoder count.  However, your PC needs to be able to supply the data transmissions to the SmoothStepper fast enough (newer PCs that are not low end, and that are running properly, can handle this).  While this provides for a snappier response, it will not be reliable for all machines and you may experience run out of data errors.  
      • 2 kHz gives a buffer of 500 ms or 1/2 seconds.
      • 1 kHz gives a buffer of 1000 ms or 1 seconds:  This is the default value most machines should use, and works well for most users.
      • 500 Hz gives a buffer of 2000 ms or 2 seconds.
      • 250 Hz gives a buffer of 4000 ms or 4 seconds: Slow PCs can run this speed, and with a 4 second data buffer, it will make it hard for them to run out of data.  This setting will have the slowest change in velocities out of all the settings, but should still work just fine for most applications.


Most systems run well at 1 kHz for the Controller Frequency and that is what we recommend you set your system up with.  Once you have it running well you can try 2 kHz if you want a little less delay when using FRO or Feed Hold.  At 2 kHz you will have twice as many points per second, but with the same amount of memory the buffer will be half as long in seconds.  At 4 kHz the buffer is so short that you could run out of data in the middle of a move.  Windows isn't all that reliable (at ensuring it gives Mach3 highest priority and the Network channel the data flows over), and as a result the plugin doesn't always communicate on a timely basis (causing "Ran out of Data" messages).
 



In ESS Config, what does the 'Max Step Frequency' do?

Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version

General Config Max Step Frequency

The Max Step Frequency allows you to control the frequency of the generated pulses for a particular axis.  The next image shows you how to calculate the MINIMUM Steps per Second for your particular axis (we recommend derating it by 15% as shown in our table).  Your axis will function properly if you set the Max Step Frequency to our recommended value. 

If you use a Max Step Frequency below the minimum value recommended for your axis, it will cause that axis to not operate correctly.

Once you have your system up and running, and you are tweaking your hardware to optimize it you may choose higher Max Step Frequencies.  They may result in smoother cuts, but it will depend on your particular hardware.  As the Max Step Frequency increases, at some point it will reduces the step pulse resolution for that axis and may cause poorer cut quality and undesired movement quality for that axis.  So use the recommended values to start with. 

 

When your Max Step Frequency should be set at 32 kHz or 64 kHz, but are instead set to 1 MHz or 2 MHz, a few things may happen:

  1. Everything may work just fine, especially if you are using good motor drivers.  Once you have things working at the calculated Step Frequency, feel free to try and set it higher.  Sometimes performance may become smoother.
  2. You may not notice any difference in performance. 
  3. Things may perform poorly. This scenario becomes more likely with poorer quality motor drivers.  In this case, you will want to use the calculated Max Step Frequency. The symptoms you will notice when using too high of a Max Step frequency include:
  • Jerky movement of the steppers or axes
  • Hearing the steppers change sound between each line of G-Code
  • Pauses between lines of G-Code (this one is arguable that it may be a symptom of other problems, but has been observed here a couple of times)

 

You will find your Steps/Unit and Units/Minute values in the Motor Tuning page: Menu -> Config -> Motor Tuning. 

To calculate the Max Step Frequency setting for yourself, you can download the Excel spreadsheet.

 General Config Max Step Frequency Calculation

 

Here is a good article on how to calculate your Steps/Unit based on Degrees/Step of your motor, Micro Stepping, Gear Reduction, and lead screw.  It was created and posted by RICH.

 



What is the difference between Step Frequency and Pulse Width?

Step frequency is not the same same thing as pulse width; lets use some easy numbers for math:

  • You have a 1 kHz pulse frequency, which means you have 1000 pulse occurring per second, or one every ms
  • If the pulse had a 50% duty cycle (on half the time off half the time) it would be on for 0.5ms or 500 us for its pulse width.
  • If the pulse had a 1% duty cycle, it would have a pulse with of 10 us and then be off for 990 us.
  • If the pulse had a 90% duty cycle, it would have a pulse with of 900 us and then be off for 100us.



Step frequency is how often the pulses are being generated. Pulse Width is how long each pulse is on before it turns off to await for the next pulse to be generated.

 



How do I set up the Spindle?

This section has moved to here.

 



How do I set up debounced input signals?

Go to Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version

Enter values in microseconds (us) that a signal has to be stable for before it has been considered changed.  This is very useful in situations where there is a lot of noise that can corrupt signals (like a plasma system), especially for things like limit or home switches, probe signals, EStop, etc...

Debounce

 

 



How do I set up homing?

First, make sure you have your Motor Outputs assigned correctly (Menu -> Config -> Ports & Pins -> Motor Outputs).

Motor Outputs

 

Second, make sure that you have your home switches assigned correctly (Menu -> Config -> Ports & Pins -> Input Signals).  While you could use a single input for your X, Y, Z, and A  homes, it is much better to have them as separate inputs! The SmoothStepper has plenty of inputs available and it allows Mach to home all of your axes at the same time if you wish (although you typically have your Z axis home after the rest of your axes so you don't crash your head).

Home Inputs

 

Third, make sure you have your Motors Tuned correctly (Menu -> Config -> Motor Tuning).

 

Fourth, assign the slave axes to the master axes, as appropriate for your system.  You may not have any slave axes.  (Menu -> Config -> Slave Axis).  In this example, I am assigning the A axis as a slave to the X axis.

Slave Axis selection

 

Now we need to work with the SmoothStepper's Homing Config (Menu -> Plugin Control -> Homing Config).

Homing Config

For all of your normal axes and master axes, assign Approach and Backoff Speeds.  This is how fast you will approach your homing switch, and how fast you will back off of your homing switch.  For very precise homing, you will need to go slower.  Do not set anything for your slave axes, just leave them with 0s.  Do not set anything for unused axes, just leave them with 0s.

 

If you are using a rotational axis, you may have index pins, if so configure the index port, pin and active low settings as appropriate.  Otherwise, leave those sections blank.


The Final Position is if you want your axis to move to a specific location after it completes homing.  Enter the value you desire.


Slave Misalignment allows you to compensate for the Master home switch and the Slave home switch being located at different positions on the axis (due to hardware restrictions or just not being able to physically locate both of them at 0.0000).   If so, you can enter the difference so that it can be compensated for.

 

If you have separate home switches for your Master and Slave axes, and you want to remove any rack from your axis, then you will need to specify how closely you want the two sides to align with the Max Master/Slave Separation.  You can't go smaller than the step size of your axis.

 

Finally, there is an option in General config that says "Home slave with Master Axis". Make sure to UN-check it if you want to home the slave with a separate homing switch from the master.   If you want to use just a single homing switch for the axis, then you can check that option.

Home Slave With Master

 

Don't try to be fancy and use a script that has "while moving" statements. Just home each master axis. Mach3 won't move to the next axis until the current one is finished. There is no need to specify the slave, since the ESS and Mach already know how slaves are assigned in the previously completed steps.

 



How do I set up Soft Limits?

Soft limits are limits you set on axis travel inside the Mach3 software.  They rely upon the current value of the DROs (in Machine Coordinates) to determine whether the G-Code or Jogging commands should be allowed. 

To configure Soft Limits, go to Mach3's Menu -> Config -> Homing/Limits.

All values will be in the same units the rest of your system is set with (mm or inches). Make sure that a slaved axis the same settings as the master axis it is paired with. 

  • Reversed should be checked if your axis is reversed.
  • Set the Soft Max and Soft Min position for each of your axes. 
  • Slow Zone is small zone just before your Soft Limit (max or min), where the jogging command will slow down, so you can approach your limit without blowing past it. 
  • Home Offset is self explanatory.
  • Home Negative is self explanatory.
  • Auto Zero is normally checked.
  • Speed is normally set to 20% but you can modify it if needed.

Soft Limits Window

 

As you are approaching the limits, the jogging commands will slow you down and keep you just short of the limit.  

A GCode command will stop at the limit and issue a "Soft Limit Exceeded" message from Mach3. 

For instance a command of "F200 G1 Y500" (entered in the MDI window's Input line) will stop at 401 with the settings shown above.  Why?  Well the F2000 is the feed rate command saying to move with a velocity of 2000 mm/s.  The G1 command says to do a linear move to Y500 which would mean position 500 mm on the Y axis.   Your DROs (and machine) should start to move.  You would think it would stop at 405 mm since that is the Y axis soft limit, but instead it stops at 401 mm, why?  Well, that is because I left off the fact that the A axis is slaved to the Y axis :-)  When 2 axes are slaved together, Mach3 will limit you to the smallest limit of those two axes.

In order for Soft Limits to work, you must also have the Soft Limits button checked on the (Program) main screen of Mach3 (it will have a green border when active). 

Soft Limits Button

 

 



Reading an encoder index pulse

The index pulse is very narrow.  For the signal to show up in Mach on the diagnostic page, you would need to position the shaft precisely on the index.  The SmoothStepper has no problems catching very narrow pulses.  

Assign the pins for the encoders in Mach's Ports and Pins on the Encoder MPG's tab.  On the ESS's Data Monitoring dialog, you can observe the encoder values on the left hand side, but there isn't a correlation between the encoder number and the Encoder numbers in Mach3 (In Mach4 there will be an encoder very each motor, plus 3 auxiliary encoders that can be used for MPGs or anything else).  Below the encoders you will see a box for the Spindle Timer.  If the index is connected to the Index input on Mach's Ports and Pins, every time the index pulse is asserted you should see the timer latched with a value.  I believe the units are 29.74358974 ns.  500 RPM = 8.33333 RPS.  1/8.33333 = 0.12 seconds between index pulses.  Therefore it should count to 4034483 each time.  

The pulse needs to be clean.  If you test it out with a mechanical switch, you will probably get some small numbers due to it triggering on lots of quick bounces.  But an encoder's index pulse should be clean, especially when driven by a motor.  You should see the RPM on the 1024.set screen set. 

 



Backlash Compensation

 

Homing is required for backlash comp because the action of homing takes up the backlash, and then the plugin knows which side of the backlash it is on.  The last step of homing is to move off of the switch.  In doing so, the machine's backlash is removed before the machine will start moving again.  The plugin knows which direction it was moving when the switch opened up, so it can initialize the backlash comp variables at that time.

Backlash is not cumulative.  Let's say you started out on the opposite side of the backlash, the DRO reads 0.000, and the backlash amount is 0.002.  If you move +0.010, the machine will only move to 0.008, but the DRO will read 0.010.  If your next move is -0.010, the machine will move back to 0.000 (and the DRO will read 0.000), even though it started out at 0.008. 

For critical moves such as drilling a pattern of holes that need to be the right distance from each other, I would approach each hole from the same direction before drilling it.  Moving back and forth is when you need backlash comp. 

Backlash compensation is not a silver bullet.  When milling, your tool can tug at the workpiece and move the table.  When that happens, the plugin is unaware and cannot compensate for it!  Backlash can accumulate if the tool only tugs on the workpiece in one direction.  This makes it possible for backlash comp to actually produce inferior results compared to no backlash comp at all.  This is also why people often say that you need to fix the machine (eliminate the backlash from a hardware standpoint), not compensate for the backlash. 

When you have backlash and you want to compensate for it, it is better if your lead screws have more friction.  Ball screws would be more likely to allow the table to move when the tool tugs on the workpiece.  You should also look into adding some anti-backlash nuts to remove the backlash mechanically https://www.google.com/?gws_rd=ssl#q=anti-backlash+nut

With this being said, to use a software approach for Backlash Compensation, go to Mach's menu -> Config -> Backlash.  In the Backlash Values window enter in the amount of compensation each axis requires.  Keep in mind, that the value may be positive or negative, and it may not exactly match up with the value you measure (it may need to be larger or smaller than the measured value).  It will take some tweaking to achieve the desired results. 

Common values would be in the .033mm (or  .0013"), but would vary significantly and be totally hardware dependent.

 Backlash

 

Common Backlash Compensation issues we have seen are:

  • Forgetting to home after the machine is powered up or after the EStop is pressed or after limits are triggered (I might be mistaken on the last one).
  • Relying on the DROs only. If you need precision, you need a Dial Test Indicator (DTI) on the machine so you actually measure how far you are off (if there is backlash you will be off). 
  • Using a negative backlash compensation value when it should be positive or vice versa.
  • Having your velocity and acceleration set to high for the axis, and missing steps as a result.

 



Feed Hold

 There are two modes for feed hold. One is where the ESS does it in the device, and the other is where Mach does it. If you use the feed hold that is performed by the ESS, then there is data in the buffer when you press Stop. However, in the case of Mach doing the feed hold, the data should be cleared out one it has stopped moving.

The control for this option is on the ESS's config, Menu -> Plugin Control -> Main Config: ESS-M3-version

feedhold.png



The advantage of doing it in the ESS is that feed hold is nearly instantaneous, but the disadvantage is that you really can't stop, move around, and go back to where it was and resume the G-Code. But if you press Stop, then it should clear out the buffers and either feed hold should work OK.

The ESS plugin source code clears all movement data in the ESS when Mach issues the myNotify(EX_STOP) (or EX_ESTOP or a -1) command.

 


If you use the ESS Feed Hold, all motion will be frozen. You can't jog or anything. But you can resume right from there. However, if you press Stop at this point, all data will be lost.

If you are using Mach's Feed Hold, Mach will decelerate to a stop at an acceptable way point, in Mach's trajectory planning, and then stop sending data to the ESS. The ESS will then consume all of the data in its buffer. You can then jog around or whatever, and Mach will know how to get back to that way point. If you press resume, Mach will generate a start up trajectory from its ending way point (it will move back to there if you jogged).

 



What is Spindle PWM Proportional to X-Y Feed Rate?

So this was added to support lasers in Mach3. The faster the X and/or Y axis velocity is, the higher the laser output needs to be in order to maintain a uniform cut. Here is the Excel file that will allow you to create the Mapping function file name.

It only outputs PWM in this mode, with 8 bits of resolution.  Details on how to use it in Constant, Linear or Logarithmic mode are given on the first page of the spreadsheet.   The PWM signal is automatically output on the pin that you set for your Spindle PWM output (Spindle Step) in Menu->Config->Ports and Pins->Motor Outputs.

This could work with milling, but the issue becomes that if you move too slow, the spindle RPM could become insufficient.

 Menu -> Plugin Control -> Main Config: ESS-M3-version

Spindle PWM Proportional to XY Feed Rate

 


 


 

DROs

 

DROs are a direct reflection of the step pulses generated by the ESS, and sent to Mach from the ESS. There are counters in the FPGA that count the step pulses, and this is the data sent back for populating the DROs.

If you don't have backlash compensation, the DROs will be exactly what the ESS has generated. If you are using Backlash compensation then the DROs will not be updated due to the extra moves to pick up the backlash.

EM issues will not corrupt the data of the DROs.

DROs can loose sync with the mechanical head under the following conditions:

  • Mechanical Backlash (Fixing the hardware is the best solution!)
  • Incorrectly configured Software Backlash Compensation settings
  • Pressing the physical EStop button while motion is in progress
  • Pressing the Mach software Stop button while motion is in progress
  • Improperly tuned acceleration or velocity settings that cause slippage on an axis
  • Power was removed from the motor drivers, allowing the axes to drift or move

If the DROs are not in sync with the mechanical head, you will need to Home the system to get back in sync.

 

 

 



What is X-Y PWM Velocity Output?

This is used with THC (Torch Height Control)

 Menu -> Plugin Control -> Main Config: ESS-M3-version

XY PWM Velocity Output

 

 



My ESS has Watchdog or Ran Out of Data Messages in Mach3.

If you are getting Watchdog messages, that means that your PC was not able to communicate with your ESS in the required amount of time.  Go to Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version.   If your Watchdog value is less than 2.0 seconds, we would strongly recommend increasing it to at least 2.0.  If it is already at 2.0, you can make it longer, but it is indicative that you have other problems. 

Watchdog

The first thing to do is make sure that your Controller Frequency is set to a reasonable value, and that would typically be 1 kHz but possibly 2 kHz or 500 Hz.

When trying to solve Watchdog messages, it is common to change your settings to a point where you start getting "Ran out of Data" messages instead.  At this point, if you are getting "Ran out of Data" messages, that means your ESS is using up data faster than the PC is sending it to it.

The next step would be to adjust the Look Ahead value. Go to Mach3's Menu -> Config -> General Config...   The Look Ahead value is normally 20 lines of code.  Try increasing this to 100 or 200 lines of code. 

 Look Ahead

If you are still running out of data, we need to address PC issues: please go to the section on How do I optimize my PC?

 



I am getting the ESS error:  Error reported by SS. Halting. Flags Register

If you are seeing this error:

SS Halting Flags Register

It is very likely that you have very little RAM on your PC (1 GB or less) and also likely that you are running windows XP.  You will need to add more RAM to your PC, or you can try to optimize your PC first.

 



How do I optimize my PC?

This article moved to here.

 

 



How do I set Up THC?

This article moved to here.

 

 



Was does the default Plasma screen THC button not work?

THC Button

The THC Button will ONLY work with a valid Mach3 license.

It has also been noted on a one user profile, that he could only get the THC button to turn on after restarting Mach3 but before pressing the lower left RED "Reset" button the first time.  After the lower left RED "Reset" button was pressed, the THC button would not change state.  This may have been due to a corrupted XML file or a licensing issue though.

 

Go to top