Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
feed override with external Time-Base PPNC
#1
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.


Attached Files
.txt   ppnc_Myoverride.txt (Size: 5.97 KB / Downloads: 5)
Reply
#2
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.
Reply
#3
(03-28-2019, 09:12 AM)Eric Hotchkiss Wrote: 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.
Reply
#4
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?
Reply
#5
(03-28-2019, 12:13 PM)Eric Hotchkiss Wrote: 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.
Reply
#6
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[i].DeltaPos.a; // Use encoder freq
return;
Reply
#7
(03-28-2019, 05:39 PM)curtwilson Wrote: 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[i].DeltaPos.a; // Use encoder freq
return;

Thanks for the help !
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)