詹華西 李艷華
[摘要]:基于HNC系統的宏編程處理經驗,以一個固定循環指令實現陣列孔加工為例,介紹了數控編程指令功能擴展的二次開發技術。
關鍵詞:宏編程;陣列鉆孔;二次開發
the Macro Technology to Extend NC Programming Instruction Function
ZHAN Hua-xi,LI Yan-hua
(Wuhan Institute of Technology,Wuhan 430073,China)
[Abstract]:Based on the processing experience of macro programming in HNC system, this article introduced redevelopment technology of NC programming instruction function. It even gives example of a fixed instruction to machine arrayed drills.
Key Words: Macro programming;Machining arrayed drills;Secondary development
0.引言
由于數控機床進行插補控制的主要是直線和圓弧,系統能提供的直接用于加工的程序指令非常有限,因此尋求合理的算法,利用基本指令來擴展系統的編程指令功能,使得用戶僅用一個指令行即可實現相對復雜的加工功能,這一直是系統開發人員的研究課題,也是加工編程人員尋求的目標。車削循環、鉆鏜基本循環等都是數控系統開發人員對指令系統擴展的典型示例,但不同的系統在這方面開發的程度是有差異的。比如SIEMENS系統已經具有直接用于陣列孔加工、規則形狀的挖槽循環等擴展指令,而HNC、FANUC系統目前還沒有面向普通用戶提供。對于非開放式的數控系統,這種指令功能擴展只能依賴于系統生產廠家,對于HNC這類基于PC-NC的開放式數控系統,只要熟知宏編程處理技術,普通用戶即可自行開發定制。
1.宏擴展編程的技術基礎
HNC系統在調用宏子程序的同時可進行參數傳值[1],即將調用行所跟的主調參數A~Z各字段的內容拷貝到宏執行的子程序內為局部變量#0~#25預設的存貯空間中;將指令的初始平面Z的模態值拷貝到#26中;同時還拷貝當前通道九個軸(XYZ/ABC/UVW)的絕對位置坐標到宏子程序的局部變量#30~#38中;并且還可以通過系統變量#1120~#1145來訪問A~Z 26個地址字的模態數據,通過系統變量#1150~#1169來訪問0~19組G代碼的模態值。
在HNC系統中,對于每個局部變量,都可用系統宏AR[]來判別該變量是否被定義、是被定義為增量坐標還是絕對坐標方式。
調用格式為:AR [#變量號]
返回值:
0:表示該變量沒有被定義;
90:表示該變量被定義為絕對方式G90;
91:表示該變量被定義為增量方式G91。
例如:IF [AR[#23] EQ 0]
IF [AR[#1143] EQ 91]
#23=0
ELSE
#23=#1143
ENDIF
ENDIF
表達的意思是:如果指令行的X(對應#23)參數未指定,且系統變量#1143(X坐標以前的模態)為增量方式,X就取增量0值;若#1143為絕對方式,X就取以前的模態值。
HNC作為一個開放式數控系統,其用于鉆鏜基本循環G73~G89的宏擴展程序的源碼已面向廣大用戶公開,它就是利用宏子程序參數傳值的處理方法,將G指令定制的多個參數,傳值到宏子程序中,由子程序對各參數數據進行整理后依據相應的加工工藝,按一定的算法通過基本指令來定制動作實現加工。普通用戶亦可參照這一思路進行編程指令的二次開發。
2.陣列鉆孔擴展指令的開發定制
圖1所示為一圓形陣列孔位關系分布圖。和矩形陣列孔加工一樣,在HNC中目前還無法由一個指令行來編程實現,但參照G73~G89鉆鏜基本循環的宏子程序編制方法,可自行開發定制。如果以G75為圓形陣列鉆孔的指令,其定制格式為:
G75 X Y Z R A B C D E … F
其中,X、Y:陣列中心的X、Y坐標
Z、R:孔底和R面的Z坐標
A:鉆孔方式循環號 B:孔所在圓周半徑
C:孔數 D:孔間角度
E:起始孔角度(與+X的夾角,逆 + 順 -)
A、B、C、E、G為陣列鉆孔增加的參數,如果循環號A調用G73~G89鉆孔方式需要I、J、K、Q、P等參數,其含義按G73~G89中對應的定義添加。
則G75宏子程序的內容可參考編制如下:
%0075
IF [AR[#23] EQ 0] ;如果沒定義X
IF [AR[#1143] EQ 91] ;如果X以前的模態為G91
#23=0 ;X=0
ELSE ;否則
#23=#1143 ;X取以前的模態值
ENDIF
ENDIF
IF [AR[#24] EQ 0] ;如果沒定義Y時的處理
IF [AR[#1144] EQ 91]
#24=0
ELSE
#24=#1144
ENDIF
ENDIF
IF [AR[#17] EQ 0] ;如果沒有定義R
#17=#1137 ;取當前R的模態值
ENDIF
IF [AR[#25] EQ 0] ;如果沒有定義Z
#25=#1145 ;取當前Z的模態值
ENDIF
IF [AR[#0] EQ 0] ;如果沒有定義A
#0=#1120 ;取當前A的模態值
ENDIF
…… ;同上處理B、C、D、E、P、Q、I、J、K 參數
IF [AR[#3] EQ 0] AND [#2 GT 1]
M-99 ;如果沒定義角度D且孔數>1則返回出錯信息
ENDIF
N10 G91 ;切換到增量編程G91模式
IF AR[#23] EQ 90 ;如果X值是絕對編程G90
#23=#23-#30 ;則按G91的算法換算X值
ENDIF ;#30為調用前X的絕對坐標
IF AR[#24] EQ 90 ;Y值的數據轉換
#24=#24-#31
ENDIF
IF AR[#17] EQ 90 ;R值的數據轉換
#17=#17-#32
ELSE
IF AR[#26] NE 0 ;如果有初始高度面
#17=#17+#26-#32 ;按初始高度換算
ENDIF
ENDIF
IF AR[#25] EQ 90 ;孔底Z值的換算
#25=#25-#32-#17
ENDIF
IF [#25 GE 0] AND [#0 NE 87]
M-99;如果G87之外的Z的增量為正,則返回出錯信息
ENDIF
G00X[#23]Y[#24] ; 定位到陣列中心
#39=PI/180
#40=1 ;孔數循環初值
#44=0 ;起始孔X增量初值
#45=0 ;起始孔Y增量初值
#46=#17 ;另存R值到局部變量#46中
#47=#1145 ;備份Z的模態
#48=#1137 ;備份R的模態
WHILE #40 LE #2 ;循環鉆鏜孔開始
#41=[#4+[#40-1]*#3]*#39 ;第i個孔的角度(弧度)
#42=#1*COS[#41] ;孔i相對陣列中心的X坐標
#43=#1*SIN[#41] ;孔i相對陣列中心的Y坐標
G91G[#0]X[#42-#44]Y[#43-#45]Z[#25]
--R[#46]I[#8]J[#9]K[#10]P[#15]Q[#16];調用循環號A所對應的G指令加工孔
#44=#42 ;另存孔i中心相對陣列中心的X、Y坐標
#45=#43 ;為下一孔i+1中心提供增量起點坐標數據
IF #1165 EQ 99 ;如果系統變量第15組G代碼模態值為G99
#46=0 ;將R后續增量清零
ENDIF
#40=#40+1 ;孔數循環遞增,加工下一個孔
ENDW
G00X[-#44]Y[-#45] ;返回到陣列中心
#1137=#48 ;恢復R的模態
#1145=#47 ;恢復Z的模態
M99
該陣列鉆孔加工子程序主要是計算各孔中心的坐標,具體鉆孔還是通過再次調用系統定義的鉆鏜固定循環指令來實現的。
3.擴展指令的加工應用
上述擴展指令宏子程序%0075編制完成后,在HNC系統中,應將其內容添加存儲到系統BIN文件夾下的O0000文件內,則以后用戶即可象使用G73~G89固定循環指令那樣直接使用G75指令功能來作圓形陣列孔的加工編程。
例如,對于圖2所示陣列孔加工,若工件零點設在圖示右下角,可編程如下:
O0001
G54G90G0X-240.0Y90.0S500M3
G43Z20.0H1M8
G99G75Z-25.0R5.0A81B60C6D60E0F60
X-80.0R15.0A83B50C4D90Q-5K3E45
G80M5
G91G28Z0M9
M30
4.結束語
開放式HNC系統提供給用戶一個以宏編程技術為基礎,對編程指令系統進行擴展開發的平臺。新指令功能的開發需要合理定制參數、熟知參數傳值調用的規則、具有縝密可靠的技術算法、全面完善的錯誤處理對策等等。可利用這個平臺按需要定制參數,自行開發一些如陣列孔加工、矩形輪廓銑削及挖槽、橢圓銑削及挖槽、凹凸球面加工等相對復雜而實用性較強的通用指令,讓普通用戶不需要使用自動編程軟件即可簡單快捷的編出加工程序來。
參考文獻:
[1] 華中數控股份有限公司. 數控銑床編程說明書. 武漢:華中數控股份有限公司,2004
業務咨詢:932174181 媒體合作:2279387437 24小時服務熱線:15136468001 盤古機械網 - 全面、科學的機械行業免費發布信息網站 Copyright 2017 PGJXO.COM 豫ICP備12019803號