LinuxCNC machine setup selection

BobCAD-CAM is able to manage multiple machine setups in the same project. This is a very useful feature when the workpiece should be cut in several phases with a different fixture for each of them. Below an example with 3 machine setups.

BobCAD V26 - [Multi Setups]_2015-02-09_22-20-50

The generated G-Code file contains all operations in the same file, except if you enable manually only one fixture. So, saving one different G-Code file for each machine setup is possible, but quite painful and risky.

To solve this issue, I have designed a custom BobCAD-CAM postprocessor and a dedicated LinuxCNC/Gmoccapy panel to select from one single G-Code file the operations to be executed for a given machine setup. Also, the Gremlin preview is automatically updated according to the selected machine setup. Here is a video showing how it works:

In the BobCAD-CAM generated G-Code file, the section associated to each machine setup is surrounded by if / elseif / endif statements for dynamic selection.

...
(Machine Setup - 1  Facing)
(FACING)
O100 if  [ #<_selected_setup> EQ 1 ]
T1 M6
G53 G0 Z#<_ini [ AXIS_2 ] SAFE_POSITION>
S15915
M3
G0 X60.150 Y-22.600
M7 (MIST COOLANT)
G0
(Machine Setup - 2  Pocket)
(POCKET)
M5
T2 M6
S3559
M3
M7 (MIST COOLANT)
G0
G0 X5.969 Y.000
G0 Z35.480
...
(NEXT MACHINE SETUP - Machine Setup - 2)
O100 elseif  [ #<_selected_setup> EQ 2 ]
T1 M6
G53 G0 Z#<_ini [ AXIS_2 ] SAFE_POSITION>
....
(NEXT MACHINE SETUP - Machine Setup - 3)
O100 elseif  [ #<_selected_setup> EQ 3 ]
....
G0 Z25.480
G0 Z55.800
O100 endif
M5
M30

The #<_selected_setup> is a custom named parameter linked to a Gmoccapy panel where the setup number can be selected from 1 to 6.

For those who are not using Gmoccapy or LinuxCNC, another option is to get the chosen machine setup by reading an analog input with a M66 statement.

I have spent some hours to configure properly my BobCAD-CAM postprocessor for good result. One tricky aspect is the tools management: if the tool does not change from one machine setup to the next one, the original postprocessor does not include any further tool change statements in the G-Code file. This is not compatible with my O100 if/elseif/endif hack because, the tool change sequence would be issued only for first machine setup. So, I have added a systematic tool change in the following section of the posprocessor:

16. Machine Setup Change
	" "
	"(NEXT MACHINE SETUP - ",setup_name,")"
	" "
	n,"O100 elseif ","[","# EQ ", program_block_5, "]"
	n,t,"M6"
	n,"G53 G0 Z#<_ini","[","AXIS_2","]","SAFE_POSITION>"
	n,s
	n,spindle_on
	n,rapid_move,force_x,xr,force_y,yr,rotary_xyr_angle
	n,program_block_1
	"G0"
	output_rotary_angle

I am not yet fully happy with this solution because I have some unnecessary tool change requests in some situations. But, at least it works, in any case!

I have now to test this modification on the real machine … Stay tuned!