daves Posted April 29, 2014 Posted April 29, 2014 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?
Omron Forums Support Posted April 29, 2014 Posted April 29, 2014 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?
daves Posted April 29, 2014 Author Posted April 29, 2014 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...
daves Posted May 1, 2014 Author Posted May 1, 2014 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?
Omron Forums Support Posted May 1, 2014 Posted May 1, 2014 Hi, You should still be able to use hardware capture (CaptureMode=0) for MACRO flags. Also, is your Motor[x].CaptPosRound=1?
daves Posted May 2, 2014 Author Posted May 2, 2014 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.
Omron Forums Support Posted May 8, 2014 Posted May 8, 2014 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.
Recommended Posts