Jump to content
OMRON Forums

feed override with external Time-Base PPNC


andreychip

Recommended Posts

Hello!

In the PPNC program, we use the “% n” adjustment in plc OverridePLC as Coord [1] .DesTimeBase = Sys.ServoPeriod * RapidOverrideInput / 100.

How to adjust the "feed override" with External Time-Base ?

my settings:

EncTable[13].type=1

EncTable[13].pEnc=Clipper[1].Chan[1].ServoCapt.a

 

plc spindle

EncTable[13].ScaleFactor=1/(256*RTIF)

RTIF=SpindleCtsRev*VS_SPINDLE_MAX_LIM_M/60000;

plc OverridePLC

Coord[1].pDesTimeBase= EncTable[13].DeltaPos.a; //TIMEBASE_M =FPR_TIMEBASE

Coord[1].TimeBaseSlew=1 //MED_SLEW;

The program works.

How to adjust the "feed override" with External Time-Base ?

 

best regards

Andrey.

ppnc_Myoverride.txt

Link to comment
Share on other sites

  • Replies 6
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Is there a reason you would want to mix feedrate override with external time base? The whole point of external time base would be to go at the same speed an the encoder. I'd assume you'd want to slow down the motor that is the time base master, not the slave coordinate system.

 

Normally feedrate override is accomplished by changing Coord[x].DesTimeBase so that Coord[x].TimeBase changes based on Coord[x].TimeBaseSlew. When using external time base, Coord[x].DesTimeBase will still change from %n, but it will have no affect on Coord[x].TimeBase as it is set based on encoder velocity.

 

We can probably still make this happen if an extra ECT entry is used to multiply in Coord[x].DesTimeBase. Although this would probably require a RTI PLC or servo algorithm to repeated values from Coord[x].DesTimeBase to Sys.Idata[] where the ECT can actually point. This strategy would ignore Coord[x].TimeBaseSlew.

Link to comment
Share on other sites

Is there a reason you would want to mix feedrate override with external time base? The whole point of external time base would be to go at the same speed an the encoder. I'd assume you'd want to slow down the motor that is the time base master, not the slave coordinate system.

 

Normally feedrate override is accomplished by changing Coord[x].DesTimeBase so that Coord[x].TimeBase changes based on Coord[x].TimeBaseSlew. When using external time base, Coord[x].DesTimeBase will still change from %n, but it will have no affect on Coord[x].TimeBase as it is set based on encoder velocity.

 

We can probably still make this happen if an extra ECT entry is used to multiply in Coord[x].DesTimeBase. Although this would probably require a RTI PLC or servo algorithm to repeated values from Coord[x].DesTimeBase to Sys.Idata[] where the ECT can actually point. This strategy would ignore Coord[x].TimeBaseSlew.

Thanks for the answer.

It makes sense. This mode is often used in lathes. In the previous version, the NC-PRO 2 was implemented in the PLC program. Today I found one of the ways. I used a free address

EncTable [16] .DeltaPos = EncTable [13] .DeltaPos * 0.01 * varOverraid;

Coord [1] .pDesTimeBase = EncTable [16] .DeltaPos.a;

varOverraid = 0 -150%

it all worked.

best regards Andrey.

Link to comment
Share on other sites

I'm a little confused. I can't set write to EncTable [16].DeltaPos, are you setting:

Enctable[16].pEnc=Enctable[13].PrevEnc and changing Enctable[16].ScaleFactor with varOverraid?

If you declare the table EncTable [16], you will not be able to write.

best regards Andrey.

Link to comment
Share on other sites

Here's how it's commonly done with G93, G94, and G95 codes:

 

N93000: // G93: inverse time mode

dwell 0; // Stop pre-computation and motion

Coord[1].InvTimeMode = 1; // Enable inverse time calcs

Coord[1].TimeBaseSlew = 0.001; // Low value for gradual change

Coord[1].FeedTime = 60000; // F values are minute/F-command

Coord[1].pDesTimeBase = Coord[1].DesTimeBase.a; // Use cmd % value

return;

 

N94000: // G94: length per minute mode

dwell 0; // Stop pre-computation and motion

Coord[1].InvTimeMode = 0; // Not inverse time

Coord[1].TimeBaseSlew = 0.001; // Low value for gradual change

Coord[1].FeedTime = 60000; // F values are per minute

Coord[1].pDesTimeBase = Coord[1].DesTimeBase.a; // Use cmd % value

return;

 

N95000: // G95: length per rev mode

dwell 0; // Stop pre-computation and motion

Coord[1].InvTimeMode = 0; // Not compatible with inverse time

Coord[1].TimeBaseSlew = 1.0; // High value to track master

Coord[1].FeedTime = 60000 / SpindleRtRpm; // Time for rev in real time

Coord[1].pDesTimeBase = EncTable.DeltaPos.a; // Use encoder freq

return;

Link to comment
Share on other sites

Here's how it's commonly done with G93, G94, and G95 codes:

 

N93000: // G93: inverse time mode

dwell 0; // Stop pre-computation and motion

Coord[1].InvTimeMode = 1; // Enable inverse time calcs

Coord[1].TimeBaseSlew = 0.001; // Low value for gradual change

Coord[1].FeedTime = 60000; // F values are minute/F-command

Coord[1].pDesTimeBase = Coord[1].DesTimeBase.a; // Use cmd % value

return;

 

N94000: // G94: length per minute mode

dwell 0; // Stop pre-computation and motion

Coord[1].InvTimeMode = 0; // Not inverse time

Coord[1].TimeBaseSlew = 0.001; // Low value for gradual change

Coord[1].FeedTime = 60000; // F values are per minute

Coord[1].pDesTimeBase = Coord[1].DesTimeBase.a; // Use cmd % value

return;

 

N95000: // G95: length per rev mode

dwell 0; // Stop pre-computation and motion

Coord[1].InvTimeMode = 0; // Not compatible with inverse time

Coord[1].TimeBaseSlew = 1.0; // High value to track master

Coord[1].FeedTime = 60000 / SpindleRtRpm; // Time for rev in real time

Coord[1].pDesTimeBase = EncTable.DeltaPos.a; // Use encoder freq

return;

 

Thanks for the help !

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...