I'm driving a NEMA34 bipolar geared stepper motor with the following specifications: Rated Current 4A, Voltage 24-60V. It is being driven by a MA860H driver with output current of 2.6-7.2A 24-80VAC. I have the driver configured for a peak current of 4.45A, and using a microstep of 5 (1000 pulses / rev). This is connected to a gearbox that results in an input of around ~4000 steps / rev.


The driver is being controlled by a PLC that drives the stepper motor to a desired position. The motion control allows for a desired position, steps/second, and a ramp up/down time (ms).

This particular use case requires a new motion command to be issued while the motor may be in travel. There are no issues if i move the motor from standstill, or issue a new move command while the motor has reached its max steps/second.

However, if the motor is moving, and is nearing its desired position, it will begin to ramp down, if during this ramp a new move command is issued with an increased desired position, the motor should ramp back up and continue to move. Instead, the motor will seize up and makes a high pitch squeal. The longer i set the ramp-up/down time the easier this condition is to reproduce. Oddly enough if i perform the same function but the new move command tells the motor to reverse, this condition does not occur.

I'm not sure what the exact issue i am facing, or how to narrow it down to a particular component. Could it be counter EMF from the motor that is causing the strange behavior, or have i sized the motor incorrectly?

  • \$\begingroup\$ It sounds like while you are decelerating you have retarded the step angle a step to brake the motor,. If so to return to acceleration you need to advance the angle TWO steps not the normal ONE step you would use when accelerating from a stop position. \$\endgroup\$ – Trevor_G Jul 27 '17 at 13:48
  • \$\begingroup\$ Even if you solve this problem, you will have something else. That's how it works in open loop. Use brushless dc motors with encoder, none of that will happen. \$\endgroup\$ – Gregory Kornblum Jul 27 '17 at 15:16
  • \$\begingroup\$ @trevor if this was the case, wouldn't i encounter this issue when changing directions, or every time during a deceleration and then a subsequent acceleration before stop? Is there any way i can log the steps across the wire to look at the actual data? \$\endgroup\$ – DDulla Jul 27 '17 at 17:37

The problem of course is in the PLC trajectory generator. The stepper driver itself only outputs the setpoint frequency (step/dir) to the motor. It seems that upon changing the setpoint position, your PLC program doesn't gradually decrease or increase the frequency, rather it jumps. Look for PLC documentation how to overcome this bug.

  • \$\begingroup\$ In the PLC, the ramp value is supposed to gradually increase or decrease the frequency. You can observe the motor slowing or accelerating, i encounter this stall when it is actually decelerating and before it has stopped it starts to accelerate again. Is there any PC tools i could use to log the step and direction pules going across the wire to verify what is being sent? (The plc does not have any such tool) \$\endgroup\$ – DDulla Jul 27 '17 at 17:34
  • \$\begingroup\$ @DDulla You didn't mention the PLC type. Anyway, it is almost impossible to be able to monitor in the PLC IDE the true state of pulse train output (PTO) since this function is implemented as a low level microcontroller function. Yo can use a scope to trace the pulse frequency. \$\endgroup\$ – Marko Buršič Jul 27 '17 at 22:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.