Mastercam系統配置的是適應單一型別控制系統的通用後置處理,該後置處理提供了一種功能資料庫模型,使用者根據數控機床和數控系統的具體情況,可以對其資料庫進行修改和編譯,定製出適應某一數控機床的專用後置處理程式。
Mastercam系統後置處理檔案的副檔名為PST,稱為PST檔案,它定義了切削加工引數、NC程式格式、輔助工藝指令,設定了介面功能引數等,其結構由八個部分組成:
1. 註解
程式每一列前有“#”符號表示該列為不影響程式執行的文字註解。如:
# mi2-Absolute, or Incremental positioning
0=absolute
1=incremental
表示mi2定義程式設計時數值給定方式,若mi=0為絕對值程式設計,mi=1為增量值程式設計。
在這一部分裡,定義了數控系統程式設計的所有準備功能G程式碼格式和輔助功能M程式碼格式。
2. 程式糾錯
程式中可以插入文字提示來幫助糾錯,並顯示在螢幕上。如:
# Error messages (錯誤資訊)
psuberror # Arc output not allowed
"ERROR-WRONG AXIS USED IN AXIS SUBSTITUTION", e
如果展開圖形捲成旋轉軸時,軸替換出錯,則在程式中會出現上面引號中的錯誤提示。
3. 定義變數的資料型別、使用格式和常量賦值
如規定G程式碼和M程式碼是不帶小數點的兩位整數,多軸加工中心的旋轉軸的地址程式碼是A、B和C,圓弧長度允許誤差為0.002,系統允許誤差為0.00005,進給速度最大值為10m/min等。
4. 定義問題
可以根據機床加工需要,插入一個問題給後置處理程式執行。
如定義NC程式的目錄,定義啟動和退出後置處理程式時的C-Hook程式名。
5. 字串列表
字串起始字母為s,可以依照數值選取字串,字串可以由兩個或更多的字元來組成。
字串sg17,表示指定XY加工平面,NC程式中出現的是G17,scc1表示刀具半徑左補償,NC程式中出現的是G41,字串sccomp代表刀具半徑補償建立或取消。
6. 自定義單節
可以讓使用者將一個或多個NC碼作有組織的排列。
自定義單可以是公式、變數、特殊字串等:
pwcs # G54+ coordinate setting at toolchange
if mil >1, pwcs_g54
表示用pwcs單節指代#G54+在換刀時座標設定值,mil定義為工件座標系(G54~G59)
7. 預先定義的單節
使用者可按照數控程式規定的格式將一個或多個NC程式碼作有組織的排列,編排成一條程式段。
8. 系統問答
後置處理軟體提出了五組問題,供使用者回答,可按照註解文字、賦值變數、字串等內容,根據使用的機床、數控系統進行回答。
設計後置處理檔案,一般是按照NC程式的結構模組來進行。根據NC程式的功能,後置處理檔案分成六個模組如下:
1. 檔案頭
檔案頭部分設定程式名稱和編號,此外,SINUMERIK 810D系統還必須指定NC程式存放路徑,並按照以下格式輸出:
“%_N_(程式名及編號)_(路徑)”。
NC程式可存放在主程式、子程式和工作程式目錄下,副檔名分別為:MPF、SPF、WPD,一般放在工作程式目錄下。因此經修改的Pst檔案格式為:
Pheader # Start of file
" %_N_", progname, "_WPD" (程式名、存放目錄)
2. 程式起始
在程式開始,要完成安全設定、刀具交換、工件座標系的設定、刀具長度補償、主軸轉速控制、冷卻液控制等,並可顯示程式設計者、程式設計日期、時間等註解。
修改後的有刀具號Pst檔案開頭格式如下:
# Start of file for non-zero tool number
......
pspindle (主軸轉速計算)
pcom_movbtl (移動裝置)
ptoolcomment (刀具引數註解)
pbld, n, *sgcode, *sgplane, "G40", "G80", *sgabsinc
(快進、XY加工平面、取消刀補、取消固定迴圈、絕對方式程式設計)
if mil <=one, pg92_rtrnz, pg92_rtrn, pg92_g92 (返回參考點)
pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, pcan1
(快進至某位置、座標系編置、主軸轉速等)
pbld, n, pfzout, *tlngno, scoolant, [ if stagetool=one, *next_tool]
(安全高度、刀長補償、開冷卻液)
pcom_movea (加工過程)
3. 刀具交換
刀具交換執行前,須完成返回參考點、主軸停止動作,然後換刀,接著完成刀具長度補償、安全設定、主軸轉速控制。
Pst檔案中用自定義單節ptlchg指代換刀過程,編輯修改後的程式如下:
Ptlchg # Tool change
ptoolcomment (新刀引數註解)
comment (插入註解)
if stagetool <> two, pbld, n, *t, e (判斷、選刀)
n, "M6" (換刀)
pindex (輸出地址)
(快進至某位置、座標系偏置、主軸轉速等)
pbld, n, pfzout, *tlngno, "M7", [if stagetool=one, *next_tool]
(安全高度、刀長補償號、開冷卻液)
4. 加工過程
這一過程是快速移動、直線插補、圓弧插補、刀具半徑補償等基本加工動作。
對於幾乎所有系統,這些加工動作的程式指令基本相同。只是注意SINUMERIK 810D系統的刀具長度補償值由字母D後加兩位數字呼叫,不需要G43/G44指令;而半徑補償值則由G41/G42呼叫,不需要再接地址程式碼。用G40取消刀具長度和刀具半徑補償。
5. 切削迴圈
Mastercam軟體提供了6種內定的孔加工固定迴圈方式:一般鑽削(Drill/Cbore)、深孔啄鑽(Peck Drill)、斷屑鑽(Chip Break)、右攻絲(Tap)、精鏜孔(Bore#1)、粗鏜孔(Bore #2),透過雜項選項(Misc #1/Misc #2)可設定左攻絲、背鏜孔、盲孔鏜孔、盲孔鉸孔等迴圈,並採用G73~G89程式碼來表示。
如對於深孔鑽削固定迴圈,Mastercam採用的格式為:G83 X_Y_Z_R_Q_F;而SINUMERIK 810D系統用CYCLE83指代深孔鑽削迴圈,其NC程式要求給出迴圈加工所有引數,輸出格式為:
CYCLE83(RTP,RFP,SDIS,DP,DPR,FDEP,FDPR,DAM,DTB,DTS,FRF,VARI)
在pst檔案中需按SINUMERIK 810D系統格式進行定義、修改和編寫。
6. 程式結尾
程式結尾一般情況下是取消刀補、關冷卻液、主軸停止、執行回參考點,程式停止等動作。下面是修改後的pst程式結尾:
Ptoolend_t #End of tool path, toolchange
pbld, n, sccomp, "M5", *scoolant, e (取消刀補、主軸停止、關冷卻液)
pbld, n, *sg74, "Z1=0. X1=0. Y1=0.", e (返回參考點)
if mi2=one, pbld, n, *sg74, "X1=0.", "Y1=0.", protretinc, e
else, protretabs (程式結束)
例子中文說明:[轉貼]
# POST 名稱 : wgkG54
# 型別 : MILL
# 機床名稱 : GENERIC FANUC
# 控制器名稱 : GENERIC FANUC
# 描述 : GENERIC FANUC 3 AXIS MILL POST
# Associated Post : NONE
# 車/銑複合 : NO
# 4-axis/Axis subs. : NO
# 五軸 : NO
# 子程式支援 : NO
# 自動換刀 : NO
# 工作座標系 : G54
# Executable : MP 8.00
#
# 這個POST支援FANUC控制器普通三軸銑床的的G 程式碼輸出,
# 不支援自動換刀,有最大圓弧報警
# 是針對Mastercam Mill V8的特徵而設計的
# --------------------------------------------------------------------------
# 修改日誌:
# Programmers Note:
# CNC 05/01/00 - Initial post setup, jce
# 2002-10-11 - 去掉自動換刀,xxx
# 2002-10-12 - 增加中文註釋,xxx
# 2002-10-21 - 增加最大圓弧警告,xxx
# 2002-11-05 - 修改座標系為G54,xxx
# 特徵:
# 下列 Misc.(雜項) 必須使用整數:
# mi2 - 絕對或增量座標 at top level
# 0 = 絕對
# 1 = 增量
# mi3 - 選擇G28或G30來執行參考點回歸.
# 0 = G28, 1 = G30
# Canned text:
# 在輪廓點裡插入"cantext".以允許/禁止 下列Mastercam裡許可的功能,
# Entering cantext on a contour point from within Mastercam allows the
# following functions to enable/disable.
# Cantext 值:
# 1 = Stop = 輸出 "M00" 停止碼
# 2 = Ostop = 輸出 "M01" 選擇停止碼
# 鑽孔:
# 在這個 POST 裡支援所有的鑽孔方法.
# 附加註意事項:
# 1) G54 calls are generated where the work offset entry of 0 = G54,
# 1 = G55, etc.
# 2) 由NCI變數"met_tool"決定是否使用米制
# 3) 以增量方式從換刀起始位置計算運動量.
# 起始位置通常定義為所有換刀時刀具所處的最後位置
# 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.
# 4) 變數 "absinc" 現已被預先定義, 設定 mi2 (雜項整數)以定義
# 絕對/增量程式輸出.
# Debugging and Factory Set Program Switches 除錯和加工設定程式切換
m_one : -1 #定義常數
zero : 0 #定義常數
one : 1 #定義常數
two : 2 #定義常數
three : 3 #定義常數
four : 4 #定義常數
five : 5 #定義常數
c9k : 9999 #定義常數
fastmode : 1 #Posting 速度最佳化
bug1 : 2 #0=不顯示, 1=普通列表框, 2=編輯器
bug2 : -30 #Append postline labels, non-zero is column position?
bug3 : 0 #Append whatline no. to each NC line?
bug4 : 1 #Append NCI line no. to each NC line?
whatno : yes #不執行 whatline branches(分枝)? (leave as yes)
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 #忽視 cantext 入口 on move with tlchng_aft
newglobal : 1 #全域性變數錯誤檢測
getnextop : 0 #建立下一個變量表
# 一般輸出設定
sub_level : 1 #允許自動子程式支援
breakarcs : no #在各象限分割圓弧
arcoutput : 0 #0= IJK,1= R不帶符號,2= R (超過180度時帶負號)
arctype : 2 #圓弧中心 1=abs, 2=St-Ctr, 3=Ctr-St, 4=unsigned inc.
arccheck : 1 #檢測小圓弧,轉化為直線
atol : .01 #arccheck=2時的角度公差
ltol : .002 #arccheck=1時的長度公差
vtol : .0001 #系統公差
maxfeedpm : 500 #進給速度極限 (英寸/分鐘)
ltol_m : .05 #arccheck=1時的長度公差,米制
vtol_m : .0025 #系統公差,米制
maxfeedpm_m : 10000 #進給速度極限 毫米/分鐘
force_wcs : yes #每次換刀時強制輸出WCS
spaces : 1 #各指令之間插入的空格數
omitseq : no #省略序號
seqmax : 9999 #最大序號
stagetool : 0 #0 = 無預先備刀, 1 = 預備刀具
use_gear : 0 #輸出齒輪交換程式碼,0=no,1=yes
max_speed : 6000 #最大主軸轉速
min_speed : 1 #最小主軸轉速
nobrk : no #Omit breakup of x, y & z rapid moves
progname : 1 #使用大寫字母表示程式名
max_arc : 50000 #機床允許的最大圓弧半徑
# 旋轉軸設定
vmc : 1 # 0 = 臥式 , 1 = 立式
# 允許鑽孔固定迴圈功能
usecandrill : yes #使用普通鑽孔固定迴圈
usecanpeck : yes #使用啄式鑽孔固定迴圈
usecanchip : yes #使用斷屑鑽孔固定迴圈
usecantap : yes #使用攻螺紋固定迴圈
usecanbore1 : yes #使用鏜孔固定迴圈1
usecanbore2 : yes #使用鏜孔固定迴圈2
usecanmisc1 : yes #使用雜項固定迴圈1
usecanmisc2 : yes #使用雜項固定迴圈2
# 通用自定義變數初始化(不能改變!)
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
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
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
# 格式列表 - n=nonmodal, l=leading, t=trailing, i=inc, d=delta
#定義 英制/米制 座標格式列表
fs2 1 0.7 0.6 #小數, absolute, 7 place, default for initialize (
fs2 2 0.4 l1.3 #小數, absolute, 4/3 place (x,y,z)
fs2 3 0.4 l1.3d #小數, delta, 4/3 place (i,j,k)
#Common format statements
fs2 4 1 0 1 0 #整數, 無字首
fs2 5 2 0 2 0l #整數, 強制兩位字首
fs2 6 3 0 3 0l #整數, 強制三位字首
fs2 7 4 0 4 0l #整數, 強制四位字首
fs2 9 0.1 0.1 #小數, absolute, 1 place
fs2 10 0.2 0.2 #小數, absolute, 2 place
fs2 11 0.3 0.3 #小數, absolute, 3 place
fs2 12 0.4 0.4 #小數, absolute, 4 place
fs2 13 0.5 0.5 #小數, absolute, 5 place
fs2 14 0.3 0.3d #小數, delta, 3 place
fs2 15 0.2 0.1 #小數, absolute, 2/1 place
fs2 16 1 0 1 0n #整數, 強制輸出
# 輸出加工型別字串定義
# 字串 - 字串標籤必須由 "s" 開頭,它們沒有預先指派
#Select operation note
sop00 "NULL" # String definition
sop01 "CONTOUR" # " "
sop02 "CONTOUR" # " "
sop03 "DRILL CYCLE" # " "
sop04 "POCKET...." # " "
sop05 "RULED....." # " "
sop06 "2D-SWEPT.." # " "
sop07 "3D-SWEPT.." # " "
sop08 "REVOLVED.." # " "
sop09 "LOFT......" # " "
sop10 "COONS....." # " "
sop11 "TRIM ....." # " "
sop12 "FLOWLINE.." # " "
sop13 "SURFACE_FINISH" # " "
sop14 "SURFACE_ROUGH" # " "
sop15 "POINT....." # " "
sop16 "DRILL-5AX."
sop17 "CURVE-5AX."
sop18 "SWARF-5AX."
sop19 "flat MILL"
sop20 "op20?....."
sopnote # Target string
fstrsel sop00 opcode sopnote
# NC 輸出的字串和字串選擇定義
#Address string definitions 位址串定義
strm "M"
strn "N"
stro "O"
strp "P"
srad "R"
srminus "R-"
sblank
#Cantext 字串定義 (spaces must be padded here)
sm00 "M00"
sm01 "M01"
strtextno
strcantext
# 錯誤資訊
saxiswarn " WARNING-THE RAD OF ARC IS TOO LARGE"
# 一般的 G 和 M 程式碼串選擇表 General G and M Code String select tables
# 運動 G 程式碼選擇
sg00 G00 #快速定位
sg01 G01 #直線進給
sg02 G02 #圓弧插補 CW
sg03 G03 #圓弧插補 CCW
sg04 G04 #暫停
sgcode #Target for string
fstrsel sg00 gcode sgcode
# 選擇工作平面 G 字串
sg17 G17 #XY 平面程式碼
sg19 G19 #YZ 平面程式碼
sg18 G18 #XZ 平面程式碼
sgplane #Target string
fstrsel sg17 plane sgplane
#選擇 英制/米制 字串
sg20 G20 #英制程式碼
sg21 G21 #米制程式碼
smetric #Target string
fstrsel sg20 met_tool smetric
#選擇參考點回歸字串
sg28 G28 #第一參考點回歸
sg30 G30 #第二參考點回歸
sg28ref #Target string
fstrsel sg28 mi3 sg28ref
# 切削補償 G 字串選擇
scc0 G40 #切削補償取消
scc1 G41 #切削左補償
scc2 G42 #切削右補償
sccomp #Target for string
fstrsel scc0 cc_pos sccomp
# 鑽孔固定迴圈字串選擇
sg81 G81 #鑽孔 - 無暫停
sg81d G82 #鑽孔 - 有暫停
sg83 G83 #啄式鑽孔 - 無暫停
sg83d G83 #啄式鑽孔 - 有暫停
sg73 G73 #斷屑 - 無暫停
sg73d G73 #斷屑 - 有暫停
sg84 G84 #攻螺紋 - 右手
sg84d G74 #攻螺紋 - 左手
sg85 G85 #鏜孔 #1 - 無暫停
sg85d G89 #鏜孔 #1 - 有暫停
sg86 G86 #鏜孔 #2 - 無暫停
sg86d G86 #鏜孔 #2 - 有暫停
sgm1 G76 #misc #1 - 無暫停
sgm1d G76 #misc #1 - 有暫停
sgm2 G81 #misc #2 - 無暫停
sgm2d G82 #misc #2 - 有暫停
sgdrill #Target for string
fstrsel sg81 drlgsel sgdrill
# 選擇增量或絕對 G字串
sg90 G90 #絕對程式碼
sg91 G91 #增量程式碼
sgabsinc #Target string
fstrsel sg90 absinc sgabsinc
#鑽孔固定迴圈參考高度
sg98 G98 #Z軸回到起始高度
sg99 G99 #Z軸回到參考高度
sgdrlref #Target for string
fstrsel sg98 drillref sgdrlref # Drill cycle G string select
# Generate string for spindle
sm04 M04 #主軸反轉
sm05 M05 #主軸停止
sm03 M03 #主軸正轉
spindle #Target for string
fstrsel sm04 spdir2 spindle
# 冷卻 M 字串選擇
sm09 M09 #冷卻液 Off
sm08 M08 #冷卻液 噴射
sm08_1 M08 #冷卻液 噴霧
sm08_2 M08 #Coolant Tool
scoolant #Target for string
fstrsel sm09 coolant scoolant
# 定義齒輪選擇程式碼
flktbl 1 3 #Lookup table definition - table no. - no. entries
40 0 #底速齒輪檔
41 400 #中速齒輪檔
42 2250 #高速齒輪檔
# 刀具交換 / NC輸出變數格式
fmt T 4 t #刀具號
fmt T 4 first_tool #第一把使用的刀具
fmt T 4 next_tool #下一把使用的刀具
fmt D 4 tloffno #直徑偏移號
fmt H 4 tlngno #長度偏移號
fmt G 4 g_wcs #WCS G address
fmt P 4 p_wcs #WCS P address
fmt S 4 speed #主軸轉速
fmt M 4 gear #Gear range
fmt N 4 n #序號
fmt X 2 xabs #X 座標輸出
fmt Y 2 yabs #Y 座標輸出
fmt Z 2 zabs #Z 座標輸出
fmt X 3 xinc #X 座標輸出
fmt Y 3 yinc #Y 座標輸出
fmt Z 3 zinc #Z 座標輸出
fmt I 3 i #x 軸方向上的圓弧中心描述
fmt J 3 j #y 軸方向上的圓弧中心描述
fmt K 3 k #z 軸方向上的圓弧中心描述
fmt R 2 arcrad #圓弧半徑
fmt F 15 feed #進給率
fmt P 11 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 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 # 註釋格式
fmt " DIA. OFF:" 4 toffnote # 註釋格式
fmt " LEN.:" 4 tlngnote # 註釋格式
fmt " DIA.:" 1 tldia # 註釋格式
# Tool Comment / Manual Entry Section 刀具註釋/手工輸入部分
ptoolcomment #Comment for tool
tnote = t
toffnote = tloffno
tlngnote = tlngno
"(", *tnote, *tldia, *sopnote, ")", 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
# 檔案起始和刀具交換設定
psof0 #Start of file for tool zero
psof
psof #Start of file for non-zero tool number
toolchng = one
if ntools = one,
#skip single tool outputs, stagetool must be on
stagetool = m_one
!next_tool
"%", e
*progno, e
"(PROGRAM NAME - ", progname, ")", e
"(DATE=Day-Month-Year - ", date, " TIME=Hr:Min - ", time, ")", e
ptoolcomment
pbld, n, *sgcode, *sgplane, "G40", "G49", "G80", "G54", *sgabsinc, *smetric, e
sav_absinc = absinc
pcom_moveb
absinc = zero
pcan1, pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, *zr,
*speed, *spindle, pgear, strcantext, e
pe_inc_calc
ps_inc_calc
absinc = sav_absinc
Mastercam系統配置的是適應單一型別控制系統的通用後置處理,該後置處理提供了一種功能資料庫模型,使用者根據數控機床和數控系統的具體情況,可以對其資料庫進行修改和編譯,定製出適應某一數控機床的專用後置處理程式。
Mastercam系統後置處理檔案的副檔名為PST,稱為PST檔案,它定義了切削加工引數、NC程式格式、輔助工藝指令,設定了介面功能引數等,其結構由八個部分組成:
1. 註解
程式每一列前有“#”符號表示該列為不影響程式執行的文字註解。如:
# mi2-Absolute, or Incremental positioning
0=absolute
1=incremental
表示mi2定義程式設計時數值給定方式,若mi=0為絕對值程式設計,mi=1為增量值程式設計。
在這一部分裡,定義了數控系統程式設計的所有準備功能G程式碼格式和輔助功能M程式碼格式。
2. 程式糾錯
程式中可以插入文字提示來幫助糾錯,並顯示在螢幕上。如:
# Error messages (錯誤資訊)
psuberror # Arc output not allowed
"ERROR-WRONG AXIS USED IN AXIS SUBSTITUTION", e
如果展開圖形捲成旋轉軸時,軸替換出錯,則在程式中會出現上面引號中的錯誤提示。
3. 定義變數的資料型別、使用格式和常量賦值
如規定G程式碼和M程式碼是不帶小數點的兩位整數,多軸加工中心的旋轉軸的地址程式碼是A、B和C,圓弧長度允許誤差為0.002,系統允許誤差為0.00005,進給速度最大值為10m/min等。
4. 定義問題
可以根據機床加工需要,插入一個問題給後置處理程式執行。
如定義NC程式的目錄,定義啟動和退出後置處理程式時的C-Hook程式名。
5. 字串列表
字串起始字母為s,可以依照數值選取字串,字串可以由兩個或更多的字元來組成。
字串sg17,表示指定XY加工平面,NC程式中出現的是G17,scc1表示刀具半徑左補償,NC程式中出現的是G41,字串sccomp代表刀具半徑補償建立或取消。
6. 自定義單節
可以讓使用者將一個或多個NC碼作有組織的排列。
自定義單可以是公式、變數、特殊字串等:
pwcs # G54+ coordinate setting at toolchange
if mil >1, pwcs_g54
表示用pwcs單節指代#G54+在換刀時座標設定值,mil定義為工件座標系(G54~G59)
7. 預先定義的單節
使用者可按照數控程式規定的格式將一個或多個NC程式碼作有組織的排列,編排成一條程式段。
8. 系統問答
後置處理軟體提出了五組問題,供使用者回答,可按照註解文字、賦值變數、字串等內容,根據使用的機床、數控系統進行回答。
設計後置處理檔案,一般是按照NC程式的結構模組來進行。根據NC程式的功能,後置處理檔案分成六個模組如下:
1. 檔案頭
檔案頭部分設定程式名稱和編號,此外,SINUMERIK 810D系統還必須指定NC程式存放路徑,並按照以下格式輸出:
“%_N_(程式名及編號)_(路徑)”。
NC程式可存放在主程式、子程式和工作程式目錄下,副檔名分別為:MPF、SPF、WPD,一般放在工作程式目錄下。因此經修改的Pst檔案格式為:
Pheader # Start of file
" %_N_", progname, "_WPD" (程式名、存放目錄)
2. 程式起始
在程式開始,要完成安全設定、刀具交換、工件座標系的設定、刀具長度補償、主軸轉速控制、冷卻液控制等,並可顯示程式設計者、程式設計日期、時間等註解。
修改後的有刀具號Pst檔案開頭格式如下:
# Start of file for non-zero tool number
......
pspindle (主軸轉速計算)
pcom_movbtl (移動裝置)
ptoolcomment (刀具引數註解)
......
pbld, n, *sgcode, *sgplane, "G40", "G80", *sgabsinc
(快進、XY加工平面、取消刀補、取消固定迴圈、絕對方式程式設計)
if mil <=one, pg92_rtrnz, pg92_rtrn, pg92_g92 (返回參考點)
......
pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, pcan1
(快進至某位置、座標系編置、主軸轉速等)
pbld, n, pfzout, *tlngno, scoolant, [ if stagetool=one, *next_tool]
(安全高度、刀長補償、開冷卻液)
pcom_movea (加工過程)
3. 刀具交換
刀具交換執行前,須完成返回參考點、主軸停止動作,然後換刀,接著完成刀具長度補償、安全設定、主軸轉速控制。
Pst檔案中用自定義單節ptlchg指代換刀過程,編輯修改後的程式如下:
Ptlchg # Tool change
......
ptoolcomment (新刀引數註解)
comment (插入註解)
if stagetool <> two, pbld, n, *t, e (判斷、選刀)
n, "M6" (換刀)
pindex (輸出地址)
pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, pcan1
(快進至某位置、座標系偏置、主軸轉速等)
pbld, n, pfzout, *tlngno, "M7", [if stagetool=one, *next_tool]
(安全高度、刀長補償號、開冷卻液)
pcom_movea (加工過程)
4. 加工過程
這一過程是快速移動、直線插補、圓弧插補、刀具半徑補償等基本加工動作。
對於幾乎所有系統,這些加工動作的程式指令基本相同。只是注意SINUMERIK 810D系統的刀具長度補償值由字母D後加兩位數字呼叫,不需要G43/G44指令;而半徑補償值則由G41/G42呼叫,不需要再接地址程式碼。用G40取消刀具長度和刀具半徑補償。
5. 切削迴圈
Mastercam軟體提供了6種內定的孔加工固定迴圈方式:一般鑽削(Drill/Cbore)、深孔啄鑽(Peck Drill)、斷屑鑽(Chip Break)、右攻絲(Tap)、精鏜孔(Bore#1)、粗鏜孔(Bore #2),透過雜項選項(Misc #1/Misc #2)可設定左攻絲、背鏜孔、盲孔鏜孔、盲孔鉸孔等迴圈,並採用G73~G89程式碼來表示。
如對於深孔鑽削固定迴圈,Mastercam採用的格式為:G83 X_Y_Z_R_Q_F;而SINUMERIK 810D系統用CYCLE83指代深孔鑽削迴圈,其NC程式要求給出迴圈加工所有引數,輸出格式為:
CYCLE83(RTP,RFP,SDIS,DP,DPR,FDEP,FDPR,DAM,DTB,DTS,FRF,VARI)
在pst檔案中需按SINUMERIK 810D系統格式進行定義、修改和編寫。
6. 程式結尾
程式結尾一般情況下是取消刀補、關冷卻液、主軸停止、執行回參考點,程式停止等動作。下面是修改後的pst程式結尾:
Ptoolend_t #End of tool path, toolchange
......
pbld, n, sccomp, "M5", *scoolant, e (取消刀補、主軸停止、關冷卻液)
pbld, n, *sg74, "Z1=0. X1=0. Y1=0.", e (返回參考點)
if mi2=one, pbld, n, *sg74, "X1=0.", "Y1=0.", protretinc, e
else, protretabs (程式結束)
例子中文說明:[轉貼]
# POST 名稱 : wgkG54
# 型別 : MILL
# 機床名稱 : GENERIC FANUC
# 控制器名稱 : GENERIC FANUC
# 描述 : GENERIC FANUC 3 AXIS MILL POST
# Associated Post : NONE
# 車/銑複合 : NO
# 4-axis/Axis subs. : NO
# 五軸 : NO
# 子程式支援 : NO
# 自動換刀 : NO
# 工作座標系 : G54
# Executable : MP 8.00
#
#
#
# 這個POST支援FANUC控制器普通三軸銑床的的G 程式碼輸出,
# 不支援自動換刀,有最大圓弧報警
# 是針對Mastercam Mill V8的特徵而設計的
#
#
# --------------------------------------------------------------------------
# 修改日誌:
# --------------------------------------------------------------------------
# Programmers Note:
# CNC 05/01/00 - Initial post setup, jce
# 2002-10-11 - 去掉自動換刀,xxx
# 2002-10-12 - 增加中文註釋,xxx
# 2002-10-21 - 增加最大圓弧警告,xxx
# 2002-11-05 - 修改座標系為G54,xxx
# --------------------------------------------------------------------------
# 特徵:
# --------------------------------------------------------------------------
#
#
# 下列 Misc.(雜項) 必須使用整數:
#
# mi2 - 絕對或增量座標 at top level
# 0 = 絕對
# 1 = 增量
#
# mi3 - 選擇G28或G30來執行參考點回歸.
# 0 = G28, 1 = G30
#
# Canned text:
# 在輪廓點裡插入"cantext".以允許/禁止 下列Mastercam裡許可的功能,
# Entering cantext on a contour point from within Mastercam allows the
# following functions to enable/disable.
# Cantext 值:
# 1 = Stop = 輸出 "M00" 停止碼
# 2 = Ostop = 輸出 "M01" 選擇停止碼
#
#
# 鑽孔:
# 在這個 POST 裡支援所有的鑽孔方法.
#
# 附加註意事項:
# 1) G54 calls are generated where the work offset entry of 0 = G54,
# 1 = G55, etc.
# 2) 由NCI變數"met_tool"決定是否使用米制
#
# 3) 以增量方式從換刀起始位置計算運動量.
# 起始位置通常定義為所有換刀時刀具所處的最後位置
# 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.
# 4) 變數 "absinc" 現已被預先定義, 設定 mi2 (雜項整數)以定義
# 絕對/增量程式輸出.
#
# --------------------------------------------------------------------------
# Debugging and Factory Set Program Switches 除錯和加工設定程式切換
# --------------------------------------------------------------------------
m_one : -1 #定義常數
zero : 0 #定義常數
one : 1 #定義常數
two : 2 #定義常數
three : 3 #定義常數
four : 4 #定義常數
five : 5 #定義常數
c9k : 9999 #定義常數
fastmode : 1 #Posting 速度最佳化
bug1 : 2 #0=不顯示, 1=普通列表框, 2=編輯器
bug2 : -30 #Append postline labels, non-zero is column position?
bug3 : 0 #Append whatline no. to each NC line?
bug4 : 1 #Append NCI line no. to each NC line?
whatno : yes #不執行 whatline branches(分枝)? (leave as yes)
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 #忽視 cantext 入口 on move with tlchng_aft
newglobal : 1 #全域性變數錯誤檢測
getnextop : 0 #建立下一個變量表
# --------------------------------------------------------------------------
# 一般輸出設定
# --------------------------------------------------------------------------
sub_level : 1 #允許自動子程式支援
breakarcs : no #在各象限分割圓弧
arcoutput : 0 #0= IJK,1= R不帶符號,2= R (超過180度時帶負號)
arctype : 2 #圓弧中心 1=abs, 2=St-Ctr, 3=Ctr-St, 4=unsigned inc.
arccheck : 1 #檢測小圓弧,轉化為直線
atol : .01 #arccheck=2時的角度公差
ltol : .002 #arccheck=1時的長度公差
vtol : .0001 #系統公差
maxfeedpm : 500 #進給速度極限 (英寸/分鐘)
ltol_m : .05 #arccheck=1時的長度公差,米制
vtol_m : .0025 #系統公差,米制
maxfeedpm_m : 10000 #進給速度極限 毫米/分鐘
force_wcs : yes #每次換刀時強制輸出WCS
spaces : 1 #各指令之間插入的空格數
omitseq : no #省略序號
seqmax : 9999 #最大序號
stagetool : 0 #0 = 無預先備刀, 1 = 預備刀具
use_gear : 0 #輸出齒輪交換程式碼,0=no,1=yes
max_speed : 6000 #最大主軸轉速
min_speed : 1 #最小主軸轉速
nobrk : no #Omit breakup of x, y & z rapid moves
progname : 1 #使用大寫字母表示程式名
max_arc : 50000 #機床允許的最大圓弧半徑
# --------------------------------------------------------------------------
# 旋轉軸設定
# --------------------------------------------------------------------------
vmc : 1 # 0 = 臥式 , 1 = 立式
# --------------------------------------------------------------------------
# 允許鑽孔固定迴圈功能
# --------------------------------------------------------------------------
usecandrill : yes #使用普通鑽孔固定迴圈
usecanpeck : yes #使用啄式鑽孔固定迴圈
usecanchip : yes #使用斷屑鑽孔固定迴圈
usecantap : yes #使用攻螺紋固定迴圈
usecanbore1 : yes #使用鏜孔固定迴圈1
usecanbore2 : yes #使用鏜孔固定迴圈2
usecanmisc1 : yes #使用雜項固定迴圈1
usecanmisc2 : yes #使用雜項固定迴圈2
# --------------------------------------------------------------------------
# 通用自定義變數初始化(不能改變!)
# --------------------------------------------------------------------------
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
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
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
# --------------------------------------------------------------------------
# 格式列表 - n=nonmodal, l=leading, t=trailing, i=inc, d=delta
#
# --------------------------------------------------------------------------
#定義 英制/米制 座標格式列表
fs2 1 0.7 0.6 #小數, absolute, 7 place, default for initialize (
fs2 2 0.4 l1.3 #小數, absolute, 4/3 place (x,y,z)
fs2 3 0.4 l1.3d #小數, delta, 4/3 place (i,j,k)
#Common format statements
fs2 4 1 0 1 0 #整數, 無字首
fs2 5 2 0 2 0l #整數, 強制兩位字首
fs2 6 3 0 3 0l #整數, 強制三位字首
fs2 7 4 0 4 0l #整數, 強制四位字首
fs2 9 0.1 0.1 #小數, absolute, 1 place
fs2 10 0.2 0.2 #小數, absolute, 2 place
fs2 11 0.3 0.3 #小數, absolute, 3 place
fs2 12 0.4 0.4 #小數, absolute, 4 place
fs2 13 0.5 0.5 #小數, absolute, 5 place
fs2 14 0.3 0.3d #小數, delta, 3 place
fs2 15 0.2 0.1 #小數, absolute, 2/1 place
fs2 16 1 0 1 0n #整數, 強制輸出
# 輸出加工型別字串定義
# --------------------------------------------------------------------------
# 字串 - 字串標籤必須由 "s" 開頭,它們沒有預先指派
# --------------------------------------------------------------------------
#Select operation note
sop00 "NULL" # String definition
sop01 "CONTOUR" # " "
sop02 "CONTOUR" # " "
sop03 "DRILL CYCLE" # " "
sop04 "POCKET...." # " "
sop05 "RULED....." # " "
sop06 "2D-SWEPT.." # " "
sop07 "3D-SWEPT.." # " "
sop08 "REVOLVED.." # " "
sop09 "LOFT......" # " "
sop10 "COONS....." # " "
sop11 "TRIM ....." # " "
sop12 "FLOWLINE.." # " "
sop13 "SURFACE_FINISH" # " "
sop14 "SURFACE_ROUGH" # " "
sop15 "POINT....." # " "
sop16 "DRILL-5AX."
sop17 "CURVE-5AX."
sop18 "SWARF-5AX."
sop19 "flat MILL"
sop20 "op20?....."
sopnote # Target string
fstrsel sop00 opcode sopnote
# --------------------------------------------------------------------------
# NC 輸出的字串和字串選擇定義
# --------------------------------------------------------------------------
#Address string definitions 位址串定義
strm "M"
strn "N"
stro "O"
strp "P"
srad "R"
srminus "R-"
sblank
#Cantext 字串定義 (spaces must be padded here)
sm00 "M00"
sm01 "M01"
strtextno
strcantext
# --------------------------------------------------------------------------
# 錯誤資訊
# --------------------------------------------------------------------------
saxiswarn " WARNING-THE RAD OF ARC IS TOO LARGE"
# --------------------------------------------------------------------------
# 一般的 G 和 M 程式碼串選擇表 General G and M Code String select tables
# --------------------------------------------------------------------------
# 運動 G 程式碼選擇
sg00 G00 #快速定位
sg01 G01 #直線進給
sg02 G02 #圓弧插補 CW
sg03 G03 #圓弧插補 CCW
sg04 G04 #暫停
sgcode #Target for string
fstrsel sg00 gcode sgcode
# --------------------------------------------------------------------------
# 選擇工作平面 G 字串
sg17 G17 #XY 平面程式碼
sg19 G19 #YZ 平面程式碼
sg18 G18 #XZ 平面程式碼
sgplane #Target string
fstrsel sg17 plane sgplane
# --------------------------------------------------------------------------
#選擇 英制/米制 字串
sg20 G20 #英制程式碼
sg21 G21 #米制程式碼
smetric #Target string
fstrsel sg20 met_tool smetric
# --------------------------------------------------------------------------
#選擇參考點回歸字串
sg28 G28 #第一參考點回歸
sg30 G30 #第二參考點回歸
sg28ref #Target string
fstrsel sg28 mi3 sg28ref
# --------------------------------------------------------------------------
# 切削補償 G 字串選擇
scc0 G40 #切削補償取消
scc1 G41 #切削左補償
scc2 G42 #切削右補償
sccomp #Target for string
fstrsel scc0 cc_pos sccomp
# --------------------------------------------------------------------------
# 鑽孔固定迴圈字串選擇
sg81 G81 #鑽孔 - 無暫停
sg81d G82 #鑽孔 - 有暫停
sg83 G83 #啄式鑽孔 - 無暫停
sg83d G83 #啄式鑽孔 - 有暫停
sg73 G73 #斷屑 - 無暫停
sg73d G73 #斷屑 - 有暫停
sg84 G84 #攻螺紋 - 右手
sg84d G74 #攻螺紋 - 左手
sg85 G85 #鏜孔 #1 - 無暫停
sg85d G89 #鏜孔 #1 - 有暫停
sg86 G86 #鏜孔 #2 - 無暫停
sg86d G86 #鏜孔 #2 - 有暫停
sgm1 G76 #misc #1 - 無暫停
sgm1d G76 #misc #1 - 有暫停
sgm2 G81 #misc #2 - 無暫停
sgm2d G82 #misc #2 - 有暫停
sgdrill #Target for string
fstrsel sg81 drlgsel sgdrill
# --------------------------------------------------------------------------
# 選擇增量或絕對 G字串
sg90 G90 #絕對程式碼
sg91 G91 #增量程式碼
sgabsinc #Target string
fstrsel sg90 absinc sgabsinc
# --------------------------------------------------------------------------
#鑽孔固定迴圈參考高度
sg98 G98 #Z軸回到起始高度
sg99 G99 #Z軸回到參考高度
sgdrlref #Target for string
fstrsel sg98 drillref sgdrlref # Drill cycle G string select
# --------------------------------------------------------------------------
# Generate string for spindle
sm04 M04 #主軸反轉
sm05 M05 #主軸停止
sm03 M03 #主軸正轉
spindle #Target for string
fstrsel sm04 spdir2 spindle
# --------------------------------------------------------------------------
# 冷卻 M 字串選擇
sm09 M09 #冷卻液 Off
sm08 M08 #冷卻液 噴射
sm08_1 M08 #冷卻液 噴霧
sm08_2 M08 #Coolant Tool
scoolant #Target for string
fstrsel sm09 coolant scoolant
# --------------------------------------------------------------------------
# 定義齒輪選擇程式碼
flktbl 1 3 #Lookup table definition - table no. - no. entries
40 0 #底速齒輪檔
41 400 #中速齒輪檔
42 2250 #高速齒輪檔
# --------------------------------------------------------------------------
# 刀具交換 / NC輸出變數格式
# --------------------------------------------------------------------------
fmt T 4 t #刀具號
fmt T 4 first_tool #第一把使用的刀具
fmt T 4 next_tool #下一把使用的刀具
fmt D 4 tloffno #直徑偏移號
fmt H 4 tlngno #長度偏移號
fmt G 4 g_wcs #WCS G address
fmt P 4 p_wcs #WCS P address
fmt S 4 speed #主軸轉速
fmt M 4 gear #Gear range
# --------------------------------------------------------------------------
fmt N 4 n #序號
fmt X 2 xabs #X 座標輸出
fmt Y 2 yabs #Y 座標輸出
fmt Z 2 zabs #Z 座標輸出
fmt X 3 xinc #X 座標輸出
fmt Y 3 yinc #Y 座標輸出
fmt Z 3 zinc #Z 座標輸出
fmt I 3 i #x 軸方向上的圓弧中心描述
fmt J 3 j #y 軸方向上的圓弧中心描述
fmt K 3 k #z 軸方向上的圓弧中心描述
fmt R 2 arcrad #圓弧半徑
fmt F 15 feed #進給率
fmt P 11 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 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 # 註釋格式
fmt " DIA. OFF:" 4 toffnote # 註釋格式
fmt " LEN.:" 4 tlngnote # 註釋格式
fmt " DIA.:" 1 tldia # 註釋格式
# --------------------------------------------------------------------------
# Tool Comment / Manual Entry Section 刀具註釋/手工輸入部分
# --------------------------------------------------------------------------
ptoolcomment #Comment for tool
tnote = t
toffnote = tloffno
tlngnote = tlngno
"(", *tnote, *tldia, *sopnote, ")", 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
# --------------------------------------------------------------------------
# 檔案起始和刀具交換設定
# --------------------------------------------------------------------------
psof0 #Start of file for tool zero
psof
psof #Start of file for non-zero tool number
toolchng = one
if ntools = one,
[
#skip single tool outputs, stagetool must be on
stagetool = m_one
!next_tool
]
"%", e
*progno, e
"(PROGRAM NAME - ", progname, ")", e
"(DATE=Day-Month-Year - ", date, " TIME=Hr:Min - ", time, ")", e
ptoolcomment
pbld, n, *sgcode, *sgplane, "G40", "G49", "G80", "G54", *sgabsinc, *smetric, e
sav_absinc = absinc
pcom_moveb
absinc = zero
pcan1, pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, *zr,
*speed, *spindle, pgear, strcantext, e
pe_inc_calc
ps_inc_calc
absinc = sav_absinc