Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Trouble with motion control because of encoders.

I am using a PCI-7344 motion controller to control a slide and motor system.  I have just completed the cable that connects the amplifier to the encoder.  This was a problem at first, because the amplifier is intended for differential outputs, while my encoders have single ended outputs.  In the MAX software, I am getting encoder count readings that are consistently 1/8 the quantity of the number of steps that the motor has moved.  When the stepper loop mode is set to "Closed Loop," the motion is jerky and incomplete. 
 
Is it normal for the number of steps to be different from the number of counts read by the encoder?  Is this the reason that the "Closed Loop" mode is not working?  How can I correct these problems?
 
Thanks,
Kate
0 Kudos
Message 1 of 4
(3,757 Views)
Please give us some more details about your system.  Typically, the encoders are connected to the controller, and not the amplifier to close the loop.   There is going to be a ratio between motor steps and encoder counts, which mostly depends on how you have your stepper driver set up, i.e. full steps or microstepping.
0 Kudos
Message 2 of 4
(3,744 Views)
Yes, it is pretty normal that the number of steps (or step signals sent to the driver) and the number of encoder counts are NOT identical.

It depends on the settings of the driver (in many cases you can define microsteps, i.e. a certain number of steps between the 'hard steps' of the motor), and of course you have to match the number of step signals to the (microstepping rate) * (number of motor steps per revolution). Another problem is that some manufacturers define microsteps as 'total number of steps for one revolution' while others define them as 'number of (micro)steps needed to perform a complete step of the motor'.

Also, it seems strange to me to connect the encoder to the driver. How do you get encoder feedback to the FlexMotion if the encoders are actually connected to the driver?

In many cases you can detect the number of steps and encoder counts per revolution with MAX. Set the step rate such that the motor will turn one revolution (according to microstepping rate). Then disable the driver, set MAX to 'closed loop' and turn the system manually approx. 1 revolution. MAX will indicate the number of encoder counts. Take the next even number (e.g. if you see 1890 encoder counts it is very likely that the encoder issues 2000 counts per revolution), and start a motion again with these values.

The jerky motion in your case is caused by the FlexMotion card to compensate the discrepancies between encoder counts and steps. This happens only if you set the following error rate very high (I think the default is 32768). In most cases you should set it to a much lower value, I think 1/10 of the number of encoder counts per revolution will be adequate in many cases. With a low following error rate, the drive will stop motion very soon in your case since it detects a mismatch between steps and encoder counts very early.
Message 3 of 4
(3,731 Views)
I believe that motion card uses a pull-in move with the encoders.  In other words, it does thecommanded move like it would in open loop, then when the move is complete it checks the position using the encoders.  If the position error exceeds your set limits, then it will attempt to move again to the correct position.  How many times it makes that attempt is also programmable.
0 Kudos
Message 4 of 4
(3,723 Views)