本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑 + z7 o/ L# N* g r
1 W- r$ {6 s2 L4 x" t" N 经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
- ~- [' i0 Z* p8 A( [ 宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.
0 Y3 c2 p! v. m$ B0 {8 F 本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..
3 o: H2 C# z- N5 v) M, Z) P3 R, F# RFanuc系统的变量由符号#和变量序号组成.如:#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;.
) }! d' o ~. B! T 变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.
$ x9 Z! J! |, W B类宏赋值:直接赋值例如:#100=100.0( d$ `1 I0 ~& D, @8 \, d
#100=30.+20.6 R$ W; E5 c o5 q* p8 i
常用混合计算例如:#1=#2+#3*SIN[#4]) x$ o! l0 p+ v( h& X' j
运算次序为:1;函数SIN[#4]7 s* n4 g9 N$ X" F7 L6 g; ?* W
2;乘和除运算#3*SIN[#4]) {, Y1 d1 B& |+ V) E
3:加减运算#2+#3*SIN[#4] # \: L7 o( p3 D/ s* X5 | T
也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ] / #6 ]! o+ {6 S2 G! b$ H! E
转移指令GOTO的应用;1 l( W; A7 X3 O1 n+ |) @
例如:GOTO100' r& N j6 D" `. w& R0 \
无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
3 e2 ?& d7 G( [ d条件转移例如:IF [ #1 GT #100 ] GOTO 100
8 \/ u6 Y$ J3 Z, l# U/ V当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌. + S- ^7 Q7 H; _: v) `3 s8 u
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)
* n0 y8 x- d2 I ......5 M! ~6 _- c7 J: f0 O+ G1 I
ENDm;这个比较少用.大概格式就这样了
- }1 k# W! S8 @* {% l& t其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.5 n* u) D+ s6 W+ S
我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM., D6 w5 _+ ~& U; O
O520 ;& D" J: v% l7 |
#501=151 ; 赋值
& D4 ^) N1 }% G' A* N#502=100 ;赋值
* V2 j9 O6 q2 nM44 ;. `( o4 ]( E9 X- h) ^: Y, Y
T0303 M8 ;. b: J9 K9 O5 K4 ]
M3 S450 ;
5 H/ E2 L; p, s* d! FG0 Z5 ;
% R5 G+ d3 }& ^& _0 M7 vN1 #501= #501-1. ;X定位点6 j m+ q1 E5 r
X#501 ;
1 o3 g# l) G& ~#501= #501-1. ;X切削点
3 D" ^3 U# y% I: _4 A! ^G90 X#501 Z-50. F0.2 ;, r T/ g) \0 j# j1 x& ?- u
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了. Y2 _& Y- O$ Q! R! b; `3 m( o/ F
G0X200. M9 ;
" D( j* V" A6 o4 x3 F( ~Z300. M5 ;7 q6 M! j' h% e/ t: T, G: U3 X
M30 ;
/ n8 M" `* m8 S: e4 S' }%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
8 w2 A* c% [$ p( {; r4 O小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.
8 X, ~0 j% |' Y, g; J4 e我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.0 g; s# ]" K- q& b8 w P
7 \- s' e9 W+ V/ r0 ~* h+ C |