机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4886|回复: 14
打印 上一主题 下一主题

宏程序个人理解.

[复制链接]
跳转到指定楼层
1#
发表于 2013-12-13 21:29:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑
* D& t* A6 g- ^9 i# x& s7 k* Q
4 _7 r$ f4 S1 N* S: U6 u' @! H6 ~   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..2 m. n, K9 G+ c
   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.& K9 }$ Z; U/ d5 f+ ]3 L/ Q* o
   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..
! Y, m+ `7 B1 s$ J" NFanuc系统的变量由符号#和变量序号组成.如:#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;.
, y/ f. ]2 m8 ?. y; M   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.5 h/ n' C. V1 j' b& U& P6 V' ^
  B类宏赋值:直接赋值例如:#100=100.0$ C7 o5 d+ Y' e( Z
                                                #100=30.+20.
+ \* f1 D3 ^* j1 a( l3 I                    常用混合计算例如:#1=#2+#3*SIN[#4]; V# T0 c/ c) i# p- g% N4 g1 g
                                           运算次序为:1;函数SIN[#4]
7 h+ z, \, z" H! l- F                                                               2;乘和除运算#3*SIN[#4]' g* p/ G9 }7 L3 ~$ N
                                                                3:加减运算#2+#3*SIN[#4]   8 m5 g# g: r4 q4 v2 W: t5 l
                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]
7 r% E/ p7 W' W1 V- C; m4 |9 ?1 z转移指令GOTO的应用;( F- ~1 P" ~1 E5 ~
例如:GOTO100! c# a" c& K2 n0 z
无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
. h; s4 u) f' Z$ F4 n条件转移例如:IF [ #1 GT #100 ] GOTO 100  + m. y! d/ |8 M& p1 a: m9 a0 y( I
当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       : ^8 P3 X" d' _: ^* H2 L* W- ?
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)! }* H" `3 `3 ]& c7 h: z9 J
                                            ......3 K0 H8 N; w9 A; c2 M& y/ b  a
                                            ENDm;这个比较少用.大概格式就这样了+ s' @/ z, l2 W" J% R
其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.
  q+ {' J0 o4 V# B我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.
& y! R, h/ R9 v% ^; S$ r* FO520 ;
9 w/ e5 X2 c5 ]! Y1 W#501=151 ; 赋值$ M; G3 ^# C* O: g' \
#502=100 ;赋值$ i% k% E# A0 `6 j) C
M44 ;! Y5 B7 ^% e5 @. b
T0303 M8 ;
5 `' P3 Y: C8 `1 k* U1 tM3 S450 ;2 _; a# _* K1 d  A) [
G0 Z5 ;7 b( l, B, R; H& E* f: F& k
N1 #501= #501-1. ;X定位点0 j$ J+ n& ^, K1 r% ?( f' x* X1 j
X#501 ; 4 U$ A2 C$ D' n2 V* y" D5 i' F
#501= #501-1. ;X切削点" {, i- ^% ?" i* R/ L% m
G90 X#501 Z-50. F0.2 ;2 {6 X# m: X4 u- g1 q& e
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.2 @6 I( z; Z8 f9 }/ \1 ?+ G6 x" `$ I
G0X200. M9 ;" T) A4 ]  `; {* ?0 I* K
Z300. M5  ;, V5 H# |# f# E6 g$ R
M30 ;* j9 G7 x. o5 O% ^6 G
%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
+ x% L( @+ b, L8 m( ]$ M小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.
# D! E% W9 a. f) _9 ?8 l我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.
" T1 |9 V) p2 P. L. c& Q! ]2 w' p% {: [+ V& I$ I9 S
回复

使用道具 举报

2#
发表于 2013-12-13 22:14:33 | 只看该作者
变量,循环,极坐标方程
回复 支持 反对

使用道具 举报

3#
发表于 2013-12-14 01:29:07 | 只看该作者
O520 ;
; w' F- [! Q# k* N #501=150 ; 赋值
- V& R5 I) s* g4 ~" @+ w9 W #502=100 ;赋值7 F* \8 V+ k/ E" x+ Z  o
M44 ;8 q: ~9 ?, o+ o+ ~' d
T0303 M8 ;
9 H9 j& f, x" ?  \/ ~7 M M3 S450 ;
) f6 j  B# Y0 M- z8 n G0 Z5 ;# M9 p7 x/ v3 J8 Z& C, S. Z
N1;! f4 U- C; q/ P& _/ ^" ]
#500= #501+1. ;X定位点 7 o- ~. J! Q3 Z  ^5 j
#501= #501-1. ;X切削点
/ c6 y% F( X$ G- g( q- m3 g; OG00 X#500 Z5.;
; s6 N  C1 f$ @. T4 hG00 X#501;( g0 k7 f9 \* e1 S! h, s
G01 X#501 Z-50. F0.2 ;
% J  _/ K& ?& i. t IF [ #501 GT #502 ] GOTO 1;
5 r6 `. k! n% A- T) LN2;
3 I* F1 m9 ]) m. B  KG0 X101.;
( o2 P0 Q# f) h5 F5 D8 ~M9;
/ p0 z' Q6 t# X! e7 P$ n G0X200. Z300. M5  ;' j) F% C8 X5 u/ c5 A# _
M30 ;, e9 d( c, n6 [, `5 w" j
不做车床很多年,看到你的程序,试着编了一下

点评

N1,N2,差不多可以理解为只是个记号,我这么写实为了看起来方便,因为我这个程序N1,N2之间那部分是循环部分  发表于 2013-12-15 05:59
城主的程序就看明白了,不过n2是干嘛用的呢?n1n2单列一行跟放在程序行前面是一样效果的吧?分号后面就是注释?不影响程序运行的?  发表于 2013-12-14 23:37
谢谢分享.我一般不敢走斜线..  发表于 2013-12-14 18:49
回复 支持 反对

使用道具 举报

4#
发表于 2013-12-14 09:59:07 | 只看该作者
楼主指点下,车进去2mm退出来1mm,程序中的哪一行是退刀啊?
# N' Y0 a* _8 B+ ?: B' X. I0 v! p* z( ~+ ^) ?# W7 |* }# ]7 I9 Z
另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?* K" N. Y* |, V* r

: T7 n5 H) J. ?4 }

点评

GOTO1是这样理解的..  发表于 2013-12-14 19:00
首先你要了解G90走刀路线.她是以GO1方式退刀到X定位点的.N1是程序段号.也可以说是行号吧.可以放在任意行.当以这程序为例就不行.因为N1行是条件判断的一个循环起点.随便放的话.程序无法循环.更有可能发生撞到什么...  发表于 2013-12-14 18:59
回复 支持 反对

使用道具 举报

5#
发表于 2013-12-14 11:17:59 来自手机 | 只看该作者
FANUC的宏滚蛋,SINUMERIK的宏才是王道。

点评

虽然不知道你在说什么.感觉貌似很厉害的样子.西门子的机床只用过插齿机.和五轴滚齿机.都是参数编程.主要是生产恒隆转向器上的臂轴的.没什么技术含量.当学徒时做了一年.  发表于 2013-12-14 19:11
哈哈,看来你是不懂FANUC了  发表于 2013-12-14 18:56
回复 支持 反对

使用道具 举报

6#
发表于 2013-12-14 23:29:56 | 只看该作者
真心没看懂啊,请教楼主! M; _. f& y6 m6 h( h5 }( `7 Z* V9 {& U
- D% l: u4 ^4 l8 S  H; i
O520 ;* Z( O  g, N2 }
#501=151 ; 赋值# i( D7 ~% d8 x+ t% Z0 r
#502=100 ;赋值5 V0 U9 m6 o5 X1 H8 R, y9 i8 N
M44 ;+ u% a) r4 V% G( I7 P/ Q
T0303 M8 ;
- }4 h8 U, F  H7 T# |- ?4 zM3 S450 ;5 z; |9 l. H$ L2 p3 S1 I+ T
G0 Z5 ;6 E1 Z9 n+ i% _: M5 [$ B
N1 #501= #501-1. ;X定位点
1 _! i# \. z2 CX#501 ;
& J. O/ e" B" P#501= #501-1. ;X切削点2 U$ Q0 t1 k9 F; E4 `
G90 X#501 Z-50. F0.2 ;2 A, j# ?1 e6 u% y8 V: Z
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.9 S# `; E$ D* K/ n; J1 y6 i8 M
G0X200. M9 ;2 b( S; C5 h5 o- u0 ^
Z300. M5  ;) u: ]: P7 K0 ^: |
M30 ;0 v* ]- _$ ]3 p- r
8 {" p9 R1 G  c
你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。
5 x1 C2 ]# f: X0 K  R# O2 q2 z另外循环段里:
& ^, E$ a$ |+ ^) hN1 #501= #501-1. ;X定位点    第一次循环#501的值是150  I0 r( O4 K5 m5 N
X#501 ;                                 第一次循环x走到150
! o% M& g1 \- q# C. a  B#501= #501-1. ;X切削点3 L! q3 f! w  ]! u' w
G90 X#501 Z-50. F0.2 ;          第一次循环 这个x的值是149,那不是走成锥度了吗

点评

这个G90是单一形固定循环.Z5就是起刀点.你把G90这个指令搞懂了就好理解了.看看书吧.  发表于 2013-12-15 14:43
回复 支持 反对

使用道具 举报

7#
发表于 2013-12-15 12:42:42 | 只看该作者
回复 支持 反对

使用道具 举报

8#
发表于 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
回复 支持 反对

使用道具 举报

9#
发表于 2013-12-15 17:50:03 | 只看该作者
好像都是很牛的样子啊
回复 支持 反对

使用道具 举报

10#
发表于 2013-12-26 10:50:18 | 只看该作者
即使搞懂了这些,还不够啊,宏程序水很深,解决问题时就知道了

点评

多实践.没事时自己试着做嘛.  发表于 2013-12-27 19:57
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-18 09:30 , Processed in 0.054432 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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