Jump to content
OMRON Forums

Axis software limits


george.kontogiorgos

Recommended Posts

  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

You have a couple of possibilities. One is to do the calculations yourself in the kinematic subroutine -- e.g.:

 

if (KinPosAxisA > MyMaxA || KinPosAxisA < MyMinA) …

 

The other method is to assign an additional virtual motor that maps directly to the axis -- e.g.:

 

KinPosMotor11 = KinPosAxisA

 

Set your motor software limits for this virtual motor to the axis software limits you desire.

 

You will need to define this as an inverse kinematic motor in the same coordinate system -- e.g.:

 

&1 #11->I

 

You will also need to disable other faults on this virtual motor: hardware limits, amplifier fault, following error.

Link to comment
Share on other sites

You have a couple of possibilities. One is to do the calculations yourself in the kinematic subroutine -- e.g.:

 

if (KinPosAxisA > MyMaxA || KinPosAxisA < MyMinA) …

 

The other method is to assign an additional virtual motor that maps directly to the axis -- e.g.:

 

KinPosMotor11 = KinPosAxisA

 

Set your motor software limits for this virtual motor to the axis software limits you desire.

 

You will need to define this as an inverse kinematic motor in the same coordinate system -- e.g.:

 

&1 #11->I

 

You will also need to disable other faults on this virtual motor: hardware limits, amplifier fault, following error.

 

I prefer the second method but I couldn't find a way to interlock the individual motors looking to kinematics axes limits. If I move a individual motor by #4j=100 for example and motor 4 belongs to refered kinematics, the KinPosAxisA could reach a forbidden zone.

Link to comment
Share on other sites

To do this outside the motion program execution, you will want to have a PLC program scanning continually and issuing the "pread" command, which will return the axis positions in D-variables for the program (e.g. D0 for the A-axis position). Then you will explicitly compare the returned position values for each axis to your axis limits and abort motion if exceeded.
Link to comment
Share on other sites

What robot shape are you working with?

 

I have used a PLC that sets Coord[1].ErrorStatus = 255 if Coord[1].TPExec.Pos[j] is not within bounds. I believe this protects against program moves that go out of bounds, but not individual motor jog moves. A pread or dread would be more useful for getting axis positions in the case of motor level moves.

Link to comment
Share on other sites

  • 1 month later...

Hi Eric!

 

Our robot is basically three granites, where two of them form a wedge and they are over the third granite. One motor control the wedge position and other motor compensate the movement, so we can perform X and Y movements purely by kinematics transformations.

 

We develop a plc to peform this safety but the complexity level increased too much and we decided to remove the individual motors from final users and the Curt Wilson answer's work very good.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...