本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑
& a# B+ x, v$ f+ q3 i8 u: W3 ]' U
2 f* V: a1 j! }- M. _2 a 经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
$ o# @1 F- v, ^1 h8 i 宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.
, M; H( f0 z0 a( [8 v 本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..2 I" E- l" y3 j$ [1 ~$ Z! U
Fanuc系统的变量由符号#和变量序号组成.如:#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;.
3 U$ d, Q1 g5 B# ?5 O# W& ]+ ^6 L" T7 [ 变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.
/ l: r& Q8 w+ o, B; E B类宏赋值:直接赋值例如:#100=100.07 |) V6 Q; w' v4 `9 E$ o
#100=30.+20.9 c8 m( o. U6 W7 e7 S' `" S
常用混合计算例如:#1=#2+#3*SIN[#4]
( e/ @9 s- |/ G: H% ]- m 运算次序为:1;函数SIN[#4]$ I# v5 }- b' X. [9 h, L
2;乘和除运算#3*SIN[#4]4 W O1 J1 ?& `% F; ]
3:加减运算#2+#3*SIN[#4]
' N0 W: D; I1 S& o+ R 也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ] / #6 ]& j# f4 C. q" P) p' u4 H/ o1 T$ `
转移指令GOTO的应用;
/ [$ J' j. y9 P$ M& o例如:GOTO100
1 A y. d5 |8 z0 V/ U/ n+ a无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
8 p5 H" N# T5 b( s" G( {6 V条件转移例如:IF [ #1 GT #100 ] GOTO 100 $ z7 ^( `* a# F" [
当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.
) Q% r( z+ U' N1 W2 v# {" A6 T W, q还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)
) d/ w' Y7 z; d ......2 @5 K7 U- u# S9 s- T2 A
ENDm;这个比较少用.大概格式就这样了
0 q0 D" @# g) \! G! g其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.
# N3 `( ]6 z* ? L我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.' d/ g6 w2 X8 b4 z, i- S
O520 ;8 C% H! Y, b( s5 m9 Y/ S0 T
#501=151 ; 赋值
3 z) z5 `! i. R) L* H#502=100 ;赋值1 M; J3 i$ o" w7 i. m
M44 ;
+ R- ]! I* x' V- k9 ET0303 M8 ;
" _' P) ]( K. I/ y aM3 S450 ;- ]6 _) I+ p- [8 B) Z( z
G0 Z5 ;7 K c1 z# ^, [' Z. z: t, ]. P5 U
N1 #501= #501-1. ;X定位点; W. k: d) Z0 q: L
X#501 ; # v8 p5 O2 ?) ]# N: h9 v9 R: A
#501= #501-1. ;X切削点
) y' t5 h7 u8 kG90 X#501 Z-50. F0.2 ;
! n. n! M# o; Y O" ?IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.5 Y3 |) a; n+ o! T0 ]2 g' u$ `$ H
G0X200. M9 ;- s4 u0 l8 ]7 L+ F/ Q
Z300. M5 ;4 j8 `7 v2 e" J, p: g- X" D
M30 ;+ M1 j1 y' k9 [
%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
9 [, f" R7 x, v小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教. S1 y0 S% Q8 y
我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.
' y% c" R* S1 Y6 F! j( D- ~2 A+ g* i( v4 n
|