子程序范文

时间:2023-03-18 01:55:55

子程序

子程序范文第1篇

数控编程是模具加工的关键环节,编制高质量的加工程序对工件质量、效率和成本有重要的影响。在模具加工中,经常会遇到平面铣削走刀次数多、分层铣削层数多、多腔铣削腔数多而导致的手工编程繁琐问题,甚至若不采用子程序无法进行手工编程的问题。因此,本文探讨利用子程序以简化模具加工手工编程具有重要的意义。

一、FNUAC 0i系统子程序编程基础

1.子程序的概念

数控机床的加工程序分为主程序和子程序两种。主程序是一个完整的零件加工程序,或是零件加工程序的主体部分,它和加工零件是一一对应的关系。在编制零件加工程序中,如果其中有些加工内容完全相同或相似,为了简化程序,可以把程序中某些重复出现的程序单独抽出来,按一定格式编成一个单独的程序,以供调用,这个程序即是子程序。

2.子程序的调用

在 FANUC 0i系统中,子程序的调用可通过 M98指令进行,且在调用格式中将子程序的程序号地址 O改为 P,其常用的子程序调用格式为:M98 P L。

其中地址 P后面的四位数字为子程序号,地址 L的数字表示重复调用的次数。若只调用 1次子程序,在地址 L及其后的数字可省略不写。

3.子程序的嵌套

在编程时让程序调用另一个子程序,这一功能称为子程序的嵌套。当主程序调用子程序时,该子程序被认为是一级子程序,为一级嵌套,一级子程序再调用子程序时,该子程序被认为是二级子程序,为二级嵌套,依次类推,FANUC 0i系统中,子程序可以嵌套 4级。

主程序在运行过程中若需要执行某一级子程序,通过M98调用指令来调用该一级子程序,如果该一级子程序需要执行某二级子程序,也是通过 M98指令来调用该二级子程序,依次类推。子程序返回时与调用次序相反,最终一级子程序运行结束后又返回到主程序调用程序段处,继续执行下面的程序段。

二、子程序的编程应用

1.模具平面的编程

模具主要是由板类零件组成的,平面是典型加工表面,下面以某模板平面长、宽尺寸为300×250为例进行铣削编程。

(1)编程分析。

刀具选用直径为 30mm的平底立铣刀,以刀位点进行编程,铣削平面走刀路线由单向行切和双向行切,为保证加工表面质量采用单向不对称逆铣行切,步距一般为刀具直径的 0.85倍,故步距取 26mm,工件宽度为 250除以步距 26,得循环次数为 9.6次,而次数须为整数,因此,循环走刀次数确定为 10次。

(2)确定编程原点,设计走刀路线。

编程零点确定在工件上表面中心,所设计的每次走刀路线如图 1所示,即 P1 P2 P3。

(3)确定基点坐标值。考虑刀具半径 15mm、刀具 X轴方向让刀距离 3mm和步距 26mm,采用 CAD尺寸标注法确定 P1点绝对坐标为 P1(-18,11), P2、P3点增量坐标为 P1(336,0)、 P2(-336,26)。

图 1每次走刀路线图

(4)编写加工程序源代码。

综合上述分析及设计,编写参考子程序如 O6001所示,编写主程序如 O1所示,根据加工平面尺寸只需修改所编程序中基点 P1、P2、P3坐标值,即可用于加工。

2.模具零件的分层铣削编程

某模具零件图如图 2所示,毛坯长、宽、高尺寸为:100×100×110。

(1)编程分析。

在模具实际加工中,特别高速加工,为减小切削抗力,避免机床负载的剧烈变化,刀具每次的切削深度必须限定在一定范围内。使用子程序编程可实现刀具 Z向的分层加工。一般要求加工高度和每层切削深度为整数倍关系,该冲模型芯高 80mm,确定每层切削深度 2mm,则需调用子程序 40次。刀具选用直径 16mm的合金刀具。

图 2冲模型芯零件图

(2)确定编程零点,设计走刀路线。

编程零点确定在工件上表面中心,设计走刀路线时注意以下 4点:①走刀路线下刀点和返回点尽量重合,以简化编程;②精加工刀具要切向切入切出工件,防止接刀痕;③刀具 XY下刀点尽量在工件以外,必要时预加工工艺孔,保护刀具; ④走刀路线尽量短,有利于基点坐标计算。所设计的每层走刀路线如图 3所示,即 P P1 P2 P3 P4 P5 P6 P2 P7 P。

图 3每层走刀路线图

(3)确定基点坐标值。

图 3中的刀具每层走刀路线图为精确设计,使用 CAD软件查询法顺次确定基点坐标为: P(0,-60)、P1(12,-52)P2(0,-40)、 P3(-30,-40)、 P4(-30,10)、 P5(30,10)、 P6(30,-40)、 P7(-12,-52)。

(4)编写加工程序源代码。

基于上述分析及设计,编写参考子程序如 O6002所示,编写主程序如 O2所示,以供参考。值得注意的是:①分层铣削子程序编程 Z向须用 G91编程;②主程序中程序段G01Z0F20,刀具须切削进给至 Z坐标值 0处,才能保证工件的加工高度尺寸。

3.模具的多腔铣削编程

假设刀具一次能加工深度为 10mm,对图 4所示零件各腔进行精铣编程。

图 4多腔零件图

(1)编程分析。

刀具选用直径 8mm的键槽铣刀,零件各腔为精加工,为避免刀痕,设计走刀路线时,刀具圆弧切向切入切出工件,编写轮廓子程序使用 G91增量编程,实现工件轮廓形状编程与位置的无关。

(2)确定编程零点,设计走刀路线。

编程零点确定在工件上表面中心,所设计的走刀路线如图 5所示,各腔的加工顺序为①②③④⑥⑦⑧⑨,所设计的每腔走刀路线为 O A1 A2 A3 A4 A5 A6 A2 A7 O。

(3)确定基点坐标值。

为使刀具加工形状与其位置无关,需采用 G91方式编程,因此,使用 CAD尺寸标注法确定各基点坐标增量坐标为: O(0,0)、 A1(5,5)、 A2(-5,5)、 A3(-15,0)、 A4(0,-20)、 A5(30,0)、 A6(0,20)、 A7(-5,-5)、 O(5,-5)。

图 5多腔零件走刀路线图

(4)编写加工程序源代码。

根据以上分析及设计,编写子程序如 O6003所示,编写主程序如 O3所示,以供参考。

三、结语

子程序范文第2篇

随着社会的进步、生产的发展,人们对产品提出了越来越高的要求,产品的精度也日趋精确,造型异常复杂。在数控加工领域更是如此,汽车零部件、飞机零部件等造型日趋复杂,给数控加工提出了更高的要求。我们在平时的产品制作中有许多编程手段:简单零件直接用基本指令进行编程自动加工,稍微复杂的零件可以采用宏程序进行制作,异常复杂的元器件则可以采用CAD/CAM编程软件自动加工等。由于不同地域硬件配置不同操作,编程人员专业素养存在差别,很难做到统一采用宏程序和CAD/CAM软件自动进行加工(比如中西部欠发达地区),这时可以利用已有的编程指令进行灵活编程亦可达到加工要求。本文正是基于上述原因提出的一个编程技巧:利用子程序和G17,G18,G19联合编程完成产品加工。

二、凸圆柱面加工

如下图1、2所示为一个板状零件,要求加工零件的凸圆柱面及相连的倒圆角面(进行精加工)。由于工件比较薄且刚性不足,需要利用底面M面进行定位装夹加工。在进行端面铣削时编写程序会有点困难。下面我们利用子程序和G18指令来完成编程。

首先简单介绍子程序:

程序分主程序和子程序。一个以程序号O开始,以M99结束的程序称作子程序。子程序是相对主程序而言的,主程序可以调用子程序。当一次装夹加工多个零件或一个零件有重复加工部分时,可以把这个图形编成一个子程序存储在存储器中,使用时反复调用。子程序的有效使用可以简化程序并缩短检查时间。M99可以不必出现在一个单独的程序段中,作为子程序的结尾,这样的程序段也是可以的:G90 G00 X0 Y100.0 M99。子程序调用指令M98可以和运动指令出现在同一程序段中:G90 G00 X-75.0 Y50.0 Z53.0 M98 P40035。在这种情况下,先执行X、Y坐标移动之后再执行调用子程序指令M98。子程序可以多级嵌套,一般子程序调用可以嵌套4级。每次调用子程序时的坐标系、刀具半径补偿值、坐标位置、切削用量等可根据情况改变,甚至可对子程序进行镜像、缩放、拷贝等。

子程序的构成:如图3所示。

G17,G18,G19编程指令简单介绍:

平面选择G17、G18、G19指令分别用来指定程序段中刀具的插补平面和刀具半径补偿平面。G17:选择XY平面;G18:选择ZX平面;G19:选择YZ平面。

下面进行程序的编制。如图4所示,利用CAD/CAM软件分析知D点坐标为X=19.3649,Y=0;C点坐标为X=14.5237,Y=1.25。利用FANUC Oi系统加工中心进行装夹加工。加工时用半径为4的球头铣刀进行加工,编程原点设在图1所示的B点(B点处于前端面位置),由于刀具为球头刀,对刀时Z方向对刀数值需要向上抬高一个刀具半径4。工件Y方向需要加工距离为45mm。程序如下:

主程序:

O1;

G91G30Z0; 回到换刀点

T01; 寻找1号刀

M06; 刀具交换

G90G80G40G21G17; 取消指令

G54G00X0Y0; 刀具运动到原点

G43Z100.H01; 刀具运动到工件上

方100处

S1000M03; 主轴正转

X25.; 刀具定位到X25.

Z25.; 刀具靠近工件

GO1Z0F100; 刀具运动到Z向对刀平面

M98P230002; 调用子程序加工零件

G90G17G00Z100.; 加工完毕,抬刀

M05; 主轴停转

M30; 程序结束

子程序

O0002;

G18; 指定ZX(G18)平面

G90G01X19.3649; 刀具运动到D点

G02X14.5237Z1.25R6.; 加工R6圆弧

G03X-14.5237R40.; 加工R40圆弧

G02X-19.3649Z0R6.; 加工R6圆弧

G01X-25.; 刀具退出

G91Y1.; Y方向进一个步距

G90G01X-19.3649Z0; 运动到起点位置

G03X-14.5237 Z1.25R6; 加工R6圆弧

G02X14.5237Z1.25R40.; 加工R40圆弧

G03 X19.3649Z0R6.; 加工R6圆弧

G01X25.; 刀具退出

G91Y1.; Y方向进一个步距

M99; 子程序结束

三、结语

本文综述了子程序与坐标平面指令联合编程的方法。并以板状零件凸圆柱面及倒角面的加工为例,讨论了联合编程的基本注意事项。最后给出了零件加工的完整参考程序。随着社会进步和生产力的发展,数控编程也在朝着CAD/CAM软件自动编程方向发展。

子程序范文第3篇

关键词:子程序调用 M98、M99指令 简化编程

中图分类号:TG519.1 文献标识码:A 文章编号:1007-9416(2014)02-0014-01

Abstract:the numerical control lathe in guangzhou M98instructions for subroutine calls,and from the subroutine return instructions M99(end with M99)come in pairs. Through examples on how to use programming subroutineM98,M99.

Key Words:Subroutine call M98,M99instruction Simplify programming

数控车床的编程方法有自动编程和手动编程,而手动编程用得比较多。手动编程时有很多方法和技巧,其中运用子程序来编程就是一种方法。在数控车床的加工编程中利用子程序编程可以简化编程、节约数控统内部资源、提高加工效率、降低生产成本。具有很灵活实用的特点,在实际的加工生产中具有重要的意义。

1 子程序的定义与作用

在编制加工程序时,如果需要加工的零件有些加工部位完全相同或相似,为了简化程序,可以把这些重复的程序段单独列出,并按一定的格式编写成子程序。主程序在执行过程中如果需要某一子程序,通过调用指令来调用该子程序,子程序执行完后又返回到主程序,继续执行后面的程序段。另外在一次定位装夹中需要加工多个相同的零件时,也可以利用子程序来编程实现循环加工,以达到节省加工时间和提高加工效率的目的。

广州数控车床系统的M98指令用于子程序调用,通常与从子程序返回指令M99(以M99结束)成对出现。

M98指令格式:

M98 P

被调用的子程序号(0000~9999)。当调用次数未输入时,子程序号的前导0可省略;当输入调用次数时,子程序号必须为4位数;调用次数(1-999),调用1时,可不输入。指令功能:当前程序段的其它指令执行完成后,系统不执行下一程序段,而是去执行P指定的子程序,子程序最多可执行999次。

从子程序返回M99

指令格式:M99 P

返回主程序执行的程序段号(0000~9999),前导0可以省略。

2 利用子程序指令M98、M99编程加工实例

采用广州GSK980TB数控系统车床加工零件(如图1所示)。该零件的毛坯材料采用φ20的PVC棒料。

2.1 对该零件进行加工工艺分析

由于该零件结构比较简单,尺寸精度要求不高,所以加工时只需要两把车刀,一把外圆车刀,一把切断刀(刀宽为2mm)。如果采用单件加工的方法编程加工,用于对刀和装夹、换刀的辅助加工时间大大增加,降低生产效率;如果采取夹位不变,一次装夹就可以加工多个零件。这样,我们可以利用子程序指令来编程进行加工,既节省时间、材料,又提高了加工效率。

2.2 利用子程序指令M98、M99编制该零件的加工程序

O0001(主程序)

M03 S1

GOO X100 Z50

T0101(外圆车刀)

G00 X22 Z2

GO1 X18 F0.2 G99

Z-81

G00 X20

Z0

M98 P80002

G00 X100 Z50

M30

O0002(子程序)

G01 X18 F0.2 G99

G02 W-8 R10

G00 X100 W58

T0202 (切断刀,刀宽2mm)

G00 X20 W-60

G01 X0 F0.1

X20 F0.2

G00 X100 W50

T0101

G00 X20 W-50

M99

3 子程序在数控车床实训课中的应用

学生在课室上编程课时总会觉得枯燥乏味,很难理解和掌握子程序的编制及运用。因此我们要充分利用实训课的时间让学生自己动手编程和操作,进一步加深了解子程序的作用。由于学校的设备有限,在上数车实训课时,我们可以把学生分为两组。一组学生用单件加工的方法编程加工(上图所示的零件);另一组学生用子程序指令来编程加工(上图所示的零件)。两组同一时间开始,每组加工8件。加工完毕后,通过比较,看看哪一组做得更快、更好。让学生们自己作对比和总结,这样做不但使他们对M98、M99指令有更深刻的认识和理解,而且能够提高他们学习数控编程的兴趣,进一步提高他们手工编程的能力和动手操作的能力。

4 结语

综上所述,利用子程序编程加工在实际应用中,执行一次加工程序可以加工多个零件,这样既节省了系统资源,又节省了每个零件的加工时间,提高了加工效率。而且在数控车床实训教学中,通过这样简单实用的例子,让学生在“做中学,学中做”,最大限度地激发学生的学习主动性、积极性和创新意识,把实际的工作状态和课堂教学融为一体,从而加强了实训效果,提高了学生的综合素质。

参考文献

[1]GSK980TB车床数控系统.使用手册(第一版),2006.

[2]黄堂芳.现代制造工程.鄂东职业技术学院,2006.

子程序范文第4篇

关键词:数控车床 手工编程 子程序 子程序调用

中图分类号:文献标识码:A文章编号:1007-9416(2010)05-0000-00

随着数控技术的发展,数控加工在机械制造加工中的应用越来越广泛,数控机床的种类也越来越多,功能也越来越多、越来越强;然而,这对于从事数控加工的教学、学习、工作的人员却是一个不小的困难,特别是教师和学生,要面面俱到的学习和掌握各种数控系统是非常困难的、也是不切实际的;但是,目前在国内应用比较多的是经济型数控车床和经济型数控铣床,尤以经济型数控车床应用最多,即便如此,要掌握各种数控系统的编程指令也不是一件容易的事。为此,笔者就多年从事数控设备与编程教学及学生实训指导工作的经验,对在数控车床上如何运用子程序进行手工编程做了一些研究,此方法虽不及应用复合循环指令编程那样简单方便,但一方面可以在不需要掌握复杂的复合循环指令的情况下实现复杂零件的编程,另一方面比单纯用简单指令编程要快捷方便得多;本文以GSK980TD系统为例介绍子程序在数控车床的应用,以求抛砖引玉。

1 子程序及子程序调用指令

虽然数控机床、数控系统的种类、型号繁多,数控编程G指令代码及格式也不尽相同,但是,目前国内应用比较多的是:FANUC数控系统(法拉克)、SINUMERIK数控系统(西门子)、GSK数控系统(广州数控)、HNC数控系统(华中数控),这四大类数控系统的子程序格式及子程序调用指令的代码和格式是基本一致的,其用法也大同小异,。

1.1子程序的概念

为简化编程,当相同或相似的加工轨迹、控制过程需要多次使用时,可以把该部分的程序指令编辑为独立的程序进行调用。调用该程序的程序称为主程序(以M30或M02结束),被调用的程序称为子程序以M99结束。子程序和主程序一样占用系统的程序容量和存储空间,子程序必须有自己独立的程序名,子程序可以被其它任意主程序调用,也可以独立运行;子程序结束后就返回到主程序中继续执行[1][2]。

1.2子程序调用

目前,子程序调用指令代码及格式基本统一为:M98 P , 其内四位数字表示子程序调用次数,内四位数字表示被调用的子程序的程序号,子程序号必须为四为数[1][2]。

2 数控车床应用子程序编程举例

如图1所示的零件,毛坯材料为45钢,直径为φ65mm的园型材[3]。该零件是应用封闭循环指令(G73)编程的典型例子,但用子程序编程也很方便,在此应用子程序来编程,读者可以与应用G73编程进行比较。

其数控加工程序如下:

O0001;主程序号。

N0010 T0202;调用2号粗车刀,执行2号刀补

N0020 G00 X100 Z150 ; 快速定位到换刀点

N0030 M03 S700; 主轴正转,转速700r/min

N0040 G00 X66 Z128.17;快速定位

N0050 G01 X0 F80; 车右端面

N0060 G00 X66.5 Z130; 快速定位到初车对刀点

N0070 M98 P220002;调用0002号子程序22次,并留0.5mm的精车余量

N0080 G00 X100 Z200;快速退回换刀点

N0090 T0101 S1200; 换1号精车刀,执行1号刀补,主轴转速1200r/min

N0100 G00 X3 Z130;快速定位到精车起刀点

N0110 M98 P0003;调0002号子程序1次进行精车

N0120 G00 X100 Z200;快速退刀到换刀点

N0130 T0303 S500; 换3号切断刀,执行3号刀补,主轴转速500r/min

N0140 G00 X66 Z-3;快速定位到切断对刀点(设切断刀刀宽3mm)

N0150 M98 P650004;调0003号子程序66次进行切断

N0160 G00X100;X方向回换刀点

N0170 Z200; Z方向回换刀点

N0180 T0200;换回1号粗车刀,取消刀补

N0190 M30;主程序结束

%

O0002;子程序号

N0010 G00 U-3;X方向快进3mm

N0020 G01 Z128.17;Z方向进刀到右端面

N0030 G03 U40 Z70 R36;逆园插补,车R36园弧

N0040 G02 U0 Z40 R30; 顺园插补,车R30园弧

N0050 G01 Z20;直线插补,车∮40外园

N0060 U24;车台阶面

N0070 Z-25;车φ64外园

N0080 U1; 让刀1mm

N0090 G00 Z130;Z方向快速返回前一次切削起点

N0100 U-65;X方向返回前一次切削起点

N0110 M99;子程序结束

%

O0003;子程序号

N0010 G01 U-2 F20; X方向进刀2mm

N0020 G00 U1;X方向退刀1mm

N0030 M99 子程序结束

%

3 子程序在数控车床上的应用场合

从前面所举例子可以看出,子程序在数控车床上的应用场合是非常广泛的,并不仅仅局限于局部轮廓的加工编程,它完全可以取代那些复杂的循环指令来进行复杂零件的编程。归纳起来,子程序在数控车床上的应用主要可以用于以下几个方面:

1)代替径向、端面单一固定循环指令进行简单零件的粗、精加工。

2)代替径向、端面复合循环指令进行尺寸单调变化零件的粗、精加工。

3)代替封闭循环指令进行尺寸非单调变化及铸、锻件毛坯的粗、精加工(如前例)。

4)代替切槽循环指令进行切槽、切断(如前例)。

5)进行局部轮廓的粗、精加工(常用)。

4 子程序编程要点

(1)粗车起刀点:起刀点的X坐标一般比毛坯右端外轮廓直径大1~2mm(外轮廓加工),或者比毛坯右端内孔直径小1~2mm(内轮廓加工),同时,需要考虑X方向的精加工余量(精车余量也可通过修改粗车刀的刀补值来设定);Z坐标定在毛坯右端面以右1~2mm处,可不留精加工余量。其目的是防止起刀时撞刀。(2)精车起刀点:Z坐标可与粗车时相同;X坐标=精车起点的X坐标±子程序的径向进刀量,“+”号用于外轮廓,“-”号用于内轮廓。(3)子程序调用次数:调用次数=(粗车起刀点的X坐标±精加工起点的X坐标±精加工余量)÷径向进刀量;“-”号用于外轮廓,“+”号用于内轮廓;调用次数必须为整数。(4)循环点的返回:当在同一处需多次调用同一个子程序时,一次切削完毕后需要返回到前一次的切削起点,即让子程序自身成为一个封闭循环体。其确定方法为:X方向返回距离为一次切削时X方向的坐标增量,Z方向返回距离为一次切削时Z方向的坐标增量。注意在返回时刀具不能与工件发生碰撞,为此,一般应先沿X方向退刀到零件径向最大尺寸以外,再沿Z方向返回,最后进行X方向的径向补偿。

5 子程序编程的优缺点

5.1子程序编程的优点

(1)只需要掌握基本G功能指令(G00 G01 G02 G03),不需要掌握复杂的循环指令(G90、 G94 、G71、 G72、 G73、G74、 G75 等),应用子程序及子程序调用指令M98即可编制复杂零件的加工程序。一方面避免掌握复杂的循环指令,另一方面又避免使用简单指令编程的繁琐。(2)不受零件轮廓形状限制。即可用于尺寸单调变化的零件,又可用于尺寸非单调变化的零件。(3)应用场合多样。即可用于零件整体轮廓的编程,又可用于零件局部轮廓的编程。

(4)主程序简单明了。在主程序中只有换刀、刀具定位及一些辅助功能指令,而主要的切削加工程序内容都放在子程序中,这样使主程序显得非常简单;而子程序只需按零件形状、尺寸编写即可。

5.2子程序编程的缺点

(1)当切削起点与终点直径相差较大时,切削空行程较多,切削效率不如复合循环指令。(2)起刀点、进刀量、调用次数等数据间的关系要准确把握。(3)与用复合循环指令编程相比,总的程序段数相对较多、编程稍显复杂。(4)多数时候都需要采用增量坐标编程,特别是径向坐标。

6 结语

前面讨论了子程序在数控车床手工编程中的应用,如果掌握了其方法和要领,运用起来是非常方便适用的。特别是大中专学生及其他人员在就业应聘时,在不十分了解应聘单位的设备、系统的情况下,运用子程序及子程序调用就可以很方便的进行编程;同时,采用子程序编程进行新设备的数控系统测试以及在实际生产中应用也是方便可行的。因此,在数控车床上应用子程序及子程序调用来实现手工编程是有其应用价值的,值得深入研究和推广。

参考文献

[1] 毛华杰. 数控设备与编程. 北京:北京邮电大学出版社,2007,P20.

子程序范文第5篇

关键词:汇编语言 I/O 子程序 库

中图分类号:TP313 文献标识码:B 文章编号:1002-2422(2008)03-0086-02

设计的I/O子程序库包括16位版本和32位版本,可分别应用于16位和32位汇编语言应用程序,提供的子程序功能包括不同数制和字符串的输入与显示,状态标志的显示,满足汇编语言程序设计的通常要求。

1 设计方案

1.1子程序功能需求

根据在汇编语言程序设计中的通常要求,子程序所提供的功能主要包括键盘输入和显示器显示,输入和显示的内容可以是不同的数制与字符串格式。如表1所示。

1.2子程序库结构

为了方便整个子程序库的设计,设计了一些通用予程序。在实现提供给用户使用的子程序时,充分利用这些通用子程序,简化了子程序的代码编写,减少了子程序库的长度。主要子程序之间的关系如图1所示。

字符输入和显示子程序READC、DISPC是整个子程序库输入输出的基础。利用这两个子程序实现了字符串输入和显示子程序READMSG和DISPMSG。子程序READMSG和DISPMSG又是不同数制数据输入和显示的基础:通过调用READMSG读入字符串,然后调用字符串转换子程序STRTOBIN、STRTOHEX、STRTOUI和STRTOSl分别将字符串转换为不同数制的数据,从而实现了不同数制输入的子程序READBIN、READHEX、READUI、READSI等;通过调用DISPMSG显示字符串,然后调用数据转换字符串子程序BINTOSTR、HEXTOSTR、UITOSTR和SITOSTR分别将字符串转换为不同数制的数据,从而实现了显示不同数制的子程序DISPBIN、DISPHEX、DISPUI、DISPSI等。

设计的16位和32位的子程序库提供的子程序功能都是相同的,区别在于16位的字符输入子程序是利用DOS系统调用实现的,而32位的字符输入子程序是利用WIN-DOWS API函数实现的。其他子程序则可以通用。

各个子程序汇编后,由库管理工具LIB.EXE生成16位子程序库I/O16.LIB和32位子程序库I/O32.LIB。

1.3参数传递

汇编语言子程序的参数传递可以采用寄存器传递,共享内存变量和堆栈传递三种方法。堆栈传递参数时,可以用MASM提供的伪指令PROTO来声明子程序,用INVOKE来调用子程序。这两个伪指令在声明和调用子程序时相对于CALL指令和PROC伪指令要简洁得多。使用堆栈传递参数也是高级语言通常使用的子程序传递参数的方法,用堆栈传递参数的子程序可以被高级语言调用。子程序的返回参数也遵循高级语言子程序的规范,采用寄存器EAX返回子程序的出口参数。

1.4宏命令

调用子程序需要用专门的调用指令并遵循一定的格式要求,这对于初学者来说有一定的难度。当子程序的参数比较多时,调用子程序的编码量较多,设计了调用子程序的宏指令,利用宏指令来实现对应的子程序调用,格式简单,使用方便,尤其适合初学者应用。为提高代码的复用性,被调用子程序的声明和宏定义都放在包含文件IO.INC中,在汇编语言应用程序中用INCLUDE语句包含该文件即可。

2 结束语

子程序范文第6篇

关键词:数控车 编程 子程序

中图分类号:TG659 文献标识码:A 文章编号:1007-9416(2013)04-0029-01

编程者常会遇到一系列加工指令重复出现的情况,例如在一个工件不同的位置上有相同的几何形状,编程者可以为每个加工形状都编写指令,这样做会导致在同一个程序中出现多次相同的系列加工指令,从而造成程序过长,出错机会增多,程序也将在CNC机床控制单元中占用更多的内存。解决问题的方法是创建称为子程序的独立程序,它包含加工某一个形状的系列指令,再创建一个可多次调用的主程序,以便简化编程。

1 子程序的概念

任何一个大程序均可分解为许多相互独立的小程序段,这些小程序段称为程序模块。可以将其中重复的或者功能相同的程序模块设计成规定格式的独立程序段,这些程序段可提供给其他程序在不同的地方调用,从而可避免编制程序的重复劳动。我们把这种可以多次反复调用的,能完成指定操作功能的特殊程序段称为“子程序”。相对而言就把调用子程序的程序称为“主程序”,把主程序调用子程序的过程称为“调用子程序”。子程序一般不可以作为独立的加工程序使用。只能通过主程序进行调用,实现加工中的局部动作。子程序结束后,能自动返回到调用它的主程序中。

2 M98子程序的调用格式

3 子程序的嵌套

为了进一步简化加工程序,可以允许子程序在调用另一个子程序,这一功能称为子程序的嵌套。上一级子程序与下一级子程序的关系,与主程序与第一层子程序的关系相同。子程序嵌套不是无限次的,子程序可以嵌套多少层由具体的数控系统决定。

4 子程序的应用

(1)零件上若干处具有相同的轮廓形状,在这种情况下,只要编写一个加工该轮廓形状的子程序,然后用主程序多次调用该子程序的方法完成对工件的加工。(2)加工中反复出现具有相同轨迹的走刀路线,如果相同轨迹的走刀路线出现在某个加工区域或在这个区域的各个层面上,采用子程序编写加工程序比较方便,在程序中常用增量值确定切入深度。(3)在加工较复杂的零件时,往往包含许多独立的工序,有时工序之间需要适当的调整,为了优化加工程序,把每一个独立的工序编成一个子程序,这样形成了模块式的程序结构,便于对加工顺序的调整,主程序中只有换刀和调用子程序等指令。

5 以华中数控世纪星HNC-21/22T车削系统为平台,用子程序编写下图中长度为20mm的宽槽程序

6 结语

子程序编程可以缩短程序段,加快工件加工速度,从而有效提高了生产效率。子程序编程使人开拓视野,丰富了数控编程方法,为学习更复杂的编程方法奠定基础。

参考文献

[1]王爱玲.数控编程技术[M].北京:机械工业出版社,2006.

子程序范文第7篇

【关键词】 宏程序 子程序

一、产品特点分析

欲加工旋钮零件500个图1-1,毛坯尺寸为Φ37,加工完成后,需进行煮黑处理。零件图下图所示:

编制此类零件加工程序有时会遇到这种情况:一组程序段在一个程序中多次出现,或者在几个程序要使用它。我们可以把这组程序段摘出来,命名后单独储存,这组程序段就是子程序,调用第一层子程序的指令所在的加工程序叫做主程序。调子程序的指令也是一个程序段,它一般由子程序调用指令、子程序名称和调用次数等组成,具体规则和格式随系统而别,例如同样是“调用O0002号子程序一次”,FANUC系统用“M98 P2。”

子程序可以嵌套,即一层套一层。上一层与下一层的关系,跟主程序与第一层子程序的关系相同。最多可以套多少层,由具体的数控系统决定。在实际加工中,子程序的调用应用的非常广泛。当然也可以利用子程序与宏程序相结合来完成。在用户宏程序中,又可以分为A类和B类两种,A类宏程序是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则以直接的公式和语言输入,它和C语言很相似,在0i系统中应用比较广,简单易懂,通过利用宏程序循环语句及变量赋值实现多个加工。

二、加工工艺分析

2.1加工精度分析

根据零件图分析,该旋钮精度要求不高,按图纸尺寸要求加工即可。

2.2数控加工刀具分析

该零件形状简单,在外形粗精车中选择焊接式90度外圆偏刀,切断时采用刀宽为3mm的焊接式切断刀,钻孔的钻头采用直径为Φ5.2以及M6丝锥一副。

2.3加工路线制定

该零件属于批量生产,精度要求不高,为提高加工效率,先将工艺安排如下:

(1)采用三爪自定心卡盘装夹,每次加工5个零件,伸出长度为:零件的总长+切槽刀宽+下个零件端面车削量。值得注意的是,考虑到工件伸出过长,会引起机床振动,会给加工带来不便,所以一次只加工5个零件。

(2)采用G71、G70外圆偏刀粗精车外圆。

(3)利用切槽刀具,车削R1.5的圆弧并完成切断。

(4)数控铣削两平面。

(5)利用平口钳完成钻口和攻螺纹。

(6)煮黑处理

三、工件坐标系设置

该零件在提高加工效率方面,还需考虑编程零点设置问题。一般而言,大部分零件加工的编程零点都设置在端面中心。大部分编程人员都知道,一把刀具在没被拆卸的前提下,X向只对一次,那么主要考虑Z向对刀。旋钮零件的Z向对刀,采用游标卡尺量出第一次工件伸出的总长并锁住,当下次工件伸出长度时,选择原先的游标卡尺来衡量工件的装夹位置,这样Z向就无须对刀,从而提高了加工效率。

四、加工程序

除通过零点设置可以提高加工效率外,程序的编写也与加工效率有关。在加工旋钮零件的编程中,主要有三种编程方式:运用子程序调用、偏移Z向坐标、子程序与宏程序结合。

根据旋钮零件的工艺分析可知,每次一个零件切断时的总长是不变的,所以可以利用宏程序中的变量,控制每次刀具的移动距离,通过WHILE循环条件判断刀具终止的移动距离。#1=0,WHILE[#1GE-92.3]DO1,M98P0002;#1=#1-18.5;END1;

其中#1=#1-18.5,指的是刀具每次移动18.5,从而实现连续加工多个零件,提高加工效率。

参 考 文 献

[1]田春霞主编.数控加工工艺.北京:机械工业出版社.2006.2

[2]王先逵着.机械制造工艺学.清华大学出版社.1999

[3]华茂发主编.数控机床加工工艺.北京:机械工业出版社.2000.

子程序范文第8篇

关键词:数控车床 子程序 连续加工 编程指令

中图分类号:TG502 文献标识码:A 文章编号:1674-098X(2014)07(b)-0051-01

1 有关子程序知识

1.1 什么是子程序

为了简化编程,把相同的内容(轮廓)编写为一个程序,必要时进行调用。被调用的程序称为子程序。

1.2 子程序调用应用场合

一次装夹加工多个相同零件或一个零件有重复加工部位的情况下可使用子程序。

1.3 子程序调用格式

FANUC的格式

M98 P 和M98P L

例如:M98 P30002或者M98 P2 L3调用2号程序3次。

2 连续加工工件的优势与不足

2.1 连续加工工件的优势

(1)节约装夹工件的时间,减少对刀的次数。

(2)提高了加工产品的效率。

(3)节省了加工产品的成本。

(4)减少了操作者的劳动强度。

2.2 连续加工工件的不足

(1)工件的刚性降低了。

(2)对车刀的安装与对刀有了更高的要求。

2.3 编程举例

2.4 注意事项

(1)子程序调用可出现在子程序中,即允许子程序嵌套。

(2)在数控车床中,并不是所有的加工零件都要用子程序指令来编程,只有在一个零件上,凡是有两处或两处以上形状和大小都相同的加工部位,为简化程序的编制,才可用子程序调用来加工。

(3)连续加工零件时,要考虑工件的刚性,避免因刚性问题而产生振动。

(4)在连续加工产品时,工件不能伸出太长,而且在装夹工件时不宜采用一夹一顶或者两顶尖装夹方法来装夹工件。

(5)在编写程序时,要考虑车刀进退的安全性。

(6)我们在编写程序时要考虑90°车刀换为切断刀时,切断刀实际位置。举例编写的程序是(仿真)理想化状态下的,在实际当中要考虑换车刀时的偏差,适当地进行调整。

3 结语

在数控车床中合理采用子程序来连续加工零件,可以缩短程序段,减少编程时间,减少工作量,从而有效提高了加工产品的生产效率,节约成本。

参考文献

[1] 刘小禄.数控车削操作与编程[M].北京:科学出版社,2008.

[2] 刘加孝,高星.加工中心编程与操作[M].北京:科学出版社,2008.

子程序范文第9篇

混合编程方法包括C语言调用汇编语言子程序、汇编语言调用C语言子程序和C语言程序嵌入汇编语言三种。第一,C语言调用汇编语言子程序需要遵循以下规则。一是根据参数顺序,依据反序顺序将参数压入堆栈中。二是依据参数的值进行传递;三是使用“EXTERN”对函数显示进行说明,函数名使用下划线格式的8个字符以内的名字命名;四是对代码段加以说明,并使用“—TEXT”作为代码段命名原则。五是汇编程序的参数取C程序的参数;六是汇编程序需要兼顾保护寄存器。基于以上6个原则,C语言与汇编语言混合编程时,汇编过程需要遵守规定的开头及结尾格式。第二,汇编语言调用C语言子程序则不需要改变汇编语言主程序和子程序的格式,只需主程序和子程序的格式保持一致,再开始前使用“EXTREN函数名”用于表明身份,表示该函属于调用C语言子程序的外部函数。第三,C语言程序嵌入汇编语言包括两种:一是C程序调用汇编子程序模块和C程序嵌入汇编指令两种。C程序调用会汇编子程序模块需根据主程序和模块编写语言确定,如果主程序为C语言、模块为汇编语言,则需要使用C程序调用汇编子模块。C程序嵌入汇编指令主要用于处理C语言无法控制硬件的情况。例如修改中断标志寄存器、重复使用某种功能可采用C语言嵌入汇编指令的方式实现。

二、C语言与汇编语言连接的关键问题要实现

C语言与汇编语言之间的连接还需要解决参数关系、确定调用关系和模块连接三个问题。参数关系是混合编程过程中必须解决的问题,多数程序员均采用堆栈方式解决参数传递问题,具体操作为:以汇编语言中的BP作为机制寄存器,以反序多为调用顺序,将C语言中的参数压入堆栈中,且BP根据参数加入相应的偏移量即可实现参数使用。而确定调用关系则需要说明要调用的函数或过程,并确定调用及其调用关系。外部模型可调用被调用的函数或被调用过程,调用程序需说明被引用的外部模块的名称。实现汇编程序与C程序模块连接需要保证不同语言模块的存储模式相同以及遵守C兼容的函数及变量命名约定。

三、结语

随着计算机技术的提高及计算及应用范围扩大,许多领域的控制工作都得到极大的简化,而且C语言这一高级程序设计语言的应用也愈加广泛,丰富了计算机软件的功能及内容。然而,信息技术始终处于不断发展状态,人们对计算机软件编程的要求也在逐渐提高,程序员仍需要深入了解C语言的特性,强化C语言运用,利用C语言实现计算机软件的多功能,不断创新和开发信的软件。最后,程序员还需要合理运用C语言和汇编语言进行综合编程,简化软件编写过程,提高软件使用效率。

子程序范文第10篇

关键词: 高分子材料; 本构关系; Abaqus; UMAT; VUMAT

中图分类号: TB324; TB115.1文献标志码: B

引言

高分子材料在日常生活中有着广泛的应用,因此其不可避免地出现在仿真分析中.当前没有一种商业软件具有适合高分子材料的材料本构模型.Abaqus是一款优秀的商业软件,其提供的子程序接口UMAT/VUMAT允许用户根据使用需求自定义材料本构.[1]使用该方法,可有效解决在仿真中由于材料本构不适用而导致的仿真与实际测试差异过大的问题.

1高分子材料本构一般描述方法

业界通常使用弹塑性本构定义高分子材料的材料属性.屈服强度一般取材料曲线上第一个峰值点.弹性模量的取法有2种不同的方式:对于应力应变关系曲线有明显直线段的,以第一段直线的斜率作为材料的弹性模量(切线法);对于曲线没有明显直线段的材料,则使用原点与屈服点连成的直线的斜率作为弹性模量(割线法).2种方式与真实应力应变曲线的比较见图1.图 1高分子材料测试材料曲线与仿真曲线比较

由图1可知,无论使用何种方式,仿真使用的应力应变曲线都与实际材料的应力应变曲线有较大差异.将切线法获得材料数据代入到手机电池盖三点弯曲中进行仿真,见图2,其仿真与测试力位移曲线在最高点的差异约为23%,见图3.

对于手机等一些电子类产品,高分子材料的仿真非常重要.在跌落或弯折测试中,高分子材料的应力应变关系与弹塑性本构的差异造成仿真预测不准确,必须定义正确的高分子材料本构.

2Abaqus VUMAT子程序

Abaqus提供丰富的材料本构模型库,能够满足绝大多数仿真材料模型的需要;同时,还提供UMAT/VUMAT子程序接口,让用户可以用FORTRAN语言编程,自己定义需要的材料本构模型,对Abaqus材料库中没有包含的材料进行计算.几乎可以把用户材料属性赋予Abaqus中的任何单元,其中UMAT用在隐式仿真计算中,VUMAT用在显式仿真计算中.由于隐式计算与显式计算的差别,导致UMAT与VUMAT也有一定的差异,但是经过简单的改写即可完成它们之间的转换.

本文使用准静态仿真分析方法,属于显式求解,所以只介绍VUMAT.

3高分子材料VUMAT本构介绍

由图1可知,高分子材料的本构与弹塑性本构最大的差异在于弹性段是直线还是曲线.弹性段的路径也直接影响到卸载的路径.因此,对高分子材料本构的定义关键在于非线性弹性段的实现,即要根据当前的应力值实时获取下一增量步所用的弹性模量值.程序整体流程见图4.

图 4程序整体流程

3.1弹性段多段线性的实现

在弹性段,程序根据弹性模量和泊松比计算应力增量.由于弹性段为非线性,需要根据应力或应变更新用于计算的弹性模量值,直至达到屈服点,因此需要在输入文件中输入材料真实应力应变曲线,通过查表计算的函数,根据当前应力σ所在的位置,计算当前的弹性模量.应力应变曲线输入时,输入格式为:

用查表的方法,直到σn

3.2卸载路径的选择

屈服发生后,需要选择弹性模量参与相关计算,有2个作用:一是用来计算屈服后加载段的应力试探值(不对该增量步真实应力产生影响,只起对比判断的作用);二是用来作为屈服后卸载的路径(为实现不同卸载路径,在程序中设置一个flag位,其值由用户自己输入),用户可以根据实际的需要选择卸载的路径.如图4中,共设置3种卸载路径:沿切线卸载、沿割线卸载以及沿曲线卸载等.用户也可以根据需要增加其他的卸载方式.

4子程序的验证

为验证子程序是否能实现设计的功能,取一个1/8的网格模型进行单轴拉伸仿真,单元类型为C3D8R.输出其应力应变曲线,与材料真实应力应变曲线比较,见图5.

图 5使用VUMAT后加载应力应变曲线与材料曲线对比

使用VUMAT后,加载的应力应变曲线与材料测试得到的真实应力应变曲线完全重合,说明VUMAT可以完全反映材料在加载过程中的力学行为.在卸载过程中,分别实现沿弹性段的切线、割线以及曲线卸载.

为进一步验证,将VUMAT用于图2所示的手机电池盖三点弯模型中进行仿真与试验对比.在使用弹塑性本构模型时,仿真与测试力位移曲线的最大差异约为23%,而引入使用VUMAT编写的高分子材料本构后,其仿真与测试的差异减少到4.5%,见图6.从实际项目的验证结果看,使用VUMAT后电池盖测试的力位移曲线与仿真的力位移曲线基本重合,仿真与测试的差异也明显减小.将该本构应用于其他高分子材料和实际案例,其仿真精度均明显改善,也说明该子程序在实际工程中的适用性.

图 6使用VUMAT后电池盖力位移曲线对比

5结束语

使用VUMAT子程序后,高分子材料在加载段的力学特性与测试的真实应力应变曲线一致,同时将其应用在工程实际问题上,也与测试曲线基本一致,验证该程序的适用性.由于高分子材料的卸载特性较为复杂,还需进一步研究,所以程序只给出3种方式供用户按照实际需求进行选择.

参考文献:

上一篇:行政处罚听证程序范文 下一篇:vb程序范文