机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

宏程序个人理解.

[复制链接]
跳转到指定楼层
1#
发表于 2013-12-13 21:29:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑 0 _8 h+ L: j! O5 F) q$ ~( l' s8 S

0 a4 N9 e( q' T# c   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
4 [6 o$ O9 N9 d) {, y   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.
, c) p$ _. n/ C5 }4 i* k/ [  Y   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨... J0 I) T! M! R1 r- c* p$ n; C, f9 @
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;.* c) l( c; `) w9 P' h3 P* o6 k; u
   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失.* }# D+ Q1 h4 e( e! Z. j
  B类宏赋值:直接赋值例如:#100=100.08 B+ _- Q1 ]  ?/ O7 {0 U
                                                #100=30.+20.
3 o3 h' H, i% ]- t2 d5 p                    常用混合计算例如:#1=#2+#3*SIN[#4]0 N  h) M  W. t+ [0 a- S; k6 Y. a
                                           运算次序为:1;函数SIN[#4]  Q8 H2 v* q0 r  X5 {( e/ H" b6 b
                                                               2;乘和除运算#3*SIN[#4]
8 H8 ^+ }. [' V                                                                3:加减运算#2+#3*SIN[#4]   - M. J$ l2 N1 v/ q. J
                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]9 c9 k1 D7 t/ K" a& i9 D
转移指令GOTO的应用;7 m+ }" d* q; k1 T8 X, E' @: D3 }4 S6 \* k
例如:GOTO100( ?% H$ `% B% g! S" D0 y2 \2 [( D
无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便. . B1 S3 p- \7 Z' f5 ]
条件转移例如:IF [ #1 GT #100 ] GOTO 100  
; k2 I) R  H4 g" L# L当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.      
( a# {1 k( L# y" d1 x还有个循环指令WHILE[条件式]DOm(m=1.2.3.....); ?- a  k9 P8 ^/ A* U% Q/ t8 K9 u
                                            ......
, O% Z# D* H3 w; b  m1 Y                                            ENDm;这个比较少用.大概格式就这样了
3 ?+ v2 g7 A' {+ S5 w其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.
) J3 K- w% X  n: j0 Q- |我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.: T+ j3 V2 A2 O8 Y: ]. ~7 g
O520 ;
" o% Z5 W4 f. r! o: _#501=151 ; 赋值; j' E& Z, }8 G5 g( e  U: Y
#502=100 ;赋值
1 w: {$ h% V- |) x- gM44 ;
$ d' D, m2 j7 ]  OT0303 M8 ;
4 J  S7 b! C6 [+ `  T6 eM3 S450 ;
2 N! x, Z0 V" l# m/ PG0 Z5 ;1 r! d9 {+ e; U9 h9 t5 v+ P  U4 D
N1 #501= #501-1. ;X定位点
; v: v( U* B# w$ S5 i9 S7 k; o5 EX#501 ;
$ B( H9 w* s* W$ V  u; I#501= #501-1. ;X切削点
9 ]5 [: I, n8 [; T  T8 |G90 X#501 Z-50. F0.2 ;1 _0 v7 l- n; `0 e8 q
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.5 W+ d. K& Q: T3 R) S
G0X200. M9 ;
  T, Z! L1 {$ ?* j2 B" K0 vZ300. M5  ;5 w: g7 _+ H3 I# y: I4 E9 Q
M30 ;$ [; r) Q9 w, V8 B2 n9 K
%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
* Z# \0 Q5 b$ D+ H小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.
+ w2 i' R4 `6 L* g  O' O5 p- J3 T我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.
. Q1 h1 W8 z7 T( d! z: ~0 W8 H0 ]" s
回复

使用道具 举报

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

使用道具 举报

3#
发表于 2013-12-14 01:29:07 | 只看该作者
O520 ;
* h& s1 u. r0 K4 C) R0 Y, L. P/ Z #501=150 ; 赋值: m* O6 i- h. b* T+ g2 C
#502=100 ;赋值
- K% d; n8 x* Q6 b8 x1 f( A M44 ;
) A6 _0 [7 A9 t  |7 j T0303 M8 ;
* j0 l/ T- A& h3 w M3 S450 ;- k5 W  B, Y" x% `
G0 Z5 ;
: |/ B& ?9 d) o4 T+ }( x% c# Q N1;
3 u( f2 `$ \; ]4 L/ R# i! K #500= #501+1. ;X定位点 ' J1 u& `9 o" e6 O
#501= #501-1. ;X切削点( Z7 `( Q7 o4 N! e$ v8 {7 R, T
G00 X#500 Z5.;7 m3 d" ]2 F3 [3 x; D% g& q1 n
G00 X#501;
" z, ?) {2 v" L; d! [$ h G01 X#501 Z-50. F0.2 ;8 O+ I4 b! A  s! u) U
IF [ #501 GT #502 ] GOTO 1;2 _/ c1 S8 @6 f6 E
N2;" \4 M! A* P8 G" e" A
G0 X101.;
8 U$ u0 l+ B, s- k; [, M8 P/ y- KM9;# s, r3 [7 A  m" X) B
G0X200. Z300. M5  ;7 j- A6 d4 B1 D4 y
M30 ;
" {: b' t" Z$ s9 I不做车床很多年,看到你的程序,试着编了一下

点评

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,程序中的哪一行是退刀啊?
, w" `# S' W% i9 n- \, f) Q1 O1 |5 e+ \. c' y7 z0 Y) d+ e  z
另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?
3 V5 N) i+ C+ h$ g$ }6 ?, L. K7 h: x7 n

点评

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 | 只看该作者
真心没看懂啊,请教楼主
. D; `; Q8 J9 M  R  h# p0 O+ Y' ~, [) e- w  {& |! z5 U. W9 b/ X. S
O520 ;
( \. H( k: }% v. c#501=151 ; 赋值
* {# G2 ?! v. X' L#502=100 ;赋值
0 @0 a  t/ J- {; L$ b( dM44 ;  U/ G( o. I' i& Y& I* F* v, s2 g0 _
T0303 M8 ;0 [* g9 c0 @6 W3 ^: |( O
M3 S450 ;
. \) t. g# ?- ~7 o: d' b7 A$ cG0 Z5 ;7 S4 t: u' d( I& K, A7 O
N1 #501= #501-1. ;X定位点
7 V2 N5 U% c& f3 [X#501 ;
: w* h, a8 U, t% r7 Z9 y1 n; K7 |1 [#501= #501-1. ;X切削点
7 A' P! X( h5 I+ h; t2 l. WG90 X#501 Z-50. F0.2 ;2 e0 d' c: Y$ o; `. P8 G# T; l+ F% x
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
9 Z5 A- [  T* i( p4 a% nG0X200. M9 ;
8 S8 B1 n$ f' H1 [- bZ300. M5  ;* T7 f7 P8 `& p4 G8 C  r! [" \4 i' P
M30 ;
5 c) h0 A* w3 d! q
' I+ H5 O& g, Q$ d7 @8 z& d你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。+ P$ l3 M9 U' B# }; x
另外循环段里:! k5 x* Y' L( f6 O- m" \* I3 Z- K
N1 #501= #501-1. ;X定位点    第一次循环#501的值是150: [' H5 M$ y' e  H* W* N
X#501 ;                                 第一次循环x走到150
( b! u0 H1 c* T" x#501= #501-1. ;X切削点* g; S  {8 d" }' s; D* c& ^
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 07:51 , Processed in 0.058541 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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