找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5443|回复: 14

宏程序个人理解.

  [复制链接]
发表于 2013-12-13 21:29:02 | 显示全部楼层 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑 # P) w$ p$ u1 T9 A8 n; r
2 _, o8 V. p! G. ]/ B, U" w9 c3 M
   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..# x0 \9 D0 o; l8 t: b& v
   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.
) G% |, g# D! k$ Q7 v* M   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..
* a9 p7 R9 G) U. ]- [; qFanuc系统的变量由符号#和变量序号组成.如:#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;.
* P; {3 |& ]" J( d2 L6 _   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失./ e, H. t7 R  U5 q. P6 K  ]2 V9 `& D
  B类宏赋值:直接赋值例如:#100=100.0
& s+ l/ e5 O$ p# [4 j                                                #100=30.+20.
2 n4 w4 H9 I- ^5 Y% b                    常用混合计算例如:#1=#2+#3*SIN[#4]  f4 Y" d- ?% O2 k" P
                                           运算次序为:1;函数SIN[#4]
& {0 C' h, a' J: C                                                               2;乘和除运算#3*SIN[#4]; U7 G/ Q# u3 W! O
                                                                3:加减运算#2+#3*SIN[#4]   0 m7 n! w$ M" W% C% Z/ L
                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]
: r; a7 ?2 e; ~+ U8 B转移指令GOTO的应用;
- ^. d5 K! @3 R例如:GOTO100- C% d$ T9 F! o( S' j
无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便. , r- U* d3 N9 y0 M; ]. E2 }$ P  K
条件转移例如:IF [ #1 GT #100 ] GOTO 100  
+ d0 X# J1 w5 X5 {( m当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       ( R6 A+ U. p& \: P7 w4 J
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)
$ G! a, K, @9 j* k. B# n                                            ......8 P+ N6 b8 ?+ K3 t$ f6 _
                                            ENDm;这个比较少用.大概格式就这样了
- Y) O5 T" K8 j8 C0 P" o其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.# I0 P. J8 e- B4 |) z
我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM., V5 \+ L0 q0 h! l/ S5 y
O520 ;
. T- W. L; g! y  M4 i" k#501=151 ; 赋值8 Q. G! {7 R! E$ Z3 H( o
#502=100 ;赋值
* ]& A' x# O6 EM44 ;' y  L0 y/ M7 n) ?) B' D7 R
T0303 M8 ;1 {4 v- i7 e% [! X6 q; G- {; Z
M3 S450 ;+ u6 P2 [) R. z6 l( n) U! y6 B2 y; f
G0 Z5 ;8 M3 }- R# h( V/ y5 |% L" F2 F
N1 #501= #501-1. ;X定位点
2 {. l9 B' r( l7 o- i* GX#501 ;
$ f2 x- j6 I- j/ \2 l# ^#501= #501-1. ;X切削点
/ R  v2 |/ \4 ?* v- i0 E/ ZG90 X#501 Z-50. F0.2 ;
' {4 v* Y" B$ u% d* C" ^IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.6 ?) z) `& P" Y6 |& N0 C
G0X200. M9 ;
1 E) S0 Z, z" ]4 ]1 w" OZ300. M5  ;
; F( L( C7 n* L9 h. A1 U% cM30 ;5 u$ p1 E4 ~0 i* ?- a( J' E
%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
* t: h4 P$ b* k/ \& f  I小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.: k6 L7 r8 q/ u4 ?4 i0 j8 y
我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.) _! ^7 Y8 S; l; G$ F3 p

& P& z( k" j- d" i! G% k
回复

使用道具 举报

发表于 2013-12-13 22:14:33 | 显示全部楼层
变量,循环,极坐标方程
发表于 2013-12-14 01:29:07 | 显示全部楼层
O520 ;
3 D' }/ k" P1 Y- |; D" O# z) L& ?  Z/ } #501=150 ; 赋值
- [/ W7 B+ }/ u4 x/ {5 u #502=100 ;赋值
: m" H) j/ H& I* A/ O8 B0 P M44 ;+ M/ b; u. c2 N# g
T0303 M8 ;9 r5 D  M5 g7 D7 W* A, H, z
M3 S450 ;+ x/ p( c7 b5 t3 h9 g5 d9 n2 p
G0 Z5 ;: T# C" @+ Y# F, C  X; G
N1;
) r: `3 l! H+ r. y2 z #500= #501+1. ;X定位点
; S& @% s' P  L7 `' T0 T0 @#501= #501-1. ;X切削点7 E1 `: D2 A3 [9 Y
G00 X#500 Z5.;
" g% E6 Y, _9 D7 A6 D* t/ @G00 X#501;
8 Y3 A& I& n2 t5 y/ p0 @0 _- i G01 X#501 Z-50. F0.2 ;  I: b/ ]  Q- k, n5 ?7 `& p
IF [ #501 GT #502 ] GOTO 1;
- n  M; b2 G0 m$ WN2;8 F" k( a. n' \
G0 X101.;
& |2 K) R0 |4 r0 q; i: tM9;2 K. A8 J  |3 x* x) h
G0X200. Z300. M5  ;/ _* S7 C' W8 B0 j' g/ ~" H
M30 ;
% I$ |! X6 I5 d& y) d. ?1 `不做车床很多年,看到你的程序,试着编了一下

点评

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,程序中的哪一行是退刀啊?
5 O' d% S( @& Y) k/ K* `6 g/ v
3 Q; z+ Y. D9 X( q( M3 H另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?
9 t) v1 w( p# i! Y, Q: m9 f, _, o1 q2 V% y4 T& A

点评

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 | 显示全部楼层
真心没看懂啊,请教楼主5 Z. h0 C0 U2 O9 ]* r3 n

* [9 }7 `' b0 @% v6 W7 X7 N' x- bO520 ;
  u* m' A9 x6 i" L$ C#501=151 ; 赋值3 ^* x: {; ], P
#502=100 ;赋值
: M, j* U8 ^. Q" i$ pM44 ;
- C% j4 e# o) f% pT0303 M8 ;" |$ _3 V# f3 ^2 ^8 U6 k0 p; z# g+ ?
M3 S450 ;
; }# g& Y' ?6 l$ w( `6 aG0 Z5 ;* y' s" h" E; X. P
N1 #501= #501-1. ;X定位点9 N' o4 Z, H* l3 z" Z( h  t! p- H
X#501 ;
/ K% @9 i6 k6 S/ m" X* w) T#501= #501-1. ;X切削点/ X7 u) C& b+ s: Q2 S  H2 H( ]/ W
G90 X#501 Z-50. F0.2 ;* X2 j* A/ l( r7 e; i7 N
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.6 y6 \, U; O9 R  R
G0X200. M9 ;2 _9 q; c; s5 M- E
Z300. M5  ;+ r* f. j; N* {
M30 ;
. q" G5 e$ _# L# j5 B$ W1 T; x+ i
0 Z! G! D( E/ \3 |3 q" X& s6 F. S你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。
6 J/ ?( |# ~8 q) A& X  D, ~7 o另外循环段里:
' W# L+ o6 j" S- _N1 #501= #501-1. ;X定位点    第一次循环#501的值是1509 t- d8 W7 R8 m4 X  s, H
X#501 ;                                 第一次循环x走到150# b: T; |9 M! C0 V5 P& j% `
#501= #501-1. ;X切削点. Q& a3 E; A2 Q8 M& G5 H
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-18 23:51 , Processed in 0.097407 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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