|
本帖最后由 鄉(xiāng)村非主流 于 2013-12-13 21:34 編輯
. a" U ^' c7 C: I$ S% U
& T r+ W! o! D# V( O2 ^) P4 s 經(jīng)常會(huì)看到有人發(fā)與宏程序有關(guān)的帖子.不是難度太高就是講得不怎么靠譜.今天講講我自己對(duì)宏程序的理解..& s! `7 ]4 {/ [5 Q {4 [* L
宏程序一般分為A類(lèi)和B類(lèi).A類(lèi)宏調(diào)用比較麻煩.B類(lèi)宏用起來(lái)比較方便.類(lèi)似于C語(yǔ)言.現(xiàn)在的機(jī)床基本上都支持B類(lèi)宏.
) K( e6 f( J2 p: o/ I 本人只操作過(guò)廣數(shù)和Fanuc系統(tǒng).她們宏程序應(yīng)用基本都是一樣的.現(xiàn)在以Fanuc為例說(shuō)說(shuō).本帖目的只在于溝通與探討..9 m- }, O3 t1 O5 h, G4 H3 M
Fanuc系統(tǒng)的變量由符號(hào)#和變量序號(hào)組成.如:#I(I=1,2,3,...,例如#5, #500, #100等).將跟隨在地址符后的數(shù)值用變量來(lái)代替的過(guò)程稱為引用變量.例如:G01 X#100 Y-#101 F#102;.當(dāng) #100=100. #101=50. #102=80時(shí).上式即代表為:G01 X100. Y-50. F80;.
, t; b- w* A1 V7 J 變量的種類(lèi).變量分為局部變量.公共變量.系統(tǒng)變量.局部變量(#1-#33)是在宏程序中局部使用的變量.當(dāng)1號(hào)宏程序調(diào)用2號(hào)宏程序且都有變量#1時(shí),由于變量#1服務(wù)于不同的局部.所以1號(hào)程序中的#1與2號(hào)程序中的#1不是同一個(gè)變量.因此可以賦予不同的值.互不影響.公共變量(#100-#149,#500-#549)貫穿于整個(gè)程序過(guò)程.當(dāng)宏程序1調(diào)用宏程序2時(shí).且都有#100變量時(shí).由于#100是公共變量.所以1中的#100與2中的#100都是同一個(gè)變量.系統(tǒng)變量是指有固定用途的變量.她的值決定系統(tǒng)的狀態(tài).包括刀具偏置變量.接口輸入.輸出信號(hào)變量.及位置信號(hào)變量等等..(系統(tǒng)變量這塊還搞不懂.有的是生產(chǎn)廠家定的.希望有人能夠指點(diǎn)指點(diǎn)).宏程序通常使用局部變量和公共變量.#500以上的變量斷電后不丟失.( ]' n" Z z4 b( a' q% J5 M, u: ~5 A
B類(lèi)宏賦值:直接賦值例如:#100=100.0
- P2 a7 Y% z4 R# h( ~' x9 e ^5 h; h: I #100=30.+20.
- `7 }: b) s1 c1 i; G3 l( h 常用混合計(jì)算例如:#1=#2+#3*SIN[#4]
$ n/ o a2 L$ T; E t" J) z 運(yùn)算次序?yàn)椋?;函數(shù)SIN[#4]
! Q* H) n* `' O, c3 z3 M) k 2;乘和除運(yùn)算#3*SIN[#4]: ?; B/ x2 ^% _; X K, a
3:加減運(yùn)算#2+#3*SIN[#4] 5 s* q9 i% i# {0 D" h3 }
也可以通過(guò)括號(hào)改變運(yùn)算順序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ] / #6 ]' B0 {. V, l! b! B! S5 u' y6 m
轉(zhuǎn)移指令GOTO的應(yīng)用;
3 |) J( e7 d$ x m7 f6 R- V例如:GOTO1005 [6 R" q+ D/ d ?) X; p' X
無(wú)條件轉(zhuǎn)移到N100程序段.用的較多.可以省去了跳段符號(hào).不過(guò)很多人習(xí)慣用跳段開(kāi)關(guān).我比較喜歡這個(gè)方便. & p2 g2 d4 C' B' j+ b
條件轉(zhuǎn)移例如:IF [ #1 GT #100 ] GOTO 100
4 {. M" O- f5 f* C當(dāng)#1大于#100時(shí)轉(zhuǎn)移到N100程序段.至于什么大于小于這些自己看書(shū)去.打字累的慌. , @6 s. W! [ W. C1 S0 Z
還有個(gè)循環(huán)指令WHILE[條件式]DOm(m=1.2.3.....)% j* r- E0 }/ Q9 \& I' O
......* |! d- \( U- z
ENDm;這個(gè)比較少用.大概格式就這樣了
) d9 k$ e$ Z& x其實(shí)在實(shí)際加工中宏程序用的比較少.也許是現(xiàn)在很多人不會(huì)用的原因.& X% {5 Q! G1 `8 `. W
我現(xiàn)在舉個(gè)簡(jiǎn)單的例子:比如我們加工棒料是有時(shí)從直徑150車(chē)到100時(shí).如果用G90比較費(fèi)時(shí)間.當(dāng)然電腦編程全部用的是G01.走刀.速度比循環(huán)車(chē)要快.但是程序繁瑣.那我們就用宏程序來(lái)編個(gè)吧.比如我們每刀切削2MM.退刀1MM.
, [2 A8 J( y) }9 nO520 ;6 B+ I* [7 Q, I' F9 x
#501=151 ; 賦值
% ~& K; P5 v4 ]#502=100 ;賦值4 V: Y* E, i8 H' V4 [ [& e- r W" T8 Q
M44 ;
0 G* l1 X8 H F, I. |T0303 M8 ;
3 V1 Y9 h/ p3 j) a# oM3 S450 ;+ a$ i. `9 A% t/ t V1 a
G0 Z5 ;
( S" [. j J6 }" VN1 #501= #501-1. ;X定位點(diǎn)
4 g9 V6 U* U/ l9 J- `6 E) GX#501 ;
0 Y% g4 Q; v( B#501= #501-1. ;X切削點(diǎn)4 T" `8 F! [0 ]- G
G90 X#501 Z-50. F0.2 ;- d* S" T2 k. v# Q. V( j( m
IF [ #501 GE #502 ] GOTO 1當(dāng)#501大于或等于100時(shí)轉(zhuǎn)移到N1.這樣可以使她循環(huán)到我們需要的尺寸.這里我沒(méi)有經(jīng)過(guò)仔細(xì)的計(jì)算是不是剛好到100.這個(gè)可以自己計(jì)算給值.懶得算了.
; j: U3 v1 f# ]* tG0X200. M9 ;. M! s% n' ?! X: g
Z300. M5 ;! X" Y0 a: _7 |$ [1 s6 {9 S$ i' E
M30 ;
2 ~" p/ Q" b5 b%這個(gè)程序走刀基本與G01編程類(lèi)似了.退刀還可以給小點(diǎn).自己改吧' p: N, R/ w# h
小弟不才.以前是種地的.這里搞什么開(kāi)發(fā)區(qū).田被征用了.只有改行了.求指點(diǎn).求指教.$ ~# `6 ~$ C0 \" C
我還編了個(gè)螺紋左右借刀加工的宏程序.看了下資料.了解了下思路.自己整了個(gè).今天沒(méi)時(shí)間了.明天發(fā).個(gè)人覺(jué)得只要把這個(gè)程序看得懂.其他什么橢圓加工神馬的都大同小異了.( D. C; U8 ^7 I& E1 W
& ~8 i) }" m1 o+ E$ F |
|