机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

宏程序个人理解.

[复制链接]
跳转到指定楼层
1#
发表于 2013-12-13 21:29:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑
# T; A$ w$ j3 F: Q. \7 H
6 K6 D* N1 ^# x' l3 m   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
( C& l! }0 w8 A- {4 u0 d   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.1 [* u+ V6 f8 H1 q
   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..+ {0 a) P' V! I4 F
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;.
2 {5 y9 B/ Y2 h, W  d2 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 J- r% e; \9 j- b; a6 n& `/ v0 ]
  B类宏赋值:直接赋值例如:#100=100.0
" Y+ x6 G) b1 v% a% R, i7 s                                                #100=30.+20.
. `3 K6 @& \6 {7 ^" K                    常用混合计算例如:#1=#2+#3*SIN[#4]
# k" ?1 ~, e! \" U                                           运算次序为:1;函数SIN[#4]9 b; X5 a7 t+ Z( O" Y) r
                                                               2;乘和除运算#3*SIN[#4]9 o' K. @: m; M" e7 H; {
                                                                3:加减运算#2+#3*SIN[#4]   
* A8 ~, Q- U- o8 j5 M% t  @                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]
& \9 P, n5 }  @( m6 u4 e+ x- X# l6 I转移指令GOTO的应用;
" i* h# @! s$ f7 L6 S6 b! j例如:GOTO1003 x+ a# ]# ~" O3 a* P* m% B
无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便. $ K$ m/ e. {( o! M5 Z% g0 @
条件转移例如:IF [ #1 GT #100 ] GOTO 100  . w/ K+ `' V% B3 H2 q6 C
当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       / A; l1 P/ Q& b% t+ W
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)
* i( i3 l8 D) g. J, {9 F+ A                                            ......
2 T) `9 i! x  R# I. z- C8 n                                            ENDm;这个比较少用.大概格式就这样了
6 i1 ^  ]) Z3 M其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.
" h4 n: Y7 t* ]) A( X% R我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.0 O) |2 E4 ?" ^6 i
O520 ;
" U) \7 i3 m% J' J#501=151 ; 赋值
# |" ?% D; H3 u#502=100 ;赋值
5 A1 u+ Z) [' r4 ~M44 ;
+ f2 y% b' Q2 A! oT0303 M8 ;7 z( k2 O0 J3 N0 u3 a
M3 S450 ;+ M9 x+ v& B2 j9 ]: I7 |
G0 Z5 ;
! E/ h: @, x  V& d, }N1 #501= #501-1. ;X定位点& _, D$ k- n1 L2 g: D  f2 a
X#501 ; 1 b' F: }* a4 @. v# H% o; s
#501= #501-1. ;X切削点
( b7 l, r6 z( S0 g% PG90 X#501 Z-50. F0.2 ;
8 v$ J" S3 o/ Y+ Z9 C! kIF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.2 c* F( Q. h9 @0 b# C. Q2 S
G0X200. M9 ;1 s# h! }5 P/ c4 R) u7 ~
Z300. M5  ;
9 u" c1 g8 a6 L; U! L( UM30 ;& E! }6 }  K$ N2 ]& G& {) o
%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧" Y: M; P, k# U9 i! a5 Y
小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.
5 @# x' c7 C8 |$ d. ^* O5 O我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.
2 _/ J# d' @7 Z; Z% a7 p" ~
5 P+ U( C" r$ W( B
回复

使用道具 举报

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

使用道具 举报

3#
发表于 2013-12-14 01:29:07 | 只看该作者
O520 ;; E: Z2 n: ?! Z" N3 p
#501=150 ; 赋值& }4 h: \% l% z3 w0 t. z
#502=100 ;赋值
% W  l" e5 A* Y/ R M44 ;
( ~8 x+ z( W9 j; X: J4 h; i3 B T0303 M8 ;
4 I7 D& T& a/ x+ I0 u0 _; | M3 S450 ;
. F4 I. K+ s1 }' V. H* V; F2 G G0 Z5 ;3 p& N# q6 K/ v- V
N1;1 E! T' a0 F+ @9 U. r
#500= #501+1. ;X定位点 7 R- z/ Z) t. _, @$ S" [" q
#501= #501-1. ;X切削点
1 R. r* W! l7 I! t4 J: ?4 kG00 X#500 Z5.;
3 X, H, R% ~9 p- R8 {" N# R9 LG00 X#501;" p, X' z$ ?/ d6 }0 W8 n! B, S% s
G01 X#501 Z-50. F0.2 ;
5 A" C$ f( [$ |! g- W0 y: O IF [ #501 GT #502 ] GOTO 1;
; e+ o* Y& Y5 m2 {& A* r' LN2;
' x5 Q0 x' f/ j) Z2 m) @( S! j+ MG0 X101.;% n4 @' j( ^* g) t1 a* v( W- J. q
M9;
( M, _# {6 W. B/ G! M5 c9 s G0X200. Z300. M5  ;
& S6 Q7 x# W/ f1 I  e M30 ;
$ W, f5 \: {8 N  o不做车床很多年,看到你的程序,试着编了一下

点评

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,程序中的哪一行是退刀啊?, [2 v# q" [1 P2 I! g

7 p4 [6 H2 n0 T- {另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?9 ]2 B  V. n3 v* B! i
0 D& O7 L. z0 {; g7 @

点评

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 | 只看该作者
真心没看懂啊,请教楼主8 l  t5 E: ~% d. l" `9 R3 {- D
, p3 m+ v$ D6 c' U2 {  E
O520 ;
9 d7 I6 r2 g$ ^. Y1 t; \#501=151 ; 赋值
! K* O7 @) |2 j" [#502=100 ;赋值
# u: ?: y7 x$ A. g: QM44 ;- _3 J% {+ j- [. o) u
T0303 M8 ;) [! k" I; @4 a  v* I
M3 S450 ;; R$ U) L/ x/ f3 C+ k5 D$ N
G0 Z5 ;
5 T" [* B! t- N0 n: f/ MN1 #501= #501-1. ;X定位点
( v+ k1 I: t' E) U( ]( x3 BX#501 ;
7 ^8 G/ W2 b8 @& A' y#501= #501-1. ;X切削点" W5 k- r2 B; h9 l2 e
G90 X#501 Z-50. F0.2 ;
, r. _4 `6 i/ i% S/ r; E: wIF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
2 K% o2 U, B! g  ]* OG0X200. M9 ;6 ]0 D9 a1 u7 W# ^5 ]- H
Z300. M5  ;
9 D, E7 a! a8 n# L2 t, a4 C3 bM30 ;
8 _) `& y, A, s$ ~4 P4 a7 j. ?8 ?
6 H4 U* ]+ k. j& o你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。
* X3 S8 q/ ?1 O; a- C% t5 }2 l另外循环段里:
1 n3 y9 ]1 U& V. _1 l' X) T3 VN1 #501= #501-1. ;X定位点    第一次循环#501的值是150) @. Z7 ?# U5 ^, n1 L4 d/ e
X#501 ;                                 第一次循环x走到150
, w8 `9 C( D  U2 o  a' e* L#501= #501-1. ;X切削点
1 ~9 i* o! z9 cG90 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, 2025-2-19 06:34 , Processed in 0.077780 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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