PRIVATE M31 Motion Control Setup Manual
The M31 is an industrial-grade motion controller for MachPro CNC systems. It serves as a stable hardware bridge between your Windows PC and machine drives, communicating over Ethernet to ensure synchronized, precise motion.
Key Features
- Axis Support: Base support for 6 axes, with scalable license upgrades to 12 axes.
- Control Flexibility: Supports both high-end EtherCAT and traditional step-and-direction protocols.
- Expandability: Allows you to connect EtherCAT I/O modules, absolute encoders, and servos so the machine never loses position.
WARNING: Incorrect installation can cause death, injury, or equipment damage. Do not attempt to install this controller until thoroughly reading and understanding this manual.
1 Introduction
Links to Portable Document Format (PDF) versions of the wiring diagrams are below the diagrams. Some PDF files contain three-dimensional (3D) models. These files have 3D.pdf at the end of the file name. Open a 3D PDF with Acrobat Reader or Foxit PDF Reader . You can rotate the 3D model to examine the wiring and components from different views. The 3D function uses additional features in the PDF reader. When you open a 3D PDF, click Trust to enable these features.
Sections 2 through 5 are designed to get most systems up and running with a minimum of custom configuration. If your system has features not described in these sections, please check sections 6 through 10. The Application notes have configuration information for less common features, and more discussion on configuration options.
Use the M31 image below as a reference throughout the manual.
Status LEDs
Each LED has a single color.
| LED | ON | OFF |
|---|---|---|
| Power | Green - M31 is powered | No Power |
| CPU | Blue blinking - M31 CPU is active
|
CPU is not enabled |
| E-Stop | Red - E-Stop pressed, or the E-Stop circuit is incomplete | E-Stop is not active |
| Hardware Enable | Orange - Hardware Enable is on | No Hardware Enable signal |
| Drive Enable | Orange - Drive Enable is on | No Drive Enable signal |
| Spindle FWD | Green when spinning forward | |
| Spindle REV | Green when spinning in reverse | |
| Drive Alarm | Red - One or more drives are in alarm state | All drives report good |
Tools Required
A small, flat head screwdriver is needed for the I/O terminals.
Hardware Startup (J8)
You must supply 24VDC to the power connection located at the top right of the board as shown below. The LED labeled PWR will be green when 24VDC is supplied.
Emergency Stop (E-Stop Circuit J6)
Connect your Emergency Stop devices to the J6 E-Stop circuit. This is a normally closed circuit with 24 VDC running in it. When the 24 VDC signal is lost, the red E-Stop LED will turn on and the system will disable immediately
Important: The M31 motion controller will not operate unless the Emergency Stop (E-Stop) button is released or the circuit is jumpered.
If you are not going to use any Emergency Stop devices, place a jumper between the ESTP and +24V terminals on J6. See the application notes at the end of this document for information about other E-Stop variations and the signal mapping.
Hardware and drive enable (J12)
- The M31 includes hardware enable and drive enable circuits.
- These circuits remain inactive until the emergency stop (E-stop) button is released, or the circuit is jumpered.
- The default settings will work for most systems.
Hardware Enable is activated when the control is powered up and all the components in the control enclosure are powered. The drives are not yet controlling the motors. Unless the motors have mechanical holding brakes, the axes can be moved by hand.
Drive Enable is activated when the Enable button on the control is clicked. The drives are now actively controlling the motors with holding torque or motion commands.
See the Application notes at the end for additional settings.
Connect your control's dedicated network interface to M31 (J20)
The M31 motion controller connects to the control computer through a **static IP Ethernet connection**.Connect a shielded CAT 5 cable from J20 on the M31 to the dedicated network port on your control.
The M31 IP address (192.168.208.35) and the computer adapter IP (192.168.208.10) are pre-configured if you purchased both a CNC control and the M31
Follow the Microsoft guide below to manually set your network adapter to communicate with the M31: Microsoft Instructions: Manually Configure IPv4 Settings Scroll to the bottom and expand the section titled “To specify IPv4 settings manually.”
Then perform the following steps:
- Set IP address to:
192.168.208.10 - Set Subnet mask to:
255.255.255.0 - Save the settings and close the window.
- Connect the Mach J20 port to the dedicated network port on the control computer using a shielded CAT 5 cable.
First Startup
On the desktop of your control, there is a MachPro shortcut for your machine type. If you are missing this icon, please run the MachPro installer
- Double click on your MachPro shortcut
- A window will come up asking to Press Cycle Start to Enable Mach and Home All Axes .
- Click Cancel to prevent the system from enabling before you have configured it.
Firmware Update
On your first start of the MachPro software, it will check to ensure that you have the latest firmware for the M31 motion controller. If not, you will see an update screen.
- Follow the prompts to update the M31 firmware.
- When it has completed the process, it will prompt to reboot the M31. Click OK to reboot the M31.
- Close the M31 Upgrade window when both the FIrmware and FPGA bars are green.
- Restart the MachPro software to ensure smooth operation.
If the Firmware or FPGA do not upgrade correctly, follow the instructions for manually updating. MachPro Manual Upgrade of M31 Firmware and FPGA
The configuration menus are locked if the system is enabled, and all the menu options will be grayed out.
Disable the system before making configuration changes.
2 Drive and Motor Setup
All of the drives and external I/O will be wired into the M31. The M31 motion controller uses EtherCAT and step and direction to control the axes.
- All axis drives and motors will be wired, configured, and calibrated for accurate motion in this Axis Setup section.
- Machine zero, limits, homing, and fixtures will be configured in the Inputs and Homing Setup section.
- The M31 will support both Step and Direction, and EtherCAT devices simultaneously.
- Carefully label all motors, drives, and cables at the connection points before you install them.
Step and Direction Connection and Configuration (J13 - J18)
The M31 supports differential or single-ended outputs. For differential outputs there are two signals for step (step + and step -) and two signals for direction (direction + and direction -). For single-ended there is only one signal for step and one signal for direction.
Note: The M31 does not support powering and controlling motors directly. It is designed to supply control signals to a drive, which will power and control the motor.
If using step and direction:
- wire the drives to J13-J18.
- Use J11 for 0 VDC
- Use J7 for +5 VDC
- Use J2 for +24 VDC
- Use your drive manual to determine if
- The drive supports differential wiring, which is always preferred
- If the drive has + or - terminals for STEP and DIR, which would also indicate that it uses a singled ended control cable
- Remove power from the motion controller and drive
Connection summary
| Drive input type | Common connection | Step connection | Direction connection | Unused outputs |
|---|---|---|---|---|
| 0 VDC common | Controller 0V |
S+ |
D+ |
S- and D- |
| +5 VDC common | Controller +5V |
S- |
D- |
S+ and D+ |
| Differential | Optional controller 0V to drive signal ground, only when specified |
S+ and S- |
D+ and D- |
None |
0 VDC Common, Connect to a single-ended drive input, use for STEP+ and DIR+
0 VDC Downloads:
- M31_to_Single_Ended_0V_common.pdf
- M31_to_Single_Ended_0V_Common_3D.pdf Download the 3D files and open them in a local PDF viewer, such as Adobe Acrobat or Foxit PDF Reader.
0 VDC Common Connections
Connect the terminals as shown in the table.
| Motion controller terminal | Drive terminal |
|---|---|
0V |
COMMON COM GND SG DCM |
S+ |
PUL+, STEP+, or CP+ |
D+ |
DIR+ or CW/CCW+ |
S- |
No connection |
D- |
No connection |
- Run a single 0 VDC wire from the J11 block to your first drive. This is a series/pass-through connection.
- Connect the 0 VDC output of the power supply to the first drive.
- Connect the 0 VDC terminal of the first drive to the 0 V terminal of the second drive. Continue this pattern for all drives.
- Example: M31 J11 0 VDC → Drive 1 (0 VDC) → Drive 2 (0 VDC) → Drive 3 (0 VDC)
Leave S- and D- unconnected or you will cause serious damage to the M31 motion controller
+5 VDC common, Connect to a single-ended drive input, use for STEP- and DIR-
+5 VDC Downloads:
- M31_to_Single_Ended_5V_common.pdf
- M31_to_Single_Ended_5V_Common_3D.pdf Download the 3D files and open them in a local PDF viewer, such as Adobe Acrobat or Foxit PDF Reader.
+5 VDC common connections
Connect the terminals as shown in the table.
| Motion controller terminal | Drive terminal |
|---|---|
+5V |
COMMON COM GND SG DCM |
S- |
PUL-, STEP-, or CP- |
D- |
DIR- or CW/CCW- |
S+ |
No connection |
D+ |
No connection |
Differential drive input connections, use + and - for STEP and DIR
Differential control wiring is always preferred because it provides high immunity from electrical noise. The example below shows a system wired with differential control wiring, drive enable, and drive fault.
Differential Downloads:
- M31_to_Yaskawa_SGD7S_differential_wiring_step_direction.pdf
- M31_to_Yaskawa _SGD7S_Differential_Wiring_3D.pdf Download the 3D files and open them in a local PDF viewer, such as Adobe Acrobat or Foxit PDF Reader.
Connect the terminals as shown in the table.
| Motion controller terminal | Drive terminal |
|---|---|
S+ |
PUL+, STEP+, or CP+ |
S- |
PUL-, STEP-, or CP- |
D+ |
DIR+, CW+, or CW/CCW+ |
D- |
DIR-, CW-, or CW/CCW- |
Differential drive: A 0 VDC connection is not always necessary
- In most differential interfaces, a separate 0 V wire is not required for the signal to work, because the receiver measures the voltage difference between “+” and “-”.
- If the drive manual specifies a signal ground, shield drain, or COM connection for noise control, connect it as specified in the drive manual.
- If the drive manual does not require a 0 V connection, then do not connect it.
- Do not use S- or D- as a ground.
Differential drive: Notes
- Use twisted pairs: S+ with S-, and D+ with D-.
- If you have a dual channel (2 motors) stepper drive, please contact MachLabs support for the correct configuration.
- There is an additional example wiring diagram for a differential connection to a Yaskawa Sigma 7 drive in the Application Notes at the end of this document.
Step and Direction M31 Plugin Configuration
M31's default motor configuration will work for step and direction systems.
- Verify the Control Output Index matches the Motor number.
- Select Dereference on Disarm for all motors which do not have encoder feedback. The machine will now re-home each time it is enabled.
- Select the Homing Type you are using for this motor.
| Homing Type | Description |
|---|---|
| Home Sensor | This is the simplest to understand, troubleshoot; and it is very reliable. We recommend you install home sensors - even on machines with absolute encoders enabled |
| Index Pulse | This is set to a particular pulse on the motor rotation. It is the most accurate method, but if anything ever changes in the motor or the mechanics of the machine, this will need to be reset |
| Sensor + Index | This first touches the home switch, then backs off to a particular index pulse. It is easier to setup, but has the same vulnerability to motor and mechanical changes as an index pulse alone |
| Mach In-Place | This will define machine zero to be the current location of the axis |
-
Set all the Control Output and Feedback Source values to Undefined on all unused motor tabs.
-
If your machine has a gantry, refer to MachPro M31 Configuring a Master Slave Axis Gantry
-
Click Apply as you complete each motor tab.
-
Click OK when you have completed all motor tabs.
EtherCAT Network Configuration (J19)
The M31 uses a standard EtherCAT physical connection plan. The computer connects via Ethernet to J20 on the M31 motion controller. J19 on the M31 is then used to connect to each of the EtherCAT devices.
- Put servo & stepper drives first in the EtherCAT chain (closest to the controller).
- Put I/O devices and safety relays in the middle.
- Put VFDs last (at the end of the chain). VFDs make electrical noise — keeping them last lowers interference.
- Use shielded network cable for all EtherCAT devices.
- Cable length: keep each cable between 1 foot and 100 meters (about 0.3 m – 100 m).
- Good cable management: keep cables neat, do not bend them sharply, and separate network cables from high-power lines when possible.
EtherCAT Downloads:
- M31_to_IO_Module.pdf
- M31_to_IO_Module_3D.pdf Download the 3D files and open them in a local PDF viewer, such as Adobe Acrobat or Foxit PDF Reader.
Load the EtherCAT configurations
- Pull down Configure > Plugins > M31 and select the EtherCAT tab
- Click the Refresh Network button to see the available devices. You may need to click this button several times for it to load all of the devices.
- Click the Update button to load the device information into the configuration window
- If any of the devices report a status of Unsupported, please contact MachLabs support using the information at the end of this manual. This is the list of MachPro compatible EtherCAT Devices
- Verify that all of the devices in the configuration list match your EtherCAT devices, and that none of them are missing.
- Click the Download EtherCAT Configuration to send the necessary configuration parameters to the individual devices.
- Click the Apply and then the OK buttons to complete the EtherCAT configuration.
- Close the MachPro software and restart it to ensure all startup settings are active
EtherCAT M31 Plugin Configuration
Pull down Configure > Plugins > M31 and select the Motor[0] tab
The example below shows Motor[0] configured as an EtherCAT drive and connected to a Leadshine drive [1]L7N(COE)
- Select EtherCAT Drive as the Control Output Type
- Set the Control Output SubID to 0
- Select the first EtherCAT Device for Motor[0]
- Select ECAT Feedback as the Feedback Source
- Select the Homing Type you are using for this motor. There are 5 types:
| Homing Type | Description |
|---|---|
| Home Sensor | This is the simplest to understand, troubleshoot; and it is very reliable. We recommend you install home sensors - even on machines with absolute encoders enabled |
| Index Pulse | This is set to a particular pulse on the motor rotation. It is the most accurate method, but if anything ever changes in the motor or the mechanics of the machine, this will need to be reset |
| Sensor + Index | This first touches the home switch, then backs off to a particular index pulse. It is easier to setup, but has the same vulnerability to motor and mechanical changes as an index pulse alone |
| EtherCAT | This enables advanced EtherCAT communication with the drive and is used to implement EtherCAT homing methods on the drive. Contact support if you need this feature |
| Mach In-Place | This will define machine zero to be the current location of the axis |
If you will be using Absolute Encoders on this axis, please read Absolute Encoder to enable and configure them.
If your machine has a gantry, refer to MachPro M31 Configuring a Master Slave Axis Gantry
- Verify the Backlash Value is set to zero. This will be important for accurate calibration of the axes. Leave the Backlash Speed set at the default value of 20%.
- Repeat this process for each active motor that you have.
- Set all the Control Output and Feedback Source values to Undefined on all unused motor tabs.
If you have Multi-Axis EtherCAT drives, please see the Application Notes section
3 Wiring and Mapping Inputs (J1, J3)
Input Wiring
This section gives wiring information for all M31 inputs. First, connect each input device to an M31 hardware input. Then, map the applicable software signal to that hardware input.
The M31 motion controller has 16 positive-negative-positive (PNP) inputs. You can use these inputs for limit switches, home switches, probes, and other sensors. To connect a negative-positive-negative (NPN) sensor, add a 2.2 kΩ resistor as shown in the diagrams below.
Inputs Download: M31_NPN_PNP_Proximity_Switch.pdf
Note: For the highest level of safety, wire the limit switches Normally Closed. If a limit is tripped, a wire or limit is damaged, the system will stop motion.
Recommended placement and use of axis switches.
Wire the 24 V **limit switches**. These switches are the final sensors that stop axis motion before the axis reaches the mechanical hard stops.
- Select or install two limit switches just inside the mechanical limits of each axis.
- Wire the two limit switches for each axis in series using their normally closed contacts.
- M31 +24 VDC -> NC limit switch -> NC limit switch -> M31 input
- Label the wires.
- Document the I/O assignment.
Note: Wiring both limit switches for each axis in series reduces the number of input ports required. Certified safety circuits often require each limit switch to have a separate input.
Wire a home switch on each axis to a separate input.
Use the charts in the appendix to plan the physical wiring and software mapping.
Mapping Signals
- At the top of the screen, open Configure > Control.
- Click the Input Signals tab.
- Scroll down the list until you see each motor section: Motor Home, Motor ++, and Motor --.
Note the State column. It shows the current state of that signal, providing immediate confirmation of your I/O configurations. In the first screen below, Z is homed.
For each signal mapping (Home, ++, --), do these steps:
- Enable mapping: Click the red X next to the signal. It will turn into a green ✓. That turns the mapping on.
- Device: Choose M31 from the Device list.
- Input Name: Pick the input you wired to the M31 (for example 1DI.01.08 or 1DI.01.09).
- Active Low:
- If your limit switches are normally closed, click the red X to change it to a green ✓.
- This makes the input active when the voltage goes low. Wiring normally closed is the safest method.
- Description: Type the name for this axis limit (the name operators and designers use). When you finish all limits and home switches for each axis, click Apply, then click OK.
Short example
- Motor 0: Home, ++, and -- are enabled (green check).
- All limits are wired normally closed.
- We use M31 1DI.01.09 for home, ++ and --.
- If we use M31 1DI.01.08 for the Home switch it will be more reliable.
- When M31 1DI.01.09 is mapped for a home switch, MachPro will only use it as a home switch only during a homing cycle. At all other times it will function as a limit switch.
Manually trigger each limit switch and make sure they disable Mach before continuing. This verifies both the wiring and signal mapping.
4 MachPro Axes Configuration
There are four main areas of the screen.
- Axis and Motor Test Panel This will always be visible at the top of the screen so that you can save and test your configuration with motion.
- Axis Mapping This screen controls which axes are enabled, and which motors are mapped to each axis.
- Axis Configuration These settings are specific to each axis and will apply to all motors on that axis.
- Motor Configuration These settings are specific to each motor. Example: on a gantry the two motors typically rotate in opposite directions from each other.
During the axis and motor configuration process, there is a Test-Motion Panel above the configuration panels. When you have completed settings and need to test them:
- Click Save & Test
- Click Enable
Use the movement buttons on the configuration panels to test the axis and motor configuration.
While test mode is enabled, you can:
- Open a different configuration panel.
- Select a different axis.
- Select a different motor.
- Continue to test axis and motor movement.
NOTE: The operator-screen Jogging buttons do not operate while the configuration screen is open. Use the movement buttons on the configuration panels.
When testing is complete, click Save & Return to Config.
Axis Mapping
Before you do the full axes configuration, you must ensure that all motors, including slaves, are mapped to the correct axes, and that all motors are moving in the correct direction.
- Disable the MachPro software
- On the menu bar, click Configure >Control. Then select the Axis tab.
- Click the ALL Axis Mapping tab.
- Enable motors by clicking their box in the Enabled column so that it changes to a green check mark. In the example below, motors 0, 1, and 2 are enabled.
Map slave motors to the correct axis
- Ensure that the slave motor is not mapped to another axis.
- The default configuration maps Motor3 to the A axis, but for our example it needs to be mounted as a slave motor on the X axis.
- Click the pull down arrow on Motor3 and select the blank row at the top of the list of available motors. This unmaps all motors from axis A.
- Click the X axis box in the Slave 1 column.
- Select Motor3 from the available motors and click Apply to complete the mapping.
Set motor direction
- Click the X axis tab
- Click the Test panel tab
- Use the Test-Motion buttons to enable the machine
- Test each axis with the < Move Neg and Move Pos > buttons
WARNING: Be careful when you test an axis that uses master and slave motors. The mechanical arrangement can require the two motor shafts to rotate in opposite directions. Incorrect motor direction can cause the axis to bind and can damage the machine. Use short, low-speed moves until you verify the direction of both motors.
- Use the Test-Motion buttons to disable the machine and return to configuration mode.
- In the axis and motor selection list, select the Motor number that you must reverse. Then, select the Identity tab.
- Select Reverse Direction for each motor that must rotate in the opposite direction.
- Use the Test-Motion buttons to enable the machine. Make short, low-speed moves and verify that all motors move the axis in the correct direction. If the motors fight each other, bind the axis, or move the two sides of the axis in opposite linear directions, disable the machine immediately. Correct the Reverse Direction setting before you continue.
- Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
Axis Configuration
The axis configuration panel has tabs across the top. The axis can be fully configured with these tabs, and many default settings will work without modification. Only change settings that need to be changed. Axis Calibration, Homing, and Soft Limits are all unique to each machine and must be configured correctly.
Identity
Normally no changes are necessary here. If an axis on your machine has a different name in your procedures, update it here to match your procedures.
If this axis is for a tool changer, select Auxiliary instead of Standard as the type.
Configure an axis as Auxiliary when the axis operates only an auxiliary machine function and must not participate in coordinated toolpath motion.
An automatic tool changer axis is one example.
MachPro does not include an Auxiliary axis in coordinated toolpath moves. Therefore, the Auxiliary axis does not limit the velocity or acceleration of those moves.
Calibrate
Axis calibration is necessary for accurate machine movement. Verify that each axis meets your accuracy requirements before you leave this section. The configuration steps after this section depend on correct axis calibration. If you change the calibration later, you must re-set the machine zero, soft limit, and any goto position settings.
MachPro provides two axis calibration methods: Auto Calibration Mode and Manual Calibration Mode.
Auto Calibration Mode requires complete motor and mechanical linkage information for the axis. It provides the most accurate calibration.
Manual Calibration Mode uses measured axis movement to calculate the correct counts per unit. Use this mode if you do not have all motor or mechanical linkage information. Careful manual calibration can provide results suitable for production.
Before you use either calibration mode, define the motor(s) for each axis.
This section describes Manual Calibration Mode first, followed by Auto Calibration Mode.
Motor Catalog
Select or enter your motor in the Motor Catalog.
Motor specifications must match your actual motors or your calibration will be incorrect.
Definitions
- Encoder Resolution is the number of encoder counts per motor revolution that the servo drive reports.
- Drive Ratio is the scaling factor that the motion controller applies to the Encoder Resolution when it commands motion.
- Actual Encoder Resolution is the calculated resolution after the Drive Ratio is applied.
Select an existing motor
- Click your motor in the list on the left side
- If Actual Encoder Resolution is more than 131,072, follow the instructions in Set Drive Ratio
- Click the Select button in the lower right corner.
Create a New Motor Entry
If your motor is not in the motor catalog, create a new motor entry and select that motor.
- Click New in the center section of the motor catalog.
- Complete all required fields.
- Enter the Encoder Resolution and Drive Ratio:
- For a stepper motor, enter the drive's Encoder Resolution and set Drive Ratio to 1:1.
- For a servo motor, enter the drive's Encoder Resolution.
- If Actual Encoder Resolution is more than 131,072, follow the instructions in Set Drive Ratio
- Click Save.
- Click Select in the lower-right corner.
The M31 supports a maximum encoder resolution of 131,072 counts per revolution (2¹⁷).
If the servo drive has a native encoder resolution greater than 131,072 counts per revolution, configure the servo drive to scale the encoder output to 131,072 counts per revolution. This scaling applies to encoder information that the servo drive sends to the motion controller.
-
Find the native encoder resolution in the servo drive documentation.
The applicable servo drive parameter can have one of these names:
- Drive Ratio
- Encoder Output Resolution
- Edge/Pitch
-
If the native encoder resolution is greater than 131,072 counts per revolution, configure the servo drive to scale the encoder output to 131,072 counts per revolution.
Refer to the servo drive documentation for the applicable parameter and setting.
-
Set the motion controller Drive Ratio to the value specified in the reference table.
This setting scales the motion command that the motion controller sends to the servo drive.
After configuration, command axis motion. Make sure that the axis moves the commanded distance.
If the axis does not move the commanded distance:
-
Verify the native encoder resolution.
-
Verify the encoder scaling in the servo drive.
-
Verify the motion controller Drive Ratio.
-
Test the axis movement again before you change other motion settings.
| Encoder resolution | Bit resolution | Drive Ratio | Actual Encoder Resolution |
|---|---|---|---|
| 131,072 counts/revolution | 2¹⁷ | 1:1 | 131,072 |
| 1,048,576 counts/revolution | 2²⁰ | 8:1 | 131,072 |
| 8,388,608 counts/revolution | 2²³ | 64:1 | 131,072 |
| 16,777,216 counts/revolution | 2²⁴ | 128:1 | 131,072 |
Detect the Encoder Resolution
If you do not know the encoder resolution, use the Auto Detect tool on the right side of the motor catalog.
Note: Auto Detect applies only to a motor that has an encoder connected for feedback. On the M31, servo feedback is supported through EtherCAT. For Step and Direction systems, enter Encoder Resolution manually.
If Actual Encoder Resolution is more than 131,072, follow the instructions in Set Drive Ratio
Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
Test Motion
Use the Test-Motion buttons to enable the machine.
Use the Test Motor buttons at the bottom of the Calibrate panel to practice motor movement. Select turns or distance as the movement unit. Start with a small movement value and a low speed. Gradually increase the value and speed until the motor moves the full distance that you will measure during calibration. Make sure that you can operate these controls before you start the manual calibration.
Manual Calibration
Measure and mark the longest distance that you can measure accurately on the axis. Allow a short jog distance at both ends of your marked area. Jog outside of the mark, and come back to the mark each time before recording movement. This will take up the mechanical backlash on that axis before making your measurement.
Jog the axis to the first mark using the < Jog - or Jog+ > buttons. Adjust your speed to provide reliable results.
- Click the Jog Distance option
- Click the Record Jog button and the indicator next to it will turn green. This will also reset the Distance Moved value above the button.
- Depending on your process, you may zero the Distance Moved value above the jog buttons.
- Use the < Jog - and Jog+ > buttons to jog to your second mark.
- Click the Stop Recording button
- Measure and enter the Actual Travel value
- Click the Calculate button to see the New Steps Per Unit value
- Click Accept, or make another measured movement. When you click Accept, the control updates and clears the New Steps per Unit field.
Verify with Commanded distance
Prepare a pre-measured distance that you will move this axis, and move the axis to the first mark.
- Click the Commanded distance option
- Enter a Distance to Move
- Enter a safe RPM value for your machine
- Click the Move button
- Measure and enter the Actual Travel distance moved.
- Click the Calculate button
- Click the Accept button.
- If you made a change, repeat this process to verify the axis movement is accurate.
Slave Motor Calibration
By default, the master and slave motors will use the same calibration settings. If the slave motor is different from the master, then that motor can be calibrated separately.
- While in the Axes menu, select the specific slave motor that needs to be calibrated.
- Uncheck Inherit calibration from master
- Select the Calibration Mode either Auto or Manual
- Complete the steps used in calibrating the master motor above.
Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
If you wish to adjust the motor's velocity and acceleration values, refer to Configure Velocity and Acceleration in the Application Notes
Automatic Calibration
Automatic calibration provides the most accurate calibration but it requires specific details about the motor and axis mechanics. If you do not have enough information, use the Manual Calibration section above. If the process is completed carefully, manual calibration will also provide excellent accuracy.
- Enter the values for the mechanical components this axis has.
- Click the Calculate button and MachPro will calculate the correct steps per unit, velocity and acceleration for this axis.
- Click Accept or update the motor or mechanical values and re-calculate.
- You may use the Test Axis section at the bottom of the Calibrate pane to confirm the calibration.
- You may choose to test the motor or ballscrew turns.
- Note that the machine needs to be enabled in test mode.
Slave Motor Calibration
By default, the master and slave motors will use the same calibration settings. If the slave motor is mechanically different from the master, then that motor can be calibrated separately.
- While in the Axes menu, select the specific slave motor that needs to be calibrated.
- Uncheck Inherit calibration from master
- Select the Calibration Mode either Auto or Manual
- Complete the steps used in calibrating the master motor above.
Axis calibration is necessary for accurate machine movement. Verify that each axis meets your accuracy requirements before you continue the configuration. The remaining configuration steps depend on correct axis calibration. If you change the calibration later, you must then re-set the machine zero, soft limit, and any goto position settings.
Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
Screw mapping, Linear compensation is supported in MachPro. Full use instructions are available at this link.
WARNING No limits have been set up. DEATH, INJURY or serious PROPERTY DAMAGE can occur if the system is not operated carefully. Limits and homing setup will be completed in the following sections
Now that the axes are calibrated additional steps can be completed.
Set Maximum Following Error
This only applies to systems with motor encoder feedback and you must complete calibration first.
- Pull down Configure > Plugins > M31 and select the first motor tab to be set
- Set the Max Following Error between 125% and 150% of the Steps/Unit of that motor as shown in the lower right area of each motor tab.
- Click Apply and then click the next motor tab that needs to be set.
- Click OK when all active motors have been set.
Backlash Compensation
Backlash is lost axis motion that occurs when an axis changes direction. Backlash compensation adds commanded motion to compensate for this lost motion.
The M31 plug-in provides software backlash compensation. Use it only for small and stable amounts of backlash.
Before you configure backlash compensation, measure the backlash on the applicable axis. Refer to How To Test For Backlash .
Set the Backlash Value
- Go to Configure > Plugins > M31.
- Select the motor tab for the axis that you want to configure.
- Enter the compensation distance in Backlash Value.
The machine setup units determine the units for Backlash Value:
- Imperial machines use inches.
- Metric machines use millimeters.
For best performance, keep the Backlash Value less than:
- 0.0015 in on an imperial machine.
- 0.038 mm on a metric machine.
Start with one-half of the measured backlash value.
Test the axis after you enter the value. Adjust the value until the measured position error is acceptable.
If the backlash is large or changes at different positions along the axis, correct the mechanical system. Software backlash compensation is not suitable for backlash that changes with axis position.
If the position error changes predictably along the axis, also refer to Screw mapping, Linear compensation .
Set Backlash Speed %
- Go to Configure > Plugins > M31.
- Select the applicable motor tab.
- Set Backlash Speed % to 20% for the initial setting.
Backlash Speed % controls the acceleration used for the backlash compensation move. The M31 plug-in multiplies the motor's maximum acceleration by this percentage.
The permitted range is 10% through 400%:
- 10% = 0.1 times the maximum motor acceleration.
- 100% = the maximum motor acceleration.
- 400% = 4 times the maximum motor acceleration.
Do not set Backlash Speed % to 0%. The M31 backlash compensation function does not operate when this value is 0%.
Change Backlash Speed % only if motion testing shows that a different compensation acceleration is necessary.
Verify the Settings
After you configure backlash compensation:
- Move the axis in both directions.
- Repeat the backlash measurement.
- Make sure that the compensation reduces the measured position error.
- Make sure that the axis changes direction smoothly.
- Make sure that the compensation move does not cause a motor fault, stall, or other abnormal motion.
If the compensation causes abnormal motion, reduce Backlash Speed % and test the axis again.
If you cannot get consistent backlash measurements, inspect the mechanical system before you continue to adjust software compensation.
Backlash notes
Backlash compensation corrects for a small amount of lost motion when an axis reverses direction. It does not repair the mechanical source of the backlash.
Use software compensation as a short-term or limited correction when the backlash is small and repeatable. Mechanical wear, loose components, insufficient preload, or other mechanical problems can cause backlash that changes with load or axis position. Correct these conditions mechanically.
Backlash Value and Backlash Speed % control different parts of the compensation:
- Backlash Value specifies the compensation distance.
- Backlash Speed % specifies the acceleration of the compensation move.
A high Backlash Speed % makes the compensation move more aggressively. Excessive acceleration can cause rough direction changes or motion faults. Use 20% as the initial value unless machine testing shows that a different value is necessary.
All of the axes are now calibrated, but MachPro does not know where the limits of travel are on each axis. That will be configured in the remaining axis configuration steps. Until that is completed, be very careful if you are moving axes.
Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
Motion Limits
This is a read-only screen that displays the velocity, acceleration, and jerk values for each axis, and the Effective (minimum) values across all motors on that axis.
Homing / Hard limits
The Homing / Hard Limits tab contains the settings for axis homing and hard limits.
In this documentation, homing means the process that establishes the machine reference position and the machine zero position.
Homing does not set the zero position for a part, fixture, or workpiece.
Machine zero and work zero
The machine coordinate system is the fixed coordinate system of the machine. MachPro uses it as the reference for machine-coordinate movement, travel limits, and other machine-position functions.
The machine zero position is the origin of the machine coordinate system. Machine zero can also be called the machine home or reference position.
After homing, the machine coordinates are based on this reference. The machine zero position is typically X0, Y0, and Z0, but the configured Home Offset can assign a different machine-coordinate value at the completed home position.
Machine zero is different from the zero position that an operator sets for a part or fixture.
A work coordinate system defines the position of the part or fixture relative to the machine coordinate system. Operators typically set work zero with a work offset such as G54 through G59, or with another applicable work-coordinate method.
Homing establishes the machine reference. It does not change the intended part or fixture zero.
Diagram of recommended axis and limit layout
Definitions
A home switch is an input that MachPro uses during a homing cycle to locate the machine reference position.
A hard limit is a physical switch or input that stops or inhibits axis motion before the axis moves outside its permitted travel.
A referenced axis is an axis for which MachPro has established a valid machine-coordinate reference.
Configure Machine Zero
-
Set Home Direction to the direction in which the axis must move to find the home switch.
-
Set Home Order to control the sequence in which the axes home. MachPro homes the axis or axes with the lowest Home Order value first.
For a typical mill:
- Set the Z axis to
1. - Set the X axis to
2. - Set the Y axis to
2.
This configuration homes the Z axis first. The X and Y axes can then home at the same stage.
- Set the Z axis to
-
Set Home Offset to the machine-coordinate value that MachPro must assign to the axis when the homing cycle is complete. This value affects the machine coordinate system. It does not set the part or fixture zero.
-
Set Home Speed to the homing speed. Enter the value as a percentage of the maximum velocity configured for the axis.
-
Select Home In Place only if the axis does not move during the homing process. MachPro then assigns the current axis position as machine home. If you use Home In Place, you must also select Home In Place as the Homing Type in the M31 plugin configuration.
-
Select Ref On Startup if MachPro must mark the axis as referenced during startup without doing a homing cycle. Used on machines that use G90 and G92 heavily.
If you will be using Absolute Encoders on this axis, please read Absolute Encoder to enable and configure them.
Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
Test Homing
Use the test controls in the upper-right area of the M31 configuration screen to enable test motion.
Use Home Axis to establish the machine reference for an axis.
Use Dereference to remove the current machine reference.
Prerequisites
Before you test homing, make sure that:
- The home and limit switches are wired, mapped, and tested.
- Homing Type is configured in the M31 plugin. Refer to Step and Direction, or EtherCAT as applicable.
- All motors for the axis are mapped to that axis.
- the axis moves toward the correct home switch.
- Open the Test tab.
- Enable test motion.
- Command movement in the homing direction.
- Make sure that the axis moves toward the correct home switch.
Stop the test immediately if the axis moves in the wrong direction.
Correct the axis direction or homing configuration before you continue.
Dereference an axis
Dereferencing removes the current machine-home reference for the selected axis.
Use Dereference when:
- You change the physical home position.
- You change the homing hardware.
- You must establish a new machine zero during initial setup.
After you dereference an axis, MachPro no longer considers the current machine-home position valid.
Dereferencing the axis does not define a new part or fixture zero.
Establish machine zero
After you dereference the axis, use the procedure for the configured homing method.
Home switch
- Click Home Axis.
- MachPro moves the axis through the configured homing sequence.
- MachPro uses the home switch and the configured homing settings to establish the machine reference.
- MachPro assigns the applicable machine-coordinate value.
Home In Place
- Carefully jog the axis to the position that you want to use as the machine reference for this axis.
- Click Home Axis.
- MachPro establishes the machine reference from the current axis position.
Do not use this procedure to set a part or fixture zero. Use the applicable work-coordinate procedure to set the work zero.
Absolute encoder - Do not click Home Axis to establish the reference with this procedure. - Use the Absolute Encoder setup procedure to establish the machine reference and encoder offset.
Gantry axis with master and slave motors - If the machine has a gantry axis, refer to MachPro M31 Configuring a Master Slave Axis Gantry - You can use the controls on this tab to test gantry homing after you complete the gantry configuration.
Verify the result
-
Make sure that MachPro shows the axis as referenced after the homing procedure is complete.
The digital readout (DRO) axis labels and values change from alternating yellow and red to solid black when the axis is referenced.
-
Verify that the machine-coordinate position is correct.
-
If necessary, verify separately that the applicable work offset gives the correct part or fixture zero.
If the machine-coordinate position is incorrect, dereference the axis and correct the homing configuration before you continue.
Do not correct an incorrect machine reference by changing the part or fixture zero.
Limit and Home Signals
At this stage of machine setup, verify each required home and limit signal.
For each signal:
- Make sure that the signal is enabled.
- Make sure that the signal is assigned to the correct physical input.
- Operate the applicable switch.
- Make sure that the signal changes state in MachPro.
A signal is not necessarily configured correctly because its name appears on the Homing / Hard Limits tab.
Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
Soft Limits
Soft limits define the permitted machine travel for each axis. MachPro stops a running G-code program before a commanded move would cause an axis to move outside its configured soft limits.
Before you set the soft limits, make sure that the machine is homed and that axis motion operates correctly.
The machine home position must remain inside the permitted travel range. For this reason, set the soft limit beyond the home position on the applicable side of the axis.
- Select the Soft Limits tab.
- Make sure that Enforce is enabled. This setting is enabled by default.
- Use the Axis and Motor Test Panel to enable machine motion.
- Use the Live Position jog controls to move the axis toward its maximum negative travel position.
- Stop the axis before it reaches the limit switches, or the mechanical hard stop.
- Make sure that the selected limit position is beyond the machine home position for that axis.
- Click Teach to record the negative soft limit.
- Jog the axis to its maximum positive travel position.
- Stop the axis before it reaches the limit switches, or the mechanical hard stop.
- Click Teach to record the positive soft limit.
- Repeat this procedure for each axis.
- Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
Test Axis
You may use this tab to verify motion and calibration. Use the Axis and Motor Test Panel to enable machine motion.
There is also a set of test motion controls at the bottom of the Calibrate tab.
Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
If you have a gantry with a master and slave motor, use MachPro M31 Configuring a Master Slave Axis Gantry
5 Motor Configuration
There are separate tabs for configuring motors.
Identity
Change the default motor names to match the labels used on the physical machine.
Click Apply to save your changes. If you are done with configuration for now, click OK to close the configuration window.
Units
Configure axis velocity and acceleration for reliable machine operation and the shortest practical cycle time.
Calibration calculates initial Velocity and Acceleration values from the motor and mechanical data. Use these values as starting values. The installed machine can require lower values.
For each axis:
-
Find the maximum stable velocity.
-
Set the operating velocity to 80% of that value.
-
Find the maximum stable acceleration at the operating velocity.
-
Set the operating acceleration to 80% of that value.
-
Test the velocity and acceleration together.
-
Test the full axis travel.
-
Complete the final tests under representative cutting load.
Do not use air cutting alone to determine the final Feed Velocity or Feed Acceleration. Cutting load can cause position loss, drive faults, stalls, vibration, or unacceptable machining even when air cutting is reliable.
Use air cutting to find initial settings. Then run test jobs with the materials, tools, and cutting conditions that the machine normally uses.
Before you start
Make sure that axis calibration is complete.
Calibration sets Units. Do not change Units on the Motor Units screen. Correct the axis calibration if the displayed units are incorrect.
MachPro provides separate motion limits for:
-
Feed: commanded machining motion.
-
Rapid: non-cutting positioning motion.
-
Jog: manual axis motion commanded by the operator.
Velocity is the maximum commanded axis speed. Acceleration controls how quickly the axis changes velocity.
The motor, drive, transmission, machine structure, axis load, and lubrication can limit both values.
Tune one axis
Test one axis at a time before you test coordinated motion.
Find the maximum stable velocity
-
Start with the calibrated velocity.
-
Command a move that has sufficient axis travel to reach the configured velocity.
-
Test both directions and different positions in the usable travel.
-
Change the velocity in controlled increments.
-
Continue until the axis becomes unstable or you find the practical machine limit.
-
Record the highest repeatable stable velocity.
-
Set the operating velocity to 80% of that value.
For example, if the highest stable velocity is 1,000 units/min, set the initial operating value to 800 units/min.
The velocity is too high if you find one or more of these conditions:
-
Position error
-
Drive fault
-
Over-torque condition
-
Loss of position
-
Excessive vibration
-
Harsh or unstable motion
-
Different behavior at different positions in the axis travel
If a failure occurs, decrease the velocity and repeat the test.
Find the maximum stable acceleration
Acceleration display Toggle
MachPro can show acceleration as:
-
Units/s²
-
Time (ms)
Units/s² shows the rate of velocity change.
Time (ms) shows the time associated with the configured acceleration portion of the displayed profile.
Changing this display does not change the selected motion planner.
Keep the operating velocity that you found in the previous procedure.
-
Start with the calibrated acceleration or a known stable value.
-
Command repeated acceleration and deceleration moves.
-
Test both directions and different positions in the usable travel.
-
Change the acceleration in controlled increments.
-
Continue until the axis becomes unstable or you find the practical machine limit.
-
Record the highest repeatable stable acceleration.
-
Set the operating acceleration to 80% of that value.
-
Test the velocity and acceleration together again.
Decrease the applicable value if the combination is not stable.
Typical indications of excessive acceleration include position errors, drive over-torque faults, excessive vibration, mechanical jolts, or inconsistent following performance.
The 20% reduction gives operating margin for changes in load, temperature, lubrication, and mechanical condition.
Tune coordinated Feed motion
Configure all axes that participate in coordinated toolpath motion.
During a coordinated move, MachPro keeps the commanded axes synchronized. An axis with a lower acceleration capability can limit the complete move.
For example, if X can reliably use 500 units/s² and Y can use only 300 units/s², an X-Y move can be limited by Y. Increasing only the X-axis acceleration will not improve that move.
Long moves
The first graph shows three moves of the same distance. Each move has the same target velocity but a different acceleration rate: low, medium, or high.
A higher acceleration rate lets the axis reach the target velocity in less time. If the move is long enough to reach the target velocity, the higher acceleration rate decreases the total move time.
Use the highest stable acceleration rate to make full use of the motor's available velocity and to reduce the cycle time for each part.
Short moves
The second graph shows three shorter moves of the same distance. Each move has the same target velocity but a different acceleration rate: low, medium, or high.
None of these moves reaches the target velocity. However, a higher acceleration rate still decreases the total move time.
Use the highest stable acceleration rate to decrease the time for short moves and reduce the cycle time for each part.
These principles apply to rapid, feed and jog acceleration.
Give special attention to Feed Acceleration. Short toolpath moves frequently do not have sufficient distance to reach maximum Feed Velocity. Higher stable acceleration can therefore decrease cycle time more than higher maximum velocity.
Do not decrease Feed Velocity only because short moves do not reach the configured value. Determine whether move distance and Feed Acceleration are the limiting conditions.
Configure Rapid and Jog motion
Use the same velocity and acceleration tuning method for Rapid and Jog motion.
Rapid and jog moves do not have cutting load. Their velocity and acceleration limits can therefore be different from the final limits that are reliable during cutting.
For Rapid motion, increase velocity only when the machine has sufficient travel to make useful use of the higher value. On short rapid moves, acceleration can have more effect on positioning time.
For Jog motion, prioritize predictable starts and stops. Do not increase jog performance until manual machine control becomes difficult.
Understand the Motor Units motion graph
Use the Motor Units graph to understand the commanded motion profile. Do not use it to predict actual move time.
The graph extends its displayed timeline as necessary to let the profile reach the configured maximum velocity. Thus, a high velocity setting can appear as a full acceleration, constant-velocity, and deceleration profile even when a real machine move does not have sufficient distance to reach that velocity.
Use machine tests to determine actual machine performance:
- Run the specified move on the machine to determine whether it reaches maximum velocity.
- Measure the specified move to determine its actual cycle time.
- Run repeated machine tests to verify reliable operation at the configured settings.
- Run representative test cuts to verify reliable operation under normal cutting loads.
Use air cutting to establish initial velocity and acceleration settings. Then, run test cuts with the materials, tools, feeds, speeds, and cutting conditions that the machine will normally use. Use the test-cut results to determine the final maximum feed velocity and acceleration.
Select the motion planner
A motion planner calculates the commanded trajectory and controls changes in velocity and acceleration.
MachPro provides two primary planners:
-
Trapezoidal
-
PureMotion
First establish reliable axis velocity and acceleration. Do not change the planner to compensate for incorrect axis settings.
Trapezoidal and PureMotion
The Trapezoidal planner changes commanded acceleration immediately at an acceleration transition.
PureMotion can spread this change over the configured Jerk Time.
PureMotion is useful when smoother acceleration transitions reduce unwanted machine response enough to improve the application or permit a higher stable acceleration. Additional jerk time can increase or decrease cycle time. The machine motion needs to be tuned as a system.
If both planners give stable motion at the required acceleration, planner selection is not an important tuning factor.
To select the planner:
-
Disable MachPro.
-
Select Configure > Control.
-
Select the Defaults tab.
-
In Trajectory Mode, select Trapezoidal or PureMotion.
-
Click Apply or OK.
Test the applicable velocity and acceleration values again after you change the planner.
Configure PureMotion Jerk Time
Jerk is the rate of change of acceleration. PureMotion uses Jerk Time to control how quickly acceleration changes.
Use PureMotion when abrupt acceleration changes cause vibration or other unwanted machine response.
Configure Jerk Time only after velocity and acceleration are stable.
-
Start with a low Jerk Time.
-
Increase it in small increments only when necessary.
-
Test machine vibration and mechanical response.
-
Determine whether the change permits a higher stable acceleration.
-
Check the effect on cycle time.
-
Use the lowest value that gives the required result.
Adding Jerk Time increases the time required to change acceleration. The smoother acceleration transition can reduce machine vibration, mechanical excitation, and other unwanted machine responses. This can let the machine use higher practical velocity or acceleration settings, which can reduce overall cycle time even though each acceleration transition takes longer.
Notes:
- The red graph lines are for rapid motion. Green lines are for feed motion.
- The vertical scale is the axis velocity and the horizontal scale is the time required for the move.
- The graphs are scaled to allow direct comparisons.
MachPro provides separate jerk-time settings for Feed, Rapid, and Jog motion.
A Jerk Time of 0 ms removes the PureMotion smoothing effect for that motion type.
Copy settings to other motors
Use the edit control next to a value to copy the value to other motors.
-
Select the edit icon.
-
Select the applicable motors.
-
Apply the value.
Use copied values as starting values unless you have verified that the axes have the same operating limits. Test each axis before you use the copied value as its final setting.
Final machine test
After single-axis tuning, test coordinated machine motion.
First, use air cutting to verify the initial settings. Then run representative test jobs under normal cutting load.
Test:
-
Long and short moves.
-
All directions of travel.
-
Different positions in the usable axis travel.
-
Coordinated Feed motion.
-
Direction changes.
-
Representative Rapid and Jog motion.
-
Normal production materials and cutting conditions.
Make sure that the machine has no position errors, drive faults, loss of position, excessive vibration, or mechanical instability.
Use the test-cut results to determine the final Feed Velocity and Feed Acceleration.
If coordinated motion is less stable than single-axis motion, identify the limiting axis or axis combination. Decrease the applicable velocity, acceleration, or Jerk Time, and test again.
Tuning is complete when representative production motion is reliable and gives the required machining quality and cycle time.
Misc
Enable delay is the amount of time (ms) between when MachPro enables and this drive will enable.
Position error threshold is managed by the M31 motion controller. Maximum Following Error.
Backlash amount and rate are managed by the M31 motion controller. Please see this section Backlash Compensation.
Encoder / Aux
axes are enabled as standard or auxiliary This is using an auxiliary encoder and what to do with that feedback
- Does this tab relate to EtherCAT at all?
- There is one encoder feedback terminal on the M31. Is that what the "use aux encoder" is mapping to? If not, how does it know which input to watch?
- If you have an aux encoder, what does it do if the system is still following the motor? When would you not select this?
- Same for updates planner. What is the encoder used for if not to update the planner? When would you not select this?
Screw Map
Screw mapping, Linear compensation is supported in MachPro. Full use instructions are available at this link.
4 Output Setup (J10)
Wiring Outputs
The M31 has 8 logic outputs that can be used for any low current application. Use a 24 VDC power supply with 5 amp or greater output for current loads above 250mA.
| 8 Digital Outputs (PNP Sourcing) | |
|---|---|
| Voltage | 16 - 24VDC |
| Max Current | 250mA use a relay for higher current |
| Pulse Width Modulation (PWM) | Not available on this release |
Output to a relay for current draws above 250mA
Relay Module Downloads:
- M31_Relay.pdf
- M31_Relay_3D.pdf Download the 3D files and open them in a local PDF viewer, such as Adobe Acrobat or Foxit PDF Reader.
Output to a contactor
Contactor Downloads:
- M31_to_Contactor.pdf
- M31_to_Contactor_3D.pdf Download the 3D files and open them in a local PDF viewer, such as Adobe Acrobat or Foxit PDF Reader.
Mapping Signals to Outputs
To configure an output, follow the procedure below.
**Using Outputs**
Outputs 0-5 can be controlled with M-Codes. One M-Code turns an output on, and the other M-Code turns the output off. Use the table below for a reference.
| Custom M-Codes | Functions |
|---|---|
| M200 | Output #0 on |
| M201 | Output #0 off |
| M202 | Output #1 on |
| M203 | Output #1 off |
| M204 | Output #2 on |
| M205 | Output #2 off |
| M206 | Output #3 on |
| M207 | Output #3 off |
| M208 | Output #4 on |
| M209 | Output #4 off |
| M210 | Output #5 on |
| M211 | Output #5 off |
| This pattern continues through M218 and M219 for Output #9 |
Also see M220 - M222 for extended output control
Mist and Flood Control
| Feature | ON M-Code | OFF M-Code |
|---|---|---|
| Mist | M7 | M9 |
| Flood | M8 | M9 |
5 Spindle Setup (J5)
Spindle Configuration
MachPro supports several methods to control a spindle. Select the procedure that matches the spindle drive and control method:
-
Analog 0–10 VDC control of a variable frequency drive (VFD)
-
EtherCAT control of a VFD
A variable frequency drive (VFD) controls the speed and direction of an AC spindle motor.
EtherCAT (Ethernet for Control Automation Technology) is an industrial Ethernet network that MachPro can use to communicate with compatible drives and other devices.
Encoder Feedback (J4)
| Quadrature Encoder Channel | 1 |
|---|---|
| Connection | Terminal Blocks, 5 VDC Differential |
| Max Frequency | 1.6 MHz |
Please refer to the documentation for your VFD and spindle motor for spindle encoder connections.
Analog 0–10 VDC VFD
Use this configuration when the M31 sends a 0–10 VDC speed command to the variable-frequency drive (VFD).
1. Wire the spindle control
Connect these M31 signals to the VFD:
- Forward rotation
- Reverse rotation
- 0–10 VDC analog speed
For M31 controllers through Rev 1.2, refer to MachPro Spindle Configure for M31 up to Rev 1.2 These controllers use sinking outputs for the forward and reverse direction signals.
M31 Rev 1.3 and later controllers use relays for the forward and reverse direction signals.
The drawings below show connections to a Yaskawa GA500 VFD. Refer to the manual for your VFD for equivalent terminals and functions.
Yaskawa VFD Downloads:
- M31_to_Yaskawa_VFD_GA500_Wiring_Diagram.pdf
- M31_to_Yaskawa_VFD_GA500_General_Layout.pdf
- M31_to_Yaskawa_VFD_GA500_3D.pdf Download the 3D files and open them in a local PDF viewer, such as Adobe Acrobat or Foxit PDF Reader.
2. Configure the VFD and M31 analog output
Configure the VFD for the connected spindle motor. Use the motor nameplate, spindle documentation, and VFD documentation to set the applicable parameters:
- Rated voltage
- Rated current
- Rated frequency
- Rated speed
- Maximum permitted frequency
- Acceleration and deceleration
- Control-input functions
Do not estimate motor electrical ratings.
Configure the VFD to use the 0–10 VDC analog input for speed and the applicable digital inputs for direction.
Open Configure > Plugins > M31 > System.
Set Spindle Type for analog control.
If the spindle has a feedback encoder, refer to the Encoder Feedback instructions. If it does not have a feedback encoder, set Feedback Source to Undefined.
Adjust Analog Spindle Scale only if the measured analog voltage does not agree with the commanded voltage.
Analog Spindle Scale % = Commanded Voltage / Actual Voltage × 100
4. Calibrate the spindle
Use the instructions in the MachPro Spindle Calibration manual.
EtherCAT VFD
Use this configuration when MachPro controls a variable-frequency drive (VFD) through EtherCAT.
1. Connect and verify the EtherCAT VFD
Complete the EtherCAT wiring.
Use the motor nameplate, spindle documentation, and VFD documentation to set the applicable VFD parameters:
- Rated voltage
- Rated current
- Rated frequency
- Rated speed
- Maximum permitted frequency
- Acceleration and deceleration
- Control-input functions
Do not estimate motor electrical ratings.
Open Configure > Plugins > M31 > EtherCAT.
Verify that the VFD appears on the EtherCAT network and that the M31 identifies it as a supported device. Refresh the EtherCAT network if necessary.
If the device shows Unsupported, contact MachMotion Support. Support for that VFD model can require an EtherCAT device definition.
Do not change VFD parameters that MachPro manages during EtherCAT initialization unless the hardware documentation instructs you to change them.
2. Configure the M31 spindle communication
Open Configure > Plugins > M31 > System.
Set:
- Spindle Type to ECAT RPM
- Spindle Channel to 1
- Feedback Source to ECAT Feedback
- Feedback Channel to 1
Configure the EtherCAT motor entry for the spindle. Select the Motor tab for the spindle VFD. This is normally the last EtherCAT motor.
Set:
- Control Output to EtherCAT VFD
- SubID to 0
- EtherCAT Device to the applicable VFD
- Feedback Source to EtherCAT Feedback
- Max Following Error to 100000000
The high Max Following Error value prevents normal spindle operation from causing a following-error fault.
3. Configure the spindle ranges
Use the MachPro Spindle Calibration instructions to configure and calibrate the spindle ranges.
Turning on the Spindle
In addition to the screen controls the spindle can also be controlled using M-codes. Use the table below as a reference.
| M-Code | Function |
|---|---|
| M3 | Clockwise |
| M4 | CounterClockwise |
| M5 | Stop |
6 Advanced Options and Information
MachPro Settings
A number of advanced features can be configured in the Mach Settings such as periodic oiler control. Begin by going to Configure >Control and got to the Settings tab. Settings contains custom options for the control, including dialog options, lube system, tool measurement/offsets, and tool changer options.
MachPro Tool Setters and Offsets
7 Next Steps
There are Machine Type Setup and Operation manuals for the different machine types,
and there is also an Advanced Configuration Manual for features like modifying the tool table or using the GCAdapter.
8 Reference Information
Please observe the maximum voltage on each pin. Some pins are 24 VDC compatible, some are 5 VDC, some are 3.3 VDC, and some are 0 VDC. Exceeding their max voltage will cause serious damage to the M31 Motion controller.
| Item | Specification |
|---|---|
| Input Power | 24 VDC |
| Max Power Consumption | 48 W |
| Motor Drives | |
| Stepper Channels | 6 motors |
| Step and Direction Axis Control | 5 VDC Single Ended and Differential |
| Connection | Terminal Blocks |
| Max Pulse Speed | 1.6 MHz |
| EtherCAT Network | |
| Device Types | Servo Motors, Stepper Motors, VFDs, I/O Modules, etc. |
| Max Devices | 30 |
| Max Motors | 6 motors by default (8 and 12 motor options available) |
| Quadrature Encoder Channel | 1 |
| Connection | Terminal Blocks, 5 VDC Differential |
| Max Frequency | 1.6 MHz |
| Spindle | 1 |
| Opto-Isolator Outputs | Forward and Reverse Open Drain / Open Collector outputs |
| Analog Speed Signal | 0-10 VDC |
| Encoder Feedback | Yes |
| Digital Outputs | 8 (PNP Sourcing) |
| Voltage | 16 - 24 VDC |
| Max Current | 250 mA |
| Pulse Width Modulation (PWM) | Not yet available |
| Inputs | 16 (opto-isolated, for PNP/Sourcing sensors) |
| Voltage | 16-24 VDC |
| Input Current Range | 3 - 6 mA |
| Isolated | Yes |
| Enable Circuit | 2 |
| Hardware Enable | Relay Dry Contacts, 5 VDC Enable or 24V Enable |
| Drive Enable | Relay Dry Contacts |
| Servo Drive Alarm | 1 (NPN Sinking with 24VDC pull-up) |
| Voltage | 5-24 VDC |
| Input Current Range | 3 - 6 mA |
| Emergency Stop Circuit | Normally Closed Connection |
| Ethernet Port | 10/100 MHz |
| Dimensions | 7.125" (L) × 3.75" (W) × 1.875" (H) |
| Optimal Temperature Range | 32° to 100°F (0° to 38°C) |
| Humidity | 30% - 60% RH |
| Signal | M31 Junction | Input Name | Use | |
|---|---|---|---|---|
J1 |
1DI.01.00 |
|||
J1 |
1DI.01.01 |
|||
J1 |
1DI.01.02 |
|||
J1 |
1DI.01.03 |
|||
J1 |
1DI.01.04 |
|||
J1 |
1DI.01.05 |
|||
J1 |
1DI.01.06 |
|||
J1 |
1DI.01.07 |
|||
J3 |
1DI.01.08 |
|||
J3 |
1DI.01.09 |
|||
J3 |
1DI.01.10 |
|||
J3 |
1DI.01.11 |
|||
J3 |
1DI.01.12 |
|||
J3 |
1DI.01.13 |
|||
J3 |
1DI.01.14 |
|||
J3 |
1DI.01.15 |
| Signal | M31 Junction | Output Name | Use |
|---|---|---|---|
J10 |
1DO.01.00 |
||
J10 |
1DO.01.01 |
||
J10 |
1DO.01.02 |
||
J10 |
1DO.01.03 |
||
J10 |
1DO.01.04 |
||
J10 |
1DO.01.05 |
||
J10 |
1DO.01.06 |
||
J10 |
1DO.01.07 |
9 Troubleshooting
Firmware and FPGA upgrade
If you have problems with the automated upgrades, you should use the manual upgrade process. **MachPro Manual Upgrade of M31 Firmware and FPGA**If you need to reset the IP address on the M31
- Verify: The M31 has 24VDC power
- Verify: The M31 and computer are connected with an ethernet connection
- Open the VSI Device Manager software
You should see the VSI Device Manager icon on your windows desktop
If not, click the Windows Start button and search for VSI 
The VSI Device Manager will appear as one of the windows below.
- Click Scan Network
- Click the device that the scan locates. It will show the current IP address on the line at the top as well as an editable field in the lower right corner.
- You may not see an M31 in the VSI Device Manager. Still follow steps 3 through 6.
- Enter 192.168.208.35
- Click Set New IP Addr
- Click Close
- Close MachPro, power cycle the enclosure, and restart MachPro. This ensures that all network and software changes are fully enabled.
I/O Diagnostics
The M31 and MachPro have a rich set of diagnostics.
- Each input and output on the M31 has an associated LED
- The M31 Diagnostic screen shows the status of all I/O at the motion controller level (click Diagnostic > M31)
- The MachPro Input Signals screen shows the state of all enabled signals in the State column (click Configure >Control, then click Input Signals)
- The MachPro Machine I/O screen also shows the state of all mapped I/O (click the Service tab, then the Machine I/O tab)
While you are wiring and mapping I/O signals, confirm that each I/O port is changing correctly at the M31 - with its diagnostic LEDs, and in the MachPro software.
M31 Diagnostics
- Input pin 1 is active - 1DI.01.01
- The E-Stop is active - 1DI. ESTP
- There is power to the board.
- The blue CPU LED will blink when the CPU is active
M31 Plugin Diagnostics
- Click the Pin icon to keep this window on top of other windows
- The table at the top lists the current status of all motors connected to the M31
- In the row directly under the motors table there is a GCode Message Cntr. If this number is active, then the M31 and MachPro are communicating normally.
- The bottom section shows the status of all physical inputs and physical outputs on the M31
MachPro I/O Diagnostics
- The M31 Status window shows that 1DI.01.01 has 24VDC
- The Control Configuration window shows that this input from the M31 is mapped to MachPro Input #1. Because this input is a tool setter with a normally closed status, the Active Low status was turned on. Now, when the tool touches, the circuit will open, and the software input signal will trigger. All of these settings can be changed from this window.
- The Machine I/O dashboard tells us that there is currently no tool touching the tool setter pad.
Test Setup
If you want to test motion before installation, or are having trouble getting correct motion:
You can do a test setup with your motors, drives, and cables. This is particularly helpful in setting and verifying 17 bit encoding.
- This ensures that you have all the cables you need
- You can verify that the motors all work
- You can easily verify that your drives are set to 17 bit or less.
Set the motors on a stable work surface. Often the packing materials will work well as temporary pads.
Connect all cables between each drive and motor. You may leave the motors setup like this until the system is ready for axis calibration. At that time you will need to install the motors on the machine.
Testing Axis Motion
This procedure applies to step-and-direction axes and EtherCAT axes.
WARNING: Make sure each axis can move safely in both directions. No software limits are active during this test. If the motor is installed on the machine, the only travel limits are the physical hard stops.
Open the M31 test motion screen
- Open Configure > Plugins > M31.
- Select the motor that you want to test.
- Find the Test Motion section in the lower right corner of the window.
Set the first test move
Use small values for the first test.
- Set Position to
0.1. - Set Accel to
10. - Set Velocity to
10. - Select Auto-Reverse.
- Click Enable in the Test Motion section.
The motor is now ready for a test move.
Run the test move
- Click Execute.
- Verify that the axis moves.
- Click Execute again.
- Verify that the axis moves in the opposite direction.
The second move should reverse direction because Auto-Reverse is enabled.
Increase the test values slowly
After the first test works correctly, increase the values in small steps.
Example:
- Increase Position to
0.3. - Increase Accel to
20. - Increase Velocity to
200. - Click Execute.
- Verify that the motion is smooth and controlled.
Use short movement distances during this test. The goal is to verify communication between the M31, the drive, and the motor.
Repeat the test
Repeat this procedure for each motor.
Verify these items for each motor:
- The motor enables correctly.
- The motor moves when commanded.
- The motor moves in the expected direction.
- The motor reverses direction when Auto-Reverse is enabled.
- The motion is smooth.
- No drive alarms occur.
EtherCAT Problems
- The EtherCAT cables must be shielded
- Very carefully check the In/Out cabling sequence through the entire EtherCAT chain. If one or more of the devices is backwards, the EtherCAT network will power up, but will not enable.
- All of the drives need to be programmed, and all alarms cleared. With some drives, you can clear the alarm from the face of the drive, but not clear the alarm state internally. Close the MachPro software and power cycle the enclosure. Then restart the MachPro software.
- Drives connected to the M31 Motion Controller must be configured for 17 bit or less. If they are configured for more than 17 bit, the system may still have motion, but it will be very sluggish.
- If you see a Not Supported status next to a device in the EtherCAT tab of the M31 Config window, contact support.

EtherCAT Network Troubleshooting
- Close the MachPro software and then shut down the computer.
- Cycle the power on the whole machine.
- Restart the computer and the MachPro software. Recheck to see if you are still having a problem.
- Verify that the GCode Message CNTR is still active in the M31 Status window (Diagnostic > M31).
- Verify the EtherCAT chain between drives. Disconnect the cable from drive 1 to drive 2, and refresh the network. You may need to refresh several times to fully populate the drive list.
- If that works, reconnect drive 1 to drive 2, and disconnect drive 2 from drive 3. Repeat until the drive list will not populate. The EtherCAT chain is getting stuck at that drive.
- Check the parameters you programmed into that drive.
If the list of online devices in right column still does not populate with valid devices, please contact MachLabs support.
Network
Are the M31 motion controller and computer connected and communicating?
- Ensure that the Motion port on the computer is connected to the Mach J20 port on the M31.
- From the MachPro software, pull down Diagnostic > M31
- The value in the GCode Message Cntr should be actively changing

- If it is a static value or 0:
- Close MachPro and power cycle your enclosure, then restart MachPro
- Research and resolve all alerts and warnings that come up during that process.
- Verify your network settings . If you need to make network changes, close MachPro and power cycle the enclosure.
10 Application Notes
If your system is running 480 VAC we recommend using line filters before the servo drives and VFDs to minimize electrical noise from the VFDs.
E-Stop variations
- Connect all E-Stop devices in series in the same E-Stop circuit.
- In a series circuit, any open contact will open the entire E-Stop circuit.
- If you need specialized safety circuits, please contact support.
Adding an E-Stop Button to the M31 Board
- Wire the E-Stop button to a relay input.
- Use the relay output contacts in the E-Stop circuit.
- Ask a qualified electrician to design and verify this wiring.
M31 E-Stop Input Mapping
The Emergency Stop input is mapped to M31 1DI.ESTP.
- Pull down Configure > Control and click the Input Signals tab
- Scroll down the input signals to reach the E-Stop signal
- When configured correctly, opening the E-Stop terminals will disable the system.
- The system will only operate when the E-Stop circuit is closed and healthy.
Tip: The most effective way to wire an E-Stop circuit is with 24 VDC all the time the machine is enabled. If someone presses the E-Stop button, or an E-Stop wire is cut, the machine will be disabled immediately.
When mapping the M31 input to the MachPro software signal, set that input as Active Low. When the the 24 VDC is removed, then input from the M31 goes to a low state, the E-Stop signal will trigger active and the machine will disable.
Hardware and Drive Enable Settings
- Open Configure > Control.
- Select the Settings tab.
- Select the Machine category and the Enable subcategory You can:
- Set the delay between hardware enable and drive enable.
- Choose which outputs turn off when the system disables.
Differential step and direction connection to a Yaskawa Sigma 7 drive.
Explanation:
Why Use 17-Bit Encoder Resolution?
A 17-bit encoder resolution provides sufficient positioning resolution for most CNC applications. It also permits the use of servo motors and drives that have higher native encoder resolutions.
The M31 supports a maximum of 131,072 counts per revolution (2¹⁷). If the servo drive uses an encoder with a higher native resolution, configure the drive so that it reports 131,072 counts per revolution to the M31.
Servo drive manufacturers use different names for this setting. Depending on the drive, the applicable parameter can be identified as:
- Drive Ratio
- User Parameter
- Encoder Output Resolution
- Edge/Pitch
Refer to the servo drive documentation for the parameter that controls the encoder resolution reported through EtherCAT.
Reference: Encoder Resolution
| Encoder resolution | Bit resolution | Use Drive Ratio |
|---|---|---|
| 131,072 counts/revolution | 2¹⁷ | 1:1 |
| 1,048,576 counts/revolution | 2²⁰ | 8:1 |
| 8,388,608 counts/revolution | 2²³ | 64:1 |
| 16,777,216 counts/revolution | 2²⁴ | 128:1 |
The M31 supports a maximum of 131,072 counts per revolution (2¹⁷). If a motor or drive has a higher native encoder resolution, configure the drive to report no more than 131,072 counts per revolution.
Configure Multi-Axis EtherCAT drives
- These are not standard drives that have one motor controlled by one drive. These drives each control multiple motors.
- The Control Output EtherCAT Device will remain the same for all motors attached to your multi-axis drive
- Set the Control Output SubID value to match the motor number.

EtherCAT State Machine
When enabling or booting up, an EtherCAT slave device moves through a specific sequence of four main communication states managed by the EtherCAT State Machine (ESM):
- Init (Initialization) This is the initial state after power-on. No mailbox or process data communication is possible. The master initializes the slave's address and communication settings. The EtherCAT master is answering the question: "What kind of device are you?" for each device in the chain.
- Pre-Operational (Pre-Op) - Mailbox communication is enabled, allowing the master to configure SDOs (Service Data Objects), PDO (Process Data Object) mapping, and other parameters. Process data communication is not yet active. The EtherCAT master is answering the question: "How are you configured?" for each device in the chain.
- Safe-Operational (Safe-Op) - The master and slave check the configuration. Mailbox and process data communication are active, but the slave only sends input data; outputs are held in a safe state (e.g., switched off). If there are any device alarms, EtherCAT will not move past this state.
- Operational (Op) - The slave is fully functional. Both mailbox and process data communication are active, and the master sends output data, which the slave applies.
| http://www.mach-labs.com | MachLabs Documentation | support@mach-labs.com |
The MachLabs Team
14518 County Road 7240, Newburg, MO 65550
support@mach-labs.com














