SmoothStepper Ethernet Manual
Any machine tool is potentially dangerous. Computer controlled machines are potentially more dangerous than manual ones. Warp 9 Tech Design, Inc. does not accept responsibility for the performance of any machine or any damage or injury caused by its use. It is your responsibility to insure that you understand the implications of what you design and build and to comply with any legislation and codes of practice applicable to your country or state. If you are in any doubt you must seek guidance from a professionally qualified expert rather than risk injury to yourself or to others. This document is intended to give details about how to set-up the Ethernet SmoothStepper for the Mach3 system. It assumes that you are familiar with the contents of Artsoft’s documentation for Mach3.
- 1 General Overview
- 2 Detailed Hardware Installation
- 3 Software Installation
- 4 Schematics of the I/O
What is the Ethernet SmoothStepper?
The Ethernet SmoothStepper (ESS) is a high-performance external motion controller for Mach3 and Mach4. Because it has a connector that conforms to the Parallel Port standard, it integrates seamlessly with most devices that the Parallel Port driver of Mach interfaces with. It accepts high-level commands from Mach and produces Step & Direction signals that are compatible with nearly all step & direction motor drivers (it also has a quadrature mode for high-end motor drivers, but those are not common). Because it is a dedicated hardware device, it is capable of producing pulses at very high frequencies and with extremely low jitter compared to the Parallel Port driver and microcontroller-based solutions. In addition, the SmoothStepper is able to run on any flavor of Windows, both 32‑bit and 64‑bit. Mach will run under 32-bit or 64-bit, but an external controller such as the SmoothStepper is needed for 64-bit editions.
How does it connect in my system?
The computer connects to the ESS via a standard inexpensive Ethernet cable. The cable may be shielded or unshielded. An advantage of Ethernet compared to USB is that the cable length may be as long as 100 meters (328 feet). The maximum length for a USB cable is 5 meters, and that is pushing it in a noisy environment. Another advantage is that Ethernet uses transformers for coupling the data signals, which galvanically isolates the computer from the downstream electronics. (http://en.wikipedia.org/wiki/Galvanic_isolation) The ESS connects to the rest of your equipment via its three “parallel port” connectors. Since the ESS emulates parallel ports, Mach’s documentation for the Parallel Port Driver of Mach applies to the ESS as well.
The ESS is intended to connect to your equipment via a “parallel port breakout board”, sometimes called a “BOB”. This is a board that has one or more connectors that have a parallel port interface. Typically it is a 26-pin header that is identical to the connector on the ESS, or a DB25 just like the parallel port of a computer. This connection is usually made via a ribbon cable. An inexpensive alternative to a breakout board is to connect a ribbon cable to the ESS that has a 26-pin header at one end, and no connector at the other. Simply connect the wires of the ribbon cable to each component in your system. This method isn’t encouraged because you can’t easily swap things out when something is wrong. Breakout boards are very inexpensive and worth the money invested. Voltages are limited to a maximum of 5V when interfacing directly with the ESS, so this is a limitation that is easily overcome with a breakout board.
Can the ESS drive my motors directly?
The ESS is not a high-power device. Its drivers are strong, but not nearly strong enough to drive a motor. Its drivers must drive a “motor driver”, which is a device that accepts a lowlevel input and essentially amplifies it so that the motor can turn with force. What are Opto-Isolators and Ground Loops? An opto-isolator (often called “opto-isolator” or simply “opto”) is a device that has an LED inside that emits light. You don’t see the light because it is buried inside of the package it is in. A photo diode or transistor receives the light and allows electrical current to flow in proportion to the light. Thus no electrical current flows from one side of the opto to the other. Motor drivers often have opto-isolators in them to block current flow from the controller (ESS) to the high-current motor driver. There are other types of isolators, but the most common is an optical isolator because of its low cost. Isolation can also be achieved through capacitance, inductance (transformers), and RF (Radio Frequency). The ESS relies on the breakout board for isolation, though the ESS isolates the PC and user by virtue of the transformers in its Ethernet jack.
A ground loop is an unwanted current that flows from one circuit to another that are supposed to be at the same potential (voltage). If you have “ground” in one circuit, “ground” in another circuit might not be at the same voltage. If you hook a voltmeter between the two you would measure a voltage if the two were not the same. Having a different voltage at each end of a wire that connects the two grounds will result in a current flow, and that is undesirable. An electrical isolator blocks these currents because information is transferred from one circuit to the other without electrons (light or electromagnetic fields). The ESS has drivers that are capable of driving opto-isolators directly. This permits it to be used without a breakout board, or with a simple breakout board that connects the ESS’s I/O signals to screw terminals without going through any buffer ICs.
Which Breakout Board Should I Use?
Arturo Duncan of CNC4PC.com is asked this question quite often. His answer is that choosing a breakout board is much like choosing an automobile. Do you want a 4-cylinder car that gets good gas mileage? Or a pickup truck or SUV for hauling things? Does it need a trailer hitch? Do you want 4 doors? The same applies to CNC. Do you need to drive a spindle motor? Do you need relays for vacuum pumps or coolant pumps? Do you need opto-isolation? You probably don’t need isolators on the step & direction signals if they are driving motor drivers that have isolators on those lines already. The best way to approach this is to make a list of all of the signals that you need to control. If you ask someone which breakout board you should use and you don’t have this list, you’re probably going to get the automobile analogy for an answer.
The Geckodrive G540 is a popular motor driver. This motor driver has a breakout board built into it. With the proper ribbon cable the ESS will connect directly to it without the need of any other breakout board.
Detailed Hardware Installation
|Ports 1, 2, and 3||Parallel Port connectors. These connectors are standard 26-pin low-profile male headers. If a ribbon cable is connected that has a DB25 on the other end, the DB25 will have the pinout of the Parallel Port of a PC.|
|External 5V Input||Power input for the board. This supply must be a regulated supply
with a tolerance of ± 10% (± 5% is preferable).
|Pin 26 5V Jumper for each port||Pin 26 of each header may be connected to the 5V power rail
of the ESS board. Some breakout boards also have this feature, which enables one of the two boards to supply power to the other. This is a simple connection without any electronics involved. Multiple breakout boards with their own power supplies may be connected to the ESS. Be careful not to bridge the supplies!
|Ethernet Jack||Connect a standard Ethernet twisted pair cable (CAT5 or better) with RJ45 connectors to this jack. Connect the other end to the computer or a network switch.|
|Status LEDs||Displays connection and fault status. Defined elsewhere in this document.|
|Expansion Port||This connector will be used to connect to expansion boards that provide additional I/O. High-speed I/O will need to be on the main Port 1, 2, or 3 pins. The Expansion Port I/O will be suitable for slow-speed signals such as tool changers, relays, etc.|
|Config Jumper||This jumper is for programming the static IP address into the board. It may also be used for updating the bootloader in the microcontroller. For normal operation this jumper should be off.|
The ESS requires a 5V power supply. It draws about 300 mA (0.3 Amps) when its Ethernet port is active. Depending upon what is connected to the ESS, it might draw more. You will want to use at least a 500 mA supply, though it is highly recommended to use a 1-Amp supply since they don’t cost much more and the extra capacity will ensure that you won’t have problems. There are several types of supplies that can be used:
Wall Transformers are inexpensive and convenient if you have an AC receptacle available. They are available with a single style of AC prongs, or they are also available as plug-on attachments depending upon the country you are using it in. Most of these transformers are capable of running from 100-240V and 50 or 60 Hz. The barrel connector must be cut off in order to attach to the ESS’s screw terminals.
Table-Top Power Supplies are similar to wall transformers but they get their name because they sit on a table rather than in a wall receptacle. The advantage of a table-top supply is that you can cut the AC power cord’s plug and wire it in with the rest of your AC power. The barrel connector must be cut off in order to attach to the ESS’s screw terminals. The supply shown in the picture uses a standard computer style of power cord with a “C13” plug. (http://en.wikipedia.org/wiki/IEC_60320)
Open Frame Power Supplies are inexpensive, small, and lend themselves well to wiring the AC power without needing an AC receptacle. The board pictured here does not have a frame. Often they include an aluminum enclosure that only covers a portion of the PCB.
Din Rail Mount power supplies are handy if you have a DIN Rail in your cabinet.
Mounting Holes and Mechanical Drawing
The mounting hole that is in the upper right corner (next to the 5V power input) is grounded to the shield of the Ethernet jack. The other 3 mounting holes are not connected to anything. If you use a shielded Ethernet cable, the shield will be connected to the chassis if you use a metal standoff that connects to the chassis. It’s hard to say whether that is good or bad since it may or may not be connected to Earth ground on the PC side. It is best to ground a shielded cable at one end only. Here is a drawing showing the board dimensions, mounting hole locations, and the locations of the connectors.
Connecting to the Breakout Board
The “parallel port” connectors that the ESS uses are the same connectors that motherboards use. They are 26‑pin low-profile headers that a ribbon cable plugs into. If the ribbon cable has a female DB25 connector on the other end, it looks just like the parallel port of the computer. The ESS has 3 parallel port connectors, yielding a combined total of 51 I/O’s. Some breakout boards use the same connector. In that case you would use a ribbon cable with a 26‑pin header at both ends.
Here are examples of various ribbon cable possibilities:
- 26-pin female header to DB25 female.
- 26-pin female header to DB25 male.
- 26-pin female header to 26-pin female header.
Here are examples of various breakout board receptacles:
- DB25 female
- DB25 male
- 26-pin male header.
- 26-pin female headers.
For your first connection to Mach, you do not need to have the ESS connected to anything except the computer. This may be a good initial test if you are the type that likes to take it one step at a time. When Mach connects, the EStop will be assigned as an Active High signal. Since the inputs to the ESS are pulled up to 5V through a 4.7k resistor, the signal sent back from the board will say that the board is in EStop. The first thing you should do is open up the Ports & Pins configuration in Mach and change this to an Active Low setting. Once you do that you will be able to press the Reset button in Mach and begin experimenting. You will be able to run gcode, jog around, etc.. Once you feel comfortable with the interface you can hook it up to your breakout board and the rest of your equipment. You should be able to connect just the breakout board. Then connect some switches. Then the motors.
The first thing you will need to do is set up your Ethernet port so that it uses an address that is in the same range as the ESS’s. Since the ESS is programmed with an address of 10.9.9.9, you will need to give your computer an address that is in the range of 10.9.9.1 through 10.9.9.254, but be sure not to assign an address of 10.9.9.9 to your computer! It will never be able to talk to the board if you do. This user manual will be updated with information about how to do this. For now I will direct you to Jeff’s Install guide that has instructions for how to configure your computer with a static IP address. When you get to the part where you fill in the Subnet Mask, make sure that number is 255.255.255.0. Windows will fill in a value of 255.0.0.0 and this will not work.
Note that you do not need to assign a static IP address to your computer if you program the ESS to use an address that is in the same subnet as your computer. The subnet is the same if the first 3 groups of numbers in the IP addresses are the same. Quite often Internet routers will assign addresses in the 192.168.0.x or 192.168.1.x ranges. If you wish to use a DHCP server for your computer, you can do that but the ESS still needs to use a static IP address in the same subnet. A direct connection to the ESS is the preferred way to go because there is no question as to whether there is enough bandwidth available to run your machine reliably.
If you connect to the Internet through the same Ethernet cable there is no telling how much CPU and Ethernet bandwidth is being used up by those other applications. It is therefore officially discouraged. You are on your own if you wish to mix the Internet with your CNC data. If you wish to change the IP address of the ESS, look for the section in this manual that describes the Configurator.
In the near future, the ESS Troubleshooting Guide will be merged with this document. For now, you may access it at this address:
This is a very rough draft of the User’s manual. It isn’t well ordered yet, so you will need to skim through all of it to find the information that you need.
When you connect to the SmoothStepper for the first time, the plugin will alert you to the fact that some parameters were not found in the XML file. This is expected because you have never run the ESS before. Most of the configuration parameters are stored in Mach’s section of the XML, but there are some parameters that simply are specific to the ESS and these parameters are stored in the ESS section of the XML file. Just accept the warning and it will assign default values that are likely good enough. When you exit Mach the values will be saved and it will not warn you again.
The ESS-specific parameters are accessed through the Mach pull-down menu “PlugIn Control”. You will also see an option for Data Monitoring in the same pulldown menu. In the next update to this manual I will describe every option in the config in more detail. For now, here is a brief list of the items that may affect you:
Max Step Frequency: This is self explanatory. Set it to the highest frequency you think you will need. You will want to work backwards from the feed rate that you desire, through the various leadscrews and gears, and the number of steps/rev that the motor driver is producing. This will tell you how many steps/second you will need. Set these values to 1 MHz and you surely will be fine.
Spindle: If you require PWM or Step/Dir, check the appropriate boxes and assign the proper frequency or pulse width. You will also need to set Mach’s spindle setup parameters as well.
The only other item that has been a problem for some is the direction for pins 2 through 9 of Ports 2 and 3. If you connect a bidirectional breakout board to one of these ports, the bidirectional board may drive these signals. If the board drives them and the ESS does too, they will clash. Therefore the default value is “Inputs”. A number of people have forgotten to change the direction of those pins and it doesn’t work.
There is nothing on the Data Monitoring page that is important, except for helping to diagnose a problem. You can see the raw states of inputs as well as some other data. I will describe that in more detail in the next update to this manual.
Device Driver : This is a software module that provides an interface to an underlying hardware or software component. In the case of Ethernet, the driver facilitates data transfer between the operating system and the Ethernet hardware of the computer. The operating system in turn provides a standard interface for software applications to use the Ethernet hardware without needing to know the complexities and details of the Ethernet chipset.
Plugin : The plugin is actually a device driver because it provides the link between Mach’s generalized plugin interface and the underlying hardware. But since Mach calls this piece of software the “plugin”, that is what it will always be called. You can download the latest plugin from the Warp9td.com website.
Ethernet Driver : The good thing about the Ethernet is that the driver is already resident on your computer. USB generally requires a driver to be supplied with the motion controller, but with Ethernet that is not the case. The same driver that allows you to surf the web is the same driver that allows the plugin to communicate with the ESS device.
ESS Plugin : The ESS plugin consists of two parts that are packaged together so that you don’t need to deal with maintaining two versions of software/firmware. When the plugin begins communicating with the device, it looks at the firmware revision that is in the board. If the firmware is not the same as the version stored in the plugin, it erases the version in the device and downloads the version in the plugin file. That way you can be assured that the board’s firmware can never be inconsistent with the plugin software that runs on the PC.
Firmware : Firmware is software that resides in a memory chip in an embedded system such as the ESS. It is essentially software , but the fact that it does not disappear after power is removed, it is more “firm” than “soft”.
Application : The firmware that runs when Mach is running the plugin and doing CNC stuff. The application is stored in the plugin.
Bootloader : This is firmware that is always resident on the ESS board. When power is applied, this is the firmware that executes first. The bootloader talks to the plugin at startup and determines whether or not a new application needs to be programmed into the microcontroller. If so, it will program it and then execute it.
BOOTP Mode : This is another name for the Config mode.
Wakeup Mode: This is the mode used for running the plugin. The ESS will always be in one of these two modes.
MAC address : This is the lowest level of address used in Ethernet. Every single Ethernet device has its own unique address.
IP Address : This address is used at a higher level than the MAC Address. The IP address is not unique. Two computers or devices may use the same IP Address, but they better not be on the same network or there will be problems. The default IP address of the ESS is 10.9.9.9, which means a large majority of the ESS boards in existence use the same IP address. How is this so? It is because 10.9.9.9 belongs to a group of IP addresses called “Private Networks”. There are three blocks of addresses with this classification: 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, and 192.168.0.0 - 192.168.255.255. These addresses are not to be routed onto the Internet. They will be blocked by any router that has access to the Internet. There is a 4th group of addresses that are sometimes incorrectly used as a Private Network. The range is 169.254.1.0 through 169.254.254.255. This block of addresses is used by computers that require an IP address, but cannot find a server that will assign them one. So they are allowed to randomly choose one from this range.
Modes of Operation
The ESS has two modes of operation when it boots up. If the Config shorting plug is attached, it enters a mode where it expects to be programmed with configuration data. This mode could also be used for updating the bootloader if that is necessary. The plugin will not communicate with the device in this mode. The program that is used for programming configuration data into the device is called the “Configurator” . If the bootloader needs updating, that piece of software will be called the “Bootinator”.
Here is the link to the Configurator program : http://warp9td.com/files/Configurator.exe
The other mode is the one the plugin interfaces with. It is called the Wakeup mode because the device is silent and sleeping until the plugin wakes it up.
You can tell which mode the device is in by the blinking LEDs on the ESS board.
The following videos will demonstrate each of the various blink codes.
This video show the LEDs in the Wakeup Mode. This is the way it should look when you are trying to run Mach. The upper green LED should blink two short blinks followed by a long pause.
This is a video of the LEDs in the Config Mode. This is the way it should look if you are trying to run the Configurator. Once the Configurator establishes communications and assigns an IP address to the ESS, the LED will be on solid. This will not last long, however, since as soon as the data has been programmed into the memory of the microcontroller, the ESS will reset itself and it will show that it is in the Config Mode again. In order to get out of the Config mode, you must turn power off, remove the jumper, and then turn power back on.
The Configurator programs a static IP address into the microcontroller’s flash memory. It also programs a nickname for the board, but this has not been made use of yet.
There is another feature that has been implemented, but not many people will likely use it. If you want to associate a specific PC’s Ethernet port with the board, you may specify the PC’s MAC address. When the ESS runs in Wakeup Mode (normal plugin mode), if the MAC address of the computer trying to run the board does not match what is in the microcontroller’s memory, the bootloader will ignore the computer trying to contact it. This feature can be turned off by specifying a MAC address of FF:FF:FF:FF:FF:FF. When running the Configurator, this value is filled in by default.
The memory where the Configuration data is stored is protected by a CRC. If this block of memory becomes corrupt, the bootloader will flash a different blink code letting you know there is a problem. If this happens, you should run the Configurator and reflash the Config memory. The mode when this error code is flashing is the Config Mode.
The Ethernet Jack has two LEDs on it. The upper left one is yellow. This is an important status LED. It represents the status of the Link Layer. If a link has not been established, the yellow LED will not light. The link layer is a low-level layer that needs to be present in order for the higher-level communications to run.
The upper right LED is a green LED. In the video it is hidden a little behind the plastic tab of the Ethernet cable plug. The green LED will flash approximately when data is transmitted or received. The Config mode transmits a request for an IP address about once per second. You should see the green LED reflect this.
Schematics of the I/O
Dedicated Input Pins
Pins 10, 11, 12, 13, and 15 of all 3 ports.
Dedicated Output Pins
Pins 1, 14, 16, and 17 of all 3 ports, plus pins 2 through 9 of Port 1.
Bidirectional I/O Pins
Pins 2 through 9 of Ports 2 and 3.
Pin Numbering of 26-pin Headers
Low-profile headers are almost always numbered like the connector on the right in the picture above. When dealing with Parallel Ports, however, it makes sense to number the pins in an unconventional way. DB25 connectors are numbered differently. Instead of alternating back and forth, the pins are numbered consecutively across one row of pins and then back to the beginning on the 2nd row of pins. Thus if you connect a ribbon cable to a 26-pin header and attach a DB25 connector to the other end of the ribbon cable, it makes sense to number the 26-pin header with the pin numbers of the DB25. While this is something you really don’t need to know to use the SmoothStepper, you might find it handy to understand this if you ever look at a header on a board and want to probe a specific parallel port pin.
DB25 to 26-pin Low-Profile Header Ribbon Cable
This schematic shows pictorially how the wires are oriented in a DB25 to 26-pin header ribbon cable. The pin numbering for the header is the unconventional numbering that matches the DB25.
Parallel Port Connector: Pin 26
Pin 26 of each parallel port connector is attached to a set of header pins. When these pins are shorted together, the 5V of the board and the 5V of the breakout board are connected to each other.
Expansion Port Header
The Expansion Port header is not operational this time. Boards will be available for it soon. These I/O signals have a maximum voltage of 3.3V.