数控宏程序基础Word下载.docx
- 文档编号:7188745
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:21
- 大小:22.86KB
数控宏程序基础Word下载.docx
《数控宏程序基础Word下载.docx》由会员分享,可在线阅读,更多相关《数控宏程序基础Word下载.docx(21页珍藏版)》请在冰点文库上搜索。
H05
除法
#i=#j?
H80
无条件转移转向N
H81
条件转移1
IF#j=#k,GOTONG65
H82
条件转移2
IF#j?
#k,GOTONG65
H83
条件转移3
IF#j>#k,GOTONG65
H84
条件转移4
IF#j<#k,GOTONG65
H85
条件转移5
H86
条件转移6
H99
产生P/S报警产生500+1号P/S报警
除此以外,G65指令还可以实现逻辑运算、开平方、取绝对值、三角运算及复合运算等,相关指令见
有关书籍,这里不一一介绍。
需要指出的是,不同的数控系统,其功能的多少也不一样,用户可参考有关
系统的说明书。
B类宏程序由控制语句,调用语句所组成。
宏程序可以与主程序做在一起,也可以单独做成一个子程序,然后用G65指令调用。
调用方法如下:
G65P(程序号)〈引数赋值〉或G65P(程序号)L(循环次数)〈引数赋值〉
所谓引数赋值,是指用A、B、C、D等地址给变量#1、#2、#3、#4等赋值。
B类宏程序的控制指令有三类,与C语言等高级程序设计语言的控制指令很类似。
一类是IF语句,格
式为:
IF[条件式]GOTOn(n即顺序号)
条件式成立时,从顺序号为n的程序段往下执行,条件式不成立时,执行下一下程序段;
第二类是
WHILE语句,格式为:
WHILE[条件式]DOm
.
ENDm
条件式成立时,从DOm的程序段到ENDm的程序段重复执行,条件式不成立时,则从ENDm的下
一程序段执行。
第三类是无条件转移指令,格式为:
GOTOn。
三、运用流程图编写用户宏程序的一般步骤
运用流程图编写用户宏程序的一般步骤为:
一分析零件结构,确定宏程序加工的内容,找出加工工艺
路线的律;
二将零件加工路线规律用流程图表达出来,并进一步分清楚哪些是程序编制过程中的变量,哪
些是常量,从而将一般的流程变成程序流程图;
三根据程序流程图,编写零件的加工程序。
四、应用举例
(一)宏程序应用实例一
如图1所示,在一根轴上加工N个槽,每个槽的宽度为a1,槽的间距为a2,槽底直径为b1,棒料直径b2,并且设所给材料足够长,试编写程序加工该零件,现有一零件参数为N=100个槽,槽底直径b1
=30mm,槽宽a1=5mm,工件直径b2=40mm,间隔a2=2mm,刀宽=3mm,现编写程序加工。
图1
1零件工艺过程分析
该零件是一个比较简单的例子,在压面机械上用得较多。
零件的精度要求不高,为了使程序有更广泛
的适应性,将宏程序做成一个子程序,用主程序来调用实现零件的加工。
加工时将坐标原点选择在如图所
示的位置,X轴离第一个槽的距离为一个间距a2的距离。
零件的加工过程如下将:
将刀具移至加工起点?
进刀?
切削第一个槽?
计算下一槽的位置并将刀具移
到此位置?
加工下一个槽……如此至最后一个槽加工完为止。
将此过程画成流程图,如图2(a)所示。
(a)(b)
图2
2零件加工过程中所使用的变量
通过分析,要加工该零件,需要如下一些变量:
工件直径#200=b2
槽底直径#201=b1
槽宽#202=a1
槽间间隔#203=a2
切槽刀宽度#204
每加工一个槽后,切槽刀在Z轴方向移动的距离#205(等于槽间距加上槽宽)
槽的起点坐标Xs=#206,Zs=#207
槽加工终点的坐标Xf=#208,Yf=#209
计算槽数目的变量#215
加工槽的总数#216
由此画出编制程序所用的流程图,如图2(b)所示。
3根据程序流程图编制程序
宏程序O9061
N10G65H83P160Q#204R#202如果刀宽大于槽完,则结束
N20G65H01P#215Q0计数器变量清零
N30G65H02P#205Q#202R#203计算#205
N40G65H02P#206Q#200R5工件直径加上5mm作为X方向起点
N50G65H02P#207Q#203R#204槽的间距加上一个刀宽
N60G65H01P#207Q?
#207取负值后作为第一个槽的Z向起点
N70G65H01P#208Q#201槽底直径作为槽终点的X坐标
N80G65H01P#209Q?
#205第一个槽终点Z向坐标
N90G00X#206Z#207M08定位到槽加工的位置
N100G75R1
N110G75X#208Z#209P2Q#204F20加工槽
N120G65H03P#207Q#207R#205下一个槽起点Z向坐标计算
N130G65H03P#209Q#209R#205下一个槽终点Z向坐标计算
N140G65H02P#215Q#215R1槽计数器加1
N150G65H84P90Q#215R#216判断槽是否加工完毕
N160M08
N170M99结束
主程序O0001
N10G65H01P#200Q40工件直径赋值
N20G65H01P#201Q30槽底直径赋值
N30G65H01P#202Q5槽宽赋值
N40G65H01P#203Q2槽间间隔赋值
N50G65H01P#204Q3切槽刀宽赋值
N60G65H01P#216Q100槽数赋值
N70G00X100Z100起刀点位置
N80M98P9061调用宏程序
N90M30程序结束
(二)宏程序应用实例二
对于一些大悬伸(加工深度与刀具直径之比较大)的零件,用普通加工方法总难达到理想效果,此时
用插铣法容易保证零件精度,如图3所示的零件,尺寸80很难保证,用插铣法后获得了比较好的效果。
曾经有工厂做过类似的程序,但程序只是针对零件本身,适应性不强,当零件的尺寸发生变化后,程序还
得发生较大修改。
笔者针对这种情况,将程序分为主程序和子程序,当零件的尺寸发生变化后,只需要修
改主程序即可,非常方便。
1加工工艺分析
传统加工工艺方法采用多次重复加工。
很难消除让刀,并且造成加工应力,最后由于应力释放造成零
件的内腔变小。
为了解决这个问题,我们将加工分为粗加工和精加工,粗加工采用普通的工艺方法,精加
工采用插铣。
建立如图3所示的坐标系,为了保证加工质量,防止划伤已加工过的表面,编程时避免使用钻孔循环
指令。
加工轨迹如图4所示,在YZ平面内进行以下加工步骤:
加工第一刀?
沿圆弧退刀?
返回Z=3处?
沿圆弧进刀?
沿X方向移动一个步距?
加工第二刀?
…。
加工过程中,粗加工尺寸80按79.6加工,而精加工采用宏程序编制高速插铣程序。
精加工的具体参
数如表2所示
图3零件图及坐标系
图4刀具路径
表2精加工参数
加工方式
加工材料
刀具
步距
设置安全高度
顺铣
铝合金
Φ18整体硬质合金加长球头刀
0.05
Z=3
2加工流程图
为增强程序的适应性,本程序刀分为子程序和主程序来编写,子程序起始位置为(0,0,50),刀具
在加工过程中的基本路线是按前面所给出的路线来走刀。
由此画出加工流程图如图5(a)所示。
图5
3程序所使用的变量及程序流程图
本程序中所使用的变量如下:
需加工部位X方向的长度:
#1;
需加工部位Y方向的长度:
#2;
需加工部位Z方向的深度:
#3;
X方向的步距:
#4;
走刀轨迹中,退(或进)刀时的半径:
#5(本例图4中的R10);
中间变量:
#6、#7、#8、#9
由所确定的变量及加工流程图,画出程序流程图如图5(b)所示。
4编制程序
子程序:
%9001
N10#1=#1/2#1变量取1/2作为X坐标
N20#2=#2/2#2变量取1/2作为Y坐标
N30G00X#1X方向定位到加工位置
N40G41D1Y#2Y方向定位到加工位置
N50G01Z3F3000M08下降下安全高度,开冷却液
N60#6=-(#3-#5)计算加工终点Z向坐标
N70#7=#2-2*#5计算退刀终点Y坐标
N80G01Z#6插铣加工
N90G02Y#7R#5退刀
N100G01Z3返回
N110G02Y#2R#5进刀
N120#8=#8+#4X方向总加工长度计数
N130G91G01X-#4X方向走一个步距
N140IF#8LE#1GOTO80判别第一侧是否加工完
N150G90Y-#2移至另一侧
N160G01Z#6插铣加工另一侧
N180G02Y-#7R#5退刀
N190G01Z3返回安全高度
N200G02Y-#2R#5进刀
N210#9=#9+#4X方向总加工长度计数
N220G91G01X#4X方向移动一个步距
N230IF#9LE#1GOTO160判别另一侧是否加工完
N240G90G40G00X0Y0M09X、Y方向返回起始点
N250Z50Z方向返回起始点
N260M99宏程序结束
主程序:
%1010
N10T01选一号刀
N20M06换刀
N30G00G90G54G19X0Y0S5000M03定位到起始位置,选择坐标平面及坐标系,启动主
轴。
N40G43H01Z50Z方向补偿
N60G65P9001A200B80.05C90D0E0F0I0.05J10K0调用宏程序并给相关变量赋值
N70M05停止主轴
N80G49Z50Z方向取消补偿
五、结束语
利用流程图编制用户宏程序,思路清晰,所编制的程序适应性好,是一种值得推广的方法。
04:
36阅读136评论1字号:
用户宏程序
能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指
令就能执行其功能。
l所存入的这一系列指令——用户宏程序
l调用宏程序的指令————宏指令
l特点:
使用变量
一.变量的表示和使用
(一)变量表示
#I(I=1,2,3,…)或#[<式子>]
例:
#5,#109,#501,#[#1+#2-12]
(二)变量的使用
1.地址字后面指定变量号或公式
格式:
<地址字>#I
<地址字>-#I
<地址字>[<式子>]
F#103,设#103=15则为F15Z-#110,设#110=250则为Z-250
X[#24+#18*COS[#1]]
2.变量号可用变量代替
#[#30],设#30=3则为#3
3.变量不能使用地址O,N,I
下述方法下允许
O#1;
I#26.00×
100.0;
N#3Z200.0;
4.变量号所对应的变量,对每个地址来说,都有具体数值范围
#30=1100时,则M#30是不允许的
5.#0为空变量,没有定义变量值的变量也是空变量
6.变量值定义:
程序定义时可省略小数点,例:
#123=149
MDI键盘输一.变量的种类
1.局部变量#1~#33
一个在宏程序中局部使用的变量例:
A宏程序B宏程序
……
#10=20X#10不表示X20
……断电后清空,调用宏程序时代入变量值2.公共变量#100~#149,#500~#531
各用户宏程序内公用的变量例:
上例中#10改用#100时,B宏程序中的
X#100表示X20
#100~#149断电后清空#500~#531保持型变量(断电后不丢失)
3.系统变量
固定用途的变量,其值取决于系统的状态例:
#2001值为1号刀补X轴补偿值
#5221值为X轴G54工件原点偏置值入时必须输入小数点,小数点省略时单位为μm
一.运算指令
运算式的右边可以是常数、变量、函数、式子
式中#j,#k也可为常量
式子右边为变量号、运算式
1.定义
#I=#j
2.算术运算
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
3.逻辑运算
#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k
4.函数
#I=SIN[#j]正弦
#I=COS[#j]余弦
#I=TAN[#j]正切
#I=ATAN[#j]反正切
#I=SQRT[#j]平方根
#I=ABS[#j]绝对值#I=ROUND[#j]四舍五入化整
#I=FIX[#j]下取整
#I=FUP[#j]上取整#I=BIN[#j]BCD?
BIN(二进制)
#I=BCN[#j]BIN?
BCD
1.说明
1)角度单位为度
90度30分为90.5度2)ATAN函数后的两个边长要用“1”隔开
#1=ATAN[1]/[-1]时,#1为了35.0
3)ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入
设#1=1.2345,#2=2.3456,设定单位1μm
G91X-#1;
X-1.235
X-#2F300;
X-2.346
X[#1+#2];
X3.580
未返回原处,应改为
X[ROUND[#1]+ROUND[#2]];
4)取整后的绝对值比原值大为上取整,反之为下取整
设#1=1.2,#2=-1.2时若#3=FUP[#1]时,则#3=2.0若#3=FIX[#1]时,则#3=1.0若#3=FUP[#2]时,则#3=-2.0若#3=FIX[#2]时,则#3=-1.05)指令函数时,可只写开头2个字母
ROUND?
RO
FIX?
FI
6)优先级
函数?
乘除(*,1,AND)?
加减(+,-,OR,XOR)
#1=#2+#3*SIN[#4];
7)括号为中括号,最多5重,园括号用于注释语句例:
#1=SIN[[[#2+#3]*#4+#5]*#6];
(3重)
一.转移与循环指令
1.无条件的转移
GOTO1;
GOTO#10;
2.条件转移
IF[<条件式>]GOTOn
条件式:
#jEQ#k表示=
#jNE#k表示?
#jGT#k表示>
#jLT#k表示<
#jGE#k表示?
#jLE#k表示?
IF[#1GT10]GOTO100;
…
N100G00691X10;
求1到10之和
O9500;
#1=0
#2=1
N1IF[#2GT10]GOTO2
#1=#1+#2;
#2=#2+1;
GOTO1
N2M301.循环
WHILE[<条件式>]DOm;
(m=1,2,3)
ENDm
说明:
1.条件满足时,执行DOm到ENDm,则从DOm的程序段
不满足时,执行DOm到ENDm的程序段
2.省略WHILE语句只有DOm…ENDm,则从DOm到ENDm之间形成死循环
3.嵌套
4.EQNE时,空和“0”不同
其他条件下,空和“0”相同
O0001;
#1=0;
#2=1;
WHILE[#2LE10]DO1;
#2=#2+#1;
END1;
M30;
FANUC系统宏程序编程
一变量
普通加工程序直接用数值指定G代码和移动距离;
例如,GO1和X100.0。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程
序或用MDI面板上的操作改变。
#1=#2+100
G01X#1F300
变量的表示
计算机允许使用变量名,用户宏程序不行。
变量用变量符号(#)和后面的变量号指定。
例如:
#1
表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
#[#1+#2-12]
变量的类型
变量根据变量号可以分成四种类型
变量号变量类型功能
#0空变量该变量总是空,没有值能赋给该变量.#1-#33局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.
当断电时,局部变量被初始化为空.调用宏程序时,自变
量对局部变量赋值,
#100-#199公共变量公共变量在不同的宏程序中的意义相同.当断电时,变量
#100-#199初始化为空.变量#500-#999的数据保存,即使
#500-#断电也不丢失.
999
#1000系统变量系统变量用于读和写CNC运行时各种数据的变化,例如,
刀具的当前位置和补偿值.
变量值的范围
局部变量和公共变量可以有0值或下面范围中的值:
-1047到-10-29或-10-2到-1047
如果计算结果超出有效范围,则发出P/S报警NO.111.
小数点的省略
当在程序中定义变量值时,小数点可以省略。
当定义#1=123;
变量#1的实际值是123.000。
变量的引用
为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,
要把表达式放在括号中。
G01X[#1+#2]F#3;
被引用变量的值根据地址的最小设定单位自动地舍入。
当G00X#/;
以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指
令值为G00X12346.
改变引用变量的值的符号,要把负号(-)放在#的前面。
G00X-#1
当引用未定义的变量时,变量及地址都被忽略。
当变量#1的值是0,并且变量#2的值是空时,G00X#1Y#2的执行结果为G00X0。
双轨迹(双轨迹控制)的公共变量
对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数
N0.6036和6037的设定,某些公共变量可同时用于两个轨迹。
未定义的变量
当变量值未定义时,这样的变量成为空变量。
变量#0总是空变量。
它不能写,只能读。
引用
当引用一个未定义的变量时,地址本身也被忽略。
当#1=<
空>
当#1=0
G90X100Y#1G90X100Y#1G90X100G90X100Y0(b)运算
除了用<
赋值以外,其余情况下<
与0相同。
时当#1=0时#2=#1#2=#1
#2=<
#2=0
#2=#*5#2=#*5#2=0#2=0
#2=#1+#1#2=#1+#1#2=0#2=0
(c)条件表达式
EQ和NE中的<
不同于0。
时当#1=0时#1EQ#0成立#1EQ#0不成立#1NE#0成立#1NE#0不成立#1GE#0成立#1GE#0不成立#1GT#0不成立#1GT#0不成立限制
程序号,顺序号和任选程序段跳转号不能使用变量。
例:
下面情况不能使用变量:
0#1;
/#2G00X100.0;
N#3Y200.0;
二算术和逻辑运算
下面表中列出的运算可以在变量中执行。
运算符右边的表达式可包含常量和
或由函数或运算符组成的变量。
表达式中的变量#j和#k可以用常数赋值。
左边的变量也可以用表达式赋值。
角度单位
函数SIN,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。
如90?
30’表示
为90.5度。
ARCSIN#i=ASIN[#j]
(1)取值范围如下:
当参数(NO.6004#0)NAT位设为0时,270?
~90?
当参数(NO.6004#0)NAT位设为1时,-90?
(2)当#j超出-1到1的范围时,发出P/S报警NO.111.
(3)常数可替代变量#j
ARCCOS#i=ACOS[#j]取值范围从180?
~0?
当#j超出-1到1的范围时,
发出P/S报警NO.111.常数可替代变量#j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数控 程序 基础
![提示](https://static.bingdoc.com/images/bang_tan.gif)