I've helped a few people trying to use the 840 post. They were having trouble when arcs were in the XZ or YZ plane, see this post as an example.
I've just helped someone else who is using an 840d control with the same problem. The control is fine being given an XYZ helical move in the XY plane but the standard post outputs XYZ in the XZ and YZ planes as well and that doesn't seem to work.
I modified the post to this, I'm not sure if the CAM can generate helical moves in the XZ and YZ but thought I'd better check and linearize them.
} else { // use radius mode var r = getCircularRadius(); if (toDeg(getCircularSweep()) > (180 + 1e-9)) { r = -r; // allow up to <360 deg arcs } switch (getCircularPlane()) { case PLANE_XY: forceXYZ(); writeBlock( gMotionModal.format(clockwise ? 3 : 2), xOutput.format(x), yOutput.format(y), zOutput.format(z), "CR=" + xyzFormat.format(r), getFeed(feed)); break; case PLANE_ZX: // Removed Y moves from XZ plane arcs and added linearize if a helical ZX is used. HT 17/10/16 if (isHelical()) { linearize(tolerance); return; } forceXYZ(); writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), zOutput.format(z), "CR=" + xyzFormat.format(r), getFeed(feed)); break; case PLANE_YZ: // Removed X moves from YZ plane arcs and added linearize if a helical ZX is used. HT 17/10/16 if (isHelical()) { linearize(tolerance); return; } forceXYZ(); writeBlock(gMotionModal.format(clockwise ? 3 : 2), yOutput.format(y), zOutput.format(z), "CR=" + xyzFormat.format(r), getFeed(feed)); break; default: linearize(tolerance); } }
Mark
Mark Hughes
Owner, Hughes Tooling
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.