Jump to content
OMRON Forums

MACRO home


daves

Recommended Posts

We have a two rack system (PPMAC CPU in one connected via Acc5E3 to MACRO16CPU in the other). We have 6 motors on each, set up and working well apart from the ones controlled over the MACRO have a funny issue with homing.

 

The code has been migrated from UMAC and attempts to do things the way we were used to there. Here is the basic procedure:

 

// Disable software limits

Motor[1].MaxPos = 0;

Motor[1].MinPos = 0;

// Capture on Flag n high

cmd "MacroSlave0, I912 = 2";

// Set flag PLIM

cmd "MacroSlave0, I913 = 1";

sendallcmds;

// Set home position

Motor[1].HomeOffset = -150;

// Disable +/- limits

Motor[1].pLimits = 0;

// Do the home move

home 1;

// Restore +/- limits

Motor[1].pLimits = m1rememberedlimits;

// Set what we want this position to be

pset U(1990);

// Restore limits

Motor[1].MaxPos = m1rememberedmax;

Motor[1].MinPos = m1rememberedmin;

 

This appears to work for the motors on the main PPMAC rack: they run into the trigger and back off the amount we expect.

 

On MACRO motors they move into the trigger and back off a seemingly random amount.

 

It is as though the PPMAC and MACRO are out of sync during the home. Are there more parameters on the MACRO or for the PPMAC Motor which need to be set up to get some offsets working together?

 

It is hard to get a handle on what is happening (hence this post). It looks as though the value in the position windows goes up until the trigger is hit, it is then set to some strange value which then decreases to zero during the back-off. This strange value seems to be made up of our required home position and some other value we can't work out.

 

Is there a recommended procedure for homing MACRO motors in this way?

Link to comment
Share on other sites

  • Replies 6
  • Created
  • Last Reply

Top Posters In This Topic

Hi,

 

There are a few other parameters to consider.

 

For MACRO captures, you should set the following:

 

Motor[x].CaptFlagBit=19

Motor[x].CaptPosLeftShift=13

Motor[x].CaptPosRightShift=0

Motor[x].pCaptFlag=Gaten.Macro[k][3].a

 

in pCaptFlag, "n" is the Gate number type (whether 1, 2, or 3), "i" is the Gate index, and "k" is the node number associated with your capture.

 

Does that fix your issue?

Link to comment
Share on other sites

Thanks for the reply. I'm on my way home so can't check. I'm certain the first three things are as you describe. pCaptFlag is set to the right node on Gate3 5e3. Pretty sure it is register 3.

 

Any other thoughts I can try tomorrow would be useful...

Link to comment
Share on other sites

Those were correct.

 

We got a home to complete by changing CaptureMode to 1 for software capture.

 

We would prefer hardware capture for accuracy but is that not possible over MACRO as there is no way to get the captured position back in the node?

 

Or should it be possible and we have a bad setting messing up the captured position?

Link to comment
Share on other sites

Yes it is set to 1. Still not working in hardware mode.

 

I tried software mode because I read:

 

"If the captured position for triggered moves is obtained over the MACRO ring, Power PMAC

obtains the position through a software request over the ring, and Motor[x].pCaptPos is not

used."

 

in the SRM and thought it was hinting only software mode would function.

 

If only register 1 of the node is used for feedback how would PPMAC know it was getting the captured position or the current live position? What happens to the live feedback when the captured position comes through? Maybe this is not how it works.

Link to comment
Share on other sites

Upon further consideration, it appears that this sentence (from page 533 of the PPMAC SRM) is the key:

 

CaptureMode = 0 "requires that the motor’s actual position be derived from a sensor processed through this ASIC

channel’s encoder counter".

 

Since you're getting the captured position from the ASIC on the Slave, not on the Master, then hardware capture will not work, and you should use software capture (as you are already).

 

Furthermore, the mechanism for obtaining the captured position is through master to slave MACRO command, which is not transmitted through the servo node registers, so it does not interrupt ongoing feedback when you request the captured position.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...