本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑 5 |7 Q% o2 u: c: X( }
H( d6 c; z7 H- R/ i: e) ]3 Y
经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
: X# r3 Z0 J" E0 }7 C) b: } 宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.$ O/ F2 c7 V# e9 a. w
本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..
% E* x5 m# F3 o sFanuc系统的变量由符号#和变量序号组成.如:#I(I=1,2,3,...,例如#5, #500, #100等).将跟随在地址符后的数值用变量来代替的过程称为引用变量.例如:G01 X#100 Y-#101 F#102;.当 #100=100. #101=50. #102=80时.上式即代表为:G01 X100. Y-50. F80;.7 b: l- o9 c( ]) [" Z4 u
变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失./ [$ P5 G% S0 ?: [
B类宏赋值:直接赋值例如:#100=100.03 g* X! s! r* V
#100=30.+20.
8 m% j- v/ \5 A7 q. M 常用混合计算例如:#1=#2+#3*SIN[#4]
1 u7 w# c( |* j' _. n 运算次序为:1;函数SIN[#4]" j( h' G: s) |; {
2;乘和除运算#3*SIN[#4]
( e! |* `' D3 n% z, A6 r. p2 u 3:加减运算#2+#3*SIN[#4]
" Z( g. w: Z9 @, U 也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ] / #6 ]4 c- O: a% [ M3 Q0 T$ a
转移指令GOTO的应用;
3 p* B% L8 P* ^8 x9 i6 \# W例如:GOTO100
7 @9 A l8 I: z1 }( i! k无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
5 S5 p Z0 I/ {( I3 V条件转移例如:IF [ #1 GT #100 ] GOTO 100
; L. x' ^/ x0 J Q2 }& G当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌. ' U, O( `, A0 Z) r1 X
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)
! g: {* D- p1 B F- u, { ....../ l* \$ U. @/ ^! X9 {
ENDm;这个比较少用.大概格式就这样了% m8 {6 u2 h3 n7 s; m h$ N4 ~8 R* N
其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.7 y6 b9 T, X# H& g9 P
我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.
2 A% P1 x) d8 h. x" I; rO520 ;
& N% g, R: x. _6 @+ |#501=151 ; 赋值
6 X9 J, @/ H' F; a% Y( c+ |#502=100 ;赋值- a2 g. I6 E# I; J' N$ u' r
M44 ;* a+ s2 L1 }0 o3 r+ R4 F1 o& D( z
T0303 M8 ;
# a: T. B0 z: n. l7 n& uM3 S450 ;; I6 t! ^* \; c- `4 O
G0 Z5 ;
( c. f4 {. _- L+ d) c4 ~; M1 BN1 #501= #501-1. ;X定位点( }4 e. z6 u) R6 B8 x2 c
X#501 ; , ^8 c: o$ u7 m+ }
#501= #501-1. ;X切削点
" n& I3 D4 }3 [9 L. ]& qG90 X#501 Z-50. F0.2 ;- m! C+ G. y/ l4 z) b2 N1 Z6 V
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.% H) Y1 w) s' \8 H! ?- r7 a5 Y# q. V
G0X200. M9 ;
3 q8 ^/ _; j3 e& V; j: O0 EZ300. M5 ;
* @6 e" q, [; G' K9 s$ D/ @M30 ;
4 t" W' S$ |4 u. v% h%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
9 P! V$ q3 @$ x+ q* q7 x3 {4 F( c小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教./ k3 g7 l/ O7 `" Y
我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.3 B* r$ D. n* h
4 X2 W" c* z L- o8 Z2 `9 T# n, I, T
|