Linear Motor Based 3D Printer 4 - Parker Compax with MX80L

I have been a bit unhappy with the performance of the Y axis. It cannot handle the accelerations the X axis can due to the higher mass. Also, I can't really get it as quiet as I want it to be with the IONI drive, and in many ways the IONI is difficult to tune. Also, the IONI lacks some basic features such as anti-hunting mode. So maybe a different drive is in order. Accelerations, in general, are limited by the current the servo drive can provide. I am driving the IONI with 24V at the moment, but it can handle up to 58V. So there is roughly a factor of 2 improvement that can be expected there.

The standard drive for the MX80L linear motor is the Parker ViX:

But it is also possible to drive it with the higher end Compax3 drives. There is some very interesting information here:

"Can a MX80L be used with with Compax3?

The Compax3 can be powered with DC voltage (no hardware changes necessary) and is now released and available.

This gives a compatible servo drive with I30 EthernetPowerlink option available in addition to other field bus options (I20 Profibus, I21 CANopen, I22 DeviceNet, I31 EtherCAT, I32 ProfiNet) or an alternative to the ViX (AH/IH) drives.

MX80 motor selections in C3 Servo manager can be found under the Parker Europe motor list.
NOTE!!!!. When using MX80 you can NOT apply AC voltage to the drive. You will need to connect 80VDC or less to connector X1. If the DC supply voltage is lower than 70V, the Error Reaction (3222)  to "Bus Voltage Too Low" must be deactivated."

It is not clear to me why the voltage has to be 80V or lower, since the drive is controlling the current anyway. But with 80V we can roughly expect a 3X performance improvement.

One feature missing in the ViX drives is the ability to monitor positioning error in real time, which the IONI allows.

To configure the Compax3, the "C3 Servo Manager" is used. This runs on a PC and connects to the Compax3 via the X10 connector which can be RS485 or RS232. The type of connection is controlled via shorting pins in X10:

The serial cable Parker sells for these drives has the part number SSK1/02 and its pinout is described here:

There is also additional troubleshooting info and background info at

There it claims that only Gnd, RX and TX are truly needed. I found that to be true. However, a full null-modem connection (as in the picture below) also works and is claimed to be more reliable.

To test, I use a Compax 3 with part number S063V2F12I20T30M12

F12 implies support for the Sin/Cos encoder in the MX80L stage. All drive have step/direction signals. I20T30 implies that this one also supports a "Fully programmable, IEC61131-3 controller" with Profibus. M12 implies some additional I/O ports.

The Compax3 has a DIP switch block labeled S24, but the documentation states that is is for bus settings, and so it does not matter here.

Before getting a 80V power supply, I decided to ask Parker if 80V is truly a limit, or if I can use 110VAC to power the Compax3.

The unit comes without a configuration. The electronics get powered separately via 24VDC. Connecting line voltage to X1 yields no sign of life. Connecting 24VDC on X4 instead yields diagnostic information via LEDs.

This was not enough to get the Compax3 to respond via a straight RS232 cable over a Prolific USB/serial converter. The Compax3 needs a special version of null modem cable. A standard cable will cause the unit to start in RS422 mode rather than serial. More information here:

The Servo Manager software has a list of templates for the MX80L, but the part numbers do not match any markings on the motor I have:

So it is important to find out what these part numbers mean. The MX80L Manual has a (blurry) breakdown of what these numbers mean:

My motor is 150 mm long, and I plan to use hard stop homing, so I can ignore any limit or homing switches. Precision does not matter to the drive, so S and P will have identical parameters. The Z channel is an index, and with hard stop homing, the hard stop can act as index, so Z does not matter either. The encoder on the MX80L is a RGH24B 1Vpp SinCos type encoder. Usually, the MX80L ships with an interpolator that turns that into a square wave quadrature signal. So the encoder settings will have to be changed from the template.

I will select


and then change the encoder style to SinCos. It is not clear at first glance that the DB15 X13 connector is pin compatible with the 15 pin ViX feedback connector on the MX80L. However, this here:

states clearly: "The 15-pin feedback connector in the MX80L plugs directly into the Aries without modification."

Comparing all 3 connectors:

It looks like all the encoder pins are in the right place. The connector needs to be rewired a bit so that the hall sensors and temperature are on the right pins.

It seems like the encoder type is configured together with the motor, so a custom motor configuration is needed to change the encoder type.

To start, I made a change from the MX80LT04MSD13...Z1E1 motor definition that comes with the Servo Manager. I just changed the encoder type to SinCos.

One thing that is difficult to know is the encoder resolution, because it is not clear what they mean here. But there is a handy 'Automatic setting of commutation parameters' button. So I try that, which yields a complaint that the encoder resolution is off...

The Rrenishaw scale has 20um increments,so lets assume 4x quadrature resolution and try 5um: nope

10um: nope

20um: yep!

It is at this time that I note that there is an "E7" encoder option in the motor list that is not listed in the datasheet. A quick look at the parameters confirms that this is in fact a SinCos option for the MX80L. So I change the motor to a stock configuration : MX80LT04MSD13...Z1E7

And it works right away! The standard parameters work well. One thing I did do is select the option that states that the moving mass is unknown. This causes the control to assume the worst with a mass up to 64Kg! I lowered that to 1 KG, because that is close to the load I expect to be when the motor is used on the printer.

Another issue is that the motor is only specified for 80V, while the servo drive will happily take voltages up to 240 VAC and rectify them to about 340V. I really don't see why the motor would be limited to 80V, but to be sure I started with a 2:1 transformer taking down 120VAC to 60VAC which yields about the target voltage of 80V. After that, without any sort of PID tuning I can get moves that peak out at 1000 mm/s.

I did start a discussion on the Parker forum about using higher voltages on the MX80L motor, as I don't see any reason why that should be a limit:

But, I did not get any good technical reason as to why the motor should be damaged at higher voltages. I am not really an expert at motors, but I think the only guy replying to my question knows even less. I was hoping that Parker would have real engineering manning their support forum, but I guess that was a bit optimistic. Now, there may be a very good reason why Parker recommends 80V maximum for their motor, but since I can't figure out what that might be, I decided to go ahead and just feed the motor with rectified 110VAC (rectified by the Compax3, which can take AC input).

When moving slowly or when idling the motor does emit a slight whine at 80V. But the sound of the bearing movement is louder than the whine.

When moving slowly or when idling the motor does emit a louder whine at 150V than it does at 80V. But the sound of the bearing movement is still louder than the whine.

When changing the PWM frequency in the Compax3 from the default 16 kHz to 32 kHz the whine goes away.

So the Compax3 is a suitable replacement for the Granite Devices IONI drive.

One thing I like about the IONI drive is that I can get real-time information about the tracking error. I want to be able to do that with the Compax3, too.