机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4907|回复: 14

宏程序个人理解.

[复制链接]
发表于 2013-12-13 21:29:02 | 显示全部楼层 |阅读模式
本帖最后由 乡村非主流 于 2013-12-13 21:34 编辑 # j" Y5 g! }  W8 u$ a( s

( z6 E8 a5 N$ j- w& T   经常会看到有人发与宏程序有关的帖子.不是难度太高就是讲得不怎么靠谱.今天讲讲我自己对宏程序的理解..
- r- ?4 ^9 n" g/ l   宏程序一般分为A类和B类.A类宏调用比较麻烦.B类宏用起来比较方便.类似于C语言.现在的机床基本上都支持B类宏.- {9 m; }3 Z! M! r# [  v
   本人只操作过广数和Fanuc系统.她们宏程序应用基本都是一样的.现在以Fanuc为例说说.本帖目的只在于沟通与探讨.., u; X' @" H& [$ E$ Q: j! L
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;.; ~9 c0 z: f/ b  B! g; T* P3 a
   变量的种类.变量分为局部变量.公共变量.系统变量.局部变量(#1-#33)是在宏程序中局部使用的变量.当1号宏程序调用2号宏程序且都有变量#1时,由于变量#1服务于不同的局部.所以1号程序中的#1与2号程序中的#1不是同一个变量.因此可以赋予不同的值.互不影响.公共变量(#100-#149,#500-#549)贯穿于整个程序过程.当宏程序1调用宏程序2时.且都有#100变量时.由于#100是公共变量.所以1中的#100与2中的#100都是同一个变量.系统变量是指有固定用途的变量.她的值决定系统的状态.包括刀具偏置变量.接口输入.输出信号变量.及位置信号变量等等..(系统变量这块还搞不懂.有的是生产厂家定的.希望有人能够指点指点).宏程序通常使用局部变量和公共变量.#500以上的变量断电后不丢失." E  l' ^+ `. a" [1 N
  B类宏赋值:直接赋值例如:#100=100.0/ z5 t& P9 q5 W7 K; p2 @% R
                                                #100=30.+20.
0 s  S( R9 _' B: z7 [+ H, r                    常用混合计算例如:#1=#2+#3*SIN[#4]
6 @! k" k4 q9 j  p$ Z+ R                                           运算次序为:1;函数SIN[#4]
2 Z, {& u; [* |6 z" E9 x9 z: d                                                               2;乘和除运算#3*SIN[#4]
. [2 I( k0 k$ m1 \5 S                                                                3:加减运算#2+#3*SIN[#4]   
% |  V; v9 ^% `) G/ D                                        也可以通过括号改变运算顺序例如:#1=SIN[ [ [ #2 = #3 ] * 4 + #5 ]  / #6 ]
( q0 X! I1 C4 Y+ d转移指令GOTO的应用;! R+ m+ A, Y" C$ \* t
例如:GOTO100
% w; b, {% f& S& x5 w无条件转移到N100程序段.用的较多.可以省去了跳段符号.不过很多人习惯用跳段开关.我比较喜欢这个方便.
! n/ ~3 q5 _6 ^5 w  G条件转移例如:IF [ #1 GT #100 ] GOTO 100    m- B7 f$ [0 W( h2 M- F
当#1大于#100时转移到N100程序段.至于什么大于小于这些自己看书去.打字累的慌.       2 E, A; h; X6 |6 j' M# Q8 o9 c; H
还有个循环指令WHILE[条件式]DOm(m=1.2.3.....)2 f: O0 A2 V0 G4 P7 B8 W
                                            ......! Y! y% w3 F  a& H# v' Z. `" p; ]
                                            ENDm;这个比较少用.大概格式就这样了
! A) {6 E7 ^' w# b- k其实在实际加工中宏程序用的比较少.也许是现在很多人不会用的原因.
" w0 F7 R3 }$ j- w' @+ l9 X我现在举个简单的例子:比如我们加工棒料是有时从直径150车到100时.如果用G90比较费时间.当然电脑编程全部用的是G01.走刀.速度比循环车要快.但是程序繁琐.那我们就用宏程序来编个吧.比如我们每刀切削2MM.退刀1MM./ K, g7 D3 e* v, N9 {
O520 ;
2 Y/ K( D" b; u6 J$ s; ?2 H2 s#501=151 ; 赋值5 m7 {: U5 u+ \
#502=100 ;赋值0 K( W; M& P/ ~9 y* f4 w
M44 ;
; V7 B; ^+ O7 G5 l, Q# kT0303 M8 ;* D9 t6 \# T' ]
M3 S450 ;
: ~7 U- A1 C7 B6 p  W7 d/ a! I% kG0 Z5 ;2 e+ Q  X/ l) l/ D! B0 C( m
N1 #501= #501-1. ;X定位点+ u" k; i1 k( |
X#501 ; 3 X. I3 g  z! ^2 m; T8 ]
#501= #501-1. ;X切削点
% Z( y9 \$ `: M% w) z5 tG90 X#501 Z-50. F0.2 ;$ K& z- w- y* s8 k$ y; f5 x
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.
4 a' v; x, b1 `& `6 CG0X200. M9 ;
1 G; H9 H7 @; y% ]Z300. M5  ;
7 X- y& ~; R4 k* x4 eM30 ;
* k! S, V2 s, \: v4 D& w3 P( N%这个程序走刀基本与G01编程类似了.退刀还可以给小点.自己改吧9 ?- d9 Y+ `. j) ]5 z) W
小弟不才.以前是种地的.这里搞什么开发区.田被征用了.只有改行了.求指点.求指教.
  l; D6 }; g) v5 O& y我还编了个螺纹左右借刀加工的宏程序.看了下资料.了解了下思路.自己整了个.今天没时间了.明天发.个人觉得只要把这个程序看得懂.其他什么椭圆加工神马的都大同小异了.
; ]* p# [5 Y7 p' o4 s& k# d2 |" ^$ }6 i- ^1 N' O! v
回复

使用道具 举报

发表于 2013-12-13 22:14:33 | 显示全部楼层
变量,循环,极坐标方程
回复 支持 反对

使用道具 举报

发表于 2013-12-14 01:29:07 | 显示全部楼层
O520 ;" s; ^4 ]2 g* x  H" f0 ]4 A( C
#501=150 ; 赋值
+ l& @- t/ z' C5 f #502=100 ;赋值
7 n4 c7 n( g4 r- s: F M44 ;
/ m7 X) {% A9 d' x T0303 M8 ;" U: i" o+ n9 y" {6 Q+ a
M3 S450 ;9 N4 l% D2 h3 _; o0 g
G0 Z5 ;
% P" c4 E+ T/ C1 B" b* A: {3 F( r( Q4 D# h N1;
# {$ N  m( N, V# g1 p0 t #500= #501+1. ;X定位点
  y. W  a/ X2 R2 g& b- A7 g#501= #501-1. ;X切削点+ i& U7 ~% {7 a% Q! a& k
G00 X#500 Z5.;
2 j9 h  s7 ^* H1 UG00 X#501;' o$ P  A' _0 T% _6 }- s. W  W% n
G01 X#501 Z-50. F0.2 ;/ ^0 i; y& q& x& x
IF [ #501 GT #502 ] GOTO 1;
- Q. j% g+ n" q3 {/ m$ c; IN2;
6 m# L8 y( ^. g: bG0 X101.;
' A& B: D' X+ [( ^7 W: p- ZM9;
) ^( B3 D: E# a G0X200. Z300. M5  ;, \& O! F% O. c- e; e  {
M30 ;! X1 H, X9 z0 c" }- k
不做车床很多年,看到你的程序,试着编了一下

点评

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,程序中的哪一行是退刀啊?; s  N& Y4 ~5 T0 w

% v, J$ g! @  \% K另外n1是行号吗?可以放在任意行的前面,然后goto1就能跳转到n1行?6 l9 ]& \1 e2 t, j( R' H( i& s; F
" \! V* y1 Z5 r6 v& Q. ]" ^

点评

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 | 显示全部楼层
真心没看懂啊,请教楼主
) h6 o7 ?6 ?. g; ], s3 U( s  g9 }) a# y" i* o
O520 ;
2 T5 t$ ~5 g% u#501=151 ; 赋值
, F3 f7 \) U  N' b$ Z6 V/ }#502=100 ;赋值
& G" k, D3 g6 FM44 ;
$ G7 f. D6 `- p& o" m  T# |T0303 M8 ;8 n! v# s0 M: g
M3 S450 ;% T+ `+ F0 i4 Y: h
G0 Z5 ;: m7 s% x" k1 x* N' m- [8 [# h
N1 #501= #501-1. ;X定位点
# C4 H4 f: Y. `5 EX#501 ;6 {& a. O5 E, i0 I7 l8 ~! n8 t
#501= #501-1. ;X切削点# J+ ^& u# V3 F4 l
G90 X#501 Z-50. F0.2 ;8 v! f2 y, |7 O: Y/ z# t1 _
IF [ #501 GE #502 ] GOTO 1当#501大于或等于100时转移到N1.这样可以使她循环到我们需要的尺寸.这里我没有经过仔细的计算是不是刚好到100.这个可以自己计算给值.懒得算了.: e3 F' N9 x' G% I$ G
G0X200. M9 ;
# ^6 a; _" m3 }9 D$ i" B/ p/ a" ^Z300. M5  ;
% }* \4 y$ w9 ]: [+ H+ XM30 ;
, K1 d' n: _8 E
8 C' K4 Z& |6 ^你的这段程序里z运动只有一个z5一个z-50和最后一个z300,而且在循环段里只有一个z-50,这个z没回0啊。
) Y/ z7 S" r0 }4 S( A另外循环段里:/ n9 y% M+ @! [  b; ~6 Q4 a) i$ j
N1 #501= #501-1. ;X定位点    第一次循环#501的值是150
- M% O5 Y# Y# o" nX#501 ;                                 第一次循环x走到150
  h) j- u+ v, @: \3 E#501= #501-1. ;X切削点  v, V6 h' ~1 N- v- \
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, 2024-11-25 09:45 , Processed in 0.058548 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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