在fanuc-0i數(shù)控系統(tǒng)仿真界面中,某些g、m、t等代碼需要轉(zhuǎn)換成可供pmac識 別的數(shù)控代碼?;趐mac加工中心數(shù)控系統(tǒng)利用vb 6.0開發(fā)數(shù)控g代碼編譯程序處理 模塊,主要用于fanuc-0i數(shù)控系統(tǒng)仿真界面中g(shù)代碼的轉(zhuǎn)換,現(xiàn)以基于pmac的宏程 序編程在數(shù)控機(jī)床上的應(yīng)用為例進(jìn)行介紹。
1. fanuc系統(tǒng)宏程序
fanuc系統(tǒng)提供兩種用戶宏程序,即用戶宏程序功能a和用戶宏程序功能b[31]。由 于用戶宏程序功能a的宏程序需要使用g65hm格式的宏指令來表達(dá)各種數(shù)學(xué)運算和邏輯 關(guān)系,極不直觀,且可讀性非常差,因而導(dǎo)致在實際工作中很少人使用它[31]。由于絕大部 分的fanuc系統(tǒng)都支持用戶宏程序功能b,因而重點介紹用戶宏程序功能b的相關(guān)知識。
1.1變量及賦值
格式:# i= # j+ # k;
fannc系統(tǒng)宏程序的變量是用變量符號#和后面的變量號,變量號是用以區(qū)分各 變量。=就是變量的賦值指令,=左邊是被賦值的變量,=右邊是一個數(shù)值表達(dá)式[32]。 表達(dá)式中包含的運算符有:+、-、*、/、[]以及一些數(shù)學(xué)運算函數(shù),也可以包括變量。常 用的數(shù)學(xué)運算函數(shù)有:正弦sin[]、正切tan[]、平方根sqrt[]、余弦cos[]、反正切 atan[]、或or、反余弦acos[]、與and[]、反正弦asin[]、異或xor和值函 數(shù)abs[]等。
1. 2無條件轉(zhuǎn)移goto語句
格式:goto n;
n是目標(biāo)程序段的標(biāo)號,本指令將無條件地轉(zhuǎn)移到標(biāo)有順序號(行號)n的程序段[32];
1.3條件轉(zhuǎn)移指令if語句
格式1: if [<條件表達(dá)式>]goto n;
格式2: if [<條件表達(dá)式>]then;
[]中是一個條件表達(dá)式,條件表達(dá)式中可以包含的運算符有:等于eq、不等于ne、 大于gt、大于等于ge、小于lt、小于等于le[33]。如果[]中的條件表達(dá)式成立,格式1 中程序?qū)⑥D(zhuǎn)移(跳轉(zhuǎn))到標(biāo)有順序號(行號)n的程序段,否則,順序執(zhí)行下一條指令, 如圖3-3所示[33]。如果[]中的條件表達(dá)式成立,格式2中程序?qū)?zhí)行預(yù)先的宏程序語 句,而且只執(zhí)行一個宏程序語句。
1. 4循環(huán)指令while
格式: while [<條件表達(dá)式>] do m
……
end m
[]里是程序執(zhí)行的判斷條件。do與end命令后的m是循環(huán)編號;二者之間的程序是 被循環(huán)執(zhí)行的語句,其中允許嵌套另一個while循環(huán)。如果[]中的判斷條件成立,do 與end命令之間的程序會不斷運行,否則,將運行end命令后面的程序,如圖3-4所示。
1.5嵌套
格式1:d0循環(huán)可以多重嵌套,如圖3-5所示。 格式2:條件轉(zhuǎn)移可以跳出循環(huán)的外面,如圖3-6所示。
2.基于pmac的數(shù)控宏程序的實現(xiàn)
在基于pmac構(gòu)成的數(shù)控系統(tǒng)中,pmac將g代碼作為特殊子程序來調(diào)用。例如在 運動程序中遇到g65代碼,它將認(rèn)為這是調(diào)用子程序program 1000中n65000程序段。 為了增加程序的可讀性,我們采用gosub{數(shù)值}命令,此命令使運動程序跳轉(zhuǎn)型到同一 運動程序段中{數(shù)值}的行號(n或0),當(dāng)程序遇到gosub后的return命令后馬 上返回。call {數(shù)值}命令與此相似,只是它可以跳轉(zhuǎn)到另一個運動程序,比如call 7 將執(zhí)行prog 7并返回,可用于用戶宏程序功能a的宏程序g65(或g66)。用戶宏程序功 能a的宏程序的調(diào)用格式是g65(或g66)p_l_[參數(shù)],其中p值為宏程序的程序號,l 為調(diào)用次數(shù)[34]。
fanuc數(shù)控系統(tǒng)的宏程序在pmac上無法實現(xiàn)直接運行,因此需要將宏程序轉(zhuǎn)化成 pmac能識別的代碼格式。
2.1進(jìn)行指令替換,
pmac能識別的加工程序指令和fanuc機(jī)床的編程語言稍有差別。為適應(yīng)機(jī)床操作 人員的習(xí)慣,需要將機(jī)床操作人員輸入的程序中的某些指令替換成pmac能識別的指令, 轉(zhuǎn)換后再進(jìn)行下載、運行。
例如“eq”需要替換成“=”,“#”需要替換成“vall”,這一過程通過 vb 軟件來進(jìn)行,
程序代碼如下:
stra1 = replace(stra1, eq, =, 1, -1, 0)
stra1 = replace(stra1, #, vall, 1, -1, 0)
另外還有一些不能通過替換直接修改的指令,如循環(huán)指令 while,在 fanuc 機(jī)床
中,用法為:
while [ <條件表達(dá)式>] do m
……
end m
在 pmac 中應(yīng)用需要改為:
while [<條件表達(dá)式>]
..….
end while
故需要vb軟件將do m刪除,將endm替換為end while,程序的嵌套通過距離 近的的未配對的while和end while來實現(xiàn)。
2.2增加程序的可讀性
pmac中參數(shù)的存儲變量都是p, q等固定字母加數(shù)字組成的,例如p201,因此變量 名稱沒有特定含義,加工程序易讀性較差,vb軟件在進(jìn)行加工程序處理時可自動在加工 程序之前加上定義,增強(qiáng)可讀性,例如定義變量p201為vail:
text2.text = #define val1 p201 & vbcrlf & text2.text
為了 pmac能夠識別程序代碼,需要按照pmac程序代碼格式對程序進(jìn)行轉(zhuǎn)換。例 如在經(jīng)過校驗的運動程序開頭添加清空緩沖區(qū)指令,把程序號00007轉(zhuǎn)換為open prog 7 clear,在程序結(jié)尾處加上關(guān)閉緩沖區(qū)指令’’close”,vb程序代碼如下:
t1 (0) = define tbuf 1 & vbcrlf & open prog & zzz & clear
text2.text = t1 (0) & text2.text & vbcrlf & close
對于pmac可以直接識別的代碼,把原程序代碼進(jìn)行復(fù)制即可。例如g、m、t、d 代碼,+、-、*、/運算代碼,sin()、cos〇等數(shù)學(xué)運算函數(shù)代碼,x、y、z等代碼[2]。
[1] vb軟件界面設(shè)計
為對上述構(gòu)想進(jìn)行程序驗證,采用vb軟件編寫數(shù)控界面。左上角的窗口用來給操作 人員輸入程序。右上角的窗口用來顯示轉(zhuǎn)換后的pmac能識別的程序。點擊“宏程序橢圓” 轉(zhuǎn)換按鈕,在pmac程序窗口出現(xiàn)轉(zhuǎn)換后的結(jié)果,即pmac可識別的控制卡代碼[35]。如 圖3-7所示。
下面列出實現(xiàn)宏程序功能的關(guān)鍵vb源代碼:
private sub 宏程序橢圓_click()
stra1 = text1(0).text
hcxpd = 0
if (instr(stra1, #)) then hcxpd = 1
stra1 = replace(stra1, #, vall , 1, -1, 0)
……
stra1 = replace(stra1, ], ), 1, -1, 0)
t1 = split(stra1, ;)
t2 = split(t1(0), )
n = t2(1)
cxh = replace(n, 0, , 1, -1, 0)
zzz = replace(n, 0, , 1, -1, 0)
t1(0) = define tbuf 1 & vbcrlf & open prog & zzz & clear
text2.text = for i = 1 to ( ubound (t1) - 1)
t1(i) = mid(t1(i), 8, 255)
text2.text = text2. text & vbcrlf & t1(i)
next i
text2.text = t1(0) & text2. text & vbcrlf & close
if hcxpd = 1 then
for i = 1 to 10
text2.text = #define val & i & p20 & i - 1 & vbcrlf & text2.text
next i
for i = 11 to 12
text2.text = #define val & i & p2 & i - 1 & vbcrlf & text2.text
next i
end if
end sub
2.4將宏程序下載到pmac中和運行程序
下載pmac程序,需要先將轉(zhuǎn)換后的g代碼程序存入文件中,文件后綴pmc,之后 通過pmacdownloada指令將上述程序下載到pmac中,“download代碼”按鈕可以將轉(zhuǎn) 換后的程序下載到pmac中。
點擊“運行”按鈕,通過pmacgetresponsea指令將運動命令下載到pmac中,即可
實現(xiàn)pmac的宏程序加工。其中關(guān)鍵的vb源代碼如下:
retum_value = pmacgetresponsea(devicenumber, response, 255, ”#lb” & cxh & ”r”)其 中“cxh”為程序號。
本文由伯特利數(shù)控整理發(fā)表文章均來自網(wǎng)絡(luò)僅供學(xué)習(xí)參考,轉(zhuǎn)載請注明!
相關(guān)內(nèi)容可查閱:主頁(加工中心)、產(chǎn)品頁(cnc加工中心)、文章頁(數(shù)控加工中心)
本文采摘自“基于pmac的加工中心開放式數(shù)控系統(tǒng)研究”,因為編輯困難導(dǎo)致有些函數(shù)、表格、圖片、內(nèi)容無法顯示,有需要者可以在網(wǎng)絡(luò)中查找相關(guān)文章!