机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5071|回复: 14

宏程序个人理解.

[复制链接]
发表于 2013-12-13 21:29:02 | 显示全部楼层 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑
8 F; S6 _$ u/ u7 A  o" n+ o- C, U- Y, Q& z* q% V
   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..2 i, Y2 X3 v! |7 S. n. g
   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.) ]' q- p: W  Z& V+ T
   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..
: }' P( T4 ?8 C. V0 C. LFanuc系统的变量由符号#和变量序号组成.如:#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;.; t2 W2 U# C9 u) T" T$ N, |
   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.. Q* R  b/ d5 w- R1 N
  B类宏赋值:直接赋值例如:#100=100.01 b! c- t: @8 y. i6 w" f- h/ z
                                                #100=30.+20.# \7 ?' l- k4 w  a9 R
                    常用混合计算例如:#1=#2+#3*SIN[#4]
, |  w5 V' G  d* E1 ]. o                                           运算次序为:1;函数SIN[#4]6 V3 }2 W  o. j/ ?
                                                               2;乘和除运算#3*SIN[#4]5 T) l0 {5 _2 T* _4 q* x! K% L, E
                                                                3:加减运算#2+#3*SIN[#4]   " L; C$ Q3 i& F6 d& z
                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]4 W* k+ J  Q8 B0 {, \
转移指令GOTO的应用;3 d+ r2 x/ }% @% e+ Z& `0 M
例如:GOTO100
9 a/ J( t1 s. {  Z无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
. L+ q, ^& D% g8 I条件转移例如:IF [ #1 GT #100 ] GOTO 100  $ ]5 G% M  N+ m6 N) ^4 a
当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       # ^2 l! c: P, w: K( \  u2 f
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....), G; y: G2 S: n( U
                                            ......
1 T& l. r3 Z& o, {: y3 O                                            ENDm;这个比较少用.大概格式就这样了
4 @* c. b0 n+ `7 s4 p+ F4 j# \% L其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.% D' c# ^; f: C# ^5 O6 x
我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.
* ^! u" o! \! HO520 ;
' m! w5 Y5 {" G( c* |#501=151 ; 赋值
4 ~" T6 \5 n' w#502=100 ;赋值' Q. b9 f7 T: a
M44 ;/ w2 s# h" n* e3 t% j
T0303 M8 ;$ _. D% N0 i9 V& }  V
M3 S450 ;
" X4 c7 \) S6 t" E" `5 LG0 Z5 ;. s! q; f+ M" i+ ~1 h0 w2 c  P6 e
N1 #501= #501-1. ;X定位点9 m6 o$ X- z6 t' a6 I6 r
X#501 ;
' r1 V2 j+ l( P: k0 L' t#501= #501-1. ;X切削点7 \' C9 k& o: L! p2 b* _
G90 X#501 Z-50. F0.2 ;
2 W; S2 [7 i# I2 dIF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
4 e" q1 i& D8 yG0X200. M9 ;
+ w" a- [0 i2 ^. R6 I5 l/ CZ300. M5  ;& R' n; ~3 L3 N8 X% ?9 L! E
M30 ;
9 V5 `- f6 r( K& q$ y0 t: J%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧' \; j  b9 h+ |6 M# N" I
小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.
0 W. `4 a! z" j  ^: u9 }& F; s2 T我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.( |& M3 s) f$ f2 A( v
1 N) [7 F7 z7 l* I5 }
回复

使用道具 举报

发表于 2013-12-13 22:14:33 | 显示全部楼层
变量,循环,极坐标方程
回复 支持 反对

使用道具 举报

发表于 2013-12-14 01:29:07 | 显示全部楼层
O520 ;# y$ o& e' \  n+ W7 D% e
#501=150 ; 赋值
+ d+ x. P: D4 g( @$ `7 _6 b #502=100 ;赋值
. s6 P; V7 N3 H, W- T+ c M44 ;/ O1 I- v/ x1 g0 a% i
T0303 M8 ;
+ }; O" V0 E5 g3 V7 ]4 c' ^ M3 S450 ;
  a( E# p* z2 p" Z$ h- r+ v, [ G0 Z5 ;; L" _2 R6 }/ \! f; J  U: g
N1;
6 `3 ?: X/ q. n/ d8 G #500= #501+1. ;X定位点
' w8 V2 a+ l+ f' O#501= #501-1. ;X切削点
- }8 e" J$ P1 Y9 Z4 h; `8 i7 DG00 X#500 Z5.;
1 {3 V! @7 [* ^& j$ x4 WG00 X#501;
3 ~8 D; w+ H! q. ^- E+ ?4 s G01 X#501 Z-50. F0.2 ;4 h4 r% y* ~5 {  C
IF [ #501 GT #502 ] GOTO 1;
3 G% U& V, m7 J' DN2;
2 L1 W. y( b- ^. n7 e& T/ ]. YG0 X101.;
+ Y8 O- Q% ?: [8 x% I; T+ KM9;
5 y* I4 S  n" Z4 N, N6 a- {3 w G0X200. Z300. M5  ;$ c+ h' q" c1 `" p. N# ]6 }2 s
M30 ;
+ h- Q* C" v: n9 G% e7 [不做车床很多年,看到你的程序,试着编了一下

点评

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,程序中的哪一行是退刀啊?. E% j/ c, s/ z' c+ k% E
9 W. G5 B9 m( @6 y: `8 p9 C/ O; J6 p% S8 T
另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?" a0 l0 F5 q9 c+ `  b, _6 A8 T- m

) n  i4 b4 i0 b, u5 |& P/ t

点评

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 | 显示全部楼层
真心没看懂啊,请教楼主8 x: ~; x, ]+ {8 @0 `4 \) w: o
. ~. @2 s, u2 a/ H. O% g; ?
O520 ;9 a; M1 L4 W3 [0 `
#501=151 ; 赋值
3 f, @! p2 e" d" g8 V- P#502=100 ;赋值
5 d- g+ R  R" i: s8 C' _M44 ;# x" w5 g/ y/ {4 \9 ?: a$ t
T0303 M8 ;! k4 [. x5 d7 p# @! r
M3 S450 ;
+ S1 |! x3 i8 t+ OG0 Z5 ;
5 ]+ h! e) H5 p$ g, ^N1 #501= #501-1. ;X定位点( E% }. P% a" M
X#501 ;
  j/ O8 D9 U) w, H3 [#501= #501-1. ;X切削点
; ]1 f+ K( V, `& `" F9 nG90 X#501 Z-50. F0.2 ;/ k  @3 Y$ d- l
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.9 E, i/ f4 l4 C2 j1 w, |# U$ Y' ?6 h
G0X200. M9 ;
" k. \. g5 X) p* u5 t' OZ300. M5  ;! C% h4 ~3 l1 K( Y, \: n, J$ i
M30 ;; q" R  X6 F5 i9 j! \* P
! o1 J4 y2 M" O9 H5 R
你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。1 r# L$ P- ]( r/ M4 ?$ X3 G; Z6 `! l6 d
另外循环段里:0 T6 M8 |# w: |* ^7 q% M' d4 `
N1 #501= #501-1. ;X定位点    第一次循环#501的值是150
9 b/ ^! Q. A+ Z# `( C+ XX#501 ;                                 第一次循环x走到150
' L2 q3 {9 [* V) U1 n3 {#501= #501-1. ;X切削点+ S. s3 a; H3 A5 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-2-19 07:15 , Processed in 0.069671 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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