機(jī)械社區(qū)

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開始

搜索
查看: 4894|回復(fù): 14
打印 上一主題 下一主題

宏程序個(gè)人理解.

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2013-12-13 21:29:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 鄉(xiāng)村非主流 于 2013-12-13 21:34 編輯 ' L! W* E+ R7 ?/ u  I6 j: M

% v( I1 n8 E8 u( G1 D3 ^% y   經(jīng)常會(huì)看到有人發(fā)與宏程序有關(guān)的帖子.不是難度太高就是講得不怎么靠譜.今天講講我自己對(duì)宏程序的理解..0 E" h% y/ l5 ]0 Y2 j0 f. K! {9 o; p
   宏程序一般分為A類和B類.A類宏調(diào)用比較麻煩.B類宏用起來比較方便.類似于C語言.現(xiàn)在的機(jī)床基本上都支持B類宏.
1 I0 |4 p; V: d/ \- V& @   本人只操作過廣數(shù)和Fanuc系統(tǒng).她們宏程序應(yīng)用基本都是一樣的.現(xiàn)在以Fanuc為例說說.本帖目的只在于溝通與探討..- F: l. t9 ~3 J: P# v: t
Fanuc系統(tǒng)的變量由符號(hào)#和變量序號(hào)組成.如:#I(I=1,2,3,...,例如#5, #500, #100等).將跟隨在地址符后的數(shù)值用變量來代替的過程稱為引用變量.例如:G01 X#100 Y-#101 F#102;.當(dāng) #100=100.  #101=50.  #102=80時(shí).上式即代表為:G01 X100. Y-50.  F80;.9 s& I* S* e  }; N7 y
   變量的種類.變量分為局部變量.公共變量.系統(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è)程序過程.當(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以上的變量斷電后不丟失.
! k, h( w$ K$ k, p8 x3 ?& S, A  B類宏賦值:直接賦值例如:#100=100.0
. f3 N+ S& |9 k1 T* }: o# G                                                #100=30.+20.
$ }: w) G6 h' g# B) J                    常用混合計(jì)算例如:#1=#2+#3*SIN[#4]
. c& U6 S( S: B/ T8 u5 a9 c                                           運(yùn)算次序?yàn)椋?;函數(shù)SIN[#4]
8 P9 }8 E  X: I' P3 X7 u. p3 l                                                               2;乘和除運(yùn)算#3*SIN[#4]- l8 r* L* {. y. ~6 p. k( X5 l
                                                                3:加減運(yùn)算#2+#3*SIN[#4]   
! m, ~) R& s) b5 S8 [7 J                                        也可以通過括號(hào)改變運(yùn)算順序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]
0 Z8 o* ~! ?% ^* K  L  P轉(zhuǎn)移指令GOTO的應(yīng)用;
7 J$ n) o6 q6 b, c" V& z) ]1 W* ^例如:GOTO100# w% T' b8 j5 }; Z2 d
無條件轉(zhuǎn)移到N100程序段.用的較多.可以省去了跳段符號(hào).不過很多人習(xí)慣用跳段開關(guān).我比較喜歡這個(gè)方便. 0 `. B$ n( I7 G" N' Y
條件轉(zhuǎn)移例如:IF [ #1 GT #100 ] GOTO 100  0 a" j& D, z# A1 @2 o$ J+ s( K
當(dāng)#1大于#100時(shí)轉(zhuǎn)移到N100程序段.至于什么大于小于這些自己看書去.打字累的慌.       " r( H& N$ ~: a$ m
還有個(gè)循環(huán)指令WHILE[條件式]DOm(m=1.2.3.....)! h. R. l; |3 |# \  I
                                            ......
' S6 L; S* L7 T, ^                                            ENDm;這個(gè)比較少用.大概格式就這樣了/ o1 ^) \: b& K
其實(shí)在實(shí)際加工中宏程序用的比較少.也許是現(xiàn)在很多人不會(huì)用的原因.
. S! M1 G+ d7 o我現(xiàn)在舉個(gè)簡單的例子:比如我們加工棒料是有時(shí)從直徑150車到100時(shí).如果用G90比較費(fèi)時(shí)間.當(dāng)然電腦編程全部用的是G01.走刀.速度比循環(huán)車要快.但是程序繁瑣.那我們就用宏程序來編個(gè)吧.比如我們每刀切削2MM.退刀1MM.
" K$ R3 w/ i9 s6 S: m# D" rO520 ;
; u$ D. ^, K- B2 t$ K#501=151 ; 賦值
2 ~& L4 F+ G1 [#502=100 ;賦值
  P/ ?$ T8 F* z; bM44 ;2 G  _4 Y" z. R4 d/ L) e, `
T0303 M8 ;
/ A! r+ X( q0 I# A/ q7 ?9 j! XM3 S450 ;
- @5 p! K' {  O! M, u& rG0 Z5 ;
$ S/ C. k& x+ D4 k: _. xN1 #501= #501-1. ;X定位點(diǎn)( |0 D" I6 n7 n6 ?. U0 ]( Q; |
X#501 ;   O. ]/ F6 g% v: z! K
#501= #501-1. ;X切削點(diǎn)
8 n8 y* g# V8 w8 J5 C- E9 c0 _G90 X#501 Z-50. F0.2 ;- x/ z) S7 j8 r* |# r
IF [ #501 GE #502 ] GOTO 1當(dāng)#501大于或等于100時(shí)轉(zhuǎn)移到N1.這樣可以使她循環(huán)到我們需要的尺寸.這里我沒有經(jīng)過仔細(xì)的計(jì)算是不是剛好到100.這個(gè)可以自己計(jì)算給值.懶得算了.$ m" e$ ~3 `& ~- y9 X3 f
G0X200. M9 ;* j6 U4 M! j. ^! v  }' K7 C1 W* W
Z300. M5  ;
  s  n& I" t6 s( E/ H; N; L" hM30 ;
/ s# X! A+ B6 {1 M. k%這個(gè)程序走刀基本與G01編程類似了.退刀還可以給小點(diǎn).自己改吧0 @0 J- r% S; K
小弟不才.以前是種地的.這里搞什么開發(fā)區(qū).田被征用了.只有改行了.求指點(diǎn).求指教.* [+ w4 }) ~6 }
我還編了個(gè)螺紋左右借刀加工的宏程序.看了下資料.了解了下思路.自己整了個(gè).今天沒時(shí)間了.明天發(fā).個(gè)人覺得只要把這個(gè)程序看得懂.其他什么橢圓加工神馬的都大同小異了.
+ J& E9 P6 z6 Z7 L, M& u7 [5 q0 T/ I& y/ ~$ _$ Y; @% T4 Y* v
回復(fù)

使用道具 舉報(bào)

2#
發(fā)表于 2013-12-13 22:14:33 | 只看該作者
變量,循環(huán),極坐標(biāo)方程
3#
發(fā)表于 2013-12-14 01:29:07 | 只看該作者
O520 ;$ P% Z% l8 j3 C5 B3 ]* O& O
#501=150 ; 賦值
! @" d! \  I: b; V0 s. w, \ #502=100 ;賦值' n' O7 p& b: w6 H" S6 t
M44 ;: ]. k5 m8 }0 `- {3 i
T0303 M8 ;
  O4 ^4 c& Q8 q- N0 Q M3 S450 ;4 B- N3 D$ O+ B
G0 Z5 ;: D% Z6 v' e$ Q: ?+ g
N1;
! }/ }8 S1 O$ @# c" n6 O #500= #501+1. ;X定位點(diǎn) / l: V5 }1 b0 r- Z% l) b
#501= #501-1. ;X切削點(diǎn)
0 g/ O+ t3 g% x, h% J' f% n7 B$ cG00 X#500 Z5.;
9 P- P3 e; R+ x& fG00 X#501;. F! l. p# t/ _2 g7 n1 ~) z: U
G01 X#501 Z-50. F0.2 ;
! Q& A$ b8 j: \& p- e% I IF [ #501 GT #502 ] GOTO 1;
1 A/ q# V. r$ @$ sN2;
& Y6 L  [0 A8 Q& o, ~( v) H# a6 L1 {G0 X101.;! x; G4 ?: x! `: E% ^9 b9 V) t
M9;# Q+ b+ S' M: q: H4 e* c
G0X200. Z300. M5  ;
& p# a4 u- v8 v2 B! i6 n; f M30 ;
" w* z+ {9 u- }' G5 j- W不做車床很多年,看到你的程序,試著編了一下

點(diǎn)評(píng)

N1,N2,差不多可以理解為只是個(gè)記號(hào),我這么寫實(shí)為了看起來方便,因?yàn)槲疫@個(gè)程序N1,N2之間那部分是循環(huán)部分  發(fā)表于 2013-12-15 05:59
城主的程序就看明白了,不過n2是干嘛用的呢?n1n2單列一行跟放在程序行前面是一樣效果的吧?分號(hào)后面就是注釋?不影響程序運(yùn)行的?  發(fā)表于 2013-12-14 23:37
謝謝分享.我一般不敢走斜線..  發(fā)表于 2013-12-14 18:49
4#
發(fā)表于 2013-12-14 09:59:07 | 只看該作者
樓主指點(diǎn)下,車進(jìn)去2mm退出來1mm,程序中的哪一行是退刀啊?
$ e- W' r0 Q8 {* O- ?9 Y" }* S0 M/ J( S
另外n1是行號(hào)嗎?可以放在任意行的前面,然后goto1就能跳轉(zhuǎn)到n1行?
' s9 ~& i; q2 v9 _% P  @2 w+ O, ^

點(diǎn)評(píng)

GOTO1是這樣理解的..  發(fā)表于 2013-12-14 19:00
首先你要了解G90走刀路線.她是以GO1方式退刀到X定位點(diǎn)的.N1是程序段號(hào).也可以說是行號(hào)吧.可以放在任意行.當(dāng)以這程序?yàn)槔筒恍?因?yàn)镹1行是條件判斷的一個(gè)循環(huán)起點(diǎn).隨便放的話.程序無法循環(huán).更有可能發(fā)生撞到什么...  發(fā)表于 2013-12-14 18:59
5#
發(fā)表于 2013-12-14 11:17:59 來自手機(jī) | 只看該作者
FANUC的宏滾蛋,SINUMERIK的宏才是王道。

點(diǎn)評(píng)

雖然不知道你在說什么.感覺貌似很厲害的樣子.西門子的機(jī)床只用過插齒機(jī).和五軸滾齒機(jī).都是參數(shù)編程.主要是生產(chǎn)恒隆轉(zhuǎn)向器上的臂軸的.沒什么技術(shù)含量.當(dāng)學(xué)徒時(shí)做了一年.  發(fā)表于 2013-12-14 19:11
哈哈,看來你是不懂FANUC了  發(fā)表于 2013-12-14 18:56
6#
發(fā)表于 2013-12-14 23:29:56 | 只看該作者
真心沒看懂啊,請(qǐng)教樓主
  V7 p7 D2 m9 M  V2 R6 t4 J5 g/ H' S; ^+ E0 a9 L, J: t
O520 ;
9 t) z) B3 d- V0 A/ h#501=151 ; 賦值* l/ J/ e  h& v5 g* @& U4 j- V
#502=100 ;賦值* u  h1 |7 m8 K. m5 w  v; y  }
M44 ;
! N% L, H8 N, u# \9 Y6 [T0303 M8 ;
9 J! T' J* f8 o, Z. k# F$ CM3 S450 ;: w+ C$ Y3 ^$ ~: U6 G# v, ~
G0 Z5 ;
: O' G8 B" {  h( z) e+ W: d8 C7 O2 ]N1 #501= #501-1. ;X定位點(diǎn)
- m- X1 P' X! ?- |" oX#501 ;" d' R2 A( x% U  \0 ^
#501= #501-1. ;X切削點(diǎn)8 |: E: W; ^  F' L
G90 X#501 Z-50. F0.2 ;
7 M# g5 x3 v( l( WIF [ #501 GE #502 ] GOTO 1當(dāng)#501大于或等于100時(shí)轉(zhuǎn)移到N1.這樣可以使她循環(huán)到我們需要的尺寸.這里我沒有經(jīng)過仔細(xì)的計(jì)算是不是剛好到100.這個(gè)可以自己計(jì)算給值.懶得算了.
) B3 S' m1 P0 @9 Y1 KG0X200. M9 ;) G8 |! \/ G  d, m+ d
Z300. M5  ;( x7 f* v; k) `( R; v2 ]0 o# ]
M30 ;7 F: |0 e9 d. }9 W/ ?. @6 g* ^& g# U

! D- i0 \9 }, H+ S3 p你的這段程序里z運(yùn)動(dòng)只有一個(gè)z5一個(gè)z-50和最后一個(gè)z300,而且在循環(huán)段里只有一個(gè)z-50,這個(gè)z沒回0啊。* o+ L( J4 i- P/ z+ o* A( v0 ?
另外循環(huán)段里:
4 ^4 |+ Y* n' |N1 #501= #501-1. ;X定位點(diǎn)    第一次循環(huán)#501的值是150
8 v# Q" p& x2 ]$ ^X#501 ;                                 第一次循環(huán)x走到150
9 a9 E* }8 K0 U/ S4 ~3 W: z#501= #501-1. ;X切削點(diǎn)
3 [& l, D. B8 T* z+ K- ]G90 X#501 Z-50. F0.2 ;          第一次循環(huán) 這個(gè)x的值是149,那不是走成錐度了嗎

點(diǎn)評(píng)

這個(gè)G90是單一形固定循環(huán).Z5就是起刀點(diǎn).你把G90這個(gè)指令搞懂了就好理解了.看看書吧.  發(fā)表于 2013-12-15 14:43
7#
發(fā)表于 2013-12-15 12:42:42 | 只看該作者
8#
發(fā)表于 2013-12-15 17:27:15 | 只看該作者
你看人家城主的程序,每車完一刀循環(huán)時(shí)都有一行“G00 X#500 Z5.;”回刀的動(dòng)作,你的程序根本就沒有,還叫我去看g90是什么意思,真無語了!

點(diǎn)評(píng)

這.......還是一句話多看書..  發(fā)表于 2013-12-16 20:40
樓主你不是吧?G90只是絕對(duì)值編程,怎么可能會(huì)退刀到起刀點(diǎn)呢?  發(fā)表于 2013-12-15 21:26
呃....G90會(huì)自動(dòng)退到起刀點(diǎn).比如Z5.X90.起點(diǎn).加工完一刀后她會(huì)自動(dòng)回到Z5.X90...  發(fā)表于 2013-12-15 17:31
9#
發(fā)表于 2013-12-15 17:50:03 | 只看該作者
好像都是很牛的樣子啊
10#
發(fā)表于 2013-12-26 10:50:18 | 只看該作者
即使搞懂了這些,還不夠啊,宏程序水很深,解決問題時(shí)就知道了

點(diǎn)評(píng)

多實(shí)踐.沒事時(shí)自己試著做嘛.  發(fā)表于 2013-12-27 19:57

本版積分規(guī)則

小黑屋|手機(jī)版|Archiver|機(jī)械社區(qū) ( 京ICP備10217105號(hào)-1,京ICP證050210號(hào),浙公網(wǎng)安備33038202004372號(hào) )

GMT+8, 2024-11-18 14:47 , Processed in 0.059132 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表