宏程序

更新时间:2023-10-10 17:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

苏州大学应用技术学院电子教材

宏程序在数控编程中的应

概述

用户宏程序是以普通NC指令、采用变量的NC指令、计算指令和转移指令的组合,通过各种算术和逻辑运算、转移和循环等命令,而编制的一种可以灵活运用的程序,只要改变变量的值,即可完成不同的加工或操作,可以显著地增强机床的加工能力,同时可精简程序量。

用户宏功能是提高数控机床性能的一种特殊功能。使用中,通常把能完成某一功能的一系列指令像子程序一样存入存储器,然后用一个总指令代表它们,使用时只需给出这个总指令就能执行其功能。

用户宏功能主体是一系列指令,相当于子程序体。既可以由机床生产厂提供,也可以由机床用户自己编制。

宏指令是代表一系列指令的总指令,相当于子程序调用指令。

用户宏功能的最大特点是,可以对变量进行运算,使程序应用更加灵活、方便。 用户宏功能有A、B两类。

1. A类宏程序

1.1变量

在常规的主程序和子程序内,总是将一个具体的数值赋给一个地址。为了使程序更具通用性、更加灵活,在宏程序中设置了变量,即将变量赋给一个地址。 1:变量的表示

变量可以用“#”号和跟随其后的变量序号来表示:

机电教研室

苏州大学应用技术学院电子教材

#I(I=1,2,3,…) 例:#109,#501, 2:变量的引用

(1)地址字后面指定变量号或公式

格式: <地址字>#I <地址字>-#I

<地址字>[<式子>]

例:对于F#103,若#103=50时,则为F50;

对于Z-#110,若#110=100时,则Z为-100;

对于G#130,若#130=3时,则为G03;

X[#110+#111*COS[#112]] 。

(2)变量号可用变量代替 ,

例:#[#100],设#100=110

则为#110

当用变量替换变量号时,不能表示为“# #100”,而应写成“#9100”,即用“9”替换后面的“#”表示替换的变量号,而且低级号被取代 例:若#100=105,#105=-500,则X#9100表示X-500,而X-#9100表示X500。 (3)变量不能使用地址O,N,I

例:下述方法下允许 O#1;

I#2 6.00×100.0; N#3 Z200.0;

(4)变量号所对应的变量,对每个地址

来说,都有具体数值范围 例:#30=1100时,则M#30是不允许的 (5)#0为空变量,没有定义变量值的变

机电教研室

苏州大学应用技术学院电子教材

量也是空变量 (6)变量值定义:

程序定义时可省略小数点,例:#

123=149 3:变量的类型

FANUC系统的变量分为公共变量和系统变量两类。 1)公共变量

公共变量是在主程序和主程序调用的各用户宏程序内公用的变量。也就是说,在一个宏指令中的#i与在另一个宏指令中的#i是相同的。

公共变量的序号为:#100~#131;#500~#531。其中#100~#131公共变量在电源断电后即清零,重新开机时被设置为“0”;#500~#531公共变量即使断电后,它们的值也保持不变,因此也称为保持型变量。 2)系统变量

系统变量定义为:有固定用途的变量,它的值决定系统的状态。系统变量包括刀具偏置变量,接口的输入/输出信号变量,位置信息变量等。

系统变量的序号与系统的某种状态有严格的对应关系。例如,刀具偏置变量序号为#01~#99,这些值可以用变量替换的方法加以改变,在序号1~99中,不用作刀偏量的变量可用作保持型公共变量#500~#531。 接口输入信号#1000~#1015,#1032。通过阅读这些系统变量,可以知道各输入口的情况。当变量值为“1”时,说明接点闭合;当变量值为“0”时,表明接点断开。这些变量的数值不能被替换。阅读变量#1032,所有输入信号一次读入。 1.2 宏指令G65

机电教研室

苏州大学应用技术学院电子教材

宏指令G65可以实现丰富的宏功能,包括算术运算、逻辑运算等处理功能。 一般形式: G65 Hm P#i Q#j R#k

式中:

m--宏程序功能,数值范围01~99; #i--运算结果存放处的变量名; #j--被操作的第一个变量,也可以是一个常数;

#k--被操作的第二个变量,也可以是一个常数。

例如,当程序功能为加法运算时:

程序 P#100 Q#101 R#102...... 含义为#100=#101+#102

程序 P#100 Q-#101 R#102...... 含义为#100=-#101+#102

程序 P#100 Q#101 R15...... 含义为#100=#101+15

举例如下: O * * * *;

程序号

G65 H01 * * * *; 运

算指令

G00 X#101 Z#102; 使

用变量的NC指令

* * G65 H82 * * * *; 转

移指令

M30

程序结束指令

注:变量值不带小数点,与各地址不带小数点时所表示的意义相同。 1.3 宏功能指令

1. 算术运算指令(表7.1)

机电教研室

苏州大学应用技术学院电子教材GGGGGGGG码 65 65 65 65 65 65 65 码 01 02 03 04 05 21 22 65 G23 65 65 65 65 GGGG24 25 26 27 表7.1 算术运算指令 H功 定 义 能 H定# i=# j 义,替换 H加 # i=# j+# k H减 # i=# j-# k H乘 # i=# j × # k H除 # i=# j/# k H平方# i=√# j 根 H绝对# i=|# j| 值 求余 # i=# j-trunc﹙# j/# k﹚· # k H Trunc;丢弃小于1的分数部分 BCD# i=BINH码→二进﹙# j﹚ 制码 H二进# i=BCD制码→﹙# j﹚ BCD码 H复合# i=﹙# i 乘/除 × # j﹚÷# k H复合# i=√# j2平方根1 +# k2 机电教研室

//#102 = #503 + #102当前孔角度位置θi =α+ (360o×i) / n

N160 G65 H32 P#103 Q#502 R#102 //#103 = #502 ×COS(#102)当前孔的 X坐标

N170 G65 H31 P#104 Q#502 R#102 //#104 = #502 ×SIN(#102) 当前孔的Y坐标

N180 G90 G00 X#103 Y#104 //定位到当前孔(返回开始平面)

N190 G00 Z#506 //快速进到R平面

N200 G01 Z#505 F#507 //加工当前孔

N210 G00 Z#506 //快速退到R平面

N220 G65 H02 P#100 Q#100 R1 //#100 = #100+1孔计数

N230 G65 H84 P-130 Q#100 R#101 //当#100 < #101时,向上返回到130程序段 N240 M99 //子程序结束

调用上述子程序的主程序如下: O0010

N10 G54 G90 G00 X0 Y0 Z20 //进入加工坐标系 N20 M98 P9010 //调用钻孔子程序,加工圆周等分孔 N30 Z20 //抬刀 N40 G00 G90 X0 Y0 //返回加工坐标系零点 N50 M30 程序结束

设置G54:X=-400,Y=-100,Z=-50。

机电教研室

苏州大学应用技术学院电子教材

苏州大学应用技术学院电子教材

变量#500~#507可在程序中赋值,也可由MDI方式设定。

例4:根据以下数据,用用户宏程序功能加工圆周等分孔。如图7.2:在半径为50mm的圆周上均匀地钻8个ф10的等分孔,第一个孔的起始点角度为30o,设圆心为O点,以零件的上表面为Z向零点。

首先在MDI方式中,设定以下变量的值: #502:半径r为50;

#503:起始角度α为30; #504:孔数n为8; #505:孔底Z坐标值为-20; #506:R平面Z坐标值为5; 图7.2 等#507:F进给量为50。 分孔应用举例 加工程序为: O6100

N10 G54 G90 G00 X0 Y0 Z20 N20 M98 P9010

N30 G00 G90 X0 Y0 N40 Z20 N50 M30

设置G54:X=-400,Y=-100,Z=-50。

6、思考

如图7.3所示在边长为100毫米的正方形上钻8个孔,正方形的中心作为O点,Z向零点设在工件的上表面,孔深为35毫米,采用用户宏程序编写其加工程序。 7.3例题图

机电教研室

苏州大学应用技术学院电子教材

2.

如何使加工中心这种高效自动化机床更好地发挥效益,其关键之一,就是开发和提高数控系统的使用性能。B类宏程序的应用,是提高数控系统使用性能的有效途径。B类宏程序与A类宏程序有许多相似之处,因而,下面就在A类宏程序的基础上,介绍B类宏程序的应用。

宏程序的定义:由用户编写的专用程序,它类似于子程序,可用规定的指令作为代号,以便调用。宏程序的代号称为宏指令。 宏程序的特点:宏程序可使用变量,可用变量执行相应操作;实际变量值可由宏程序指令赋给变量。 7.3.1 基本指令

1、宏程序的简单调用格式

宏程序的简单调用是指在主程序中,宏程序可以被单个程序段单次调用,调用方式为:非模态用(G65)、模态调用(G66、G67),调用宏程序时,数据(自变量)可赋值到宏程序中。操作者还可以通过设定有关的系统参数,将宏程序固化为数控系统的通用准备功能,只要用自行设定的G、M代码调用宏程序主体程序号,就可完成相应的功能,进行相应的加工操作。本文只讨论G65调用。 调用指令格式: G65 P(宏程序号) L(重复次数)(变量分配)

其中:G65――宏程序调用指令

P(宏程序号)――被调用的宏程序代号; L(重复次数)――宏程序重复运行的次数,重复次数为1时,可省略不写;

(变量分配)――为宏程序中使用的变量赋值。

机电教研室

B类宏程序

苏州大学应用技术学院电子教材

宏程序与子程序相同的一点是,一个宏程序可被另一个宏程序调用,最多可调用4重。

2、宏程序的编写格式

宏程序的编写格式与子程序相同。其格式为:

0 ~(0001~8999为宏程序号) //程序名

N10 …… //指令 .

N~ M99 //宏程序结束

上述宏程序内容中,除通常使用的编程指令外,还可使用变量、算术运算指令及其它控制指令。变量值在宏程序调用指令中赋给。

举例如下:

3、变量

在常规程序中,总是直接用数值指定G代码和移动距离。使用用户宏程序时,数值可以直接指定或用变量指定,当用变量时,变量值可用程序活用MDI面板上的操作改变。

变量用变量符号(#)和后面的变量号指定。根据变量号可以将变量分成四种类

机电教研室

苏州大学应用技术学院电子教材型。如下所列: 变量号 变量类型 #0 空变量(NULL) #1——局部变量#33 (LOCAL)

功能 该变量总是空,没有值能赋给该变量 局部变量只能用在宏程序中存储数据,当断电时,局部变量被初始化为空。调用宏程序时自变量对局部变量赋值。 #100—公共/全局公共变量在不同的宏程—#199 变量序中的意义相同,当断电#500—(COMMON) 时,变量#100——#199初—#999 始化为空,变量#500——#999的数据保存,即便断电也不丢失。 #1000系统变量 有固定用途的变量,用于—— (SYSTEM) 读写CNC运行时各种数据的变化,它的值决定系统的状态,包括刀具当前位置和补偿、接口的输入输出信号变量、位置信号变机电教研室

苏州大学应用技术学院电子教材

工件坐标建立在工件右端轴心处,圆心坐标为X0,Z-23。起点Z坐标为0,终点Z坐标为-46,考虑一刀车出量太大,拟分三刀粗车,最后一刀背吃刀量0.3左右用于精车,把圆心X坐标作为变量进行编程。 程序如下: O0001

G50 S2000; G28 U0 W0;

G96 S150 M3 T0101; G00 X60. Z5.; #24=3.3;

WHILE[#24 GT 0] DO2;

G42 G00 X[38.+2*#24] Z1.;

G65 A23 B40 Z-23 I0 J-46 K0.05 Q2 F0.1; P2000 L1; #24=#24-1.5;

IF[#24EQ-2] GOTO50; IF[#24LT0] THEN#24=0; G40 G00 X55.; Z2.; END2;

N50 G40 G00 X60.;

机电教研室

苏州大学应用技术学院电子教材

Z200.; M5; M30;

例2、如图7.4所示的圆环点阵孔群中各孔的加工,我们曾经用A类宏程序解决过这类问题,这里再试用B类宏程序方法来解决问题:

宏程序中将用到下列变量:

#1――第一个孔的起始角度A,在主程序中用对应的文字变量A赋值;

#3――孔加工固定循环中R平面值C,在主程序中用对应的文字变量C赋值; #9――孔加工的进给图7.4圆环点量值F,在主程序中用阵孔群的加工 对应的文字变量F赋值;

#11――要加工孔的孔数H,在主程序中用对应的文字变量H赋值;

#18――加工孔所处的圆环半径值R,在主程序中用对应的文字变量R赋值;

#26――孔深坐标值Z,在主程序中用对应的文字变量Z赋值;

#30――基准点,即圆环形中心的X坐标值XO;

#31――基准点,即圆环形中心的Y坐标值YO;

#32――当前加工孔的序号i; #33――当前加工第i孔的角度;

机电教研室

苏州大学应用技术学院电子教材

#100――已加工孔的数量;

#101――当前加工孔的X坐标值,初值设置为圆环形中心的X坐标值XO;

#102――当前加工孔的Y坐标值,初值设置为圆环形中心的Y坐标值YO。

用户宏程序编写如下: O8000 N8010 #30=#101 //基准点保存 N8020 #31=#102 //基准点保存 N8030 #32=1 //计数值置1

N8040 WHILE [#32 LE ABS[#11]] DO1 //进入孔加工循环体

N8050 #33=#1+360×[#32-1]/#11 //计算第i孔的角度

N8060 #101=#30+#18×COS[#33] //计算第i孔的X坐标值

N8070 #102=#31+#18×SIN[#33] //计算第i孔的Y坐标值

N8080 G90 G81 G98 X#101 Y#102 Z#26 R#3 F#9 //钻削第i孔 N8090 #32=#32+1 //计数器对孔序号i计数累加

N8100 #100=#100+1 //计算已加工孔数 N8110 END1 //孔加工循环体结束 N8120 #101=#30 //返回X坐标初值XO N8130 #102=#31 //返回Y坐标初值YO

M99

机电教研室

苏州大学应用技术学院电子教材//宏程序结束

在主程序中调用上述宏程序的调用格式为:

G65 P8000 A~ C~ F~ H~ R~ Z~ 上述程序段中各文字变量后的值均应按零件图样中给定值来赋值。

练习与思考题

一、 判断题 1. ( )一般规定加工中心的宏编程采用A类宏指令,数控铣床宏编程采用B类宏指令。

2.()在“G65 H01 P#100 Q1” 中,H01是指01号偏移量。

二、 选择题

1. 下列字符中,_________不适合用于B类宏程序中文字变量。

A、 F; B、 G; C、 J; D、 Q。 2. G65 P9201 属于______宏程序。 A、 A类; B、B类; C、SIMENS; D、FAGOR。

3.宏程序中的#110属于___________。 A、公共变量; B、局部变量; C、系统变量; D、常数。 三、 简答题 1. B类宏程序中,为何英文字母G、L、N、O、P一般不作为文字变量名?

2.B类宏程序中,有哪些变量类型,其含义如何?

3.宏程序的功能是什么?宏程序变量有哪些?

机电教研室

苏州大学应用技术学院电子教材

程序段号标识地址N不能与变量一起使用:不允许 N#1

程序段跳跃标识地址 / (斜线符号)不能与变量一起使用:不允许 / #1

不能超过地址取值范围的最大值:if #1=1000 then G#1 不允许

单个变量的括号可以忽略:#[7] 与 #7 相同

一个变量不能直接替换另一个变量。例1是错误的 # #7 不允许

一个变量不能直接替换另一个变量。例2是错误的 ##7 不允许

一个变量不能直接替换另一个变量。例3是错误的 #[#7] 不允许

溢出与下溢情况,用0°和90°进行三角计算时:SIN[0]=负溢出

COS[90]=正溢出

TAN[0]=负溢出

TAN[90]=正溢出

机电教研室

苏州大学应用技术学院电子教材

计算中允许嵌套:如果预先定义了变量#7和#9,下面的嵌套是正确的

#101=FIX[[#9*1000]/[301414*#7]] (3)变量的分配类型I(常用):

除去G、L、N、O、P地址符以外都可以作为引数赋值的地址符,大部分无顺序要求,但对I、J、K则必须按字母顺序排列,对没有使用的地址可省略。

(4)引数赋值II(不常用):

除去上表所示的引数之外,I、J、K作为一组引数,最多可指定10组。引数赋值II的地址和宏主体中使用的变量号码的对应关系如下表所示。

机电教研室

苏州大学应用技术学院电子教材

例:G65 P1000 A1.0 B2.0 I3.0 则上述程序段为宏程序的简单调用格

式,其含义为:调用宏程序号为1000

的宏程序运行一次,并为宏程序中的变量赋值,其中:#1为1.0,#2为2.0,

#4为3.0。

4、算术和逻辑运算指令

变量之间进行运算的通常表达形式是:#i =(表达式)

机电教研室

苏州大学应用技术学院电子教材

注意点:(1)角度以度指定:如90°30′表示90.5度

(2)逻辑运算一位一位地按二进制

数执行

(3)以上算术运算和函数运算可以结

合在一起使用,运算的先后顺序是:函数运算、乘除运算、加减运算。

(4)表达式中括号的运算将优先进行。

连同函数中使用的括号在内,括号在表达式中最多可用5层,超出时出现P/S报警NO.118

5、控制指令 (1)运算符: 运算符 含义 EQ 等于(=) NE 不等于(≠) GT 大于(>) GE 大于等于(≤) LT 小于(<= LE 小于等于(≥) (2)转移和循环:

在宏程序中有三种转移和循环操作可供

机电教研室

苏州大学应用技术学院电子教材使用: 1)GOTO语句(无条件转移。格式:GOTOn,n为顺序号(1-99999)

2)IF[〈条件表达式〉]GOTOn

IF[<条件表达式]THEN

例:如果#1等于10.把30.赋给#2 IF[#1EQ10.]THEN #2=30 3)重复执行

编程格式:WHILE [条件表达式] DO m (m = 1,2,3)

END m 上述“WHILE…END m”程序含意为:

1)条件表达式满足时,程序段DO m至 END m即重复执行;

2)条件表达式不满足时,程序转到END m后处执行;

3)如果WHILE [条件表达式]部份被省略,则程序段DO m至 END m之间的部份将一直重复执行;

注意:1) WHILE DO m和 END m必须成对使用;

2)DO语句允许有3层嵌套,即: DO 1

机电教研室

苏州大学应用技术学院电子教材DO 2 DO 3 END 3 END 2 END 1

3)DO语句范围不允许交叉,即如下语句是错误的: DO 1 DO 2 END 1 END 2

4)标号m(1,2,3)可以根据要求在同一个程序段内多次使用; WHILE [ ****] DO1; * *

END1; * *

WHILE [ ****] DO1; * *

END1;

5)控制可以转移到循环的外边; WHILE [ ****] DO1;

IF [****] GOTO n ; *

END1; Nn;

6)转移不能进入循环区内; IF [****] GOTO n; * *

机电教研室

苏州大学应用技术学院电子教材

WHILE [****] DO1; * Nn; END1;

以上仅介绍了B类宏程序应用的基本问题,有关应用详细说明,请查阅FANUC-0i系统说明书。 7.3.2 应用举例

例1、通用椭圆程序编制:

椭圆参数方程:x=acosθ y=asinθ

对应在车床上X-Z坐标椭圆上一点P坐标Xp、Zp为:

Xp=R1SINθp+X1 Zp=R2COSθp+Z1

式中:R1为X向椭圆半轴长,R2为Z

向椭圆半轴长。X1、X2为椭圆的中心

点坐标。通过上式可以计算出椭

圆曲线起、纵点的θp:

θp=arcsin[(Xp- X1)/ R1] 或θp=arccos[(Zp- Z1)/ R2]

机电教研室

苏州大学应用技术学院电子教材将起点和终点间夹角割成多个相等的夹角,通过在起点夹角基础上增加 △θ角(分割角)依次计算出椭圆曲线轨线上从起点到终点间若干个点,刀具按就算出的点依次移动,只要分割角足够小,计算出的点足够密,就能插补出光滑的椭圆曲线。

现在编写一个椭圆曲线宏程序,只要给定椭

圆曲线的起、终Z坐标,圆心坐标及

长,短半轴的尺寸,就能让刀具走出椭圆曲

线轨迹。流程图如图6所示

G65 A(X向半轴长)B (Z向半轴长)X (圆

机电教研室

苏州大学应用技术学院电子教材

心X坐标)Z (圆心Z坐标)

I(起点Z坐标)J(终点Z坐标)K(分

割角度)Q(1顺圆,其余值逆圆) F(进给速度)P(子程序员)L(执行

次数)

O2000 #3=ACOS[[#4-#26]/#2]; 计算起始角

#7=ACOS[[#5-#26]/#2]; 计算终点角

IF[#17EQ1.]GOTO 100; 顺逆圆判断

如果是顺圆,跳至N100程序段

G00 X[2*[#1*SIN[#3]]+#24] Z[#4+1.]; 快速靠近加工起点

WHILE[#3LE#7]DO1; 如果没到终点进入循环段程序,到了终点执行循环段后程序

#8=2*[#1*SIN[#3]]+#24; 计算X坐标点

#11=#2*COS[#3]+#26; 计算Y坐标点

机电教研室

苏州大学应用技术学院电子教材

G01 X#8 Z#11 F#9; 移动到XZ坐标点

#3=#3+#6; 增加一个步长角

END1; 循环结束 M99; 回到主程序 N100 G00 X[-2*[#1*SIN[#3]]+#24] Z[#4+1.]

WHILE[#3LE#7]DO1;

#8=-2*[#1*SIN[#3]]+#24; #11=#2*COS[#3]+#26; G01 X#8 Z#11 F#9; #3=#3+#6; END1; M99;

实例应用:毛坯料为48,要加工如下图椭圆外形:

机电教研室

本文来源:https://www.bwwdw.com/article/7qsf.html

Top