找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5373|回复: 14

宏程序个人理解.

[复制链接]
发表于 2013-12-13 21:29:02 | 显示全部楼层 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑
) H/ A. I3 a. w) W2 u8 I
- U* `/ b% w6 I$ {   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
; J4 S! D3 m2 I/ W   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.
) `; i! w. q7 g7 J$ j1 }3 @% [   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨... A7 |9 W* E3 a; E0 ~
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;.
! R( c8 S  J  N% J/ ?6 T. d   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.# W8 d6 f8 }+ e# E
  B类宏赋值:直接赋值例如:#100=100.0
% C6 j3 a( n6 _9 p/ F# I6 K                                                #100=30.+20.& d9 D, N/ e0 f) j  D9 u3 m
                    常用混合计算例如:#1=#2+#3*SIN[#4]1 u) L$ v1 ]* @" q" p
                                           运算次序为:1;函数SIN[#4]
4 S+ J2 B4 c5 ^3 }8 g                                                               2;乘和除运算#3*SIN[#4]4 j% Q9 {$ F& P+ b. _
                                                                3:加减运算#2+#3*SIN[#4]   
! A* M% \8 v( [+ `7 Q                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]* A# B: J1 H# A# a+ d( m. `" ]
转移指令GOTO的应用;* K. o9 c% C" a, f( ~' _7 X
例如:GOTO100
+ O, R  d- p0 P  |+ B9 E! V+ U5 N无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
- k" I  G/ \+ P  w) V% w$ [条件转移例如:IF [ #1 GT #100 ] GOTO 100  1 T7 J3 @; S4 Q2 S# N) L
当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       * z4 A" T  y' R
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)
, }3 g1 }! p$ t/ @                                            ......* o# C$ _' T! @5 H- n1 G
                                            ENDm;这个比较少用.大概格式就这样了
9 C$ b$ F( A* x6 h- |: r其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.# O. D2 s0 f" Q
我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.* n; i$ d: k& w
O520 ;
" K# N& G/ Y6 ^# _, l3 m4 P#501=151 ; 赋值
1 ^% ~$ v4 t3 C3 W9 P1 h#502=100 ;赋值( M) M% A( F% D9 k
M44 ;# o) B* n1 Z; s( l& V: K
T0303 M8 ;
2 k  U) t; d9 n+ uM3 S450 ;9 L$ U% q8 U, |( c
G0 Z5 ;
* s2 r5 A/ w, [% B* }% w- C* yN1 #501= #501-1. ;X定位点3 ^7 E: n$ x- |; E3 [. @
X#501 ;
. J2 {& P7 I5 h( M6 l! X& \#501= #501-1. ;X切削点+ r9 i# y; `& H( q$ B
G90 X#501 Z-50. F0.2 ;7 s! Q4 t" S0 ^- i1 X! _# [
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.* n+ G7 ?) G8 l' h( O
G0X200. M9 ;6 u: Q$ [. v( i% k, E
Z300. M5  ;
: y# X! z- I$ nM30 ;# j" w; b9 K8 M+ d0 g  a- J# G& A) X
%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
8 O, L& N# f9 Y. ?! T& G7 ?1 z! ?小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.1 T$ t8 D7 E8 K/ D. F
我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.0 _6 ~( N, U0 o3 t0 ]3 l/ _5 T8 J/ J
1 B/ H0 \. c% [9 j9 }, v1 \
回复

使用道具 举报

发表于 2013-12-13 22:14:33 | 显示全部楼层
变量,循环,极坐标方程
发表于 2013-12-14 01:29:07 | 显示全部楼层
O520 ;
5 A4 F) d+ F: J# P. a3 [1 p #501=150 ; 赋值
# L: W$ `" Q) g. ` #502=100 ;赋值
6 x! d0 K2 n" j) H' U M44 ;2 C! E6 g- g$ z& m# s) c
T0303 M8 ;5 ~: G: u8 d) l9 d3 A4 r
M3 S450 ;
; u* y) w' c0 n1 `8 A9 y; U- u* r G0 Z5 ;& \  i( _- W/ j8 y9 U+ W6 p4 V: T7 u
N1;" q3 s, L' f! T3 @. B
#500= #501+1. ;X定位点
  R$ V8 h/ C) W) N5 k  t#501= #501-1. ;X切削点
5 y' W$ U; t6 b5 L2 WG00 X#500 Z5.;) Z# l9 d1 p7 t) L  K) S. R, O
G00 X#501;
2 Q9 C  d: U; T G01 X#501 Z-50. F0.2 ;
0 q8 j7 t* l0 ~) \  w: S IF [ #501 GT #502 ] GOTO 1;
" A5 @' p' H2 [N2;* n$ {: o1 F" G7 A( b8 O
G0 X101.;  ]! @+ A5 t8 Q/ a, Y
M9;
% Q% q7 H" Y6 Z6 a. T5 t% F8 b8 [ G0X200. Z300. M5  ;
; l% T* _. |  v! J8 ?/ ]& s M30 ;8 m& v$ a2 D. |: a, H
不做车床很多年,看到你的程序,试着编了一下

点评

N1,N2,差不多可以理解为只是个记号,我这么写实为了看起来方便,因为我这个程序N1,N2之间那部分是循环部分  发表于 2013-12-15 05:59
城主的程序就看明白了,不过n2是干嘛用的呢?n1n2单列一行跟放在程序行前面是一样效果的吧?分号后面就是注释?不影响程序运行的?  发表于 2013-12-14 23:37
谢谢分享.我一般不敢走斜线..  发表于 2013-12-14 18:49
发表于 2013-12-14 09:59:07 | 显示全部楼层
楼主指点下,车进去2mm退出来1mm,程序中的哪一行是退刀啊?
' R) S  r) V/ x" v8 v( V8 j# I# o7 y7 i6 K/ B8 y
另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?9 z& S8 ^: g2 }- A8 F+ J
. h2 V* _( l+ n

点评

GOTO1是这样理解的..  发表于 2013-12-14 19:00
首先你要了解G90走刀路线.她是以GO1方式退刀到X定位点的.N1是程序段号.也可以说是行号吧.可以放在任意行.当以这程序为例就不行.因为N1行是条件判断的一个循环起点.随便放的话.程序无法循环.更有可能发生撞到什么...  发表于 2013-12-14 18:59
发表于 2013-12-14 11:17:59 来自手机 | 显示全部楼层
FANUC的宏滚蛋,SINUMERIK的宏才是王道。

点评

虽然不知道你在说什么.感觉貌似很厉害的样子.西门子的机床只用过插齿机.和五轴滚齿机.都是参数编程.主要是生产恒隆转向器上的臂轴的.没什么技术含量.当学徒时做了一年.  发表于 2013-12-14 19:11
哈哈,看来你是不懂FANUC了  发表于 2013-12-14 18:56
发表于 2013-12-14 23:29:56 | 显示全部楼层
真心没看懂啊,请教楼主' l* m7 V/ G# t$ h. D
& u1 Q9 d1 p$ K
O520 ;
0 H3 L8 s% c7 E6 Q#501=151 ; 赋值2 Q" M2 C5 C  N: o2 n: U: l4 W; `( E; {
#502=100 ;赋值
' T% u, |/ l. ^9 BM44 ;$ m" x6 E- i5 L% E/ u, w2 ?3 A
T0303 M8 ;+ u  X) j2 T/ q$ G4 Y/ ]
M3 S450 ;# j$ m; n9 f6 q  F* u3 [
G0 Z5 ;! I' K3 J" w" @% j& F  U
N1 #501= #501-1. ;X定位点+ N6 w* Y( ?5 R/ T- \
X#501 ;  _2 E% x8 I2 g; ?) {. T: r3 _' _
#501= #501-1. ;X切削点4 M' \1 E7 _% x
G90 X#501 Z-50. F0.2 ;% V. R& Q9 ~5 w7 Z3 Q& M
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.7 ~# T5 {7 Y+ o' \! P* \! d* T
G0X200. M9 ;
' u4 {) ]: }: e2 u* ?2 w. Z' q5 wZ300. M5  ;/ V; Z5 _( V1 W4 X" D; W' y, i0 S( o
M30 ;
. w/ q* W- B2 v2 N/ J, M- @: G3 R/ F
( Y8 c# C/ O. k4 H你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。
4 O) z5 G+ a1 o8 t! K7 ]) p2 P( ~另外循环段里:
* Y6 O6 H0 T' }, ~% nN1 #501= #501-1. ;X定位点    第一次循环#501的值是150" b# b* x! M7 v0 i9 F( |3 U
X#501 ;                                 第一次循环x走到150
* c; C1 P# Z7 F9 q, `. s2 f* s#501= #501-1. ;X切削点( E) j# A  x3 a# o7 [5 R0 d; t
G90 X#501 Z-50. F0.2 ;          第一次循环 这个x的值是149,那不是走成锥度了吗

点评

这个G90是单一形固定循环.Z5就是起刀点.你把G90这个指令搞懂了就好理解了.看看书吧.  发表于 2013-12-15 14:43
发表于 2013-12-15 12:42:42 | 显示全部楼层
发表于 2013-12-15 17:27:15 | 显示全部楼层
你看人家城主的程序,每车完一刀循环时都有一行“G00 X#500 Z5.;”回刀的动作,你的程序根本就没有,还叫我去看g90是什么意思,真无语了!

点评

这.......还是一句话多看书..  发表于 2013-12-16 20:40
楼主你不是吧?G90只是绝对值编程,怎么可能会退刀到起刀点呢?  发表于 2013-12-15 21:26
呃....G90会自动退到起刀点.比如Z5.X90.起点.加工完一刀后她会自动回到Z5.X90...  发表于 2013-12-15 17:31
发表于 2013-12-15 17:50:03 | 显示全部楼层
好像都是很牛的样子啊
发表于 2013-12-26 10:50:18 | 显示全部楼层
即使搞懂了这些,还不够啊,宏程序水很深,解决问题时就知道了

点评

多实践.没事时自己试着做嘛.  发表于 2013-12-27 19:57
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-8-5 10:31 , Processed in 0.117455 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表