ReadyPlanet.com


post โปรเเกรมออกมาเเล้วให้มี G5.1 Q1 ครับ
avatar
vn.สยาม


  สวัดดีครับ   คือว่าอยากรบกวนถามพี่ๆ  ที่พอจะรู้ว่าเวลาที่เราทำ การ  post    G1    เเล้ว

อยาจะให้มี   G5.1  Q1     ออกมาด้วยพอทำใด้ใหมครับ   

อย่างเช่น           O 0001;

                    G0 G90 G40 G49    G17;

                    T1  M6

                   G5.1 Q1

                  G54 X0. Y0.   S2000 M3

                 ........................................

              G5.1 Q0

            G91 G28   Z0.

          M30

 ประมาณนี้ครับ    ปรกติจะเขียนเพิ่มเอาครับ  เเล้วพอจะมีวิธีทำให้ post    ออกมาเเล้วมีเลยใด้ใหมครับ



ผู้ตั้งกระทู้ vn.สยาม กระทู้ตั้งโดยสมาชิก :: วันที่ลงประกาศ 2012-07-13 14:57:42


[1]

ความคิดเห็นที่ 1 (3347802)
avatar
V9

 แก้ไขใน post processor

ผู้แสดงความคิดเห็น V9 (pphithagphong-at-micro-mechanics-dot-com)วันที่ตอบ 2012-11-08 08:28:20


ความคิดเห็นที่ 2 (3348105)
avatar
kon22

แบบนี้พอได้ป่าว 

%

O0000
(PROGRAM NAME - O2910)
(DATE=DD-MM-YY - 12-11-12 TIME=HH:MM - 12:46)
G21
G0G17G40G49G80G90
(101009 TOOL - 101009 DIA. OFF. - 0 LEN. - 376 DIA. - 10.)
T101009M6
G5.1 Q1.
G0G90G54X-117.Y-131.S1500M3
G43H376Z100.
Z-23.5
-
-
G0Z100.
M5
G5.1 Q1.
G91G28Z0.
G28X0.Y0.
M30
%
ผู้แสดงความคิดเห็น kon22 (mskorh-at-hotmail-dot-com)วันที่ตอบ 2012-11-12 12:49:57


ความคิดเห็นที่ 3 (3348106)
avatar
kon22

 [POST_VERSION] #DO NOT MOVE OR ALTER THIS LINE# V15.00 P0 E1 W15.00 T1352698457 M15.00 I0 O0

# Post Name           : MPFAN
# Product             : MILL
# Machine Name        : GENERIC FANUC
# Control Name        : GENERIC FANUC
# Description         : GENERIC FANUC MILL POST
# Associated Post     : NONE
# Mill/Turn           : NO
# 4-axis/Axis subs.   : YES
# 5-axis              : NO
# Subprograms         : YES
# Executable          : MP v9.0
#
# WARNING: THIS POST IS GENERIC AND IS INTENDED FOR MODIFICATION TO
# THE MACHINE TOOL REQUIREMENTS AND PERSONAL PREFERENCE.
#
# --------------------------------------------------------------------------
# Revision log:
# --------------------------------------------------------------------------
# Programmers Note:
# CNC 01/12/01  -  Initial post update for V8.1, grt
# CNC 07/02/01  -  Add cantext to cancel drill and tool retract, jph
# CNC 01/09/02  -  Initial post update for V9.0, rjm 
# CNC 01/31/02  -  Set usecandrill, usecanpeck, force_wcs to YES, rjm
# CNC 02/22/02  -  Forces output of I,J,K arc centers (arcoutput:0), rjm
# CNC 04/12/02  -  Use original position for inverse feed and 4 ax paths, jph
# CNC 05/01/02  -  Set "helix_arc:2", support helix arc output in XY plane, rjm
# CNC 05/07/02  -  Do not update sav_rev with axis substitution, jph
#
# --------------------------------------------------------------------------
# Features:     
# --------------------------------------------------------------------------
# This post supports Generic Fanuc code output for 3 and 4 axis milling.
# It is designed to support the features of Mastercam Mill V8.
# Following Misc. Integers are used:
#
# mi1 - Work coordinate system 
#        0 = Reference return is generated and G92 with the 
#            X, Y and Z home positions at file head.
#        1 = Reference return is generated and G92 with the 
#            X, Y and Z home positions at each tool.
#        2 = WCS of G54, G55.... based on Mastercam settings.
#
# mi2 - Absolute or Incremental positioning at top level
#        0 = absolute
#        1 = incremental
#
# mi3 - Select G28 or G30 reference point return.
#        0 = G28, 1 = G30
#
#Canned text:
#    Entering cantext on a contour point from within Mastercam allows the
#    following functions to enable/disable.
#    Cantext value:
#    1 = Stop = output the "M00" stop code
#    2 = Ostop =  output the "M01" optional stop code
#    3 = Bld on = turn on block delete codes in NC lines
#    4 = bLd off = turn off block delete codes in NC lines
#
#Milling toolpaths (4 axis)
#Layout:
# The term "Reference View" refers to the coordinate system associated
# with the Top view (Alt-F9, the upper gnomon of the three displayed).
# Create the part drawing with the axis of rotation about the axis
# of the "Reference View" according to the setting you entered for
# "vmc" (vertical or horizontal) and "rot_on_x" (machine relative
# axis of rotation).
# vmc = 1 (vertical machine) uses the top toolplane as the base machine
# view.
# vmc = 0 (horizontal machine) uses the front toolplane as the base machine
# view.
# Relative to the machine matrix -
# Rotation zero position is on the Z axis for rotation on X axis.
# Rotation zero position is on the Z axis for rotation on Y axis.
# Rotation zero position is on the X axis for rotation on Z axis.
# The machine view rotated about the selected axis as a "single axis
# rotation" are the only legal views for 4 axis milling.  Rotation
# direction around the part is positive in the CCW direction when
# viewed from the plus direction of the rotating axis.  Set the variable 
# "rot_ccw_pos" to indicate the signed direction.  Always set the work
# origin at the center of rotation.
#
#Toolplane Positioning:
# Create the Cplane and Tplane as the rotation of the machine view about 
# the selected axis of rotation.  The toolplane is used to calculate
# the position of the rotary axis.  This is the default setting.
#
#3 Axis Rotary (Polar)
# Polar positioning is offered in Mastercam 3 axis toolpaths through the 
# rotary axis options dialog.  The selected toolpath is converted to angle
# and radius position.  The axis of rotation is forced to zero.
#
#Axis substitution:
# Use the Rotary axis substitution by drawing the geometry flattened
# from the cylinder.  The rotary axis button must be active for axis
# substitution information to be output to the NCI file. The radius of
# the rotary diameter is added to all the Z positions at output.  
#
#Simultaneous 4 Axis (11 gcode):
# Full 4 axis toolpaths can be generated from various toolpaths under the 
# "multi-axis" selection (i.e. Rotary 4 axis). All 5 axis paths are
# converted to 4 axis paths where only the angle about the rotation axis
# is resolved. 
#
#Drill:
# All drill methods are supported in the post.  See Simultaneous 4 Axis.
#
#Additional Notes:
# 1) Disable 4 axis by setting the numbered question 164. to "n".
# 2) G54 calls are generated where the work offset entry of 0 = G54,
#    1 = G55, etc.
# 3) Metric is applied from the NCI met_tool variable.
# 4) Incremental mode calculates motion from home position at toolchanges.
#    The home position is used to define the last position of the tool
#    for all toolchanges.  
# 5) The variable "absinc" is now pre-defined, set mi2 (Misc. Integer) for
#    the "top level" absolute/incremental program output.  Subprograms are
#    updated through the Mastercam dialog settings for sub-programs.
# 6) Always avoid machining to the center of rotation with rotary axis!
# 7) Transform subprograms are intended for use with G54.. workshifts. 
#
# --------------------------------------------------------------------------
# Debugging and Factory Set Program Switches  
# --------------------------------------------------------------------------
m_one       : -1    #Define constant
zero        : 0     #Define constant
one         : 1     #Define constant
two         : 2     #Define constant
three       : 3     #Define constant 
four        : 4     #Define constant 
five        : 5     #Define constant
c9k         : 9999  #Define constant
 
fastmode$    : yes$   #Enable Quick Post Processing, (set to no for debug)
bug1$        : 2     #0=No display, 1=Generic list box, 2=Editor
bug2$        : 40    #Append postline labels, non-zero is column position? 
bug3$        : 0     #Append whatline number to each NC line?
bug4$        : 1     #Append NCI line number to each NC line?
whatno$      : yes$   #Do not perform whatline branches? (leave as yes)
linktolvar$  : 1     #Associate X tolerance variables to V9- variable?
linkplnvar$  : 1     #Associate X plane specific variables to V9- variable?
 
get_1004$    : 1     #Find gcode 1004 with getnextop?
rpd_typ_v7$  : 0     #Use Version 7 style contour flags/processing?
strtool_v7$  : 2     #Use Version 7+ toolname?
tlchng_aft$  : 2     #Delay call to toolchange until move line 
cant_tlchng$ : 1     #Ignore cantext entry on move with tlchng_aft 
newglobal$   : 1     #Error checking for global variables
getnextop$   : 0     #Build the next variable table
 
# --------------------------------------------------------------------------
# General Output Settings
# --------------------------------------------------------------------------
sub_level$   : 1     #Enable automatic subprogram support
breakarcs$   : 2     #Break arcs, 0 = no, 1 = quadrants, 2 = 180deg. max arcs
arcoutput$   : 1     #0 = IJK, 1 = R no sign, 2 = R signed neg. over 180
arctype$     : 2     #Arc center 1=abs, 2=St-Ctr, 3=Ctr-St, 4=unsigned inc.
do_full_arc$ : 0     #Allow full circle output? 0=no, 1=yes
helix_arc$   : 2     #Support helix arc output, 0=no, 1=all planes, 2=XY plane only
arccheck$    : 3     #Check for small arcs, convert to linear
atol$        : 0.01  #Angularity tolerance for arccheck = 2
ltol$        : 0.002 #Length tolerance for arccheck = 1
vtol$        : 0.0001#System tolerance
maxfeedpm   : 500   #Limit for feed in inch/min
ltol_m      : 0.05  #Length tolerance for arccheck = 1, metric
vtol_m      : 0.0025#System tolerance, metric
maxfeedpm_m : 10000 #Limit for feed in mm/min
force_wcs   : yes$   #Force WCS output at every toolchange?
spaces$      : 0     #Number of spaces to add between fields
omitseq$     : no$    #Omit sequence numbers?
seqmax$      : 9999  #Max. sequence number
stagetool   : 0     #0 = Do not pre-stage tools, 1 = Stage tools
use_gear    : 0     #Output gear selection code, 0=no, 1=no  
max_speed   : 10000 #Maximum spindle speed
min_speed   : 50    #Minimum spindle speed
nobrk$       : no$    #Omit breakup of x, y & z rapid moves
progname$    : 1     #Use uppercase for program name (sprogname)
 
# --------------------------------------------------------------------------
# Rotary Axis Settings
# --------------------------------------------------------------------------
vmc         : 1     #0 = Horizontal Machine, 1 = Vertical Mill 
rot_on_x    : 0     #Default Rotary Axis Orientation, See ques. 164. 
                    #0 = Off, 1 = About X, 2 = About Y, 3 = About Z 
rot_ccw_pos : 1     #Axis signed dir, 0 = CW positive, 1 = CCW positive
index       : 0     #Use index positioning, 0 = Full Rotary, 1 = Index only
ctable      : 5     #Degrees for each index step with indexing spindle
use_frinv   : 0     #Use Inverse Time Feedrates in 4 Axis, (0 = no, 1 = yes )
maxfrdeg    : 2000  #Limit for feed in deg/min
maxfrinv    : 999.99#Limit for feed inverse time
frc_cinit   : 1     #Force C axis reset at toolchange
ctol        : 225   #Tolerance in deg. before rev flag changes
ixtol       : 0.01  #Tolerance in deg. for index error
frdegstp    : 10    #Step limit for rotary feed in deg/min
 
# --------------------------------------------------------------------------
# Enable Canned Drill Cycle Switches
# --------------------------------------------------------------------------
usecandrill$ : yes$   #Use canned cycle for drill
usecanpeck$  : yes$   #Use canned cycle for Peck
usecanchip$  : yes$   #Use canned cycle for Chip Break
usecantap$   : yes$   #Use canned cycle for Tap
usecanbore1$ : yes$   #Use canned cycle for Bore1
usecanbore2$ : yes$   #Use canned cycle for Bore2
usecanmisc1$ : yes$   #Use canned cycle for Misc1
usecanmisc2$ : yes$   #Use canned cycle for Misc2
 
# --------------------------------------------------------------------------
# Common User-defined Variable Initializations (not switches!)
# --------------------------------------------------------------------------
xia         : 0     #Formated absolute value for X incremental calculations
yia         : 0     #Formated absolute value for Y incremental calculations
zia         : 0     #Formated absolute value for Z incremental calculations
cia         : 0     #Formated absolute value for C incremental calculations
 
cuttype     : 0     #Cut type flag
                    #0 = Tool Plane, 1 = Axis Subs,  2 = Polar, 3 = 4/5 axis
bld         : 0     #Block delete active
result      : 0     #Return value for functions
sav_spc     : 0     #Save spaces
sav_gcode   : 0     #Gcode saved 
sav_absinc  : 0     #Absolute/Incremental Saved Value
sav_coolant : 0     #Coolant saved 
sav_frc_wcs : 0     #Force work offset flag saved
toolchng    : 1     #On a toolchange flag 
spdir2      : 1     #Copy for safe spindle direction calculation 
 
#Drill variables
drlgsel     : -1    #Drill Select Initialize
drillref    : 0     #Select drill reference
peckacel$    : 0     #Fractional percent to reduce peck2 when usecan.. : no
drlgcode    : 0     #Save Gcode in drill   
sav_dgcode  : 0     #Drill gcode saved 
 
#Subprogram variables
mr_rt_actv  : 0     #Flag to indicate if G51/G68 is active                     
                    #0=Off, 1=Toolchange, 2=Subprogram call/start, G68
                    #3=Absolute start, both
rt_csav     : 0     #C saved value
end_sub_mny : 0     #Many tool setting captured at transform sub end
 
#Rotary/Index variables
csav        : 0     #C saved value
prvcabs     : 0     #Saved cabs from pe_inc_calc,
                    #Used for rotary feed and direction calculations
cdelta      : 0     #Calculation for angle change
rev         : 0     #Calculation for deg/min
sav_rev     : 0     #Saved revolution counter
indx_out    : c9k   #Rotation direction calculation
fmt     16  indx_mc #Rotation direction calculation
 
#Vector Constants for Rotatary Calculations
aaxisx      : 1     #A axis rotation vector constant
aaxisy      : 0     #A axis rotation vector constant
aaxisz      : 0     #A axis rotation vector constant
baxisx      : 0     #B axis rotation vector constant
baxisy      : 1     #B axis rotation vector constant
baxisz      : 0     #B axis rotation vector constant
caxisx      : 0     #C axis rotation vector constant
caxisy      : 0     #C axis rotation vector constant
caxisz      : 1     #C axis rotation vector constant
 
#Feedrate calculation variables
frdelta     : 0     #Calculation for deg/min
frinv       : 0     #Feedrate inverse time
frdeg       : 0     #Feedrate deg/min actual
prvfrdeg    : 0     #Feedrate deg/min actual
ldelta      : 0     #Calculation for deg/min, linear
cldelta     : 0     #Calculation for deg/min, linear and rotary
circum      : 0     #Calculation for deg/min
ipr_type    : 0     #Feedrate for Rotary, 0 = UPM, 1 = DPM, 2 = Inverse 
 
# --------------------------------------------------------------------------
# Format statements - n=nonmodal, l=leading, t=trailing, i=inc, d=delta
# --------------------------------------------------------------------------
#Default english/metric position format statements
fs2 1   0.7 0.6     #Decimal, absolute, 7 place, default for initialize (:)
fs2 2   0.4 0.3     #Decimal, absolute, 4/3 place
fs2 3   0.4 0.3d    #Decimal, delta, 4/3 place
#Common format statements
fs2 4   1 0 1 0     #Integer, not leading
fs2 5   2 0 2 0l    #Integer, force two leading
fs2 6   3 0 3 0l    #Integer, force three leading
fs2 7   4 0 4 0l    #Integer, force four leading
fs2 9   0.1 0.1     #Decimal, absolute, 1 place
fs2 10  0.2 0.2     #Decimal, absolute, 2 place
fs2 11  0.3 0.3     #Decimal, absolute, 3 place
fs2 12  0.4 0.4     #Decimal, absolute, 4 place
fs2 13  0.5 0.5     #Decimal, absolute, 5 place
fs2 14  0.3 0.3d    #Decimal, delta, 3 place
fs2 15  0.2 0.1     #Decimal, absolute, 2/1 place
fs2 16  1 0 1 0n    #Integer, forced output
 
# --------------------------------------------------------------------------
#String and string selector definitions for NC output
# --------------------------------------------------------------------------
#Numbered question 164. string to detect Rotary axis y/n
sq164 : ""
 
#Address string definitions
strm        : "M"
strn        : "N"
stro        : "O"
strp        : "P"
srad        : "R"
srminus     : "R-"
sblank : ""
 
#Cantext string definitions (spaces must be padded here)
sm00        : "M00"
sm01        : "M01"
strtextno : ""
strcantext : ""
 
#Transform mirror and rotate codes
strns_mir_on     : "G51.1" #Programmable mirror image code
strns_mir_off    : "G50.1" #Programmable mirror image cancel code
strns_rot_on     : "G68"   #Coordinate System Rotation
strns_rot_off    : "G69"   #Coordinate System Rotation Cancel
 
# --------------------------------------------------------------------------
# Error messages
# --------------------------------------------------------------------------
saxiswarn   : "WARNING-POST ROTARY AXIS ASSIGNMENT ("rot_on_x") OVERWRITTEN BY OPERATION"
saxisoff    : "ERROR-POST ROTARY AXIS ASSIGNMENT ("rot_on_x") IS DISABLED"
saxiserror  : "ERROR-INVALID ROTARY AXIS ASSIGNMENT ("rot_on_x") FOR CURRENT OPERATION"
sindxerror  : "WARNING-INDEX ANGLE DOES NOT MATCH POST SETTING ("ctable")"
stlorgerr   : "ERROR-TOOL ORIGIN DOES NOT MATCH CENTER OF ROTATION IN POLAR MILLING"
shomeserror : "ERROR-G92 WORK OFFSET ("mi1") DOES NOT SUPPORT TRANSFORM SUBPROGRAM"
sprgnerror  : "ERROR-SUBPROGRAM NUMBER MATCHES THE MAIN PROGRAM NUMBER"
 
# --------------------------------------------------------------------------
# General G and M Code String select tables
# --------------------------------------------------------------------------
# Motion G code selection
sg00    : "G0"       #Rapid
sg01    : "G1"       #Linear feed
sg02    : "G2"       #Circular interpolation CW 
sg03    : "G3"       #Circular interpolation CCW 
sg04    : "G4"       #Dwell
sgcode : ""          #Target for string
 
fstrsel sg00 gcode$ sgcode 5 -1
# --------------------------------------------------------------------------
# Select work plane G code
sg17    : "G17"      #XY plane code 
sg19    : "G19"      #YZ plane code 
sg18    : "G18"      #XZ plane code 
sgplane : ""         #Target string
 
fstrsel sg17 plane$ sgplane 3 -1
# --------------------------------------------------------------------------
#Select english/metric code 
sg20    : "G20"      #Inch code
sg21    : "G21"      #Metric code
smetric : ""         #Target string  
 
fstrsel sg20 met_tool$ smetric 2 -1
# --------------------------------------------------------------------------
#Select reference return code 
sg28    : "G28"      #First reference point return
sg30    : "G30"      #Second reference point return
sg28ref : ""         #Target string
 
fstrsel sg28 mi3$ sg28ref 2 -1
# --------------------------------------------------------------------------
# Cutter compensation G code selection
scc0    : "G40"      #Cancel cutter compensation
scc1    : "G41"      #Cutter compensation left
scc2    : "G42"      #Cutter compensation right
sccomp : ""          #Target for string
 
fstrsel scc0 cc_pos$ sccomp 3 -1
# --------------------------------------------------------------------------
# Canned drill cycle string select
sg81    : "G81"      #drill      - no dwell 
sg81d   : "G82"      #drill      - with dwell 
sg83    : "G83"      #peck drill - no dwell 
sg83d   : "G83"      #peck drill - with dwell 
sg73    : "G73"      #chip break - no dwell 
sg73d   : "G73"      #chip break - with dwell 
sg84    : "G84"      #tap        - right hand
sg84d   : "G74"      #tap        - left hand
sg85    : "G85"      #bore #1    - no dwell 
sg85d   : "G89"      #bore #1    - with dwell 
sg86    : "G86"      #bore #2    - no dwell 
sg86d   : "G86"      #bore #2    - with dwell 
sgm1    : "G76"      #misc #1    - no dwell
sgm1d   : "G76"      #misc #1    - with dwell
sgm2    : "G81"      #misc #2    - no dwell
sgm2d   : "G82"      #misc #2    - with dwell
sgdrill : ""         #Target for string
 
fstrsel sg81 drlgsel sgdrill 16 -1
# --------------------------------------------------------------------------
# Select incremental or absolute G code 
sg90    : "G90"      #Absolute code
sg91    : "G91"      #Incremental code
sgabsinc : ""        #Target string  
 
fstrsel sg90 absinc$ sgabsinc 2 -1
# --------------------------------------------------------------------------
# Feed mode G code selection
sg94    : "G94"      #UPM
sg94d   : "G94"      #DPM, See pfcalc_deg if you use another gcode
sg93    : "G93"      #Inverse
sgfeed : ""          #Target for string
 
fstrsel sg94 ipr_type sgfeed 3 -1
# -------------------------------------------------------------------------- 
#Canned drill cycle reference height
sg98    : "G98"      #Reference at initht
sg99    : "G99"      #Reference at refht     
sgdrlref : ""        #Target for string
 
fstrsel sg98 drillref sgdrlref 2 -1   # Drill cycle G string select
# --------------------------------------------------------------------------
# Generate string for spindle 
sm04    : "M4"       #Spindle reverse 
sm05    : "M5"       #Spindle off     
sm03    : "M3"       #Spindle forward 
spindle : ""         #Target for string
 
fstrsel sm04 spdir2 spindle 3 -1
# --------------------------------------------------------------------------
# Coolant M code selection
sm09    : "M9"       #Coolant Off
sm08    : "M8"       #Coolant Flood 
sm08_1  : "M8"       #Coolant Mist
sm08_2  : "M8"       #Coolant Tool
scoolant : ""        #Target for string
 
fstrsel sm09 coolant$ scoolant 4 -1
# --------------------------------------------------------------------------
# Table rotation direction 
# Table rotation direction, index 
sindx_cw   : "M22"    #Rotate CW code 
sindx_ccw  : "M21"    #Rotate CCW code
sindx_mc : ""        #Target for string
 
fstrsel sindx_cw indx_mc sindx_mc 2 -1
# --------------------------------------------------------------------------
# Define the gear selection code
flktbl  1       3       #Lookup table definition - table no. - no. entries
        40      0       #Low gear range
        41      400     #Med gear range
        42      2250    #Hi gear range
 
# --------------------------------------------------------------------------
# Toolchange / NC output Variable Formats
# --------------------------------------------------------------------------
fmt  T  4   t$           #Tool Number
fmt  T  4   first_tool$  #First Tool Used 
fmt  T  4   next_tool$   #Next Tool Used  
fmt  D  4   tloffno$     #Diameter Offset Number
fmt  H  4   tlngno$      #Length Offset Number
fmt  G  4   g_wcs       #WCS G address
fmt  P  4   p_wcs       #WCS P address
fmt  S  4   speed       #Spindle Speed
fmt  M  4   gear        #Gear range
# --------------------------------------------------------------------------
fmt  N  4   n$           #Sequence number
fmt  X  2   xabs        #X position output
fmt  Y  2   yabs        #Y position output
fmt  Z  2   zabs        #Z position output
fmt  X  3   xinc        #X position output
fmt  Y  3   yinc        #Y position output
fmt  Z  3   zinc        #Z position output
fmt  A  11  cabs        #C axis position
fmt  A  14  cinc        #C axis position
fmt  A  4   indx_out    #Index position
fmt  R  14  rt_cinc     #C axis position, G68
fmt  I  3   i$           #Arc center description in X
fmt  J  3   j$           #Arc center description in Y
fmt  K  3   k$           #Arc center description in Z
fmt  R  2   arcrad$      #Arc Radius
fmt  F  15  feed        #Feedrate
fmt  P  11  dwell$       #Dwell
fmt  M  5   cantext$     #Canned text
# --------------------------------------------------------------------------
#Move comment (pound) to output colon with program numbers
fmt  O  7   progno$      #Program number
#fmt ":" 7   progno$      #Program number
fmt  O  7   main_prg_no$ #Program number
#fmt ":" 7   main_prg_no #Program number
fmt  O  7   sub_prg_no$  #Program number
#fmt ":" 7   sub_prg_no$  #Program number
fmt  X  2   sub_trnsx$   #Rotation point
fmt  Y  2   sub_trnsy$   #Rotation point
fmt  Z  2   sub_trnsz$   #Rotation point
# --------------------------------------------------------------------------
fmt  Q  2   peck1$       #First peck increment (positive)
fmt  Q  2   shftdrl$     #Fine bore tool shift
fmt  R  2   refht_a     #Reference height
fmt  R  2   refht_i     #Reference height
# --------------------------------------------------------------------------
fmt "TOOL - "       4   tnote       # Note format
fmt " DIA. OFF. - " 4   toffnote    # Note format
fmt " LEN. - "      4   tlngnote    # Note format
fmt " DIA. - "      1   tldia$       # Note format
 
# --------------------------------------------------------------------------
# Tool Comment / Manual Entry Section
# --------------------------------------------------------------------------
ptoolcomment    #Comment for tool
      tnote = t$
      toffnote = tloffno$
      tlngnote = tlngno$
      "(", pstrtool, *tnote, *toffnote, *tlngnote, *tldia$, ")", e$
 
pstrtool        #Comment for tool
      if strtool$ <> sblank,
        [
        strtool$ = ucase(strtool$)
        *strtool$, " "
        ]
 
pcomment$        #Comment from manual entry (must call pcomment2 if booleans)
      pcomment2
 
pcomment2       #Comment from manual entry
      scomm$ = ucase (scomm$)
      if gcode$ = 1007, "(", scomm$, ")"
      else, "(", scomm$, ")", e$
 
# --------------------------------------------------------------------------
# Start of File and Toolchange Setup
# --------------------------------------------------------------------------
psof0$           #Start of file for tool zero                        
      psof$
 
psof$            #Start of file for non-zero tool number             
      pcuttype
      toolchng = one
      if ntools$ = one,
        [
        #skip single tool outputs, stagetool must be on
        stagetool = m_one
        !next_tool$
        ]
      "%", e$
      *progno$, e$
      "(PROGRAM NAME - ", sprogname$, ")", e$
      "(DATE=DD-MM-YY - ", date$, " TIME=HH:MM - ", time$, ")", e$
      pbld, n$, *smetric, e$
      pbld, n$, *sgcode, *sgplane, "G40", "G49", "G80", *sgabsinc, e$
      sav_absinc = absinc$
      if mi1$ <= one, #Work coordinate system
        [
        absinc$ = one
        pfbld, n$, sgabsinc, *sg28ref, "Z0.", e$
        pfbld, n$, *sg28ref, "X0.", "Y0.", e$
        pfbld, n$, "G92", *xh$, *yh$, *zh$, e$
        absinc$ = sav_absinc
        ]
      pcom_moveb
      c_mmlt$ #Multiple tool subprogram call
      ptoolcomment
      comment$
      pcan
      if stagetool >= zero, pbld, n$, *t$, "M6", e$
      "G5.1 Q1.", e$
      pindex
      if mi1$ > one, absinc$ = zero
      pcan1, pbld, n$, *sgcode, *sgabsinc, pwcs, pfxout, pfyout,
        pfcout, *speed, *spindle, pgear, strcantext, e$
      pbld, n$, "G43", *tlngno$, pfzout, scoolant, next_tool$, e$
      absinc$ = sav_absinc
      pcom_movea
      toolchng = zero
      c_msng$ #Single tool subprogram call
 
ptlchg0$         #Call from NCI null tool change (tool number repeats)                        
      pcuttype
      pcom_moveb
      c_mmlt$ #Multiple tool subprogram call
      comment$
      pcan
      pbld, n$, sgplane, e$
      pspindchng
      pbld, n$, scoolant, e$
      if mi1$ > one & workofs$ <> prv_workofs$,
        [
        sav_absinc = absinc$
        absinc$ = zero
        pbld, n$, sgabsinc, pwcs, pfxout, pfyout, pfzout, pfcout, e$
        pe_inc_calc
        ps_inc_calc
        absinc$ = sav_absinc
        ]
      if cuttype = zero, ppos_cax_lin
      if gcode$ = one, plinout
      else, prapidout
      pcom_movea
      c_msng$ #Single tool subprogram call
 
ptlchg$          #Tool change                                        
      pcuttype
      toolchng = one
      if mi1$ = one, #Work coordinate system
        [
        pfbld, n$, *sg28ref, "X0.", "Y0.", e$
        pfbld, n$, "G92", *xh$, *yh$, *zh$, e$
        ]
      pbld, n$, "M01", e$
      pcom_moveb
      c_mmlt$ #Multiple tool subprogram call
      ptoolcomment
      comment$
      pcan
      pbld, n$, *t$, "M6", e$
      "G5.1 Q1.", e$
      pindex
      sav_absinc = absinc$
      if mi1$ > one, absinc$ = zero
      pcan1, pbld, n$, *sgcode, *sgabsinc, pwcs, pfxout, pfyout,
        pfcout, *speed, *spindle, pgear, strcantext, e$
      pbld, n$, "G43", *tlngno$, pfzout, scoolant, next_tool$, e$
      absinc$ = sav_absinc
      pcom_movea
      toolchng = zero
      c_msng$ #Single tool subprogram call
 
pretract        #End of tool path, toolchange              
      sav_absinc = absinc$
      absinc$ = one
      sav_coolant = coolant$
      coolant$ = zero
      #cc_pos is reset in the toolchange here
      cc_pos$ = zero
      gcode$ = zero
      pcan
      pbld, n$, sccomp, *sm05, psub_end_mny, e$
      "G5.1 Q1.", e$
      pcan1, pbld, n$, sgabsinc, sgcode, *sg28ref, "Z0.", scoolant, strcantext, e$
      pbld, n$, *sg28ref, "X0.", "Y0.", protretinc, e$
      pcan2
      absinc$ = sav_absinc
      coolant$ = sav_coolant
 
protretinc      #Reset the C axis revolution counter
      if frc_cinit & rot_on_x,
        [
        rev = zero
        sav_rev = zero
        cabs = zero
        csav = zero
        indx_out = zero
        if index, e$, pindxcalc, pindex
        else, *cabs
        prvcabs = zero
        !csav, !cabs
        ]
 
peof0$           #End of file for tool zero               
      peof$
 
peof$            #End of file for non-zero tool           
      pretract
      comment$
      #Remove pound character to output first tool with staged tools
      #if stagetool = one, pbld, n, *first_tool, e
      n$, "M30", e$
      mergesub$
      clearsub$
      mergeaux$
      clearaux$
      "%", e$
 
pwcs            #G54+ coordinate setting at toolchange
      if mi1$ > one,
        [
        sav_frc_wcs = force_wcs
        if sub_level$ > 0, force_wcs = zero
        if workofs$ <> prv_workofs$ | (force_wcs & toolchng),
          [
          if workofs$ < 6,
            [
            g_wcs = workofs$ + 54
            *g_wcs
            ]
          else,
            [
            p_wcs = workofs$ - five
            "G54.1", *p_wcs
            ]
          ]
        force_wcs = sav_frc_wcs
        !workofs$
        ]
 
pgear           #Find spindle gear from lookup table
      if use_gear = one,
        [
        gear = frange (one, speed)
        *gear
        ]
 
#Toolchange setup
pspindchng      #Spindle speed change 
      if prv_spdir2 <> spdir2 & prv_speed <> zero, pbld, n$, *sm05, e$
      if prv_speed <> speed | prv_spdir2 <> spdir2,
        [
        if speed, pbld, n$, *speed, *spindle, pgear, e$
        ]
      !speed, !spdir2
 
pspindle        #Spindle speed calculations for RPM
      speed = abs(ss$)
      if maxss$ = zero | maxss$ > max_speed, maxss$ = max_speed
      #zero indicates spindle off (not a mistake)
      if speed,
        [
        if speed > max_speed, speed = maxss$
        if speed < min_speed, speed = min_speed
        ]
      spdir2 = fsg3(spdir$)
 
pq$              #Setup post based on switch settings
      if stagetool = one, bldnxtool$ = one
      #Rotaxtyp = 1 sets initial matrix to top
      #Rotaxtyp = -2 sets initial matrix to front
      if vmc, rotaxtyp$ = one
      else, rotaxtyp$ = -2
      #Shut off rotary axis if, Q164. Enable Rotary Axis button? n
      if ucase(sq164) = strn, rot_on_x = zero
      if arctype$ = one | arctype$ = four,
        [
        result = newfs(two, i$)
        result = newfs(two, j$)
        result = newfs(two, k$)
        ]
      else,
        [
        result = newfs(three, i$)
        result = newfs(three, j$)
        result = newfs(three, k$)
        ]
 
pheader$         #Call before start of file                         
      if met_tool$ = one, #Metric constants and variable adjustments
        [
        ltol$ = ltol_m
        vtol$ = vtol_m
        maxfeedpm = maxfeedpm_m
        ]
 
ptoolend$        #End of tool path, before reading new tool data               
      !speed, !spdir2
 
ptlchg1002$      #Call at actual toolchange, end last path here                        
      if cuttype <> one, sav_rev = rev #Axis Sub does not update to rev
      pspindle
      whatline$ = four #Required for vector toolpaths
      if gcode$ = 1000,
        [
        #Null toolchange
        ]
      else,
        [
        #Toolchange and Start of file
        if gcode$ = 1002,
          [
          #Actual toolchange
          pretract
          ]
        if stagetool = one, prv_next_tool$ = m_one
        prv_xia = vequ(xh$)
        prv_feed = c9k
        ]
 
# --------------------------------------------------------------------------
# Motion NC output
# --------------------------------------------------------------------------
#The variables for absolute output are xabs, yabs, zabs.
#The variables for incremental output are xinc, yinc, zinc.
# --------------------------------------------------------------------------
prapidout       #Output to NC of linear movement - rapid               
      pcan1, pbld, n$, sgplane, `sgcode, sgabsinc, pccdia,
        pxout, pyout, pzout, pcout, strcantext, scoolant, e$
 
plinout         #Output to NC of linear movement - feed                    
      pcan1, pbld, n$, sgfeed, sgplane, `sgcode, sgabsinc, pccdia,
        pxout, pyout, pzout, pcout, feed, strcantext, scoolant, e$
 
pcirout         #Output to NC of circular interpolation                                
      pcan1, pbld, n$, `sgfeed, sgplane, sgcode, sgabsinc, pccdia,
        pxout, pyout, pzout, pcout, parc, feed, strcantext, scoolant, e$
 
pcom_moveb      #Common motion preparation routines, before              
      pxyzcout
      ps_inc_calc
 
pncoutput       #Movement output
      pcom_moveb
      comment$
      pcan
      if cuttype = zero, ppos_cax_lin #Toolplane rotary positioning
      if gcode$ = zero, prapidout
      if gcode$ = one, plinout
      if gcode$ > one & gcode$ < four, pcirout
      if mr_rt_actv, #Restore absolute/incremental for G51/G68
        [
        absinc$ = sav_absinc
        mr_rt_actv = zero
        ]
      pcom_movea
 
pcom_movea      #Common motion preparation routines, after              
      pcan2
      pe_inc_calc
 
pdwl_spd$        #Call from NCI gcode 4
      pspindle
      comment$
      pspindchng
      pcan
      if fmtrnd(dwell$), pcan1, pbld, n$, *sgcode, *dwell$, strcantext, e$
      else, pcan1, pbld, n$, strcantext, e$
      pcan2
 
prapid$          #Output to NC of linear movement - rapid               
      pncoutput
 
pzrapid$         #Output to NC of linear movement - rapid Z only    
      pncoutput
 
plin$            #Output to NC of linear movement - feed                    
      pncoutput
 
pz$              #Output to NC of linear movement - feed Z only          
      pncoutput
 
pmx$             #Output to NC of vector NCI          
      pncoutput
 
pcir$            #Output to NC of circular interpolation                                
      pncoutput
 
#Pre-process rotary motion control flags
pmx0$            #5 axis gcode setup
      if drillcur$ = zero,
        [
        if fr$ = -2, gcode$ = zero
        else, gcode$ = one
        ]
 
plin0$           #Linear movement, mill motion test                                
      pmotion_su
 
pcir0$           #Circular interpolation, mill arc motion test                                
      pmotion_su
 
# --------------------------------------------------------------------------
# Motion output components
# --------------------------------------------------------------------------
pbld            #Canned text - block delete
      if bld, "/"
 
pfbld           #Force - block delete
      "/"
 
pccdia          #Cutter Compensation
      #Force Dxx#   
      if prv_cc_pos$ <> cc_pos$ & cc_pos$, prv_tloffno$ = c9k
      sccomp
      if cc_pos$, tloffno$
 
pfxout          #Force X axis output
      if absinc$ = zero, *xabs, !xinc
      else, *xinc, !xabs
 
pxout           #X output
      if absinc$ = zero, xabs, !xinc
      else, xinc, !xabs
 
pfyout          #Force Y axis output
      if absinc$ = zero, *yabs, !yinc
      else, *yinc, !yabs
 
pyout           #Y output
      if absinc$ = zero, yabs, !yinc
      else, yinc, !yabs
 
pfzout          #Force Z axis output
      if absinc$ = zero, *zabs, !zinc
      else, *zinc, !zabs
 
pzout           #Z output
      if absinc$ = zero, zabs, !zinc
      else, zinc, !zabs
 
pfcout          #Force C axis output 
      if index = zero & rot_on_x,
        [
        if absinc$ = zero, *cabs, !cinc
        else, *cinc, !cabs
        ]
 
pcout           #C axis output
      if index = zero & rot_on_x,
        [
        if absinc$ = zero, cabs, !cinc
        else, cinc, !cabs
        ]
 
pindex          #Index output
      if index & rot_on_x,
        [
        pbld, n$, `sindx_mc, indx_out, e$
        !cabs, !cinc
        ]
 
parc            #Select the arc output
      if arcoutput$ = zero | full_arc_flg$ | arc_pitch$,
        [
        #Arc output for IJK
        # If you do NOT want to force out the I,J,K values,
        # remove the "*" asterisks on the *i, *j, *k "s below...
        if plane$ = zero, *i$, *j$,  k$  #XY plane code - G17
        if plane$ = one ,  i$, *j$, *k$  #YZ plane code - G19
        if plane$ = two , *i$,  j$, *k$  #XZ plane code - G18
        ]
      else,
        [
        #Arc output for R
        if abs(sweep$)<=180 | arcoutput$=one, result = nwadrs(srad, arcrad$)
        else, result = nwadrs(srminus, arcrad$)
        *arcrad$
        ]
 
ppos_cax_lin    #Position the rotary axis before move - rapid
      if index, pindex
      else,
        [
        if fmtrnd(prv_cabs) <> fmtrnd(cabs) & rot_on_x,
          [
          sav_gcode = gcode$
          gcode$ = zero
          pbld, n$, sgcode, pcout, e$
          !cia
          ps_cinc_calc
          gcode$ = sav_gcode
          ]
        ]
 
# --------------------------------------------------------------------------
# Drilling
# --------------------------------------------------------------------------
pdrill0$         #Pre-process before drill call
      sav_dgcode = gcode$ #Capture gcode for 5 axis drill
 
pdrlcommonb     #Canned Drill Cycle common call, before
      if sav_dgcode = 81,
        [
        result = newfs (two, zinc)
        if drillcyc$ = three, drlgsel = fsg1(-ss$) + drillcyc$ * two
        else, drlgsel = fsg2(dwell$) + drillcyc$ * two
        if
ผู้แสดงความคิดเห็น kon22 (mskorh-at-hotmail-dot-com)วันที่ตอบ 2012-11-12 12:56:15


ความคิดเห็นที่ 4 (3348107)
avatar
V9

 จากคำถามของคุณ VN สยาม Q ตัวล่างเป็น Q0. ครับ

ผู้แสดงความคิดเห็น V9 (pphithagphong-at-micro-mechanics-dot-com) ตอบโดยสมาชิกวันที่ตอบ 2012-11-12 12:57:38


ความคิดเห็นที่ 5 (3348108)
avatar
V9

    pcom_moveb

      c_mmlt$ #Multiple tool subprogram call
      ptoolcomment
      comment$
      pcan
      if stagetool >= zero, pbld, n$, *t$, "M6", e$
      "G5.1 Q1.", e$
      pindex
      if mi1$ > one, absinc$ = zero
      pcan1, pbld, n$, *sgcode, *sgabsinc, pwcs, pfxout, pfyout,
        pfcout, *speed, *spindle, pgear, strcantext, e$
      pbld, n$, "G43", *tlngno$, pfzout, scoolant, next_tool$, e$
      absinc$ = sav_absinc
      pcom_movea
      toolchng = zero
      c_msng$ #Single tool subprogram call
 
ptlchg0$         #Call from NCI null tool change (tool number repeats)                        
      pcuttype
      pcom_moveb
      c_mmlt$ #Multiple tool subprogram call
      comment$
      pcan
      pbld, n$, sgplane, e$
      pspindchng
      pbld, n$, scoolant, e$
      if mi1$ > one & workofs$ <> prv_workofs$,
        [
        sav_absinc = absinc$
        absinc$ = zero
        pbld, n$, sgabsinc, pwcs, pfxout, pfyout, pfzout, pfcout, e$
        pe_inc_calc
        ps_inc_calc
        absinc$ = sav_absinc
        ]
      if cuttype = zero, ppos_cax_lin
      if gcode$ = one, plinout
      else, prapidout
      pcom_movea
      c_msng$ #Single tool subprogram call
 
ptlchg$          #Tool change                                        
      pcuttype
      toolchng = one
      if mi1$ = one, #Work coordinate system
        [
        pfbld, n$, *sg28ref, "X0.", "Y0.", e$
        pfbld, n$, "G92", *xh$, *yh$, *zh$, e$
        ]
      pbld, n$, "M01", e$
      pcom_moveb
      c_mmlt$ #Multiple tool subprogram call
      ptoolcomment
      comment$
      pcan
      pbld, n$, *t$, "M6", e$
      "G5.1 Q0.", e$
      pindex
ผู้แสดงความคิดเห็น V9 (pphithagphong-at-micro-mechanics-dot-com) ตอบโดยสมาชิกวันที่ตอบ 2012-11-12 13:00:22


ความคิดเห็นที่ 6 (3348881)
avatar
vn.สยาม

ขอบคุณพี่    kon22    เเละ พี่     V9   ครับที่ช่วยเเนะนำ

ผู้แสดงความคิดเห็น vn.สยาม (tadsanee_jiab-at-hotmail-dot-com) ตอบโดยสมาชิกวันที่ตอบ 2012-11-20 20:45:40


ความคิดเห็นที่ 7 (3488660)
avatar
Teresa
Hello my name is Teresa and I just wanted to drop you a quick note here instead of calling you. I discovered your post โปรเเกรมออกมาเเล้วให้มี... page and noticed you could have a lot more traffic. I have found that the key to running a successful website is making sure the visitors you are getting are interested in your subject matter. There is a company that you can get keyword targeted visitors from and they let you try the service for free for 7 days. I managed to get over 300 targeted visitors to day to my website. http://pandalove.info/35p0i
ผู้แสดงความคิดเห็น Teresa (gbcicmt-at-charkler-dot-com)วันที่ตอบ 2016-08-28 06:29:56


ความคิดเห็นที่ 8 (3492814)
avatar
sweden hockey jersey
"I sacrificed the actual puck right after they damaged it using their zoom, micron Mrazek talked about. "I belonged nowadays and even skate for it and even play the actual puck released. very well sweden hockey jersey http://wcohockey.blogspot.com/
ผู้แสดงความคิดเห็น sweden hockey jersey (hzifzmk-at-gmail-dot-com)วันที่ตอบ 2016-10-28 08:01:46


ความคิดเห็นที่ 9 (3492853)
avatar
Richard Panik Jersey
And to clinging in reference to his friends, the Kings, and also a encouraging South These types of community. Richard Panik Jersey http://chiblackhawksnews.jimdo.com/
ผู้แสดงความคิดเห็น Richard Panik Jersey (birccrwuz-at-gmail-dot-com)วันที่ตอบ 2016-10-29 10:33:46



[1]


แสดงความคิดเห็น
ความคิดเห็น *
ผู้แสดงความคิดเห็น  *
อีเมล 
ไม่ต้องการให้แสดงอีเมล



Copyright © 2010 All Rights Reserved.