機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

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

宏程序個人理解.

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2013-12-13 21:29:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 鄉(xiāng)村非主流 于 2013-12-13 21:34 編輯
7 f; U3 |2 e) w' y. p* j+ {0 \5 G! i, `9 {& S
   經(jīng)常會看到有人發(fā)與宏程序有關(guān)的帖子.不是難度太高就是講得不怎么靠譜.今天講講我自己對宏程序的理解..
% O+ @; ?! m- B4 B! l# p/ x   宏程序一般分為A類和B類.A類宏調(diào)用比較麻煩.B類宏用起來比較方便.類似于C語言.現(xiàn)在的機床基本上都支持B類宏.
6 a  R$ @7 z6 `7 O; E   本人只操作過廣數(shù)和Fanuc系統(tǒng).她們宏程序應(yīng)用基本都是一樣的.現(xiàn)在以Fanuc為例說說.本帖目的只在于溝通與探討..6 k* V3 e# [1 ^
Fanuc系統(tǒng)的變量由符號#和變量序號組成.如:#I(I=1,2,3,...,例如#5, #500, #100等).將跟隨在地址符后的數(shù)值用變量來代替的過程稱為引用變量.例如:G01 X#100 Y-#101 F#102;.當(dāng) #100=100.  #101=50.  #102=80時.上式即代表為:G01 X100. Y-50.  F80;.
% |$ O6 r; t! A5 L7 V' S; S0 s   變量的種類.變量分為局部變量.公共變量.系統(tǒng)變量.局部變量(#1-#33)是在宏程序中局部使用的變量.當(dāng)1號宏程序調(diào)用2號宏程序且都有變量#1時,由于變量#1服務(wù)于不同的局部.所以1號程序中的#1與2號程序中的#1不是同一個變量.因此可以賦予不同的值.互不影響.公共變量(#100-#149,#500-#549)貫穿于整個程序過程.當(dāng)宏程序1調(diào)用宏程序2時.且都有#100變量時.由于#100是公共變量.所以1中的#100與2中的#100都是同一個變量.系統(tǒng)變量是指有固定用途的變量.她的值決定系統(tǒng)的狀態(tài).包括刀具偏置變量.接口輸入.輸出信號變量.及位置信號變量等等..(系統(tǒng)變量這塊還搞不懂.有的是生產(chǎn)廠家定的.希望有人能夠指點指點).宏程序通常使用局部變量和公共變量.#500以上的變量斷電后不丟失.
; v% k0 r  u* q  B類宏賦值:直接賦值例如:#100=100.0
. l9 _% a$ t+ C: ]9 y                                                #100=30.+20.# C" i: l1 s" d
                    常用混合計算例如:#1=#2+#3*SIN[#4]" \% l9 g! S- E
                                           運算次序為:1;函數(shù)SIN[#4]4 _$ G9 T% j; J8 i, K3 M% n  K
                                                               2;乘和除運算#3*SIN[#4]; A1 X* l. w% J$ E
                                                                3:加減運算#2+#3*SIN[#4]   9 U" n! M, J" L9 L
                                        也可以通過括號改變運算順序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]% C. l+ x* Y$ [
轉(zhuǎn)移指令GOTO的應(yīng)用;
' I( M, m# L' h例如:GOTO100
! t8 a' S0 z( s- U1 r9 u+ u: g無條件轉(zhuǎn)移到N100程序段.用的較多.可以省去了跳段符號.不過很多人習(xí)慣用跳段開關(guān).我比較喜歡這個方便. $ Q5 A5 }8 z* B0 P
條件轉(zhuǎn)移例如:IF [ #1 GT #100 ] GOTO 100  
7 c5 S/ o+ c, d0 _! Y  z當(dāng)#1大于#100時轉(zhuǎn)移到N100程序段.至于什么大于小于這些自己看書去.打字累的慌.       # y, e9 H) L4 N7 |0 b$ x
還有個循環(huán)指令WHILE[條件式]DOm(m=1.2.3.....)4 c. J$ n: ?( I, @8 G& |# x% D/ D
                                            ......6 O3 B2 ^2 c; d1 X# e3 i: `4 V- k9 a
                                            ENDm;這個比較少用.大概格式就這樣了
* i* i, i* Z7 ~3 Y  \其實在實際加工中宏程序用的比較少.也許是現(xiàn)在很多人不會用的原因.
6 k/ R2 f, b" S. Q6 R, O, h我現(xiàn)在舉個簡單的例子:比如我們加工棒料是有時從直徑150車到100時.如果用G90比較費時間.當(dāng)然電腦編程全部用的是G01.走刀.速度比循環(huán)車要快.但是程序繁瑣.那我們就用宏程序來編個吧.比如我們每刀切削2MM.退刀1MM.
! k, d, x6 v7 f/ n/ xO520 ;3 }3 |1 B3 X# [9 v) j3 f* P
#501=151 ; 賦值% m# \4 i* G  a' J
#502=100 ;賦值; x* ]5 l9 Z  a! D* V6 ]  w7 d# X
M44 ;. ]3 O! w+ v, I+ e( i! W* s" q1 {" A9 o
T0303 M8 ;
" ~* T8 W( _. s2 o: e! BM3 S450 ;3 n: U+ q9 {3 h8 m  p
G0 Z5 ;1 v( d2 i: f! S- B! k$ g
N1 #501= #501-1. ;X定位點5 o2 f8 Y) E/ R8 Q) X+ o( z6 `
X#501 ;
3 R  ^+ s' Q  j#501= #501-1. ;X切削點% ]3 Y1 t; U, \: y% |1 C1 N
G90 X#501 Z-50. F0.2 ;
( g$ m6 a/ F$ I0 `$ j$ r7 w' yIF [ #501 GE #502 ] GOTO 1當(dāng)#501大于或等于100時轉(zhuǎn)移到N1.這樣可以使她循環(huán)到我們需要的尺寸.這里我沒有經(jīng)過仔細(xì)的計算是不是剛好到100.這個可以自己計算給值.懶得算了.
$ K. H% p* Z0 a) Y& O1 D3 {; x$ B- JG0X200. M9 ;& y2 f- M  l4 R! M
Z300. M5  ;
- r0 ]& K) p7 YM30 ;& D% B* i) O3 o7 u( |+ T
%這個程序走刀基本與G01編程類似了.退刀還可以給小點.自己改吧
" x3 |% C; `5 b! L4 p小弟不才.以前是種地的.這里搞什么開發(fā)區(qū).田被征用了.只有改行了.求指點.求指教.
) e3 p- ]; b9 t我還編了個螺紋左右借刀加工的宏程序.看了下資料.了解了下思路.自己整了個.今天沒時間了.明天發(fā).個人覺得只要把這個程序看得懂.其他什么橢圓加工神馬的都大同小異了.8 r6 |. `/ f! D6 G
8 F4 P- x: r. ]  y% C: [
回復(fù)

使用道具 舉報

2#
發(fā)表于 2013-12-13 22:14:33 | 只看該作者
變量,循環(huán),極坐標(biāo)方程
回復(fù) 支持 反對

使用道具 舉報

3#
發(fā)表于 2013-12-14 01:29:07 | 只看該作者
O520 ;. @  X) k3 Z5 \- W
#501=150 ; 賦值
4 Z" c, A* }# h. F' t0 s7 \# ? #502=100 ;賦值
/ C$ U5 w8 k7 F3 b M44 ;* V5 X! i' g1 ]0 \7 ]: A+ a
T0303 M8 ;
0 ~; l6 Q( W( o5 e! \4 p M3 S450 ;
. L: J7 U# T5 o) X4 q+ z) n1 R+ } G0 Z5 ;. r: J( w* Z" R: r6 L4 F
N1;
3 U: I* \+ r- L #500= #501+1. ;X定位點
% I- ?2 t4 [( c2 e& g0 k( y) j#501= #501-1. ;X切削點8 D  J" |4 n9 S
G00 X#500 Z5.;; i; }1 x9 W% I1 s6 j; ~: p+ \2 K
G00 X#501;
3 V3 {" {. Q7 i' z: M) U G01 X#501 Z-50. F0.2 ;
: x: m; b/ B% L4 h5 d& v IF [ #501 GT #502 ] GOTO 1;! B% {) E# e' x8 v
N2;7 O2 S# J  D4 w/ p% L% \3 k
G0 X101.;8 C; C3 d# y% r$ A
M9;+ \+ L2 l3 R7 J1 S1 v/ t2 v) i# ^
G0X200. Z300. M5  ;/ R4 t$ d9 p, U8 Y
M30 ;
- E' z. E- G- y2 B不做車床很多年,看到你的程序,試著編了一下

點評

N1,N2,差不多可以理解為只是個記號,我這么寫實為了看起來方便,因為我這個程序N1,N2之間那部分是循環(huán)部分  發(fā)表于 2013-12-15 05:59
城主的程序就看明白了,不過n2是干嘛用的呢?n1n2單列一行跟放在程序行前面是一樣效果的吧?分號后面就是注釋?不影響程序運行的?  發(fā)表于 2013-12-14 23:37
謝謝分享.我一般不敢走斜線..  發(fā)表于 2013-12-14 18:49
回復(fù) 支持 反對

使用道具 舉報

4#
發(fā)表于 2013-12-14 09:59:07 | 只看該作者
樓主指點下,車進去2mm退出來1mm,程序中的哪一行是退刀。1 o% T+ l6 u+ u0 ]

/ q, K" p3 I* p, r: b; j% ^另外n1是行號嗎?可以放在任意行的前面,然后goto1就能跳轉(zhuǎn)到n1行?, A  t- i9 X9 Y% u

; O2 {- R& k7 A0 I. V7 j. F

點評

GOTO1是這樣理解的..  發(fā)表于 2013-12-14 19:00
首先你要了解G90走刀路線.她是以GO1方式退刀到X定位點的.N1是程序段號.也可以說是行號吧.可以放在任意行.當(dāng)以這程序為例就不行.因為N1行是條件判斷的一個循環(huán)起點.隨便放的話.程序無法循環(huán).更有可能發(fā)生撞到什么...  發(fā)表于 2013-12-14 18:59
回復(fù) 支持 反對

使用道具 舉報

5#
發(fā)表于 2013-12-14 11:17:59 來自手機 | 只看該作者
FANUC的宏滾蛋,SINUMERIK的宏才是王道。

點評

雖然不知道你在說什么.感覺貌似很厲害的樣子.西門子的機床只用過插齒機.和五軸滾齒機.都是參數(shù)編程.主要是生產(chǎn)恒隆轉(zhuǎn)向器上的臂軸的.沒什么技術(shù)含量.當(dāng)學(xué)徒時做了一年.  發(fā)表于 2013-12-14 19:11
哈哈,看來你是不懂FANUC了  發(fā)表于 2013-12-14 18:56
回復(fù) 支持 反對

使用道具 舉報

6#
發(fā)表于 2013-12-14 23:29:56 | 只看該作者
真心沒看懂啊,請教樓主& r, ]  n. O. z/ z7 E
* a6 Z" m& f, n) q
O520 ;' Q6 [  d/ |) C# s  s, |/ ~
#501=151 ; 賦值% f; s. b& a9 R" ~6 d8 ^
#502=100 ;賦值
% s' H3 Z, v4 ?) {M44 ;( g2 s- t9 Z2 ?/ K6 n5 a( t& s) u* ]
T0303 M8 ;6 f4 p) Q4 s* ^3 L2 S
M3 S450 ;
/ n0 S8 t/ B0 O6 V# w2 [G0 Z5 ;* q3 E5 C  k. S
N1 #501= #501-1. ;X定位點
) L3 Q* O# w- K, b2 K7 |& H+ D4 @X#501 ;( @* w( M0 G( N; O& j8 }, `( H
#501= #501-1. ;X切削點
. G* w1 o" o) ^2 K$ W6 rG90 X#501 Z-50. F0.2 ;! u) W% w2 S9 W4 a1 i
IF [ #501 GE #502 ] GOTO 1當(dāng)#501大于或等于100時轉(zhuǎn)移到N1.這樣可以使她循環(huán)到我們需要的尺寸.這里我沒有經(jīng)過仔細(xì)的計算是不是剛好到100.這個可以自己計算給值.懶得算了.3 b& g: |8 s: ?" r2 x5 u& {( a! {3 i
G0X200. M9 ;8 Z" o# {9 T; m0 F
Z300. M5  ;/ ?" h/ s3 V1 t( c
M30 ;
# z% g& J' z( G% a7 B: @& c- q' A1 t, m4 u4 l
你的這段程序里z運動只有一個z5一個z-50和最后一個z300,而且在循環(huán)段里只有一個z-50,這個z沒回0啊。
( M9 s5 Z9 `5 n" Q* N' [1 i* W另外循環(huán)段里:
6 q7 _3 R# [% Q$ g6 I+ WN1 #501= #501-1. ;X定位點    第一次循環(huán)#501的值是150
+ m6 m# h( Y1 rX#501 ;                                 第一次循環(huán)x走到150
1 c- a9 v" a. i$ G; d+ L; Q6 f#501= #501-1. ;X切削點5 f3 k/ w3 }$ W" y( p$ k
G90 X#501 Z-50. F0.2 ;          第一次循環(huán) 這個x的值是149,那不是走成錐度了嗎

點評

這個G90是單一形固定循環(huán).Z5就是起刀點.你把G90這個指令搞懂了就好理解了.看看書吧.  發(fā)表于 2013-12-15 14:43
回復(fù) 支持 反對

使用道具 舉報

7#
發(fā)表于 2013-12-15 12:42:42 | 只看該作者
回復(fù) 支持 反對

使用道具 舉報

8#
發(fā)表于 2013-12-15 17:27:15 | 只看該作者
你看人家城主的程序,每車完一刀循環(huán)時都有一行“G00 X#500 Z5.;”回刀的動作,你的程序根本就沒有,還叫我去看g90是什么意思,真無語了!

點評

這.......還是一句話多看書..  發(fā)表于 2013-12-16 20:40
樓主你不是吧?G90只是絕對值編程,怎么可能會退刀到起刀點呢?  發(fā)表于 2013-12-15 21:26
呃....G90會自動退到起刀點.比如Z5.X90.起點.加工完一刀后她會自動回到Z5.X90...  發(fā)表于 2013-12-15 17:31
回復(fù) 支持 反對

使用道具 舉報

9#
發(fā)表于 2013-12-15 17:50:03 | 只看該作者
好像都是很牛的樣子啊
回復(fù) 支持 反對

使用道具 舉報

10#
發(fā)表于 2013-12-26 10:50:18 | 只看該作者
即使搞懂了這些,還不夠啊,宏程序水很深,解決問題時就知道了

點評

多實踐.沒事時自己試著做嘛.  發(fā)表于 2013-12-27 19:57
回復(fù) 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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