Jump to content
OMRON Forums

Gantry-follower problem


kandauru
 Share

Recommended Posts

Hi,

 

we are running the machine with 8 axes. X1 and X2 are in gantry-follower mode (it is a bridge), defined as:

1->X

2->0

 

Motor parameters and motors are same.

The problem is that in any kind of movement (JOG, REL, ABS) X1 and X2 are not synchronized. X2 (the follower) moves or faster, or slower, depends on direction.

 

It is Power Brick controller with last Power PMAC IDE (2.2.0.39).

 

Please, advise.

Link to comment
Share on other sites

  • Replies 13
  • Created
  • Last Reply

Top Posters In This Topic

Hi,

 

I move motor X1 only in gantry mode, X2 is inaccessible from my application

Here are the gantry mode related settings:

 

//// Motor 1 - X1

Motor[1].ServoCtrl = 1;

Motor[1].DacShift = 0;

Motor[1].pAdc = 0;

 

//// Motor 2 - X2

Motor[2].CmdMotor = 1 //leader id/

Motor[2].ServoCtrl = 8 //follower

Motor[2].GantrySlewRate = 2

Motor[2].DacShift = Motor[1].DacShift

Motor[2].pAdc = Motor[1].pAdc

 

&1

#1->X

#2->0 //X2

Link to comment
Share on other sites

Tangential question -- Richard, why do you recommend not having the 2nd gantry motor assigned to the coordinate system?

 

What I've seen is that doing "&1 enable" will not actually enable the 2nd motor, and with Motor[1].FaultMode=1, a fault on the first will not kill the 2nd motor, unless it is assigned with "&1#2->0"

Link to comment
Share on other sites

A couple of points:

 

The follower motor should NOT be assigned to an axis in the coordinate system (e.g. #2->X), as this will result in it being "double commanded". It is best to assign it to the "null" definition in the coordinate system (#2->0) so it shares enabling and disabling (commanded or fault).

 

Most people first try independent servo control of the two axes first, using the default servo algorithm (Motor[x].Ctrl=Sys.ServoCtrl) for both motors. It is worth spending some time trying to optimize these settings.

 

However, if you cannot get good enough performance, the next step is to implement the cross-coupled gantry servo algorithm. This is done by setting:

 

Motor[1].Ctrl=Sys.GantryXctrl

Motor[1].ExtraMotors=1

 

This adds cross-coupling terms Motor[x].Xpg, Xig, and Xvg for both motors based on the difference in following error. The IDE has windows to facilitate the tuning of these terms.

Link to comment
Share on other sites

Hi,

 

just to make it clear for me, instead of:

 

//// Motor 1 - X1

Motor[1].ServoCtrl = 1;

Motor[1].DacShift = 0;

Motor[1].pAdc = 0;

 

//// Motor 2 - X2

Motor[2].CmdMotor = 1 //leader id/

Motor[2].ServoCtrl = 8 //follower

Motor[2].GantrySlewRate = 2

Motor[2].DacShift = Motor[1].DacShift

Motor[2].pAdc = Motor[1].pAdc

 

I should try:

 

Motor[1].Ctrl=Sys.GantryXctrl

Motor[1].ExtraMotors=1

 

And tune cross-coupling terms Motor[x].Xpg, Xig, and Xvg for both motors.

 

How should be declared Motor[2] in such a case? (Motor[2].CmdMotor for example). Does it appear somewhere in manuals?

Link to comment
Share on other sites

Motor[1].ExtraMotors = 1

Motor[1].Ctrl = Sys.GantryXCtrl

 

Motor[2].ServoCtrl = 8

Motor[2].Ctrl = Sys.GantryXCtrl

Motor[2].CmdMotor = 1

Motor[2].GantrySlewRate = 2

 

I would try making it work as expected first.

 

If you can physically tune independently (decoupled), then you do want to make sure that each motor tuning is solid. Setting up the gantry cross coupling gains is typically the final step in the optimization process. Remember, this expects your alignment to be ideal.

Link to comment
Share on other sites

Kandauru:

 

You are confusing two separate issues. The first is how you generate trajectories for the two motors. We strongly recommend the leader/follower method that you have already implemented. Virtually everyone doing gantry control uses this method.

 

The second issue is how you close the servo loops for the two motors. Most people get good enough performance just closing independent servo loops on each motor (what you have been trying so far). Those who cannot get their required performance with independent loop closure go to the cross-coupled gantry algorithm. The additional cross-coupling terms can improve performance, but not everyone needs this boost.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share


×
×
  • Create New...