本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑
# O2 s0 R4 y) H k3 C- A4 @1 s& z5 t
经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
. H5 V% o- s5 }+ @+ l: u 宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.( k6 o+ e3 E6 d5 D5 X
本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..
+ T# J3 k9 g g5 A$ ?2 yFanuc系统的变量由符号#和变量序号组成.如:#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;.: ~: v* _0 x7 a3 W& q
变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.
' E" L$ j. W3 o B类宏赋值:直接赋值例如:#100=100.0; d" k* t- D o/ Q: i! ?
#100=30.+20.
6 d$ E. `1 h% b 常用混合计算例如:#1=#2+#3*SIN[#4]$ Z0 X f" @# ]" ^
运算次序为:1;函数SIN[#4]
7 p* H. E* ]0 c# m( y8 `& G/ D. ~ 2;乘和除运算#3*SIN[#4]- C4 K; ^# i0 J; t U& M1 R- a
3:加减运算#2+#3*SIN[#4]
3 v1 y$ C1 e& @8 q, U% z 也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ] / #6 ]
8 z3 b) {) [0 _. K0 G5 C4 H转移指令GOTO的应用;
$ Z. s4 m+ H1 ^, L; {8 c例如:GOTO100
5 @; w5 k$ p+ Z% U7 Q无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
5 D; I1 V# v3 x% H5 |! C条件转移例如:IF [ #1 GT #100 ] GOTO 100 * g& E$ P5 n* O! V' o$ }5 T1 b
当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.
+ [7 }; m( f' Z" s0 j还有个循环指令WHILE[条件式]DOm(m=1.2.3.....), J* E; n3 d* r9 f$ W2 j
......
5 z8 B* w' b0 w# P ENDm;这个比较少用.大概格式就这样了7 v( W, }* M" D) K' D. L
其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.
+ i0 I' t7 K: a5 Y我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.. u+ h7 s+ r9 H! P8 @
O520 ;* q) _) q [! ^9 {; g
#501=151 ; 赋值
7 \0 _( }+ b, `: w, l- H#502=100 ;赋值
: a1 R! i" I# {. x* Y O7 X& C8 ~M44 ;" Z" b+ i& |9 K& C2 C+ r" ^
T0303 M8 ;( ?8 B: T& w7 N, M
M3 S450 ;" R$ R$ C3 k+ Q" r
G0 Z5 ;
, Q! X9 K* h: X8 V- q4 z0 uN1 #501= #501-1. ;X定位点4 o. {3 H; o6 m V6 Q G) x* q
X#501 ;
) S1 `3 G) I- J% x" @' @#501= #501-1. ;X切削点* B; r7 _4 @) l0 W; e( i. r. w
G90 X#501 Z-50. F0.2 ;
d1 I5 N$ E( m6 lIF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
3 A0 w; G! n. t! dG0X200. M9 ;7 Q/ N& k9 {; z/ z6 f: V
Z300. M5 ;
9 x, y( [6 C: C: Y/ sM30 ;* l5 i* ?: R* E+ i4 M8 @
%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧. h* b, x3 n g* w
小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.' ?# Y" D& L: H# f; Y- a
我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.
% `* Y% M" F+ `2 t
# i" Q* ]& L9 x5 D: n1 ~ |