宏程序编程解析.docx

上传人:罗晋 文档编号:11088705 上传时间:2021-06-29 格式:DOCX 页数:15 大小:86.15KB
返回 下载 相关 举报
宏程序编程解析.docx_第1页
第1页 / 共15页
宏程序编程解析.docx_第2页
第2页 / 共15页
宏程序编程解析.docx_第3页
第3页 / 共15页
宏程序编程解析.docx_第4页
第4页 / 共15页
宏程序编程解析.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《宏程序编程解析.docx》由会员分享,可在线阅读,更多相关《宏程序编程解析.docx(15页珍藏版)》请在三一文库上搜索。

1、用户宏程序虽然子程序对编制相同加工操作的程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制相同加工操作的程序更方便,更容易。 可将相同加工操作编为通用程序,如型腔加工宏程序和固定加工循环宏程序。 使 用时,加工程序可用一条简单指令调出用户宏程序,和调用子程序完全一样。一、变量普通加工程序直接用数值指定 G代码和移动距离;例如,G01和X100o使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用 程序或用MDI面板上的操作改变。#1=#2+100;G01 X#1 F300;说明:1、变量的表示计算机允许使用变量名,用户宏程序不行。变量用变量符号(#

2、)和后面的变量号指定。例如:#1表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#1+#2-122、变量的类型变量根据变量号可以分成四种类型。变量号变量类型功能#0r空变量该变量总是空,没有值能赋给该变量。#1-#33局部变量局部变量只能用在宏程序中存储数据,例如,运算结 果。当断电时,局部变量被初始化为空。调用宏程序 时,自变量对局部变量赋值。#100-#199#500-#999公共变量公共变量在不同的宏程序中的意义相同。当断电时, 变量#100 #199初始化为空。变量#500 -#999的 数据保存,即使断电也/、丢失。#1000系统变量系统变量用于读和写CNC运行时各3、

3、变量值的表示范围局部变量和公共变量可以有0值或下面范围中的值:-1047 至-10-29 或10-29 至 M047如果计算结果超出有效范围,则发出 P/S报警No. 111。4、小数点的省略当在程序中定义变量值时,小数点可以省略。例:当定义#1=123;变量#1的实际值是123.000;5、变量的引用为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。例如:G01X#1+#2F#3;被引用变量的值根据地址的最小设定单位自动地舍入。例如:当G00X#1;以1/1000mm的单位执行时,CNC把12.3456赋值给变量#1,实际指令值为G00X12. 346;

4、改变引用变量的值的符号,要把负号(一)放在#的前面。例如:GOOX-#1;当引用未定义的变量时,变量及地址字都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为 G00X0;。6、未定义的变量当变量值未定义时,这样的变量成为“空”变量。变量 #0总是空变量。它不能写,只能读。(a)引用当引用一个未定义的变量时,地址本身也被忽略。当#1=空当 #1=0G90X100Y#1G90X100G90X100Y#1G90X100Y0(b)运算当#1=空当 #1=0#2= #1 1#2= #11#2= 空#2=0#2= #1*5#2= #1*5#2=0#2=0#2=

5、#1+#1#2= #1+#1#2=0#2=0条件表达式EQ和NE中的空不同于00当#1=空当 #1=0#1EQ#0#1EQ#01成立不成立#1 NE#0 1#1 NE#0 I成立不成立#1 GE#0 I#1 GE#0 I成立不成立#1 GT#0 1#1 GT#0 I+不成立T 不成立7、限制程序号,顺序号和任选程序段跳转号不能使用变量。例:下面情况不能使用变量:O#1;/#2G00X100;N#3Y200;二、算术和逻辑运算下表中列出的运算可以在变量中执行。 运算符右边的表达式可包含常量和/ 或由函数或运算符组成的变量。表达式中的变量 #和#卜可以用常数赋值。左边 的变量也可以用表达式赋值。算

6、术和逻辑运算功能格式备注定义#i= #J加法 减法 乘法 除法#i= #J+#k;#i= #J-#k;#i= #J*#k ;#i= #J/#k;正弦 反正弦 余弦 反余弦 正切 反正切#i=SIN#J;#i=ASIN#J;#i=COS#J;#i=ACOS#J;#i=TAN#J;#i=ATAN#J;角度以度指定.90 30, 表示为90. 5度平方根 绝对值 舍入 上取整 卜取整 自然对数 指数函数#i=SQRT#J;#i=ABS#J;#i=ROUND#J;#i=FIX#J;#i=FUP#J;#i=LN#J;#i=EXP#J;逻辑运算一位一位地按 二进制数执行或 异或与# i= #J OR #k

7、;# i= #J XOR #k;# i= #J AND #k;从BCD转为BIN 从BIN转为BCD#i=BIN#J;#i=BCD#J;用于与PMC的信号交换说明:角度单位函数SIN, COS, ASIN , ACOS, TAN和ATAN的角度单位是度。如 90 30表示为90. 5度。三、宏程序语句和NC语句下面的程序段为宏程序语句: 包含算术或逻辑运算(=)的程序段。 包含控制语句(例如,GOTO, DO, END)的程序段。 包含宏程序调用指令(例如,用G65, G66, G67或其它G代码,M代码调用 宏程序)的程序段。除了宏程序语句以外的任何程序段都为 NC语句。说明1、与NC语句的

8、不同即使置于单程序段运行方式,机床也不停止。但是,当参数No。6000#5SBM设定为1时,在单程序段方式中,机床停止。在刀具半径补偿方式中宏程序语句段不做为不移动程序段处理。2、与宏程序语句有相同性质的 NC语句含有子程序调用指令(例如,用M98或其它M代码或用T代码调用子程序) 但没有除O, N或L地址之外的其它地址指令的 NC语句其性质与宏程序相 同。不包含除O. N. P或L以外的指令地址的程序段其性质与宏程序语句相同。四、转移和循环在程序中,使用GOTO语句和IF语句可以改变控制的流向。有三种转移和循环操作可供使用:转移和循环GOTO语句(无条件转移)IF语句(条件转移:IF THE

9、N)WHILE语句(当一时循环)a、无条件转移(GOTO语句)转移到标有顺序号n的程序段。当指定1到99999以外的顺序号时,出现P/S报警No. 128。可用表达式指定顺序号。GOTO n; n:顺序号(1 到 99999)例:GOTO 1;GOTO #10b、条件转移(IF语句)IF之后指定条件表达式。IF条件表达式GOTO n如果指定的条件表达式满足时,转移到标有顺序号n的程序段。如果指定的 条件表达式不满足,执行下个程序段。如果变量#1的值大于10,转移到顺序号N2的程序段如果条件不满足一 IF#1 GT l0GOTO 2_k程序N2GOOG91 X10; J如果条件满足IF条件表达式

10、THEN如果条件表达式满足,执行预先决定的宏程序语句。只执行一个宏程序语句如果#1和#2的值相同,0赋给#3。IF#1 EQ #2 THEN #3=0说明1、条件表达式条件表达式必须包括算符。算符插在两个变量中间或变量和常数中间,并且用括号(,)封闭。表达式可以替代变量。2、运算符运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值 小于或大于另一个值。注意,不能使用不等号。运算符运算符含义EQ等于(二)NE不等于G)GT二()GE大于或等于(学)LT小于()LE小于或等于(0)典型程序卜面的程序计算数值1-10的总和O9500;# 1=0;存储和数变量的初值# 2=1;被加数变

11、量的初值N1 IF#2 GT 10GOTO 2;# 1= #1+#2;# 2= #2+#1;GOTO 1;N2 M30;c、循环(WHILE语句)当被加数大于10时转移到N2计算和数下一个被加数转至ij N1程序结束在WHILE后指定一个条件表达式。当指定条件满足时,执行从DO到END 之间的程序。否则,转到END后的程序段。L WHILE 条件表达式DO m; (m=1, 2, 3)如果条件不满足程序如果条件满足e ENDm;说明1、当指定的条件满足时,执行 WHILE从DO到END之间的程序。否则,转 而执行END之后的程序段。这种指令格式适用于IF语句。DO后的号和END 后的号是指定程

12、序执行范围的标号,标号值为1, 2, 3。若用1, 2, 3以外的值会产生P/S报警No. 126。2、嵌套在DO-END循环中的标号(1到3)可根据需要多次使用。但是,当程序有 交叉重复循环(DO范围的重叠)时,出现P/S报警No. 124。a标号(1到3)可以根据要求多次使用.一WHILE DO 1;程序END 1;一WHILE DO 1;程序-END 1;b、 DO的范围不能交又.一WHILE DO 1;程序|-WHILE DO 2;-END 1;程序1- END2;c、 DO循环可以嵌套3级.-WHILE DO 1;- WHILE DO 2;WHILE DO 3;程序END3;E EN

13、D2;-END1 ;d、控制可以转到循环的外边.WHILE DO 1;IF GOTO n;-END 1;- Nnf、转移不能进入循环区内.I IF GOTO n;I-WHILEDO 1 ;L-k Nn.;1END l;说明无限循环当指定DO而没有指定 WHILE语句时,产生从DO到END的无限循环。处理时间当在GOTO语句中有标号转移的语句时,进行顺序号检索。反向检索的时间要比正向检索长。用 WHILE语句实现循环可减少处理时间。典型程序下面的程序计算数值1到10的总和O0001;# 1=0;# 2=1;WHILE #2 LE 10 DO 1;# 1= #1+#2;# 2= #2+1:END

14、l;M30;五、宏程序的调用用下面的方法调用宏程序:宏程序调用-I 非模态调用(G65) 模态调用(G66, G67)用G代码调用宏程序用M代码调用宏程序用M代码调用子程序用T代码调用子程序宏程序调用(G65)和子程序调用(M98)的不同之处如下:a、用G65,可以指定自变量(数据传送到宏程序)。M98没有该功能。b、当M98程序段包含另一个NC指令(例如,G01 X100 M98 Pp)时,在指令执 行之后调用子程序。相反,G65无条件地调用宏程序。c、M98程序段包含另一个NC指令(例如,G01 X100 M98 Pp)时,在单程序段 方式中,机床停止。相反,G65机床不停止。d、用G65

15、,改变局部变量的级别。用 M98,不改变局部变量的级别。1、非模态调用(G65)当指定G65时,以地址P指定的用户宏程序被调用。数据(自变量)能传递到 用户宏程序体中。G65 Pp L 6自变量指定,;P:要调用的程序L:重复次数(默认值为1)e:自变量:数据传递到宏程序O0001; G65 P9010 L2 A1 B2;M30;O9010#3= #1+#2;IF #3 GT 360 GOTO 9 ;GOO G91 X#3;N9 M99;说明a、呼调在G65之后,用地址P指定用户宏程序的程序号。当要求重复时,在地址L后指定从1到9999的重复次数。省略L值时,认 为L等于1。使用自变量指定,其

16、值被赋值到相应的局部变量。b、自变量指定可用两种形式的自变量指定。自变量指定 I使用除了 G, L, O, N和P以 外的字母,每个字母指定一次。自变量指定II使用A, B, C和Ii, Ji和Ki(i 为110)。根据使用的字母,自动地决定自变量指定类型。自变量指定I地址变量号地址变量号地址变量号A#1I#4T#20B#2J#5U#21C#3K#6V#22D#7M#13W#23E#8Q#17X#24F#9R#18Y#25H#11S#19Z#26地址G, L, N, Q和P不能在自变量中使用。不需要指定的地址可以省略,对应于省略地址的局部变量设定为空。地址不需要按字母顺序指定。但应符合字地址的

17、格式。但是, I, J和K需 要按字母顺序指定。例:B A D - J K正确B A D - J I不正确自变量指定R自变量指定II使用A, B和C各1次,I, J, K10次。自变量指定II用于传 递诸如三维坐标值的变量。地址变量号地址变量号地址变量号A#1K3#12J7#23B#2I4#13K7#24C#3J4#14I8#25I1#4K4#15J8#26J1#5I5#16K8#27K1#6J5#17I9#28I2#7K5#18J9#29J2#8I6#19K9#30K2#9J6#20I10#31I3#10K6#21J10#32J3#11I7#22K10#33I, J, K的下标用于确定自变量

18、指定的顺序,在实际编程中不写格式任何自变量前必须指定G65。自变量指定I和R的混合CNC内部自动识别自变量指定I和自变量指定H。如果自变量指定I和自变 量指定R混合指定的话,后指定的自变量类型有效。例G65 A1 B2 I-3 I4 D5 P1000;变量I# 1: 1 1# 2: 2 # 4: -3 #7: 4 5 5 J本例中的I4和D5自变量都分配给变量#7,则后者D5有效。典型程序编制一个宏程序加工轮圆上的孔。圆周的半径为I,起始角为A,间隔为B,钻孔数为H,圆的中心是(X, Y)。指令可以用绝对值或增量值指定。顺时针 方向钻孔时B应指定负值。调用格式G65 P9100 Xx Yy Z

19、z Rr li Aa Bb Hh ;X:圆心的X坐标(绝对值或增量值指定)(#24)Y:圆心的Y坐标(绝对值或增量值指定)(#25)Z:孔深(#26)R:快速趋近点坐标(#18)F:切削进给速度(#9)I:圆半径(#4)A:第一孔的角度(#1)B:增量角(指定负值时为顺时针)(#2)H:孔数(#11)宏程序调用程序O0002;G90 G54 G00 X0 Y0 Z100;H5;G65 P9100 X100 Y50 R30 Z-50 F500 I100 A0 B45M30;宏程序(被调用的程序)O9100;# 3= #4003;G81 Z#26 R#18 F#9;IF#3 EQ 90GOTO 1

20、 ;# 24= #5001+#24;# 25= #5002+#25;N1 WHILE #11 GT 0 DO 1 ;# 5= #24+#4*COS#1;# 6= #25+#4*SIN#1;G90 X#5 Y#6;# 1= #1+#2;# 11= #11-1;END 1 ;G#3 G80;M99;变量的含义# 3:贮存03组的G代码# 5:下个孔的X坐标# 6:下个孔的Y坐标2、模态调用(G66)一旦发出G66则指定模态调用, 取消模态调用。G66 Pp L e自变量指定,;P:要调用的程序号e:重复次数(默认值为1)储存03组G代码钻孔循环在G90方式转移到N1计算圆心的X坐标计算圆心的Y坐标

21、直到剩余孔数为0计算X轴上的孔位计算X轴上的孔位移动到目标位置之后执行钻孔 更新角度孔数-1返回原始状态的G代码即指定沿移动轴移动的程序宏程序G67自变量:传递到宏程序的数据说明调用A、在G66之后,用地址P指定模态调用的程序号。B、 当要求重复时,地址L 后指定从 1 到 9999 的重复次数。C、 与非模态调用 G65 相同,自变量指定的数据传递到宏程序体中。取消指定G67代码时,其后面的程序段不再执行模态宏程序调用。嵌套调用调用可以嵌套4级。包括非模态调用(G65)和模态调用(G66)。但不包括子程序调用 (M98) 。模态调用嵌套A、在模态调用期间,指定另一个 G66代码,可以嵌套模态

22、调用。B、 在 G66 程序段中,不能调用多个宏程序。C、 G66 必须在自变量之前指定。D、 在只有诸如辅助功能但无移动指令的程序段中不能调用宏程序。E、 局部变量(自变量) 只能在 G66 程序段中指定。注意,每次执行模态调用时,不再设定局部变量。典型程序用宏程序编制 G81 固定循环的操作。加工程序使用模态调用。为了简化程序,使用绝对值指定全部的钻孔数据。固定循环是由下面的基本动作组成的:第 1 步:沿 K 轴和 Y 轴定位第 2 步:快速移动到口点第 3 步:切削进给到Z 点第 4 步:快速退回到R 点或初始点调用格式G65 P9110 Xx Yy Zz Rr Ff Ll ;X :孔的

23、X 坐标 (由绝对值指定)(#24)Y :孔的Y 坐标 (由绝对值指定。)(#25)Z: Z 点坐标 ( 由绝对值指定)(#26)R: R点坐标(由绝对值指定)(#18)F:切削进给速度(#9)L:重复次数调用宏程序的程序O0001;G28 G91 X0 Y0 Z0;G92 X0 Y0 Z50;G00 G90 X100 Y50;G66 P9110 Z-20 R2 F500;G90 X20 Y20;X50;Y50;X0 Y80 ;G67;M30;宏程序(被调用的程序)O9110:# 1= #4001;贮存 G00/G01# 2= #4003;贮G9 G90/G91# 3= #4109:贮存切削进

24、给速度# 5= #5003;贮存钻孔开始的Z坐标G00 G90 Z#18;定位在R点G01 Z#26 F#9;切肖U进给到Z点IF#4010 EQ 98GOTO 1 ;返回到 1 点G00Z#18;定位在R点GOTO 2;N1 G00 Z#5:定位在1点N2 C#1 G#3 F#4;恢复模态信息。M99;3、用G代码调用宏程序在参数中设置调用宏程序的 G代码,与非模态调用(G65)同样的方法用该代 码调用宏程序。在参数(No. 6050到No. 6059)中设置调用用户宏程序(O9010到O9019)的G代码号(从1到9999),调用户宏程序的方法与 G65相同。例如,设置参数,使宏程序 O9

25、010由G81调用,不用修改加工就可以调用 由用户宏程序编制的加工循环。参数号和程序号之间的对应关系说明程序号参数号O90106050O90116051O90126052O90136053O90146054O90156055O90166056O90176057O90186058O90196059重复与非模态调用一样,地址 L 可以指定从1 到 9999 的重复次数。自变量指定与非模态调用一样, 两种自变量指定是有效的:自变量指定I 和自变量指定II 。根据使用的地址自动地决定自变量的指定类型。使用 G 代码的宏程序调用的嵌套在 G 代码调用的程序中,不能用一个G 代码调用多个宏程序。这种程序中的 G 代码被处理为普通G 代码。 在用 M 或 T 代码作为子程序调用的程序中,不能用一个G 代码调用多个宏程序。这种程序中的 G 代码也处理为普通G代码。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1