机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

宏程序个人理解.

[复制链接]
跳转到指定楼层
1#
发表于 2013-12-13 21:29:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑 5 |7 Q% o2 u: c: X( }
  H( d6 c; z7 H- R/ i: e) ]3 Y
   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
: X# r3 Z0 J" E0 }7 C) b: }   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.$ O/ F2 c7 V# e9 a. w
   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨..
% E* x5 m# F3 o  sFanuc系统的变量由符号#和变量序号组成.如:#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;.7 b: l- o9 c( ]) [" Z4 u
   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失./ [$ P5 G% S0 ?: [
  B类宏赋值:直接赋值例如:#100=100.03 g* X! s! r* V
                                                #100=30.+20.
8 m% j- v/ \5 A7 q. M                    常用混合计算例如:#1=#2+#3*SIN[#4]
1 u7 w# c( |* j' _. n                                           运算次序为:1;函数SIN[#4]" j( h' G: s) |; {
                                                               2;乘和除运算#3*SIN[#4]
( e! |* `' D3 n% z, A6 r. p2 u                                                                3:加减运算#2+#3*SIN[#4]   
" Z( g. w: Z9 @, U                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]4 c- O: a% [  M3 Q0 T$ a
转移指令GOTO的应用;
3 p* B% L8 P* ^8 x9 i6 \# W例如:GOTO100
7 @9 A  l8 I: z1 }( i! k无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
5 S5 p  Z0 I/ {( I3 V条件转移例如:IF [ #1 GT #100 ] GOTO 100  
; L. x' ^/ x0 J  Q2 }& G当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       ' U, O( `, A0 Z) r1 X
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)
! g: {* D- p1 B  F- u, {                                            ....../ l* \$ U. @/ ^! X9 {
                                            ENDm;这个比较少用.大概格式就这样了% m8 {6 u2 h3 n7 s; m  h$ N4 ~8 R* N
其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.7 y6 b9 T, X# H& g9 P
我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM.
2 A% P1 x) d8 h. x" I; rO520 ;
& N% g, R: x. _6 @+ |#501=151 ; 赋值
6 X9 J, @/ H' F; a% Y( c+ |#502=100 ;赋值- a2 g. I6 E# I; J' N$ u' r
M44 ;* a+ s2 L1 }0 o3 r+ R4 F1 o& D( z
T0303 M8 ;
# a: T. B0 z: n. l7 n& uM3 S450 ;; I6 t! ^* \; c- `4 O
G0 Z5 ;
( c. f4 {. _- L+ d) c4 ~; M1 BN1 #501= #501-1. ;X定位点( }4 e. z6 u) R6 B8 x2 c
X#501 ; , ^8 c: o$ u7 m+ }
#501= #501-1. ;X切削点
" n& I3 D4 }3 [9 L. ]& qG90 X#501 Z-50. F0.2 ;- m! C+ G. y/ l4 z) b2 N1 Z6 V
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.% H) Y1 w) s' \8 H! ?- r7 a5 Y# q. V
G0X200. M9 ;
3 q8 ^/ _; j3 e& V; j: O0 EZ300. M5  ;
* @6 e" q, [; G' K9 s$ D/ @M30 ;
4 t" W' S$ |4 u. v% h%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧
9 P! V$ q3 @$ x+ q* q7 x3 {4 F( c小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教./ k3 g7 l/ O7 `" Y
我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.3 B* r$ D. n* h
4 X2 W" c* z  L- o8 Z2 `9 T# n, I, T
回复

使用道具 举报

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

使用道具 举报

3#
发表于 2013-12-14 01:29:07 | 只看该作者
O520 ;
/ C  N' N3 f( H& ~3 A8 W #501=150 ; 赋值! H+ k; T. ?0 M
#502=100 ;赋值( x1 G& F: i# g0 G3 E
M44 ;
6 G0 s! I$ d$ ?, x0 F T0303 M8 ;
; H0 o8 \, E+ f6 I- v M3 S450 ;
+ H9 Y! z1 ^0 Q% f) ?1 [% _7 l G0 Z5 ;# n  y. T: d5 n9 Q
N1;
8 K$ U; W+ {- J, y5 d; d9 Y9 @ #500= #501+1. ;X定位点
9 Z- \# x7 x2 p' O+ H#501= #501-1. ;X切削点
# }. W7 H/ H! YG00 X#500 Z5.;6 X9 g/ Z5 y/ b
G00 X#501;
7 A$ g, R4 z; K G01 X#501 Z-50. F0.2 ;
1 h: t+ c, ~- C IF [ #501 GT #502 ] GOTO 1;
9 |1 e0 u. @6 ?* f, F4 P* sN2;
" X& [. a- T0 _" w8 H' R: C! p- SG0 X101.;+ m" ?. }7 [* k
M9;
4 m3 r( }1 h/ [2 u/ n+ p6 R; c G0X200. Z300. M5  ;
: D; f, o. Z, K; Z M30 ;
+ i! J( R5 g& w: }) N  A  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,程序中的哪一行是退刀啊?# v1 R2 Q; J5 i
' ]" P9 s7 B& N6 v- K  F7 B
另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?+ A7 M) C1 c" t% M2 a/ _4 D0 y; w

; T* m7 G' b& L: ~' y# g

点评

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 | 只看该作者
真心没看懂啊,请教楼主- K! c5 ^" ]; Q8 f
, v, [, V* }% w( X
O520 ;
+ f: X3 J! E* I) J! V8 t/ M, b#501=151 ; 赋值: w8 n& N8 r' q0 d+ L
#502=100 ;赋值
- K6 z; {' D, J) v8 m$ X: OM44 ;
# Y' f( ^% T1 L- A$ q2 z. v# iT0303 M8 ;
4 }0 M3 Y$ d7 X5 K% V& AM3 S450 ;" W$ v5 i  B  z; N4 m$ t( k0 V$ l9 \
G0 Z5 ;
: a0 j' C2 g0 \N1 #501= #501-1. ;X定位点
7 \0 j' `' S6 D  _X#501 ;. L/ a  R7 v! C" P- R( N% C
#501= #501-1. ;X切削点
. U' p* ^8 w2 \( b9 SG90 X#501 Z-50. F0.2 ;& c* @! ]2 B' u3 _3 @5 ]
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
' {+ ?& K4 ]" @# [4 J5 C/ k4 k' ~# a, HG0X200. M9 ;
' ~& c; c" L  Y$ j; BZ300. M5  ;
$ r% |/ M- v; _4 @3 v4 I! GM30 ;
5 K: S; T6 O+ d' ~$ b
' O9 a- f+ D% w$ U+ w你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。
" r8 l" R0 k! f$ q- M  J另外循环段里:/ u6 [0 o% v3 T( J3 U( I
N1 #501= #501-1. ;X定位点    第一次循环#501的值是150
3 w6 u: k+ t5 f- F- W1 D% gX#501 ;                                 第一次循环x走到1507 H7 l+ `" F2 H9 }% r/ J2 t
#501= #501-1. ;X切削点' k  F) D: M% [7 U+ L
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-12-31 03:45 , Processed in 0.058013 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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