找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5320|回复: 14

宏程序个人理解.

[复制链接]
发表于 2013-12-13 21:29:02 | 显示全部楼层 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑
2 Z* q6 b' a' w* b. A
" j/ a! x& F; k0 L+ d, R   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..5 K! P/ y! E4 Q* n3 G, F$ L" I  U
   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.
! [! P  j) b" G7 D" E1 E# b; p4 U" P   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..
- e0 I: E  I5 N! b" Z# cFanuc系统的变量由符号#和变量序号组成.如:#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;.
& x7 b& w! E+ p3 c9 `8 A2 z/ P   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.
( ^/ ?9 Q9 _7 ~9 U6 V+ C# L  B类宏赋值:直接赋值例如:#100=100.0
- I* F" F* N  t" j5 D2 Z' Z- `                                                #100=30.+20.
8 R5 U- n$ D# s* L% g; |                    常用混合计算例如:#1=#2+#3*SIN[#4]' S9 e' X( M# J. D
                                           运算次序为:1;函数SIN[#4]& W- i" o7 \& t7 M# s# V2 C
                                                               2;乘和除运算#3*SIN[#4]+ H7 |6 T$ V& E; r: B" f" T
                                                                3:加减运算#2+#3*SIN[#4]   ' k: y5 ~4 G4 G. X
                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]
: }/ P" U" u, B% j( k转移指令GOTO的应用;
# T9 q8 v- `# q, ^( L例如:GOTO100: A, [2 }6 r! n6 r
无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便. 1 p. ^! `2 o, G" `9 ^  P7 n9 _
条件转移例如:IF [ #1 GT #100 ] GOTO 100  
3 D1 @1 z* @9 n$ P3 e4 W" H当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       % q6 m: f" ?6 V: h; A) z" I2 E$ L
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)+ B! ~8 u. y( D# y
                                            ......6 ~  {2 |; g, w5 }( E& r
                                            ENDm;这个比较少用.大概格式就这样了  R/ P0 {! H. l6 k
其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.
: j& a! N, _: @: t+ u我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.
' c0 B! l, G5 Z) A' `* P7 P7 C( AO520 ;
( U. q: K6 j! _* g7 d#501=151 ; 赋值
; m4 ~+ A+ I) n5 @: K- R#502=100 ;赋值2 G% d: z, f1 e/ |
M44 ;& V  c  F# v! F
T0303 M8 ;' f9 K! D/ P, L# h" @1 y
M3 S450 ;
; n; v% ?; b; [G0 Z5 ;
7 O4 \$ X7 _  Y0 z& TN1 #501= #501-1. ;X定位点0 F0 F7 j7 k: \+ S  C  J
X#501 ;   B( K" z# `7 D1 C" @- O. Z! V
#501= #501-1. ;X切削点
" \+ ~: A' B* nG90 X#501 Z-50. F0.2 ;
2 |/ e! f1 G6 V. D" A! DIF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
) }* C1 @5 Y' E% b1 KG0X200. M9 ;& M: J# q5 E6 c- l
Z300. M5  ;4 c( Z; U0 D* R) G8 y
M30 ;
1 M. U1 F* d; S%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧0 e& X* N9 o1 G2 ^$ ]9 |- Q
小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.) ~+ ?& U, C0 {: M! h6 g1 A" ?
我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.
! X" ~8 E6 r- g/ D" q2 S# }5 b7 B* h/ e4 X6 X8 i& W6 J
回复

使用道具 举报

发表于 2013-12-13 22:14:33 | 显示全部楼层
变量,循环,极坐标方程
发表于 2013-12-14 01:29:07 | 显示全部楼层
O520 ;, Y# h* X! t- n! L# p8 q) b
#501=150 ; 赋值  n: W7 ^  B7 L6 A# J. @* L6 M
#502=100 ;赋值
3 _( K% G7 w. r6 r; {) c; ~ M44 ;- k9 ]& ]+ u& N& j5 @
T0303 M8 ;
. H2 ]* v0 S0 D2 E* z+ I9 Q M3 S450 ;
% W: e8 D" u6 f6 i G0 Z5 ;
' t7 d5 s0 _+ n0 n N1;
/ X' Y1 {0 K, c0 ]9 F' G #500= #501+1. ;X定位点 4 D0 R$ X( e1 I; n$ e) W5 H
#501= #501-1. ;X切削点: F8 j2 o  q7 h3 d
G00 X#500 Z5.;" _( Q; C- J2 c% X9 s
G00 X#501;5 {& ~+ j$ o! E4 v& [! }4 V7 e* l
G01 X#501 Z-50. F0.2 ;
* W6 k; T$ x( i# x+ H& g IF [ #501 GT #502 ] GOTO 1;8 u8 Y/ o- B. V4 Z
N2;' n3 ^- |: k4 U( c: `. ^7 r
G0 X101.;
8 \7 \9 Z5 y: O7 T, a# bM9;, A# S3 O0 \" n$ F
G0X200. Z300. M5  ;
* ]0 \' J# Z6 O! p8 W3 ?  u M30 ;
3 e( @+ a* L: C" S# O* J不做车床很多年,看到你的程序,试着编了一下

点评

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,程序中的哪一行是退刀啊?# j& @- W$ C: t3 A6 J
0 K4 j% {& u8 v" i5 V! v
另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?
9 C  a# b: t' p
, q9 _) r+ S0 S6 N7 d

点评

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 | 显示全部楼层
真心没看懂啊,请教楼主
, _2 O) G, S# w" x$ a& ]5 p9 @6 f, s7 J, i& `0 `$ }4 T2 z
O520 ;' c. I0 _$ ?8 e3 E
#501=151 ; 赋值+ n* y2 a8 Z( F8 S  V
#502=100 ;赋值
# i$ T2 e5 E1 a7 Z$ z% |& QM44 ;8 J  w" w1 v1 T8 x) y$ D( V
T0303 M8 ;; m& [5 d) d/ J# o
M3 S450 ;
( `  @7 I% G2 n: C) fG0 Z5 ;9 N$ L# ^- `0 X2 z
N1 #501= #501-1. ;X定位点
9 h6 [+ w9 ^5 M9 n5 N' T0 UX#501 ;
$ q4 I  {! x) ?. f#501= #501-1. ;X切削点
7 I6 M  W' l% U7 @2 `G90 X#501 Z-50. F0.2 ;
3 ]! v9 F  q1 R( c# U; hIF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
# s: f7 l/ h6 e- w0 y- Z. a# ^7 yG0X200. M9 ;
( u! {" |/ _! \, P& d" d5 Q$ _Z300. M5  ;9 F7 M- F# D6 K- ^
M30 ;3 h( B4 W7 @3 {1 J2 i6 i7 h2 Q
4 A* z. j3 W6 `
你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。
, X% r$ c) E! K  F2 \另外循环段里:
9 P, V- S/ O9 ?1 c( oN1 #501= #501-1. ;X定位点    第一次循环#501的值是150
6 T9 {9 e* A4 l# m4 vX#501 ;                                 第一次循环x走到150
7 p: a; L' n' P9 ]: g#501= #501-1. ;X切削点/ J+ Z# r" u( o$ b3 q+ b
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-6-22 08:23 , Processed in 0.093179 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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