你写的是主程序调用子程序。根本不是宏程序。起码没有出现宏变量, 例; 主程序名为O1234,子程序为O1233 子程序为一个单独程序。
M98意思就是调用子程序,P代表调调用子程序名,L为调用次数,不论是新代系统还是FANUC系统都是一样的。
例;
O1234
G0 Z30
X-20
Z-4
M0
G0 Z30
M1
M98 P1233 L30
N10 T01
M03 M08 S2800
程式的意思是T04铣刀定位到X60的地方,然后转动C轴到#145的度数,Z轴再铣到142的地方。使用了IF的条件语句,当#145小于310时一直执行N1的程序,每执行一次N1的程序,#145增加60度的角度。直到#145大于310时,程序结束。
#145=0 #145赋值为0
N1
G0 C#145 C轴分度 第一次定0度
G0 X85 Z-10
G1 X60 F2000
G1 Z142 F60
U02
G0 X10 Z-10
#145=#145+60 #145=之前的#145+60 计算结果按次数为60,120,180,240,300,360;
IF[#145LT310] G0T01 如果 #145小于310,程序跳转到N1。
如果大于或等于310,程序不跳转 往下一段M25执行;
例如:300小于310 跳到N1继续加工 加工完后 到#145=#145+60 此时=360;
360大于310 程序不跳转 继续执行下面的程序段;
M25;
M51;
G50 W20;
G28 U0;
M01;
扩展资料:
主要定义程序号,调出零件加工坐标系、加工刀具,启动主轴、打开冷却液等方面的内容。
主轴最高转速限制定义G50 S2000,设置主轴的最高转速为2000RPM,对于数控车床来说,这是一个非常重要的指令。
坐标系定义如不作特殊指明,数控系统默认G54坐标系。
返回参考点指令G28 U0,为避免换刀过程中,发生刀架与工件或夹具之间的碰撞或干涉,一个有效的方法是机床先回到X轴方向的机床参考点,并离开主轴一段安全距离。
刀具定义G0 T0808 M8,自动调8号左偏刀8号刀补,开启冷却液。
主轴转速定义G96 S150 M4,恒定线速度S功能定义,S功能使数控车床的主轴转速指令功能,有两种表达方式,一种是以r/min或rpm作为计量单位。另一种是以m/min为计量单位。数控车床的S代码必须与G96或G97配合使用才能设置主轴转速或切削速度。
G97:转速指令,定义和设置每分钟的转速。
G96:恒线速度指令,使工件上任何位置上的切削速度都是一样的。
参考资料来源:百度百科-数控机床
宏程序流程控制和循环语
数控车床宏程序与普通程序有什么区别呢?第一个就是流程控制
普通程序在执行的时候,它总是从第一段开始依次执行到最后一段程序结束,中途不改变执行顺序。而宏程序可以改变程序的执行顺序。可以根据加工需要,让某段程序重复执行多少次等。要学会程序的执行顺序控制,必须学会以下两种语句:
“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”和后面的程序。
用G92的,如:M2415L20。
T0101;(螺纹刀)。
M03S500;(正转。每分钟500转)。
G01X25F2;(定位到X25Z2)。
CNC的优点:
1、大量减少工装数量,加工形状复杂的零件不需要复杂的工装。如要改变零件的形状和尺寸,只需要修改零件加工程序,适用于新产品研制和改型。
2、加工质量稳定,加工精度高,重复精度高,适应飞行器的加工要求。
车辆的种类虽然多,构造却大同小异。这应该说是标准化的功劳,也是大型生产流水线的需要。随着社会的发展、科技的进步和需求的变化,铁路车辆的外形开始有了改变,尤其是客车车厢不再是清一色的老面孔。但是它们的基本构造并没有重大的改变,只是具体的零部件有了更科学先进的结构设计。
一般来说,车辆的基本构造由车体、车底架、走行部、车钩缓冲装置和制动装置五大部分组成。
车体是车辆上供装载货物或乘客的部分,又是安装与连接车辆其他组成部分的基础。早期车辆的车体多以木结构为主,辅以钢板、弓形杆等来加强。近代的车体以钢结构或轻金属结构为主。
N1\x0d\TO1O1 M8\x0d\G94S100 M3\x0d\#1=48(外径)\x0d\#2=6(螺距)\x0d\#3=2(Z起点)\x0d\#4=5(X退刀)\x0d\#5=-100(螺纹长度)\x0d\#6=05(X每次进刀)\x0d\#7=3(螺纹深度)\x0d\#8=#1-#7\x0d\G0 Z#2 \x0d\X50\x0d\\x0d\WHILE[#1LE#8]DO1\x0d\IF[#7LE#6]THEN #6=01(当螺纹车到还差05的时候,X进刀为01)\x0d\#1=#1-#6\x0d\G1 X#1F500\x0d\G32Z#5F#2\x0d\G0X50\x0d\Z#2\x0d\#7=#7-#6\x0d\END1\x0d\G0 X100\x0d\M30\x0d\\x0d\其它螺纹套就可以了。慢慢研究。
宏程序一般是在做重复路径的程序时用,最典型的就是切槽,切垫片等重复的零件会用到
一般是把某个重要数据用变量代数表示,后面在子程序里面做加减法
如切槽是把Z像坐标用代数表示,如在主程序起点坐标为Z2,那么程序可以编时Z=#300,#300=2,然后在子切槽程序里加一段#300=#300-15。
那么这样每M99循环一次后定位时Z向就会往里边偏15毫米,5毫米的刀那么切出来的垫片就是10毫米厚。这个你可以在网上下载一些资料看一下,很容易理解的。而且那些很高深的,如乘法,除法,函数等得应用你刚开始就不要去纠结了,有些难度,但实际工作中基本用不上。你把加减运算弄清楚就可以了,相对来说简单很多。希望能帮到你
以上就是关于数控车床宏程序的编制问题。全部的内容,包括:数控车床宏程序的编制问题。、求解数控车床洗六角宏程序、数控车床宏程序的控制语句以及逻辑解析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)