Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ; FANUC
- ; -----
- ;
- @init_post
- global string tool_diameter_f
- global numeric flag1 flag2 m_feed_flag peck drilling dely colent f_drill tapping boring r_boring f_boring delay
- ; Non GPPL variables
- num_user_procs = 1
- line_labels = FALSE ; Jump to N...
- ; GPPL variables
- pre_processor = 'FANUC'
- numeric_def_f = '5.3'
- integer_def_f = '5.0(p)'
- gcode_f = '2.0(p)'
- mcode_f = '2.0(p)'
- xpos_f = '5.3'
- ypos_f = '5.3'
- zpos_f = '5.3'
- feed_f = '4.3(p)'
- tool_diameter_f = '5.3/1'
- blknum_f = '5.0(p)'
- blknum_gen = false
- blknum_exist = true
- blknum = 1
- blknum_delta = 1
- blknum_max = 32000
- ; trace 'all':5
- endp
- ;-------------------
- @start_of_file
- ; before tools definition
- {'%'}
- {nl, 'O'program_number, ' (', g_file_name, ')'}
- {nl, '( MCV-OP )', ' (',DATE ')'}
- if rotate_used then
- gcode = 69
- {nb, 'G'gcode}
- endif
- if mirror_used then
- {nb, 'G50.1 X0 Y0'}
- endif
- {nb, '(SUBROUTINES: O'first_proc_number, ' .. O'last_proc_number, ')'}
- flag2 = 0
- endp
- ;-------------------
- @start_program
- ; after tools definition
- {nb, 'G80 G49 G40'}
- ; call @home_number
- endp
- ;-------------------
- @end_program
- ; {nb, 'M98 P9010'}
- {nb, 'M30'}
- endp
- ;-------------------
- @end_of_file
- {nl, '%'}
- endp
- ;-------------------
- @relative_mode
- gcode = 91
- {nb, 'G'gcode, ' '}
- skipline = FALSE
- endp
- ;-------------------
- @absolute_mode
- gcode = 90
- {nb, 'G'gcode, ' '}
- skipline = FALSE
- endp
- ;-------------------
- @machine_plane
- if machine_plane eq XY
- gcode = 17
- endif
- if machine_plane eq YZ
- gcode = 18
- endif
- if machine_plane eq ZX
- gcode = 19
- endif
- {nb, 'G'gcode}
- endp
- ;-------------------
- @call_proc
- if active(parm1) then
- gcode = 65
- {nb, 'G'gcode, ' P'label}
- {' A'parm1, [' B'parm2], [' C'parm3]}
- else
- {nb, 'M98 P'label}
- endif
- if proc_count gt 1 then
- {' L'proc_count}
- endif
- {[' ('message, ')']}
- endp
- ;-------------------
- @proc
- {nl, 'O'label}
- endp
- ;-------------------
- @end_proc
- if dely eq 1
- {' G64 '}
- endif
- {nb, 'M99'}
- endp
- ;----------------
- @loop
- local integer var_num
- var_num = loop_level + 20
- {nb, '#', var_num, ' = 0'}
- {nb, 'WHILE [#', var_num, ' LT ', loop_count, '] DO ', loop_level}
- endp
- ;----------------
- @end_loop
- local integer var_num
- var_num = loop_level + 20
- {nb '#', var_num, ' = #', var_num, ' + 1'}
- {nb 'G'home_number}
- {nb 'END ', loop_level}
- endp
- ;----------------
- @def_tool
- ;;; {nb, '(G10 L12 P', (tool_number+50), ' R'tool_offset, ')'}
- endp
- ;-------------------
- @rapid_move
- {nb}
- gcode = 0
- if change(gcode) then
- {'G'gcode}
- else
- {' '}
- endif
- {[' X'xpos], [' Y'ypos], [' Z'zpos]}
- ; if flag1 eq 1
- ; {' S'spin:'5.0(p)',' M03'}
- ; {nb, 'M08'}
- ; endif
- ; flag1 = 0
- endp
- ;-------------------
- @line
- {nb}
- gcode = 1
- if change(gcode) then
- {'G'gcode}
- else
- {' '}
- endif
- {[' X'xpos], [' Y'ypos], [' Z'zpos]}
- if m_feed_flag eq 1
- m_feed_flag = 0
- { ' F'feed}
- else
- { [' F'feed]}
- endif
- endp
- ;-------------------
- @arc
- {nb}
- if arc_direction eq CCW then
- gcode = 3
- else ; CW
- gcode = 2
- endif
- if change(gcode) then
- {'G'gcode}
- else
- {' '}
- endif
- {[' X'xpos] [' Y'ypos] [' Z'zpos]}
- if arc_size eq 360 then
- if arc_plane eq XY then
- {' I'xcenter_rel, ' J'ycenter_rel}
- endif
- if arc_plane eq YZ then
- {' J'xcenter_rel, ' K'ycenter_rel}
- endif
- if arc_plane eq ZX then
- {' K'xcenter_rel, ' I'ycenter_rel}
- endif
- else
- if arc_size >= 180 then
- radius = -radius
- endif
- {' R'radius}
- endif
- if m_feed_flag eq 1
- m_feed_flag = 0
- { ' F'feed}
- else
- { [' F'feed]}
- endif
- endp
- ;-------------------
- @compensation
- if side eq COMP_LEFT then
- gcode = 41
- endif
- if side eq COMP_RIGHT then
- gcode = 42
- endif
- if side eq COMP_OFF then
- gcode = 40
- endif
- {nb, 'G'gcode, ' '}
- skipline = FALSE
- endp
- ;-------------------
- @delay
- gcode = 4
- {nb 'G'gcode, ' P'delay_period:integer_def_f}
- endp
- ;-------------------
- @change_ref_point
- ; Given in absolute mode
- gcode = 10
- {nb, 'G'gcode, 'G91 L2 P'home_number ' X'xhome, ' Y'yhome, ' Z'zhome}
- {nb,'G90'}
- endp
- ;-------------------
- @home_number
- gcode = 53 + home_number
- {nb, 'G'gcode}
- flag2 = 1
- endp
- ;-------------------
- @rotate
- ; Not exist in FANUC 6M
- if rotate_cancel then
- gcode = 69
- {nb, 'G'gcode}
- else
- gcode = 68
- {nb, 'G'gcode, ' X0 Y0 G91 R'angle}
- {nb, 'G90'}
- endif
- endp
- ;-------------------
- @fourth_axis
- gcode = 0
- {nb, 'G'gcode, ' A'angle}
- endp
- ;-------------------
- @change_tool
- if flag2 eq 0
- call @home_number
- endif
- flag2 = 1
- local logical save_blknum_gen
- ; {nb, 'M98 P9011'}
- {nb, 'G91 G28 Z0'}
- {nb, 'G90'}
- ; if tool_number gt 20 and tool_number lt 40
- ; tool_number = (tool_number - 20)
- ; endif
- ; if tool_number gt 40 and tool_number lt 60
- ; tool_number = (tool_number - 40)
- ; endif
- ; if tool_number gt 60 and tool_number lt 80
- ; tool_number = (tool_number - 60)
- ; endif
- {nb, 'M01'}
- blknum_gen = true
- {nb, 'M6 T'tool_number}
- blknum_gen = FALSE
- if tool_type eq 0 then
- {nb, '( TOOL -'tool_number, '- DRILL DIA 'tool_diameter, ' MM )'}
- endif
- if tool_type eq 1 then
- {nb, '( TOOL -'tool_number, '- ROUGH DIA 'tool_diameter, ' MM )'}
- endif
- if tool_type eq 2 then
- {nb, '(TOOL -'tool_number, '- MILL DIA 'tool_diameter, ' R'corner_radius,' MM )'}
- endif
- {nb, 'G90 G00 G40 G'(53 + home_number)}
- label = first_user_proc
- save_blknum_gen = blknum_gen
- gcode = 43
- {nb, 'G'gcode, ' H'tool_number, ' D'(tool_number+30), ' '}
- blknum_gen = save_blknum_gen
- xpos = xnext
- ypos = ynext
- zpos = znext
- skipline = FALSE
- call @rapid_move
- tool_direction = CCW
- call @start_tool
- if colent eq 0
- {nb, 'M8'}
- endif
- if colent eq 17
- {nb, 'M17'}
- endif
- if colent eq 18
- {nb, 'M18'}
- endif
- endp
- ;-------------------
- @message
- {nb, '(', message, ')'}
- endp
- ;-------------------
- @drill
- call @rapid_move
- if drill_type eq drilling then
- gcode = 81
- endif
- if drill_type eq f_drill then
- gcode = 82
- endif
- if drill_type eq peck then
- gcode = 83
- endif
- if drill_type eq tapping then
- gcode = 84
- endif
- if drill_type eq boring then
- gcode = 85
- endif
- if drill_type eq r_boring then
- gcode = 86
- endif
- if drill_type eq f_boring then
- gcode = 89
- endif
- if drill_type eq tapping then
- {nb,'M29 S'spin:integer_def_f}
- endif
- {nb,'G98 G'gcode, ' Z'drill_lower_z, ' R'drill_upper_z}
- if drill_type eq peck then
- {' Q'down_step}
- endif
- if drill_type eq f_drill or drill_type eq tapping then
- {' P'delay:integer_def_f}
- endif
- {' F'feed}
- endp
- ;-------------------
- @drill_point
- if not first_drill then
- {nb, ' ', [' X'xpos], [' Y'ypos], [' Z'zpos]}
- endif
- endp
- ;-------------------
- @mirror
- if mirror_type eq MIRROR_OFF then
- {nb, 'G50.1 X0 Y0'}
- else
- {nb, 'G51.1 '}
- if mirror_type eq MIRROR_X then
- {'X1 Y0'}
- endif
- if mirror_type eq MIRROR_Y then
- {'X0 Y1'}
- endif
- if mirror_type eq MIRROR_XY then
- {'X1 Y1'}
- endif
- endif
- endp
- ;-------------------
- @end_drill
- gcode = 80
- {nb, 'G'gcode}
- endp
- ;-------------------
- @halt_program
- {' M0'}
- endp
- ;--------------------
- @round_comp
- ; NOP
- endp
- ;--------------------
- @start_of_job
- if dely eq 1
- {nb, 'G61'}
- endif
- ; flag1 = 1
- endp
- ;--------------------
- @end_of_job
- ; NOP
- endp
- ;--------------------
- @assign_axis
- ; TBD
- endp
- ; =======================
- ; USER DEFINED PROCEDURES
- ; =======================
- @call_simple_proc
- active(message) = FALSE
- active(parm1) = FALSE
- active(parm2) = FALSE
- active(parm3) = FALSE
- proc_count = 1
- call @call_proc
- endp
- ;-------------------
- @start_tool
- if tool_direction eq CW then
- mcode = 4
- else ; CCW
- mcode = 3
- endif
- {' S'spin:integer_def_f, ' M'mcode}
- endp
- ;-------------------
- @m_feed_spin
- ; if tool_direction eq CW then
- ; mcode = 4
- ; else ; CCW
- ; mcode = 3
- ; endif
- ; if change(spin)
- ; {nb,'S'spin:integer_def_f, ' M'mcode}
- ; endif
- m_feed_flag = 1
- endp
- ;-------------------
- @stop_tool
- ; {' M5'}
- endp
Advertisement
Add Comment
Please, Sign In to add comment