Dear Sir/Madam,
I'm submitting suggestions for post processor Siemens 840d. Most of this can be implemented via simple modification of post processor. Maybe following modifications would be interesting for others.
1.) Cycle832
This cycle is currently using fixed values. This is somehow acceptable for older controllers. New controllers can control this cycle much more efficiently. Maybe it is time for update?
Following code changes cycle832 parameters based on stock to leave. I'm sure your programmers can optimize next few lines for better efficiency. This cycle greatly improves motion smoothness.
if (properties.useCycle832) { if (hasParameter("operation-strategy") && (getParameter("operation-strategy") == "drill")) { writeBlock("CYCLE832()"); } else if (hasParameter("operation:tolerance")) { var tolerance = Math.max(getParameter("operation:tolerance"), 0); if (tolerance > 0) { var workMode = 0; //Thresholds var stockToLeaveThresholdFinish = toPreciseUnit(0.05, MM); //Finishing var stockToLeaveThresholdRoughing = toPreciseUnit(0.1, MM); //Roughing //Stocks from Operation var stockToLeave = (hasParameter("operation:stockToLeave")) ? getParameter("operation:stockToLeave") : 0; var verticalStockToLeave = (hasParameter("operation:verticalStockToLeave")) ? getParameter("operation:verticalStockToLeave") : 0; var minStockValue = Math.min( stockToLeave, verticalStockToLeave ); // get smallest stock value //Check conditions for Finishing if ( minStockValue < stockToLeaveThresholdFinish ) { workMode = 1; } else { workMode = 2; } //Check conditions for Roughing if ( minStockValue >= stockToLeaveThresholdRoughing ) { workMode = 3; } if (workMode) { writeBlock("CYCLE832(" + xyzFormat.format(tolerance) + ", " + workMode + ", 1)"); } else { writeBlock("CYCLE832()"); } } else { writeBlock("CYCLE832()"); } } else { writeBlock("CYCLE832()"); } }
2.) Program end
Program usually ends with following:
G0 SUPA Z0 D0 G0 SUPA X0 Y0 D0 M30
This code disables tool length and once program ends tool height is incorrectly displayed.
Maybe it would be safer to add D1 before M30?
writeBlock(gMotionModal.format(0), "D1"); // enable tool length compensation
3.) Lead in - lead out
Would it be possible to have IJK for milling (usearcturn=true) and ForceXYZ() for lead in/out?
I am experiencing a lot of errors in end point of circle when using 2d contour and rouging passes. This would solve mentioned issue.
4.) Thread milling
Current code is not optimized for multi flute/row thread cutters. Is it possible to optimize this via post processor or is this problem much more complicated?
Thank you for reading my suggestions and best regards!
Can't find what you're looking for? Ask the community or share your knowledge.