onRewindMachine Issues DMU-60T
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi Guys,
I am tweaking my post for a Deckel DMU 60T which has a rotating table (C-axis) and a tilting head (B-axis). To make the most of the work area with 5 axis moves, the B-axis limits are 0 to -90 degrees therefore when sweeping over the vertical axis the rotating table has to swing around 180 degrees to continue following the surface.
My issue is that the onRewindMachine command is not called when the B-axis is actually at zero:
58 L Y+141.729 Z+367.827 B-8.708 F1074 59 L Y+142.365 Z+367.911 B-6.259 60 L Y+143.003 Z+367.967 B-3.81 61 L Y+143.644 Z+367.996 B-1.361 62 ; onRewindMachine 63 L Y+144.285 Z+367.997 B-1.089 C+270 64 L Y+144.926 Z+367.971 B-3.538 65 L Y+145.565 Z+367.918 B-5.987 66 L Y+146.201 Z+367.838 B-8.436 67 L Y+146.833 Z+367.73 B-10.886
As a workaround I can reduce the tolerance to a small enough value, force the B axis to 0, rotate the table with TCPM on and continue on:
96 L Y+143.587 Z+367.994 B-1.579 97 L Y+143.758 Z+367.998 B-0.923 98 L Y+143.93 Z+368 B-0.267 99 ; onRewindMachine 100 L B+0 101 L C+270 102 L Y+144.102 B-0.389 103 L Y+144.274 Z+367.997 B-1.045 104 L Y+144.445 Z+367.993 B-1.701 105 L Y+144.617 Z+367.987 B-2.357
With some dirty code something like this:
var rewind = false;
function onRewindMachine(_a, _b, _c) {
writeComment("onRewindMachine");
rewind = true
return;
}
function onLinear5D(x, y, z, a, b, c, feed) {
......
if (currentSection.isOptimizedForMachine()) {
var f = getFeed(feed);
if (rewind) {
writeBlock("L B+0" + f);
writeBlock("L" + cOutput.format(c) + radiusCompensationTable.lookup(radiusCompensation) + f);
rewind = false;
}
var xyzabc = xOutput.format(x) + yOutput.format(y) + zOutput.format(z) + aOutput.format(a) + bOutput.format(b) + cOutput.format(c);
.....
}
The drama I have with this is that onRewindMachine is called when the C axis crosses 0 and when the B axis tries to go past 0. There doesn't seem to be a way to differentiate between them
I can trick the post processor to avoid C axis 0 crossings by defining the C axis limits in a non-ideal way:
var bAxis = createAxis({coordinate:1, table:false, axis:[0, -1, 0], range:[-91.001, 0.0], preference:-1});
//var cAxis = createAxis({coordinate:2, table:true, axis:[0, 0, 1], range:[0, 360], cyclic:true});
var cAxis = createAxis({coordinate:2, table:true, axis:[0, 0, 1]});
machineConfiguration = new MachineConfiguration(bAxis, cAxis);
machineConfiguration.setModel("DMU 60T");
This causes issues down the track with cyclic commands like multi-axis tilting while contouring:
11422 L X+149.769 Y+140.211 B-10.603 C+17113.894 11423 L X+150.012 Y+139.849 B-10.657 C+17115.649 11424 L X+150.235 Y+139.556 B-10.702 C+17117.132 11425 L X+150.412 Y+139.356 B-10.735 C+17118.209 11426 L X+150.592 Y+139.158 B-10.768 C+17119.286
The controller doesn't actually care because of the shortest path feature but I'm sure there is a limit to the maximum c input.
Any help would be appreciated.
Thanks,
Todd
