Searching \ for 'Position control problem' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: www.piclist.com/techref/index.htm?key=position+control
Search entire site for: 'Position control problem'.

Truncated match.
PICList Thread
'Position control problem'
1997\02\27@045236 by Joe McCauley

flavicon
face
Hi,

I have problem here which is wrecking my head!

I have a 17c42a as the heart of a control system which controls 2 motors
via 2 dacs. The motors are driving a large load via a gearbox. Feedback is
by means of a
12 bit absolute position encoder on each load.

I have implemented position control where the loads are driven to a desired
position and stop.

I have also implemented speed control where the requested speeds are
compared with
the actual speeds every 250mS (in a timer routine) and the Dac outputs are
modified to regulate
the average speed.

The above is done for each motor independently and works very well.

The problem I have now is as follows. I need to run the motors not just so
that the speed is
constant, but also so that the position deviation relative to each other
will be minimised.
i.e. if both motors are started whth a given position difference between
them, then I want that
position difference to be mantained.

I thought the following would work by controlling both position and speed.

1. Before starting the motors store the positions in position tracking regs.
2. In the timer routine add (or subtract depending on direction) the speeds
requested
  (encoder counts/timer interval) to the position tracking regs for each motor.
3. Subtract the actual position from the position tracking reg to get the
position
  error. This value will be + or -.
4. Either
       a)Add or subtract a constant from the dac value to reduce the error.
  or
       b)Add the error value to the dac value to reduce the error.

I have tried this with no success. Does anyone have any better ideas?

If you have read this far, thanks

Joe
P.J. McCauley                                   Tel.  353-1-6082218
Dept. Of Pure and Applied Physics,              Fax.  353-1-6711759
Trinity college,
Dublin 2,
Ireland.

1997\02\27@055131 by Wolfram Liebchen

flavicon
face
At 09:41 27.02.97 +0000, Joe wrote:
>
>The problem I have now is as follows. I need to run the motors not just so
>that the speed is
>constant, but also so that the position deviation relative to each other
>will be minimised.
>i.e. if both motors are started whth a given position difference between
>them, then I want that
>position difference to be mantained.

What happens, if they have to move different distances?

Try to reorder your regulating loop (perhaps PID-type).

Both motor-loops have some error-signals:

 + distance, left to go
 + actual speed - desired speed (may vary, if you have a speed ramp)
 + actual distance to other motor - desired distance (may vary, if
   you take into account different distances to go for both motors)
 + maximum current for the motor (overload protection)
====================================================================
--> new value for DAC

You have to calculate both functions independantly for both motors. The
coupling of them two is done with the third error term. The trick is
to find the correct error weights for these error signals to avoid
overshoot or slow reaction.

Hope that helps a bit,

regards

Wolfram



 


+-----------------------------------------------------+
| Wolfram Liebchen                                    |
| Forschungsinstitut fŸr Optik, TŸbingen, Deutschland |
| spam_OUTliebchenTakeThisOuTspamffo.fgan.de                         |
+-----------------------------------------------------+

1997\02\27@075553 by Walter Banks

picon face
Joe McCauley wrote:
>
> I thought the following would work by controlling both position and speed.
>
> 1. Before starting the motors store the positions in position tracking regs.
> 2. In the timer routine add (or subtract depending on direction) the speeds
> requested
>    (encoder counts/timer interval) to the position tracking regs for each
motor.
> 3. Subtract the actual position from the position tracking reg to get the
> position
>    error. This value will be + or -.
> 4. Either
>         a)Add or subtract a constant from the dac value to reduce the error.
>    or
>         b)Add the error value to the dac value to reduce the error.
>
> I have tried this with no success. Does anyone have any better ideas?

Use the relative position as an input to the summer in the control
control loop. Cross couple the control loops. Simple effective..


Walter Banks
http://www.bytecraft.com

1997\02\27@075555 by Walter Banks

picon face
Wolfram Liebchen wrote:
>
>
> You have to calculate both functions independantly for both motors.
> The coupling of them two is done with the third error term. The
> trick is to find the correct error weights for these error
> signals to avoid overshoot or slow reaction.

Depending on the response time of the system the coupling can be
just an adjustment to the set point or both the error and its
I and D parts can be coupled.

It might be worth investigating a fuzzy solution. I suspect that it
would be less computationally intensive and would have shorter code.

Walter Banks
http://www.bytecraft.com

More... (looser matching)
- Last day of these posts
- In 1997 , 1998 only
- Today
- New search...