宏程序入门基础学习资料
宏程序基础知识
瑞鹄汽车模具有限公司内部教材第一章宏程序基础知识第一节常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。
虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。
常量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
变量使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 X#1 F300变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量1.空变量:#0 该变量总是空,没有值能赋给该变量.2.局部变量:#1-#33局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值.3.公共变量#100-#199 #500-#999公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.4.系统变量:#1000以上的变量系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息,变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。
例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0未定义的变量当变量值未定义时,这样的变量成为空变量。
宏程序入门基础学习资料
宏程序入门基础学习资料其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用;A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~~~~~.#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有#0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义:以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行,基本指令:H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中G65H01P#101Q#10:把10赋予到#101中H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101G65 H02 P#101 Q#102 R10G65 H02 P#101 Q10 R#103G65 H02 P#101 Q10 R20上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数值或变量号内的数值然后等于到P后面的变量号中.H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101G65 H03 P#101 Q#102 R10G65 H03 P#101 Q10 R#103G65 H03 P#101 Q20 R10上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数值或变量号内的数值然后等于到P后面的变量号中.H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101G65 H04 P#101 Q#102 R10G65 H04 P#101 Q10 R#103G65 H04 P#101 Q20 R10上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数值或变量号内的数值然后等于到P后面的变量号中.H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101G65 H05 P#101 Q#102 R10G65 H05 P#101 Q10 R#103G65 H05 P#101 Q20 R10上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数值或变量号内的数值然后等于到P后面的变量号中.(余数不存,除数如果为0的话会出现112报警)三角函数指令:H31 SIN正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值.H32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值.H33和H34本来应该是TAN 和ATAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么?开平方根指令:H21;格式G65 H21 P#101 Q#102 ;意思是把#102内的数值开了平方根然后存到#101中(这个指令是非常重要的如果在车椭圆的时候没有开平方跟的指令是没可能用宏做到的.无条件转移指令:H80;格式:G65 H80 P10 ;直接跳到第10程序段有条件转移指令:H81 H82 H83 H84 H85 H86 ,分别是等于就转的H81;不等于就转的H82;小于就转的H83;大于就转的H84;小于等于就转的H85;大于等于就转的H86;格式:G65 H8x P10 Q#101 R#102;将#101内的数值和#102内的数值相比较,按上面的H8x的码带入H8x中去,如果条件符合就跳到第10程序段,如果不符合就继续执行下面的程序段.用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
宏程序基础知识资料
瑞鹄汽车模具有限公司内部教材第一章第一节宏程序基础知识常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。
虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。
常量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
变量使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 X#1 F300变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量1.空变量:#0 该变量总是空,没有值能赋给该变量.2.局部变量:#1-#33局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值.3.公共变量#100-#199 #500-#999公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.4.系统变量:#1000以上的变量系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息,变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。
例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1Y#2的执行结果为G00X0未定义的变量当变量值未定义时,这样的变量成为空变量。
宏程序应用基础2-1
功能语句的应用 O0130 N10 T0101 M03 S800 N20 G00 X50 Z1 N30 #1=48.5 将48.5赋给变量# 1,作为变量 的初值 N40 G90 X#1 Z-50 F0.2 以变量#1作为G90循环的X 坐标值,Z坐标值不变(-50) N50 #1=#1-2 变量#1的值每次减去2,作为新的 #1(G90循环的X坐标值) N60 IF[#1 GE 40.5] GOTO 40 如果新的#1≧40.5,则 执行N40程序段,即以新 的#1作为X坐标执行G90循环(其中X 坐标值分别为48.5,46.5,44.5,42.5,40.5) N70 G00 X100 Z100 N80 M30
请同学们练习一下
φ 50
40 60
φ 20
请大家一起编制下图的加工程序(两种方法)
3. 2
Z=-X
其余
φ 50
φ 40
20 50
ห้องสมุดไป่ตู้
N70 G00 X40.5 N80 #1=18
将18赋给变量﹟1,作为变量的 初值(#1表 示X轴坐标值) N90 #2=-#1 根据直线方程计算Z坐标值,用 #2表 示,(#1,#2)为该直线上的任意点坐标 N100 G90 X[2﹡#1 +0.5 ] Z#2 G90循环的终点分别为 (36.5 18),(32.5,-16), (28.5,-14), (24.5,-12),(20.5,-10),(16.5,8), (12.5,-6), (8.5,-4),(4.5,-2),(0.5,0) N110 #1=#1-2 X轴等分间距为2。 N120 IF[#1 GE 0 ] GOTO 90 如果每次减去2得到新的 #1值大于等于0,则返回N90程序段执行 N130 G00 X-2 S1200 N140 G01 X40 Z-20 F0.1 精加工轮廓 N150 Z-50 N160 X51 N170 G00 X100 Z100 N180 M30
宏程序的基本概念知识讲解
宏程序的基本概念知识讲解精品文档数控铣削宏程序编程(一)一、宏程序的基本概念1、宏程序的定义以一组子程序的形式存储并带有变量的程序称为用户宏程序,简称宏程序;调用宏程序的指令称为“用户宏程序指令”,或宏程序调用指令(简称宏指令)。
宏程序与普通程序相比较,普通的程序字为常量,一个程序只能描述一个几何形状,所以缺乏灵活性和适用性。
而在用户宏程序的本体中,可以使用变量进行编程,还可以用宏指令对这些变量进行赋值、运算等处理。
通过使用宏程序能执行一些有规律变化(如非圆二次曲线轮廓)的动作。
宏程序分A 类和B类两种,FANUCi系统采用B类宏程序进行编程。
2、宏程序中的变量在常规的主程序和子程序内,总是将一个具体的数值赋给一个地址,为了使程序更加具有通用性、灵活性,故在宏程序中设置了变量。
1)、变量的表示:一个变量由符号“#”和变量序号组成,如:#1(1=1,2,……)。
此外,变量还可以用表达式进行表示,但其表达式必须全部写入方括号“ []”中。
例:#100,#500,#5,#[#1+#2+#10];2)、变量的引用:将跟随在地址符后的数值用变量来代替的过程称为引用变量。
同样,引用变量也可以用表达式。
例G01X#100 Y—#101F[#101+#103];精品文档精品文档当#100=100.0、#101=50.0、#103=80.0时,上例即表示为G01 X100.0Y50.0 F130;3)、变量的种类:变量分为局部变量、公共变量(全局变量)和体系变量三种。
在A、B类宏步伐中,其分类均相同。
A、局部变量(#1〜#33)是在宏步伐中局部使用的变量。
当宏步伐C调用宏步伐D而且都有变量#1时,由于变量#1服务于分歧的局部,所以C中的#1与D中的#1不是同一个变量,因而可以赋予分歧得不偿失值,且互不影响。
封闭电源时,局部变量被初始化成“空”。
宏调用时,自变量分派给局部变量。
B、公共变量(#100〜# 1 49/# 1 99;#500〜#549/#599)贯穿于整个程序过程。
宏程序知识
• • • • •
编程举例 MARKE1:G0 G54 X0 Y0 Z100 D1 S600 M03 G0 X100 Y100 X0 Y0 · · ·
• 有条件跳转
• 用IF—条件语句表示有条件跳转。如果满足跳转条件,则进行跳转。 跳转目标只能是有标记符的程序段,此程序段必须位于该程序之内。 有条件跳转指令必须占用一个独立的程序段;在一个程序段中可以有 很多个条件跳转指令。使用了跳转指令后有时会使程序得到明显的简 化,使程序变得简练而简单。 • 编程格式和意义 • IF条件GOTOF 条件满足后,向前跳转(向程序结束的方向跳转) • IF条件GOTOB 条件满足后,向后跳转(向程序开始的方向跳转) • 编程举例 • IF R1>1 GOTOB MARKE1
• • • • •
G01 X=R4 Y=R5 R3=R3+1 由原来的R3加上1后赋值给新的R3 IF R3<=360 GOTOB MA1 判别椭圆加工是否结束,没有的话,就继续 G90G00Z20 M30
• 绝对跳转
• NC程序在运行时以写入时的顺序执行程序段。程序在运行时可以通过 插入程序跳转指令改变执行顺序。跳转目标只能是有标记符的程序段; 此程序须位于该程序内。绝对跳转指令必须占用一个独立的程序段。 • 编程格式和意义 • GOTOF 向前跳转(向程序结束的方向跳转) • GOTOB 向后跳转(向程序开始的方向跳转)
• 用户宏程序和普通程序的简要对比
宏程序 可以使用变量,并给 只能使用常量 变量赋值 常量之间不可以运算 变量之间可以运算 程序只能顺序执行, 程序运行可以跳转 不能跳转 普通程序
计算参数R
• • • • • • • 1、编程格式 R0= ~R299= 2、值的指定 可以在以下范围内给算术参数赋值:±(0.000 0001~9999 9999) 整数值小数点可省略,正好也可以一并省去。 举例:R1=10 3、给其他的地址赋值 举例:G00 X=R1 给X轴赋值
宏程序基础教程
宏程序教案一、宏程序的概述宏程序是指利用变量编制的NC程序。
它可使得编制相同加工操作的程序更方便、更容易。
用户宏程序和调用子程序完全一样。
宏程序既可以在主程序中使用,也可以当做子程序来调用。
二、变量1、变量的表示变量用变量符号“#”和和面的变量号制定。
表达式可以用来制定变量号。
此时表达时必须封闭在括号中。
例如:#1,#[#1+#2-12]2、宏程序中变量的类型变量一共有4种类型,各种变量的范围和功能见下表:变量类型变量号功能空变量#0 该变量总是空,没有值能赋给该变量用户变量#1~#33 用在宏程序中存储数据公共变量#100~#199 断电时初始化为空#500~#999 断电后数据保存,不丢失系统变量#1000~#5335 用于读写CNC的各种数据,如刀具当前位置3、变量的引用为在程序中使用变量值,在制定变量后跟变量号的地址。
当用表达式制定变量时,把表达式放在括号中。
例如:G01 X#1 F#[#2+#3]4、变量的赋值在程序中若对局部变量进行赋值时,可通过自变量地址,对局部变量进行传递。
有2种形式的自变量赋值方法。
形式1使用了除G,L,O,N和P以外的字母,每个字母对应一个局部变量。
对应关系见下表:自变量局部变量自变量局部变量自变量局部变量自变量局部变量A #1 H #11 R #18 X #24B #2 I #4 S #19 Y #25C #3 J #5 T #20 Z #26D #7 K #6 U #21E #8 M #13 V #22F #9 Q #17 W #23自变量形式2使用A,B,C各1次和I,J,K各10次对局部变量赋值,自变量2用于传递诸如三位坐标值的变量。
对应关系见下表:自变量 局部变量自变量 局部变量 自变量 局部变量 自变量 局部变量A #1 I 3 #10 I 6 #19 I 9 #28B #2 J 3 #11 J 6 #20 J 9 #29C #3 K 3 #12 K 6 #21 K 9 #30 I 1 #4 I 4 #13 I 7 #22 I 10 #31 J 1 #5 J 4 #14 J 7 #23 J 10 #32 K 1 #6 K 4 #15 K 7 #24 K 10 #33 I 2 #7 I 5 #16 I 8 #25 J 2#8J 5#17J 8#26K 2 #9 K 5 #18 K 8 #27 CNC 系统内部自动识别自变量1和2的类型,如果自变量1和2混合赋值,后指定的自变量类型有效。
宏程序基础知识资料
第一章宏程序基础知识第一节常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。
虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。
常量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
变量使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 X#1 F300变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量1.空变量:#0 该变量总是空,没有值能赋给该变量.2.局部变量:#1-#33局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值.3.公共变量#100-#199 #500-#999公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.4.系统变量:#1000以上的变量系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息,变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。
例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0未定义的变量当变量值未定义时,这样的变量成为空变量。
宏程序基础知识
宏程序基础知识针对目前很多同行兄弟对宏程序不了解,本人按照自己的经验,循序渐进的引导大家去揭开宏程序的真实面目。
当然,想通过我这篇文章完全掌握宏那是不可能的,因为这需要你实际去多应用,才可能掌握的。
所以如果你想一步到位,那可以关闭本文了,本文没有这功效,如果你还有一点想法,那就开始吧,一步一步告诉你怎么样去编辑和应用宏程序:1相对编程O0001G0 X0 Z0G1 U1 W1 G98 F100M30定位到X0 Z0位置后,X/Z轴均相对插补1,终点坐标为X1 Z1,程序结束。
2相对编程重复执行同样的程序段O0002G0 X0 Z0G1 U1 W1 G98 F100U1 W1M30定位到X0 Z0位置后,X/Z轴相对插补1后,再相对插补1,终点坐标为X2 Z2,程序结束。
3调用子程序重复执行同样的程序段O0003(程序1)G0 X0 Z0N10 G1 U1 W1 G98 F100M99 P10M30定位到X0 Z0位置后,X/Z轴相对插补1后,下一段为强制返回N10段,所以再相对插补1,然后又强制返回,所以本程序将一直插补,不能结束。
O0004(程序2)G0 X0 Z0N10 G1 U1 W1 G98 F100IF #5041=10 GOTO 20(当X轴坐标=20,跳到N20段,如果不等于20,顺序执行)M99 P10N20 M30本程序与O0003程序的区别是在M99强制返回前加了一段判断语句,该判断句的意思是如果#5041=10(#5041是一个系统宏变量,表示当前X轴坐标,不同系统处理可能不同,这里仅做示例),则跳到N20段执行,如果不等于10,则顺序执行。
从程序中可以看出:第一次插补后,X轴坐标为1,不符合该判断条件,所以顺序执行下一段M99 P10,此段又将程序返回到插补段执行,执行完为X2,也不符合条件,就这样重复执行插补,直到X轴插到10,则符合条件,跳到N20段执行,结束程序,终点坐标为X10 Z10。
搞懂宏程序的编程基础快速入门!
1. 什么场合会用到宏程序编程?其实说起来宏就是用公式来加工零件,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加一个量,那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用。
手工编程加工公式曲线(计算简单,输入快捷)有规律的切削路径(作为一个切削模块)程序间的控制(程序的调度)刀具的管理(刀具的磨损)自动测量(机内测头)2. 什么叫宏程序?在编程时,我们会把能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来调用它们,使用时只需给出这个总指令就能执行其功能所存入的这一系列指令称作用户宏程序本体,简称宏程序。
这个总指令称作用户宏程序调用指令。
在编程时,编程员只要记住宏指令而不必记住宏程序。
3. 用户宏程序与普通程序的区别1)在用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序可以跳转。
2)普通程序中,只能指定常量,常量之间不能运算,程序只能顺序执行,不能跳转,因此功能是固定的,不能变化。
3)用户宏功能是用户提高数控机床性能的一种特殊功能,在相类似工件的加工中巧用宏程序将起到事半功倍的效果。
4. 变量的三种类型数控系统变量表示形式为“#”后跟1~4位数字,变量种类有三种:(1)局部变量:#1~#33是在宏程序中局部使用的变量,它用于自变量转移。
(2)公用变量:用户可以自由使用,它对于由主程序调用的各子程序及各宏程序来说是可以公用的。
#100~#149在关掉电源后,变量值全部被清除,而#500~#509在关掉电源后,变量值则可以保存。
(3)系统变量:由后跟4位数字来定义,它能获取包含在机床处理器或NC内存中的只读或读/写信息,包括与机床处理器有关的交换参数、机床状态获取参数、加工参数等系统信息。
5. 宏程序的特点宏程序可使用变量,可用变量执行相应操作;实际变量值可由宏程序指令赋给变量。
由浅入深宏程序入门基础示例
由浅入深宏程序1-宏程序入门基础之销轴加工对于没有接触过宏程序人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序的基本格式,应用指令代码,以及宏程序编程的基本思路即可。
对于初学者,尤其是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的。
本教程将分步由浅入深的将宏程序讲解给大家,作者水平有限,也希望各位XX提供更好的思路。
下面大家先看一个简单的车床的程序,图纸如下:要求用外圆刀切削一个短轴,这里只列举程序的前几步:T0101M3S800G0X82Z5G0X76G1Z-40F0.2X82G0Z5G0X72G1Z-40F0.2X82G0Z5G0X68G1Z-40F0.2X82G0Z5G0X68G1Z-40F0.2X82G0Z5........G0X40G1Z-40F0.2X82G0Z5G0X150Z150M5M30从上面程序可以看出,每次切削所用程序都只是切削直径X有变化,其他程序代码未变。
因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。
T0101M3S800G0X82Z5#1=76赋初始值,即第一次切削直径N10 G0X[#1]将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。
N10是程序G1Z-40F0.2 段的编号,用来标识本段,为后面循环跳转所用。
X82G0Z5#1=#1-4每行切深为2mm,直径方向递减4mmIF [#1GE40] GOGO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。
G0X150Z150 当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。
M5M30由浅入深宏程序2-宏程序之销轴粗精加工本篇文章利用宏程序简单模仿数控系统的外圆车削循环功能。
在此用前一篇的图纸与程序原程序:T0101M3S800G0X82Z5 粗加工开始#2=0.05 Z向的加工余量#3=0.5 外圆方向的加工余量#4=0.3 每层切削后的回退量#1=76+2*#3考虑了精加工余量的第一次切削直径N10 G0X[#1]将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。
宏程序基础理论
数控宏程序编程,是用变量的方式进行数控编程的方法。
数控宏程序分为A类和B类宏程序,其中A类宏程序比较老,编写起来也比较费时费力,B类宏程序类似于C语言的编程,编写起来也很方便。
不论是A类还B类宏程序,它们运行的效果都是一样的。
一般说来,华中的数控机床用的是B类宏程序,广州数控机床用的是A类宏程序。
优点1.可以编写一些非圆曲线,如宏程序编写椭圆,双曲线,抛物线等。
2.编写一些大批相似零件的时候,可以用宏程序编写,这样只需要改动几个数据就可以了,没有必要进行大量重复编程。
使用方法A类宏程序1)变量的定义和替换#i=#j编程格式G65 H01 P#i Q#j例G65 H01 P#101 Q1005;(#101=1005)G65 H01 P#101 Q-#112;(#101=-#112)2)加法#i=#j+#k编程格式G65 H02 P#i Q#j R#k例G65 H02 P#101 Q#102 R#103;(#101=#102+#103) 3)减法#i=#j-#k编程格式G65 H03 P#i Q#j R#k例G65 H03 P#101 Q#102 R#103;(#101=#102-#103) 4)乘法#i=#j×#k编程格式G65 H04 P#i Q#j R#k例G65 H04 P#101 Q#102 R#103;(#101=#102×#103) 5)除法#i=#j / #k编程格式G65 H05 P#i Q#j R#k例G65 H05 P#101 Q#102 R#103;(#101=#102/#103)6)平方根#i=编程格式G65 H21 P#i Q#j例G65 H21 P#101 Q#102;(#101= )7)绝对值 #i=│#j│编程格式G65 H22 P#i Q#j例G65 H22 P#101 Q#102;(#101=│#102│)8)复合平方根1 #i=编程格式G65 H27 P#i Q#j R#k例G65 H27 P#101 Q#102 R#103;( #101=9)复合平方根2 #i=编程格式G65 H28 P#i Q#j R#k例G65 H28 P#101 Q#102 R#1031)逻辑或 #i=#j OR #k编程格式G65 H11 P#i Q#j R#k例G65 H11 P#101 Q#102 R#103;(#101=#102 OR #103) 2)逻辑与 #i=#j AND #k编程格式G65 H12 P#i Q#j R#k例G65 H12 P#101 Q#102 R#103;#101=#102 AND #103 (3)三角函数指令1)正弦函数#i=#j×SIN(#k)编程格式G65 H31 P#i Q#j R#k (单位:度) .例G65 H31 P#101 Q#102 R#103;(#101=#102×SIN(#103)) 2)余弦函数#i=#j×COS(#k)编程格式G65 H32 P#i Q#j R#k (单位:度)例G65 H32 P#101 Q#102 R#103;(#101=#102×COS(#103)) 3)正切函数#i=#j×TAN#k编程格式G65 H33 P#i Q#j R#k (单位:度)例G65 H33 P#101 Q#102 R#103;(#101=#102×TAN(#103)) 4)反正切#i=ATAN(#j/#k)编程格式G65 H34 P#i Q#j R#k (单位:度,0o≤#j ≤360o) 例G65 H34 P#101 Q#102 R#103;(#101=ATAN(#102/#103)(4)控制类指令编程格式G65 H80 Pn (n为程序段号)例G65 H80 P120;(转移到N120)2)条件转移1 #j EQ #k(=)编程格式G65 H81 Pn Q#j R#k (n为程序段号)例G65 H81 P1000 Q#101 R#102当#101=#102,转移到N1000程序段;若#101≠#102,执行下一程序段。
宏程序基本知识
程序
G54G17G90G40
G00Z30M03S2000 定位于G54上方30mm处
X=R24Y=R25 移动刀具至圆心上方
AA:Z=-R4+1
接近工件
R4=R4+R17
指定当前加工高度
G01Z=-R4F50 下刀至加工位置
L10
调用子程序加工当前层
IF R4<R2-R17 GOTOB AA 如果当前加工深度比预定的还少一个层间距以上时,
G03I=-R8
逆时针走全圆
IF R8<R6-R5 GOTOB BB当当前偏移距离比最大走圆半径还少一个行距以上
时,继续加工
G01X=R24+R6
否则刀具移动到最大圆的走刀起点
G03I=-R6
逆时针走全圆
G00Z=-R4+0.5
提刀0.5mm
X=R24Y=R25
移动至孔的中心位置
RET
子程序结束,返回主程序
运算
控制指令
程序一般是顺序执行,使用控制指令起到控制程序流向的作用,常用的有下列三种: 1、无条件分支 格式:GOTOn 例:GOTO100,含义为程序转向N100程序段处。 2、条件分支 格式:IF[条件表达式]GOTOn 含义:若条件表达式成立,则程序转向段号为n的程序段处,否则继续执行下一句程序。 3、循环 格式:WHILE[条件表达式]DOm(m=1、2、3) ------- ENDm 含义:当条件满足时,招待WHILE与END之间的程序段,否则执行ENDm下一句程序段。
关量,电源关时不消失。 (3)系统变量(#2000~):如刀具补偿值#2000~#2200,工件偏置#5201~#5326. 3、变量的使用 在地址符(O、N、G、L、P及/除外)后接变量,如: F#1:如果#1=100.0,则表示F100 Z-#26:如果#26=3.0,则表示Z-3.0
宏程序编程基础
变量的定义
10
11
12
运算规律
13
控制语句
14
15
16
说明
17
18
注意19Leabharlann 用宏程序命令对变量进行赋值
20
21
赋值举例
O001
…
G65 P9010 L2 A1.0 B2.0 … M30
O9010
N10 #3=#1+#2 N20 IF[#3 GT 360] GOTO40
N30 G00 G91 X#3 N40 M99
22
23
24
25
用户宏程序功能有A、B两种类型。
2
A类宏程序简介
编写A类程序时,用到了Hm等宏功能指令。各Hm宏功能指令见表。
3
4
5
宏程序编程特征
注意: B类宏程序应用较为广泛,而A类很少使用,因
此,本节重点介绍B类宏程序,对A类宏程序不在 赘述。
6
在宏程序主题中使用变量
7
变量引用时的注意事项
8
变量的种类
宏程序基础知识
1
宏程序的定义和分类
1、概念 将一组命令所构成的功能,像子程序一
样事先存入存储器中,用一个命令作为代表,执 行时只需写出这个代表命令,就可以执行其功能。 这一组命令称做用户宏主(本)体(或用户宏程 序),简称为用户宏(Custom Macro)指令,这个 代表命令称为用户宏命令,也称作宏调用命令。 2、分类
数控车宏程序入门二
这是第四篇,还是建议先看其他三篇,一步一步来。
我的帖子都是通过链接找到上一篇,然后再找到上一篇,这样就可以找到第一篇了。
这是第三篇的链接/p/2646631237我们接着第三篇的问题往下面说。
在第三篇的最后,我介绍了曲线类的基本知识——方程的化简。
化简的目的相信看过的吧友也知道了,这里不再赘述。
现在看下本篇大纲:1 椭圆为例的宏程序(第二节)2 椭圆为例的宏程序(第三节)以及剖析曲线类宏程序的编制思想NO.1 椭圆为例的宏程序(第二节)在第一节,我讲解了化简以及化简的目的。
不论以后做到什么曲线,都需要化简。
抛物线也好,渐开线也罢,至少你要定义出自变量和因变量。
这样才能编制它的程序。
那么第二节我主要介绍椭圆的相关参数。
其实这些我本也不该讲。
但部分吧友的基础真的很差,所以这里也是扫盲。
以后遇到抛物线或者其他曲线,建议先看下曲线的定义,不求甚懂,但至少要知道方程的某个值或者符号,代表的是什么!说到椭圆,和我们宏相关的参数就两个:长半轴和短半轴!分别用字母a、b 表示。
那么什么是长半轴,什么是短半轴呢?我们看图说明如图,所谓长半轴,我们可以通俗的理解为:椭圆圆心点0,到右边点A的直线距离叫长半轴!短半轴就是圆心点O到达B点的垂直距离。
(不要抠字眼,也不要拿什么专业定义讨论,这些不重要!)。
前面也说过,a 表示长半轴,b 表示短半轴。
如果a = 10,b = 5 那么说明这个椭圆的长半轴是10,短半轴是5 就这么回事。
那么我知道长、短半轴,能不能列出一个方程呢?当然可以!方程就是不要问为什么等于1,对编程没任何意义。
这是数学大师们给我们定义好的,我们不需要花这个时间研究它。
这里两个分母a、b就是长短半轴,Z和X 表示椭圆上某个点的Z和X坐标。
其实我们可以发现,Z 对应的是长半轴,X对应的是短半轴。
知道这个,我们自己可以根据长短半轴把一个椭圆方程列出来了。
然后再普及一个只是,这里的Z和X,他们的取值范围最大分别是他们的长短半轴的值。
数控编程宏程宏入门,变量的认识,由浅入深学会宏程序!
数控编程宏程宏入门,变量的认识,由浅入深学会宏程序!觉得此文对你有所帮助的朋友,请收藏转发!收藏同时也请不要吝惜在评论区给小编任意留言,或文末点个赞!也好让小编知道有多少人看,也是以后更新的动力!1.什么是宏程序?在数控编程中,用户宏程序是数控系统中的特殊编程功能。
所谓用户宏程序其实是把一组带有变量的子程序事先存储在系统存储器中,并通过主程序中的宏程序调用指令调用并执行这一组程序。
由于数控系统的指令功能有限,而宏程序功能可以显著地增强机床的加工能力,同时可精简程序,所以宏程序编程是加工编程的重要补充。
用户宏程序可以用公式来加工零件,例如加工椭圆,如果用常规的编程方法,需要逐点算出曲线上的点,然后用直线或圆弧进行拟合逼近,所以编程时需要计算很多的点。
如果使用用户宏程序,可以直接把椭圆公式编入到程序中,加工零件时系统会自动计算出曲线上各点的坐标,大大减轻了编程的工作量。
2.什么是变量?变量是指在程序的运行过程中随时可以发生变化的量。
普通加工程序直接用数值指定G代码和移动距离;例如,G01和X100.0等,这些数值都是常量,所以一个程序只能描述一个几何形状。
而用户宏程序本体中可以使用变量进行编程,编程时可以使用变量进行算术运算、逻辑运算和函数的混合运算,这样就可以实现编制一个程序,即可加工尺寸不同但是形状相同的工件,加工时只需修改少数几个参数,从而可以使用宏程序执行一些有规律变化的动作。
变量分局部变量,公共变量(全局变量)和系统变量三种。
局部变量是一个在宏程序中局部使用的变量,即只在本程序内起作用。
例如当宏程序A调用宏程序B而且都有变量#1时,由于变量#1服务于不同的宏程序,所以宏程序A中数控cnc的#1与宏程序B 中的#1不是同一个变量,因此可以赋于不同的值,相互间互不影响。
局部变量不能在程序运行时加以修改,只能由程序控制。
在使用局部变量时,必须在程序中赋初值。
当断电时,局部变量被初始化为空,调用宏程序时,自变量对局部变量赋值,公共变量贯穿于整个程序过程,即在所有程序中起相同的作用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宏程序入门基础学习资料
其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是
以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使
用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用;
A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx 格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~~~~~.#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有#0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H 就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义:
以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行,
基本指令:
H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到
#101中
G65H01P#101Q#10:把10赋予到#101中
H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101
G65 H02 P#101 Q#102 R10
G65 H02 P#101 Q10 R#103
G65 H02 P#101 Q10 R20
上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数
值或变量号内的数值然后等于到P后面的变量号中.
H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101
G65 H03 P#101 Q#102 R10
G65 H03 P#101 Q10 R#103
G65 H03 P#101 Q20 R10
上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数
值或变量号内的数值然后等于到P后面的变量号中.
H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101
G65 H04 P#101 Q#102 R10
G65 H04 P#101 Q10 R#103
G65 H04 P#101 Q20 R10
上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数
值或变量号内的数值然后等于到P后面的变量号中.
H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101
G65 H05 P#101 Q#102 R10
G65 H05 P#101 Q10 R#103
G65 H05 P#101 Q20 R10
上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数
值或变量号内的数值然后等于到P后面的变量号中.(余数不存,除数如果为0的话会出现112报警)
三角函数指令:
H31 SIN正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个
求出三角形的另
一条边长.和以前的指令一样Q和R后面也可以直接写数值.
H32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边
R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的
另一条边长.和以前的指令一样Q和R后面也可以直接写数值.
H33和H34本来应该是TAN 和ATAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么?
开平方根指令:
H21;格式G65 H21 P#101 Q#102 ;意思是把#102内的数值开了平方根然后存到#101中(这个指令是非常重要的如果在车椭圆的时候没有开平方跟的指令是没可能用宏做到的.
无条件转移指令:
H80;格式:G65 H80 P10 ;直接跳到第10程序段
有条件转移指令:
H81 H82 H83 H84 H85 H86 ,分别是等于就转的H81;不等于就转的H82;小于就转的H83;大于就转的H84;小于等于就转的H85;大于等于就转的H86;
格式:G65 H8x P10 Q#101 R#102;将#101内的数值和#102内的数值相比较,按上面的H8x的码带入H8x中去,如果条件符合就跳到第10程序段,如果不符合就继续执行下面的程序段.
用户宏程序
能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
l 所存入的这一系列指令——用户宏程序
l 调用宏程序的指令————宏指令
l 特点:使用变量
一.变量的表示和使用
(一)变量表示
#I(I=1,2,3,…)或#[<式子>]
例:#5,#109,#501,#[#1+#2-12]
(二)变量的使用
1.地址字后面指定变量号或公式
格式:<地址字>#I
<地址字>-#I
<地址字>[<式子>]
例:F#103,设#103=15 则为F15
Z-#110,设#110=250 则为Z-250
X[#24+#18*COS[#1]]
2.变量号可用变量代替
例:#[#30],设#30=3 则为#3
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
MDI键盘输一.变量的种类
1. 局部变量#1~#33
一个在宏程序中局部使用的变量
例:A宏程序B宏程序
……
#10=20 X#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
G91 X-#1;X-1.235
X-#2 F300;X-2.346
X[#1+#2];X3.580。