找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5341|回复: 14

宏程序个人理解.

[复制链接]
发表于 2013-12-13 21:29:02 | 显示全部楼层 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑 / K. H- u" k- t4 s
! N0 _2 D5 m7 e. ?) q
   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..6 F+ T& F2 t0 \% L1 v! G
   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.
8 G- A' v6 o% K: J8 i& f/ w   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..5 d3 e' m  Q+ O8 q4 V1 d# ~7 d9 I
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;.- `6 J7 f8 A, i- }. M- A: {/ N
   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.
. N0 E6 b  v" Z: n& ^. K/ Q- E2 K2 b  B类宏赋值:直接赋值例如:#100=100.0
; ]" u" `" Y* d' V/ O6 S6 \                                                #100=30.+20.& v- J5 T4 T/ l. \8 ^& k6 U
                    常用混合计算例如:#1=#2+#3*SIN[#4]
8 Q6 s" W/ D2 z( {. L4 P                                           运算次序为:1;函数SIN[#4]
2 b7 b- E5 L) g% W' t6 H5 N                                                               2;乘和除运算#3*SIN[#4]
8 S1 f0 _) m' d; e) ^+ B                                                                3:加减运算#2+#3*SIN[#4]   % d1 M, p" C; _7 W) U2 n: Z2 y& M
                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]- Y1 p, P4 \8 ?" ^0 z: ~
转移指令GOTO的应用;
" m) w6 ~# S6 n; p7 O6 R2 A8 Y例如:GOTO100
$ B/ _! |0 C, i5 _' w9 H无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便. 1 z, _7 `+ {. q9 y. P% ^' a
条件转移例如:IF [ #1 GT #100 ] GOTO 100  
! |. D  \- q+ ?( ?" U' n当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       9 G) j" c' ^& ?' f2 m6 W  p
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)
) w) ^- T, I# Z8 o) x+ M, C7 k# l                                            ......
, S8 y9 K0 H$ S                                            ENDm;这个比较少用.大概格式就这样了5 O4 \4 z+ J$ n* o7 y/ F7 Q( ^: Q
其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.
7 k6 l4 d, n0 c我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.1 R, l3 v$ z& p; J. i: U) N
O520 ;
) j3 o% o; i& L& b- o8 d; C#501=151 ; 赋值# l% b+ ^$ `5 @
#502=100 ;赋值
/ K1 q$ }  o8 _M44 ;
. a3 r9 M  n9 G4 |) F0 VT0303 M8 ;
* o7 E; u! p$ r7 W) Q4 n" ]M3 S450 ;4 ]  Q8 k  U! Z; \
G0 Z5 ;" I4 u9 I7 w/ _3 \* Z* E, j
N1 #501= #501-1. ;X定位点
$ L1 D' e% M; eX#501 ;
/ F* i) G+ Y1 L. D' G* {8 B#501= #501-1. ;X切削点
0 Y" r; p6 W& e+ E$ JG90 X#501 Z-50. F0.2 ;
, s, n! G! o. l) k/ G; }- {% TIF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
4 `! y1 Q: z4 z# HG0X200. M9 ;
7 i$ {, o; R2 E; @* E/ C: ^3 NZ300. M5  ;
0 A+ U9 A, z6 j9 X; CM30 ;
4 ?: I3 |/ n! R- s$ g%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
1 W! X- U1 e  u0 P& D; H# B9 l小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教./ {) l4 r" T# o; b9 E& W
我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.
: r% U1 _1 ^! }5 f' d% M. k3 U& L5 ?5 J7 {9 n- f; r
回复

使用道具 举报

发表于 2013-12-13 22:14:33 | 显示全部楼层
变量,循环,极坐标方程
发表于 2013-12-14 01:29:07 | 显示全部楼层
O520 ;+ V; P4 G$ X3 c
#501=150 ; 赋值. B; C7 q$ F; J) a7 H9 E
#502=100 ;赋值
& L& J9 `' l/ Q  M) S- X M44 ;8 R  d/ a% W4 W  R7 s
T0303 M8 ;
% W& ?& m. o0 c" ^$ k. o M3 S450 ;
6 \; ]3 F" D7 E1 p" X- ]1 z G0 Z5 ;9 Q& c( C' ~( }: J( J: M
N1;
" m# u' |; o0 S #500= #501+1. ;X定位点 + o- F3 l0 |4 `7 @0 q7 @
#501= #501-1. ;X切削点* B8 X2 a/ E$ ]
G00 X#500 Z5.;3 N7 i, R! K- k8 d% I
G00 X#501;
$ Q4 V7 s5 n* U7 A G01 X#501 Z-50. F0.2 ;
" U8 o# c* E! E) J5 o& T IF [ #501 GT #502 ] GOTO 1;4 A, ^& ]& J: `7 S5 J* @5 F
N2;
" l" b* _) F6 W* `! C4 k7 M- p# @: kG0 X101.;3 T* t6 y# C3 b( z5 h
M9;$ F) ~# S3 y/ C  U7 i0 N$ R
G0X200. Z300. M5  ;
" ^+ ?0 S  K; Q) p  |; l M30 ;! _$ R8 K2 I) t# ]2 A% _
不做车床很多年,看到你的程序,试着编了一下

点评

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,程序中的哪一行是退刀啊?! v! O2 v$ i& Y$ Q

1 Q/ J% R0 h+ V另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?
1 f+ G6 P0 @% _# _# ^% Q9 W7 i( N. G* `# c. |5 X7 \9 r

点评

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 | 显示全部楼层
真心没看懂啊,请教楼主% ?0 _) p! U1 ~) |: M
5 x+ G1 |5 f+ [
O520 ;
2 a% y6 u# i. N#501=151 ; 赋值0 z  @2 h" E$ Z) h4 \$ q1 s
#502=100 ;赋值
' N1 R5 k8 y* |0 \  vM44 ;, P  J- {: ?) I! A0 J  n* H. Q
T0303 M8 ;
; e: i, x! a; o, r7 EM3 S450 ;
. M  k- v$ g4 ^" NG0 Z5 ;5 r/ g' E) b/ P
N1 #501= #501-1. ;X定位点
4 P. T) b1 E2 ^3 DX#501 ;( @# v0 w8 @  |3 ~" a/ N
#501= #501-1. ;X切削点& {9 O% o$ u: {5 U
G90 X#501 Z-50. F0.2 ;! W. R# ?9 F. I/ u. k1 Q/ D
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
& Q4 \% O% ^4 B* ?% s' XG0X200. M9 ;
8 {$ k8 R! e6 e/ h& v/ BZ300. M5  ;
! C4 r) E3 s6 T' x' D% ?; R; zM30 ;6 j* t. N, [  e% ~
: F2 C* \" `' a9 `  w4 k* O
你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。! H* Y" W0 S" v9 \# c& O: ]
另外循环段里:
9 b5 M0 F- O7 E; r  _4 NN1 #501= #501-1. ;X定位点    第一次循环#501的值是150
- L7 `% f; p& D/ T1 \9 zX#501 ;                                 第一次循环x走到1506 ?- @& R2 _  p9 s" s) L( Z! D
#501= #501-1. ;X切削点$ [6 E% F0 P! v, o7 v
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-7-6 08:11 , Processed in 0.101646 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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