Jump to content
OMRON Forums

Recommended Posts

Posted

I am using a Power PMAC controller to drive my CNC machine, which has standard cartesian X, Y, Z axes.

 

Is there any way to adjust the position of the Z axes on the fly while a motion program is running? (in a similar manner to how you can adjust the feedrate on the fly with a feedrate override) Ideally these adjustments would happen ASAP but also follow any accel limits I have set for the axes.

 

I currently have some software that allows my machine operator to enter an offset and that offset is pushed to the controller and stored in a register.

 

For example, lets say I have this simple motion program:

 

G1 Z1

G1 X0 Y0

G1 X10

G1 Y10

G1 X0

G1 Y0

 

The above program should trace a square at Z=1. Now lets say that in the middle of the program executing an operator puts 0.5 into the register. I would like the Z axes to move to Z=1.5 (ASAP while still respecting accel limits) and then finish the rest of the square at Z=1.5. Any subsequent moves will retain this offset (i.e., a move to Z=5 will end up at Z=5.5) until the register is reset back to 0.

 

Is this behavior achievable? If so I'd love some pointers on accomplishing this.

  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

Posted

I am using a Power PMAC controller to drive my CNC machine, which has standard cartesian X, Y, Z axes.

 

Is there any way to adjust the position of the Z axes on the fly while a motion program is running? (in a similar manner to how you can adjust the feedrate on the fly with a feedrate override) Ideally these adjustments would happen ASAP but also follow any accel limits I have set for the axes.

 

I currently have some software that allows my machine operator to enter an offset and that offset is pushed to the controller and stored in a register.

 

For example, lets say I have this simple motion program:

 

G1 Z1

G1 X0 Y0

G1 X10

G1 Y10

G1 X0

G1 Y0

 

The above program should trace a square at Z=1. Now lets say that in the middle of the program executing an operator puts 0.5 into the register. I would like the Z axes to move to Z=1.5 (ASAP while still respecting accel limits) and then finish the rest of the square at Z=1.5. Any subsequent moves will retain this offset (i.e., a move to Z=5 will end up at Z=5.5) until the register is reset back to 0.

 

Is this behavior achievable? If so I'd love some pointers on accomplishing this.

CamTables are nice for this type of things since they can control the rate at which correction gets applied to the target axis. In this case a zero degree cam table would work.

Posted

CamTables are nice for this type of things since they can control the rate at which correction gets applied to the target axis. In this case a zero degree cam table would work.

 

Hi Jeff, thank for the response. I was experimenting yesterday and figured out that CamTables do work as I hoped. What do you mean by "zero degree" though? I've pasted my working code below (on the fly updates are achieved by adjusting PosBias), is there anything I can do to simplify it or do I need to define all those options?

 

CamTable Definition:

 

CamTable[0].Source = 0

CamTable[0].Nx = 1

CamTable[0].X0 = 0

CamTable[0].SlewX0 = 10

CamTable[0].Dx = 1

CamTable[0].Target = 3

CamTable[0].PosSf = 1

CamTable[0].PosBias = 0

CamTable[0].SlewPosOffset = 0.1

CamTable[0].DacEnable = 0

CamTable[0].PosData[0] = 0

CamTable[0].PosData[1] = 0

 

Sys.CamEnable = 1

Posted

Look up Motor[x].pMasterEnc in the software reference.

 

I think it will do what you want.

 

Hi Dave, thanks for the response. I will experiment with pMasterEnc and see how it works. It seems simpler than my CamTable solution posted above.

 

Do you know if it has a "slew" option similar to the CamTable so the motion isn't sudden? I couldnt seem to find a reference to anything like that in the docs.

Posted

Jack,

 

Motor[x].SlewMasterPosSf limits the rate that the command is injected to the follower motor upon enabling the following feature. It basically ramps up to the ratio between master and follower specified by Motor[x].MasterPosSf.

Guest
This topic is now closed to further replies.

×
×
  • Create New...