找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5449|回复: 14

宏程序个人理解.

  [复制链接]
发表于 2013-12-13 21:29:02 | 显示全部楼层 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑 3 |$ [2 j+ G5 e: F8 |

4 e' H2 ~, I+ D   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
' x3 K. J* Q* E6 N. G   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.. U3 p5 W9 f. Y! u, ^
   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..
  @& G( ^% S% x6 U5 |6 \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;.+ N1 [% o' F2 f( E( B
   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.
" D2 V8 [5 n- x0 n* p  B类宏赋值:直接赋值例如:#100=100.0
6 f* I9 Z* H9 p+ W8 r4 ?9 f/ ~4 L3 n                                                #100=30.+20.
5 ~0 v) F& C8 Y; v+ ]                    常用混合计算例如:#1=#2+#3*SIN[#4]6 j3 U  L% @% H# P) L- O
                                           运算次序为:1;函数SIN[#4]( [; j; B$ V+ |# ?6 I
                                                               2;乘和除运算#3*SIN[#4]
/ C5 g, h6 n) N/ @" R) S                                                                3:加减运算#2+#3*SIN[#4]   8 d8 z( p7 c9 x5 n
                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]
  x" C3 }0 \0 T转移指令GOTO的应用;
; ?4 e. O8 K" t; y9 R+ h: ~例如:GOTO100
% q# I1 c" M* P! |% Z& C无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
+ W( e& z9 a) @: M0 v" Y5 d条件转移例如:IF [ #1 GT #100 ] GOTO 100  
  i3 X( \; C( b; r6 o0 Y4 y2 }当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       9 `0 e) b+ o2 `# q- T8 @
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)" K! y5 M) J" E3 D! i& }) ?6 A
                                            ......
" z1 X* B& O" I- x6 C8 S                                            ENDm;这个比较少用.大概格式就这样了
- F/ g8 C% w8 F6 ~3 g4 X其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.
8 f0 C+ ?' x0 K% v' B6 v  g我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.0 B7 {4 b5 p* \0 ^
O520 ;+ F6 g1 p7 b( [
#501=151 ; 赋值
/ r7 i/ u6 W  _2 G7 N, X- V$ \#502=100 ;赋值& Y$ G8 e& c5 l0 J6 i, N  N
M44 ;4 x1 B4 @( C+ a# r- W) \+ Y; t7 l8 y
T0303 M8 ;
  D3 _. l+ V% w& Z! d; YM3 S450 ;
# Q! [! v( c* Y3 ~8 v4 SG0 Z5 ;
9 i5 j; J; b' T6 c# ~  |- h# G  nN1 #501= #501-1. ;X定位点
" x- c; _0 R# z; j. [1 n( }* SX#501 ; 1 `  D$ D+ u0 r$ f% d
#501= #501-1. ;X切削点
/ u* y3 }% m* W9 M% t6 ]G90 X#501 Z-50. F0.2 ;1 Z/ @- U" U3 \6 I6 }- V0 R1 O
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
/ u0 d, h( A, `  _' uG0X200. M9 ;
" J) y/ x% x, A- d' }Z300. M5  ;1 T9 M; x; r, h; K
M30 ;) z8 |) K- I4 [' N
%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
6 y$ J, R3 s5 x9 X" |7 ~小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.3 H) Z) s) n/ b2 a$ o7 X
我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.
7 @& C- B$ @5 m7 d1 @9 I
# F( R. H* s% ?/ I
回复

使用道具 举报

发表于 2013-12-13 22:14:33 | 显示全部楼层
变量,循环,极坐标方程
发表于 2013-12-14 01:29:07 | 显示全部楼层
O520 ;* F  }+ u- A3 M( `
#501=150 ; 赋值
9 M5 y& W0 b$ Z) D$ Z3 y2 b# _ #502=100 ;赋值4 [6 V$ D8 q# R+ y2 L
M44 ;
3 `! }& o  P4 k0 ~# D1 x" Q! f/ y4 K T0303 M8 ;9 I, w  P3 n3 j( c! z' z% J
M3 S450 ;$ j, U3 J% x3 w/ E6 v
G0 Z5 ;
2 x( ?: n1 h6 s# s! H N1;
* C# H4 J9 n1 U  A #500= #501+1. ;X定位点
1 b$ H- `4 n' |. H* I! Z#501= #501-1. ;X切削点
) e. f6 W: ?; a1 }G00 X#500 Z5.;; V1 x3 I- n# w8 ?
G00 X#501;& o1 ?" N2 ]- M3 w8 R& h
G01 X#501 Z-50. F0.2 ;# h0 _' Q- K6 k" Q9 ^
IF [ #501 GT #502 ] GOTO 1;# h1 [+ `# `% w- m0 P2 b
N2;% ^# [2 n6 k8 S: B+ V4 z0 {& {, g
G0 X101.;9 ^+ m* K) \( {
M9;
& R5 \+ Y' j2 V& N7 @! q; s G0X200. Z300. M5  ;7 v# u  [/ K! r: K# V3 Q* n9 {& u2 |
M30 ;
, y# k$ u; a, p2 }不做车床很多年,看到你的程序,试着编了一下

点评

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,程序中的哪一行是退刀啊?1 o3 A/ F* _( i# Z, J& h

& G, D+ o/ L8 z0 E另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?
8 ~; M& r% |1 s6 F& }2 x0 r" `( |6 j' y# O

点评

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 | 显示全部楼层
真心没看懂啊,请教楼主$ p( O, V* `, D* ]$ j

8 r# L7 H8 M7 r" a% hO520 ;- y/ z4 I) _: W; m
#501=151 ; 赋值
# w$ w6 r. g( E; t4 o" ]7 R#502=100 ;赋值
& J( \% ]7 s3 v7 |3 d0 T( z; b6 `M44 ;
& i* c( w, |# I. [9 FT0303 M8 ;+ z( h3 e4 T9 F0 x4 e
M3 S450 ;# s8 z  W! k: D/ J* M: y' e
G0 Z5 ;( j" t3 }: Z3 b" d4 i9 f) P
N1 #501= #501-1. ;X定位点
7 i6 ?. V2 ]: J0 DX#501 ;  Z- m, X+ M3 Q& [8 r
#501= #501-1. ;X切削点
; l, M6 P6 U7 [/ `6 `6 A* gG90 X#501 Z-50. F0.2 ;4 @7 X- x% r" H3 i: U. p+ b( Y
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
3 }2 V2 }! t' B. p. y+ m# G. K1 jG0X200. M9 ;3 t! ?- F' R8 V6 l8 u6 F
Z300. M5  ;( }: {( f1 I4 E3 Z8 p+ d
M30 ;6 A% z7 I; P3 |/ E( D2 M

3 V3 ^8 P6 T4 D4 `+ l7 k# A0 |( M你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。
- }9 `; H( B/ w5 ]: V( g另外循环段里:
8 [" X+ {" T' d/ |$ k& IN1 #501= #501-1. ;X定位点    第一次循环#501的值是1506 y& W$ j7 }( @0 _* F; o
X#501 ;                                 第一次循环x走到150
" j8 e) T2 F/ \6 n  z#501= #501-1. ;X切削点& o# H4 [7 \' {4 u3 L7 [5 @
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-9-21 14:17 , Processed in 0.089105 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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