从确定走刀路线、选择合适的G命令等细节出发,分析在数控车削中程序的编制方法。
准备一:分析零件图样
分析形状和位置公差要求:对于数控切削加工中,零件的形状和位置误差主要受机床机械运动副精度的影响。在车削中,如沿Z坐标轴运动的方向与其主轴轴线不平形时,则无法保证圆柱度这一形状公差要求;又如沿X坐标轴运动的方向与其主轴轴线不垂直时,则无法保证垂直度这一位置公差要求。因此,进行编程前要考虑进行技术处理的有关方案。
准备二:合理确定走刀路线,并使其最短
确定走刀路线的工作是加工程序编制的重点,由于精加工切削程序走刀路线基本上都是沿其零件轮廓顺序进行的,因此主要内容是确定粗加工及空行程的走刀路线。走刀路线泛指刀具从对刀点开始运动起,直到返回该点并结束加工程序所经过的路径。
准备三:合理调用G命令使程序段最少
按照每个单独的几何要素(即直线、斜线和圆弧等)分别编制出相应的加工程序,其构成加工程序的各条程序即程序段。在加工程序的编制工作中,总是希望以最少的程序段数即可实现对零件的加工,以使程序简洁,减少出错的几率及提高编程工作的效率。
准备四:合理安排“回零”路线
在编制较复杂轮廓的加工程序时,为使其计算过程尽量简化,既不易出错,又便于校核,编程者有时将每一刀加工完后的刀具终点通过执行“回零”指令(即返回对刀点),使其全返回对刀点位置,然后在执行后续程序。
总结:数控车床 的编程总原则是先粗后精、先进后远、先内后外、程序段最少、走刀路线最短,这就要求我们在编程时,特别注意理论联系实际,并在大量的实践中,对所学的知识进行验证或修正,做到编制的程序最实用。
常用数控机床编程指令
一组有规定次序的代码符号,可以作为一个信息单元存贮、传递和 *** 作。
准备功能字(简称G功能):指定机床的运动方式,为数控系统的插补运算作准备由准备功能地址符“G”和两位数字所组成,G功能的代号已标准化,见表2-3;一些多功能机床,已有数字大于100的指令,。常用G指令:坐标定位与插补;坐标平面选择;固定循环加工;刀具补偿;绝对坐标及增量坐标等。
辅助功能字:
用于机床加工 *** 作时的工艺性指令,以地址符M为首,其后跟二位数字,常用M指令:主轴的转向与启停;冷却液的开与停;程序停止等。辅助功能是用地址字
M
及二位数字表示的它主要用于机床加工 *** 作时的工艺性指令其特点是靠继电器的通、断来实现其控制过程。下表为华中
l
型数控系的部分M功能表
进给功能字:
指定刀具相对工件的运动速度进给功能字以地址符“F”为首,后跟一串字代码,单位:mm/min(对数控车床还可为mm/r)三位数代码法:F后跟三位数字,第一位为进给速度的整数位数加“3”,后二位是进给速度的前二位有效数字。如1728mm/min指定为F717。二位数代码法:F后跟二位数字,规定了与00~99相对应的速度表,除00与99外,数字代码由01向98递增时,速度按等比关系上升,公比为112。一位数代码法:对速度档较少的机床F后跟一位数字,即0
~9来对应十种预定的速度。直接指定法:在F后按照预定的单位直接写上要求的进给速度
1
)每分钟进给(
G94)
系统在执行了
G94
指令后再遇到
F
指令时,便认为
F
所指定的进给速度单位为
m
/
m
旧或
in
/
min
,并一直有效,直至系统又执行了含有
G95
的程序段,则
094
被否定,而
G95
发生作用。
2
)每转进给(G95)
若系统执行了含有
G95
的程序段,则再遇
3lJ
「指令所指定的进给速度单位为
mm
/
r
或
in
/
r
。要取消
G95
状态,必须重新指定
G94
。注:
G94
、
G95
为模态功能,可相互注销,
G94
为缺省值。
三、
T指令(刀具功能)
用以选择替换的刀具以地址符T为首,其后一般跟二位数字,该数代表刀具的编号。
刀具功能主要用于系统对各种刀具的选择.它是由地址下和其后的四位数字表示。其中前位为选择的刀具号,后两位为选择的刀具偏置号。每一刀具加工结束后必须取消其刀偏偏置值。即将后两位数设为“00”,取消刀具偏置值。例如:
O0001:
N01
G92
X50
Z50
N02
M06
T0101:(用“01”号刀加工,刀具偏号为“01”
N03
G00
G90
Z40:刀具偏号也可为“02”,则T指令应为:“T0102”)
N04
G01
X40230
F100;
N05
G00
X50
Z50
T0100:(取消“01“号刀偏)
N06
M02
注:1、要求在绝对编程指令段中取消刀偏值
2、取消刀偏值时必须同时有X、Z轴方向的位移
四、
S
指令(主轴功能)
主轴速度功能字:指定主轴旋转速度以地址符S为首,后跟一串数字。单位:r/min,它与进给功能字的指定方法一样。主轴功能主要是表示主轴旋转速度
3
加转/每分钟
五.指令和非模态指令
G指令和M指令均有模态和非模态指令之分模态指令:也称续效指令,一经程序段中指定,便一直有效,直到出现同组另一指令或被其他指令取消时才失效
N001
G91
G01
X10
Y10
Z-2
F150
M03
S1500;
N002
X15;
N003
G02
X20
Y20
I20
J0;
N004
G90
G00
X0
Y0
Z100
M02;
非模态指令:非续效指令,仅在出现的程序段中有效,下一段程序需要时必须重写(如G04)。
其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削, 实际上宏在程序中主要起到的是运算作用宏一般分为A类宏和B类宏A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广
跟计算机联系比较大的可能就是一些语句跟函数运算了,IFGOTO WHILEDO等等,总的来说,不会计算机也可以学会宏程序
你有编程甚础,又懂一点C语言或者单片机,那就很容易。说穿了,宏程序就是比一般的程序,多了一点条件判定。而且各个轴的坐标,可能不是直接写出来,而是套用了数学公式,把这公式翻译成机床能够识别的代码,用机床数控系统自己来计算点位,从而进行移动或加工。
要学简单的,学会编程后,再学一些简单的代码就可以了。比如,大于,等于小于的代码,再学会写条件判定的程序,再把程序一套,就可以了。太复杂的现在因为有电脑编程,用的人不是很多了,而且对于数学能力要求比较高。
下面举个简单的例子,铣的是50x50的正方形,深度50,用5MM铣刀。
#500=25 刀具半径
#600=50 切削深度起点
xxxx(程序开头就省略了)
N10
G01X-35Y[25+#500]F500
G01Z#600
G01X[25+#500]
Y[-25-#500]
X[-25-#500]
Y35 铣5050的正方
G0G90Z60
#600=#600-1 每次切削深度为1MM
IF[#600 GE 0] GOTO 10 如果Z方向加工深度大于0,跳转到10,如果不大于零,程序向下运行
G0G90Z100
宏程序编程
一 变量
普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X1000。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的 *** 作改变。
#1=#2+100
G01 X#1 F300
说明:
变量的表示
计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。
例如:#1
表达式可以用于指定变量号。此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]
变量的类型
变量根据变量号可以分成四种类型
变量号
变量类型
功能
#0
空变量
该变量总是空,没有值能赋给该变量
#1-#33
局部变量
局部变量只能用在宏程序中存储数据,例如,运算结果当断电时,局部变量被初始化为空调用宏程序时,自变量对局部变量赋值,
#100-#199
#500-#999
公共变量
公共变量在不同的宏程序中的意义相同当断电时,变量#100-#199初始化为空变量#500-#999的数据保存,即使断电也不丢失
#1000
系统变量
系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值
变量值的范围
局部变量和公共变量可以有0值或下面范围中的值:
-1047到-10-29或-10-2到-1047
如果计算结果超出有效范围,则发出P/S报警NO111
小数点的省略
当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123000。
变量的引用
为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;
被引用变量的值根据地址的最小设定单位自动地舍入。
例如:
当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346
改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1
当引用未定义的变量时,变量及地址都被忽略。
例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。
双轨迹(双轨迹控制)的公共变量
对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数N06036和6037的设定,某些公共变量可同时用于两个轨迹。
未定义的变量
当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。
引用
当引用一个未定义的变量时,地址本身也被忽略。
当#1=
当#1=0
G90 X100 Y#1
G90 X100
G90 X100 Y#1
G90 X100 Y0
(b) 运算
除了用赋值以外,其余情况下与0相同。
当#1=时
当#1=0时
#2=#1
#2=
#2=#1
#2=0
#2=#5
#2=0
#2=#5
#2=0
#2=#1+#1
#2=0
#2=#1+#1
#2=0
(c)条件表达式
EQ和NE中的不同于0。
当#1=时
当#1=0时
#1EQ#0 成立
#1EQ#0 不成立
#1 NE #0 成立
#1 NE #0 不成立
#1 GE #0 成立
#1 GE #0 不成立
#1 GT #0 不成立
#1 GT #0 不成立
限制
程序号,顺序号和任选程序段跳转号不能使用变量。
例:下面情况不能使用变量:
0#1;
/#2G00X1000;
N#3Y2000;
二 算术和逻辑运算
下面表中列出的运算可以在变量中执行。运算符右边的表达式可包含常量和或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数赋值。左边的变量也可以用表达式赋值。
说明:
角度单位
函数SIN ,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。如90°30'表示为905度。
ARCSIN # i= ASIN[#j]
(1)取值范围如下:
当参数(NO6004#0)NAT位设为0时,270°~90°
当参数(NO6004#0)NAT位设为1时,-90°~90°
(2)当#j超出-1到1的范围时,发出P/S报警NO111
(3)常数可替代变量#j
ARCCOS #i=ACOS[#j] 取值范围从180°~0° 当#j超出-1到1的范围时,发出P/S报警NO111 常数可替代变量#j
三 程序举例
铣椭圆:
轨迹:
椭圆程序代码如下:
N10 G54 G90 G0 S1500 M03
N12 X0 Y0 Z20
N14 G0 Z1
N16 G1 Z-5 F150
N18 G41 D1
N20 #1=0
N22 #2=34
N24 #3=24
N26 #4=#2COS[#1]
N28 #5=#3SIN[#1]
N30 #10=#4COS[45]-#5SIN[45]
N32 #11=#4SIN[45]+#5COS[45]
N34 G1 X#10 Y#11
N36 #1=#1+1
N38 IF [#1 LT 370] GOTO26
N40 G40 G1 X0 Y0
N42 G0 Z100
N44 M30
铣矩形槽:
铣矩形槽代码如下:
#102=0
N3#100=0
#101=0
#103=200
#104=400
G91G28Z0
G0G90G54X0Y0
G43H1Z20
M3S2000
N4G0X#100Y#101
G01Z#102F200
#102=#102-2
IF[#102EQ-50]GOTO1
GOTO2
N2
N4X#104F500
Y#103
X#100
Y#101
#100=#100+10
#101=#101+10
#103=#103-10
#104=#104-10
IF[#100EQ100]GOTO3
GOTO4
N3
N1
M5
M9
G91G28Z0
G28Y0
M30
铣倾斜3度的面:
轨迹:
铣倾斜3度的面的代码如下:
O0001
#[#1+12]=1
G65P9012L1A0B01C4I100J3K0
M30
宏程序O9012代码如下:
G54 G90 G00 X[#3] Y0 Z100
S500 M3
G01 Z0 F300
WHILE[#1LE10]DO1
#7= #1/TAN[#5]+#3
G1Z-#1 X#7
#8=#6/2-ROUND[#6/2]
IF[#8EQ0]GOTO10
G1Y0
GOTO20
N10 Y#4
N20#1=#1+#2
#6=#6+1
END1
G0
Z100
铣半球:
轨迹:
铣半球代码如下:
G90G0G54X-10Y0M3S4500
G43Z50H1M8
#1=05
WHILE[#1LE50]DO1
#2=50-#1
#3=SQRT[2500-[#2#2]]
G1Z-#1F20
X-#3F500
G2I#3
#1=#1+05
END1
G0Z50M5
M30
铣喇叭:
铣喇叭代码如下:
M03 S500
M06 T01
#1=0
#2=0
G0 Z15
X150 Y0
N11
#2=30SIN[#1]
#3=30+30[1-COS[#1]]
G01 Z-#2 F40
G41 X#3 D01
G03 I-#3
G40 G01 X150 Y0
#1=#1+1
IF [#1 LE 90] GOTO 11
G0 Z30
M30
宏程序流程控制和循环语
数控车床宏程序与普通程序有什么区别呢?第一个就是流程控制
普通程序在执行的时候,它总是从第一段开始依次执行到最后一段程序结束,中途不改变执行顺序。而宏程序可以改变程序的执行顺序。可以根据加工需要,让某段程序重复执行多少次等。要学会程序的执行顺序控制,必须学会以下两种语句:
“IF……GOTO"
WHILE……DO”。
先看“IF……GOTO
“IF”在单词中表示“如果”的意思;“GOTO”则表示“去哪里”或者“到哪里”。那么在两个单词中的省略号,它表示条件!
条件只有两种可能:成立、不成立。
我们可以用这个语句造句,“如果明天开学了,我就要去学校”。在此语句中,要表达的意思非常明确,当条件是“开学”的时候,“我才会去学校”。如果“不开学”,那我就不会去。在这里,“开学”与“不开学”就表示条件的成立与不成立。成立就执行,不成立就不执行!
但我们会发现一个问题:“IF[条件]GOTO”语句中,“GOTO”后面是要跟着目的地的。比如造句时候,目的地是“学校”,那在程序中,该怎么表达目的地呢?其实很简单,目的地就是——行号!在数控程序中,能够表示目标地的也只有行号了。举个例子
#1=2
N1#1=#1-1
IF[#1 GE 0] GOTO1
(GE 表示大于等于)
( GOTO1 表示跳到第一行,这里不用写 N )
G0 X100
Z100
M30
程序对#1 这个变量进行赋值,它的结果是 2。到了下一行出现了N1。都知道N在数控程序中表示程序段,后面跟的数字表示第几行(其实行号可以自己定义,在本例程序中,把“#1=#1-1”定义为第一行)。当程序执行到 N1 行的时候,系统发现#1 这个变量进行了自减运算。但系统不知道自减的目的,于是继续向下执行,来到了“IF [#I GE 0] GOTO1”这一行。
这时候系统才明白,原来#1 自减的目的是用来判断的。当执行到这行的时候,#1 的结果已经不是 2,而是 1 了。然后系统会把#1 这个结果与 0 进行比较,它发现#1 当前的值(1)是大于等于 0 的。由于该语句的意思是,如果#1 的结果大于或等于 0,就跳转到第一行,所以系统会跳转到第一行执行(N1 处),
不会执行下面的“GO X100”等语句。
然后程序跳到了 N1 处,又自减了一次。这时候#1 的结果是 0。而不是1 了,运算过后又来到了“IF”语句进行判断,发现当前#的值虽然不大于 0,但等于 0。因此条件又成立了,只好继续跳到第一行。于是又进行了一次运算,此时#的结果是-1。当再次执行到“IF”语句时,系统发现#当前的值是既不大于也不等于 0,因此条件就不满足了。条件不满足,那么就不执行“GOTO1”这个命令,而是执行下一行“G0 X100”。然后依次执行。
再来看WHILE……DO”
#1=2
WHILE [#I GE O] DO1
#1=#1-1
END1
Go x100
z100
M30
这就看出来END 关键词所在位置。它位于循环体的最后面。也就是说,用 WHILE 判断的时候,如果条件成立,就执行 DO 与 END 之间的程序。后面的那个阿拉伯数字“1”,表示第一层。一定要记住,DO 和 END 后面的数字必须一一对应。不能出现“DO1”与“END2”这个类型。要么都是 1,要么都是2。
程序的执行顺序与结果和“IFGOTO”一致。首先系统得知#1 的值目前是 2,但不知道干嘛的。于是向下执行,发现这里有个 WHILE语句,并且有个条件判断,“如果#1 的结果大于或者等于 2,那就执行 DO1 与END1 之间的程序"。经过判断,条件是成立的。所以就执行了“#1=#1-1”。
然后执行 END1 并返回到 WHILE 语句,再次判断#1 的值是否符合条件。系统发现#1 的结果是 0,仍然符合。于是继续执行 DO1 与 ENDI 之间的程序。一直到#1的结果不符合,程序才会执行“G0 X100”和后面的程序。
以上就是关于我想学数控编程的宏程序求怎么入门先学什么全部的内容,包括:我想学数控编程的宏程序求怎么入门先学什么、数控编程基本指令是什么、什么是宏程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)