当前位置: 首页 > 范文大全 > 工作计划

程序编程(4篇)

时间:

程序编程

关键词:倾斜椭圆宏程序编写

一、问题的题出

随着数控技术的不断进步,数控车床加工中各种复杂形面也日渐增多,如椭圆、抛物线、正弦曲线、余弦曲线、双曲线等各种非圆曲面。对于上述各种复杂成形面,利用CAM软件进行自动编程相对简单,但由于种种原因,在绝大多数情况下数控车床主要还是依靠手工编程。

椭圆轴线与数控车床Z轴重合的情形相对比较简单,其解决方案也多见于各类文献,但在本例中椭圆轴线与数控车床Z轴呈一定夹角,编程和加工难度陡增,主要原因如下:①机床数控系统本身既不存在加工椭圆等非圆曲线的G指令,又没有类似G68这样的旋转指令,使编程难度大大增加。②加工中变量的参数直接影响着加工的效率与质量,很容易产生过切报警,即使程序正确无误,实际加工时的参数调整也非常困难,直接影响着加工的进行和加工的精度。

二、问题的解决

椭圆轴线与数控车床Z轴呈一定夹角椭圆宏程序的编制步骤如下。

1.写出椭圆方程

椭圆轴线与数控车床Z轴呈一定夹角,宏程序主要利用各种数学公式进行运算加工,因此要编制旋转椭圆程序,操作者必须掌握椭圆方程和旋转公式等各种数学公式的计算方法并加以灵活运用。

椭圆方程有两种形式,分别是椭圆的标准方程和参数方程。

椭圆标准方程:

椭圆参数方程:

X=acosαZ=bsinα

其中a、b分别为X、Z所对应的椭圆半轴。

2.写出车床旋转公式

由于数控车床并不像加工中心那样存在着旋转指令,因此要利用旋转公式来进行椭圆的旋转。车床旋转公式为X′=Zsinθ+XcosθZ′=Zcosθ-Xsinθ,其中,X′、Z′为旋转后的坐标,X、Z为旋转之前的坐标值,θ为旋转角度。

3.计算终起点角度

在利用椭圆参数方程编制加工程序时,终点和起点的角度是重要的一步,因为终、起点直接影响着加工零件的几何形状。终点和起点的计算方法有两种,一种是三角函数计算法,该方法不作详细介绍。另一种是用旋转公式求得未旋转前X、Z的坐标。最后进行椭圆角度的计算。

旋转公式求椭圆角度先分别将A、B的坐标代入旋转变换公式中进行运算,最终分别求得A、B没有旋转之前的坐标值A′、B′的坐标,用椭圆参数方程求得没有旋转之前的椭圆角度。

例:如图1所示,以O′为原点,点A的坐标为(Z20,X13.105),点B的坐标为(Z-7.95,X12.95),其中椭圆的长半轴和短轴分别为25mm、15mm,旋转角度为20°。求没有旋转之前的椭圆起点和终点角度。

起点计算

AZ=AZ′cos(-θ)-AX′sin(-θ)

=20×cos(-20°)-13.105×sin(-20°)=23.276(mm)

cosα=Z/b=23.276/25=0.931

α≈21.4°

终点计算

BZ=BZ′cos(-θ)-BX′sin(-θ)

=-7.95cos(-20°)-12.95sin(-20°)=-3.041(mm)

cosθ=Z/b=-3.041/25=-0.122

θ≈97°

4.程序中变量的确定与注意事项

在旋转椭圆程序变量的赋值是一个重要的环节,因为宏程序是利用许多段微小的直线来逼近轮廓的,取值大了轮廓表面的逼近误差也大。在加工中,变量的赋值可以按粗车和精车来取值。粗加工程序变量的取值应根据预留加工余量的大小来确定,在保证加工不过切的前提下,我们可以选择较大的程序变量,但是也不能过大,变量过大会使精加工余量不均匀或形成过切。精加工时我们主要是保证工件的质量,为使工件的几何形状达到要求,需要减少拟合的误差,因此我们应该选择一个较小的程序变量。

三、应用实例(程序编制)

使用数控车床切削零件图如图2所示,毛坯材料为45钢,直径为50mm,长度为65mm(1号刀为粗车35°尖刀,2号刀为精车35号尖刀,3号刀为切断刀)。

倾斜椭圆宏程序部分(HNC21T数控系统):

#10=15短半轴

#11=25长半轴

G00X26.209A点X坐标

G01Z0F0.05

#12=21.4椭圆旋转前的起点角度

WHILE[#12]GE97ENDW椭圆旋转前终点角度

#13=SIN[#12*PI/180]*#10SIN【弧度】弧度编程

#14=COS[#12*PI/180]*#11其中PI=3.14(π)

#15=20*PI/180(赋值旋转角度20°)

#16=#14*SIN[#15]+#13*COS[#15](车床旋转公式为)

#17=#14*COS[#15]-#13*SIN[#15]

G01X[#16*2]Z[#14-20]F0.05(运行加工椭圆轮廓)

#12=#12+1(自变量递增1°)

END1

四、结语

程序编程篇2

关键词:排序;数组;noip

中图分类号:TP311.11文献标识码:A文章编号:1007-9599(2011)19-0000-02

NewMethodforSortingProgramming

DaiQidi

(BeiyaMiddleSchoolinChangsha,Changsha410008,China)

Abstract:Inorderprogramminglanguageisfrequentlyencounteredproblems.Thispaperpresentsanewmethodofsorting-sortanarrayofflexibleuseofthemethod.Thissortofapproachwithpreviousmethodstocomparetheiradvantagesare:programstructureissimple,easytounderstand,tosaverunningtimeandspace,fordifferenttypesofproblemscanbesortedaccordingtothispaper,severaldifferentmethods,youcansimpleandeasysolutiontotheproblem.

Keywords:Sorting;Array;Noip

一、前言

在多年的初中信息奥赛培训中发现,noip中很多题目都涉及到排序问题,遇到排序问题时想要拿满分就必须用快速的排序方法,但是对于大部分初中生以及初学者来说,要想理解和记住复杂的快速排序方法是比较困难的。因此应该寻找一种结构简单,思路不太复杂的方法来解决这类问题。常见排序问题大体可分为两类:1.需要稳定结果的排序;2.可以是一个不稳定排序的结果;为了解决这些排序问题,我们可以将排序所针对的数据进行分析确定这些数据的范围,如果数据的范围在允许的范围内,即可通过数组简单快的速解决排序问题。如果问题没用给出数据的范围(极少数问题)那就不一定能使用这种方法了。

二、常用排序说明

(一)直接插入排序。直接插入排序是稳定的。算法时间复杂度O(n2)--[n的平方]。(二)冒泡排序。冒泡排序是稳定的。算法时间复杂度O(n2)--[n的平方]。(三)快速排序。快速排序是不稳定的。最理想情况算法时间复杂度O(nlog2n),最坏O(n2)

三、利用数组快速排序的研究

首先来了解一下这个排序方法的思路:

先确定参与排序的元素个数为n,以及所有元素的范围,如:个数为100000,范围是0-2000;确定范围后就定义一个该宽度的数组a[2001]并初始化所有元素为0;然后在读取数据的同时将对应的数组元素进行累加;数据读完后实际上排序就已经完成了,只是相同的数据放在了一起,只需要将这些数据分开就可以了。

算法时间复杂度为数据宽度与数据量的和即n+x,如果数据宽度较小的话,这个时间复杂度就很低了;同时空间占用量也很小,一般的排序方法需要定义100000个元素的数组,这里只使用了2000个就解决了。

如果要求排序过程的稳定,则需要定义一个二维数组来解决,第一列来保存相同元素的个数,后面的n列保存元素的ID,这里假设同种元素的个数不超过100个,那么就可以通过定义数组a[2001][101]来解决问题了。

程序结构:略

可以发现在C语言中用这个方法排序时,如果碰到元素范围包含了负数是,数组就无法处理了,如元素范围为:-1000

现在我们用这个排序方法与比较复杂的快排进行比较,测试的工具是cena0.8.2,测试点3个,数据量都是100000个,数据范围是-1000到1000之间,稳定性不做要求,应为快排是不稳定的。

从上面的对比可以看出快排对于数据量较大的排序就处理不了了,一种是超时,应为快排的时间复杂度O(nlog2n),最坏O(n2),所以数据量较大时会超时,而数组的时间复杂度O(n+x),只要数据范围不超过C对数组下标范围的限制,数据量不超过百万级,数组排序是不会超时的。另一种是访问无效内存,数组定义过大造成的,由于C对数组大小的限制,快排以及其他排序要把数据都保留下载在进行排序,这样就会导致大的数据量无法保存或者占用大量空间,而数组排序的空间量只是数据范围的一个空间量,只要数据范围不超过数组下标,数据量再大都没什么问题了。

说了这么多数组排序的好处,当然数组排序法也有它不足的地方,当数据量较小,但是数据范围x又很宽的话数组排序的时间复杂度O(n+x)就不及其他排序的O(n2)或O(nlog2n)了;所以数据量较小(1000内)数据宽度较大(100000以上)时,推荐使用普通的排序发放就可以了,1000的数据量用冒泡就可以了。

四、解题应用举例

NOIP2007普及组第二题《纪念品分组》:

【题目描述】略。

初学学生拿到该题最开始以普通的冒泡做,有3个点超时,经过指点后使用数组做。

该程序测试点全部通过,只有一个点是0.03s,其他9点全是0.01通过。

五、结语

从以上的举例可以看出,只要熟练运用数组知识,将题目的问题和数据对象分析清楚就可以简单快速的解决与排序有关的很多问题了,这对程序的时间和空间的优化是很有帮助的。

参考文献:

程序编程篇3

在最初编写的JDBC应用程序代码中,所有的数据信息都是编写到Java中的,这其实是一种不可取的方式。那么,我们把这些数据信息提取出来,放到属性文件中进行程序优化。

一、配置文件优化程序

Java的属性文件是一种配置文件,主要用来表达配置信息,它的后缀是properties,其实就是一个纯文本文件。创建Java配置文件的方法是选中src右键单击新建,选择other选项,再选择向导中General下的File,将文件起名为dbConfig.properties,点击Add按钮来添加属性及属性值,例如,属性name为driver,属性value为com.mysql.jdbc.Driver;属性name为dburl,属性value为jdbc:mysql://localhost:3306/xqy_db;属性name为user,属性value为root;属性name为password,属性value为admin。

二、创建连接工厂类优化程序

1、定义connectionFactory类,并创建包名为com.xqy.until;

2、定义四个静态成员变量用来保存从属性配置文件中读取的数据库配置文件信息值;

3、定义静态代码块用来初始化类,可以为类的属性赋值,因为当加载类的时候会执行静态代码块,该静态代码块只能被执行一次。

其中核心代码为:

Propertiesprop=newProperties();

InputStreamin=connectionFac().getResourceAsStream(“dbConfig.properties”);

prop.load(in);

driver=(“driver”);//对静态成员变量driver初始化

url=(“dburl”);//对静态成员变量url初始化

user=(“user”);//对静态成员变量user初始化

pwd=(“password”);//对静态成员变量pwd初始化

4、定义一个连接工厂类的对象factory,并编写静态方法getInstance来返回连接工厂类对象实例,以确保在程序支行过程中只有一个实例。

5、定义数据连接类的对象conn,通过定义makeConnection()方法来返回配置属性文件中的数据连接对象。

Class.forName(drive);

conn=(url,user,pwd);

returnconn;

6、创建应用程序connectionFactoryDemo.java测试属性配置文件和连接工厂类,具体操作如下:

将主方法抛出SQLException异常,在主方法中添加代码为:

connectionFactoryfactory=();

Connectionconn=factory.makeConnection();

System.out.println());

接下来继续优化JDBC程序,使其更加清晰,更加符合工业标准规范。

三、创建DTO类优化程序

创建两个DTO类,分别对应数据表tbl_user和tbl_address。

DTO是DataTransferObject的缩写,是数据传输对象,主要用于远程大量数据调用的问题上,DTO一般只有成员变量,成员变量的setXX()方法和getXX()方法,还有构造函数,DTO不能包含业务逻辑。

1、在包下建立抽象类IdEntity,其中有保护成员变量Longid,使用setXX()和getXX()对成员变量进行初始化,定义无返回值的toStrig()抽象方法。

2、在包下,新建IdEntity类的子类User,该类具有name、password、email三个成员属性;添加父类中未实现的方法,为name、password、email三个成员属性添加setXX()方法和getXX()方法。

3、在包下,新建IdEntity类的子类Address,该类具有city、country、userId三个成员属性;添加父类中未实现的方法,为city、country、userId三个成员属性添加setXX()方法和getXX()方法。

四、创建DAO类优化程序

DAO是DataAccessObject的缩写,数据访问对象,主要用来封装对数据库的访问,通过它可以把数据库中的表转化为DTO类。

1、在包com.xqy.dao下建立接口UserDao,在该接口在添加抽象方法:

publicvoidsave(Connectionconn,Useruser)throwsSQLException;

publicvoidupdate(Connectionconn,Longid,Useruser)throwsSQLException;

publicvoiddelete(Connectionconn,Useruser)throwsSQLException;

其中save()方法用于保存用户信息,update()方法用于更新用户信息,delete()方法用于删除用户信息。

2、创建UserDao接口的实现类UserDaoImpl,该类位于com.xqy.dao.impl包下。首先实现save()方法,具体操作如下:

Stringsql=“insertintotbl_user(name,password,email)values(?,?,?)”;

PreparedStatementps=conn.prepareStatement(sql);

ps.setString(1,());

ps.setString(2,());

ps.setString(3,());

ps.execute();

程序编程篇4

关键词:螺纹;宏程序;循环功能;参数化

中图分类号:TG62

文献标识码:A文章编号:16749944(2017)8024002

1引言

螺纹是机械零部件之间的主要连接方式,所以机械加工中螺纹的加工是非常重要的环节。

数控镗铣床设备上加工2400t压力机滑块上的一组规格的螺纹,原有的加工方法存在一些弊端,除了对操作者的编程水平有一定要求外,加工效率也得不到提高,因此改进一种实用、简便的螺纹铣削方法对提高公司生产线生产效率具有重大意义。

公司数控M铣床班组加工该零件的多个规格螺纹时,手工编程要求操作者具备一定的编程水平,当更换不同规格的螺纹时就要重新编程,加工效率不高,对于简单的螺纹加工采用自动编程又不太适用。所以,上报设计部门后决定添加一种螺纹铣削“循环功能”。

2螺纹铣削工艺

螺纹铣削需要配合三轴以上联动机床,坐标系要在螺纹轴线与端面的交点处。采用数控镗铣床TK6920加工螺纹,选用单刃螺纹铣刀,铣削螺纹时螺纹的导程跟转速没关系,仅跟程序设定刀具的圈数和下刀距离有关系。转速和进给根据螺纹导程设置,转速高进给快,会因为切削力太大导致丝锥或板牙损坏。虽然转速慢进给慢在一定范围内能完成攻丝或套丝加工,但是转速也要限制在电机的实际使用扭矩范围内。

3问题的解决

首先利用宏程序加工标准右旋内螺纹M42×4.5,螺纹深度为50mm,单刃螺纹铣刀半径13mm。

为了安全起见,同时也为了确保螺纹深度为Z-50,通过计算可知:

50÷4.5=11余0.5(mm),

应考虑每次应距初始面一定高度开始加工,安全高度值可为:

h=p-0.5=4.5-0.5=4(mm)(1)

由于直螺纹特点(上下径线尺寸不变),这样就可确保经过11+1个循环后螺纹深度正好是50mm。

5结论

对螺纹铣削循环程序的生成,改进了传统铣削螺纹加工的方式,操作者能够简单、快速地解决加工不同规格螺纹铣削的问题。

值得肯定的是在此螺纹循环程序中涉及的计算多为基本的计算,对于新培训上岗的操作工也能完成操作。降低了编程难度,具有方便、快捷、浅显易懂的特点。刚好契合了参数化编程的理念,有利于节省人力成本。同时能满足在产品多样性情况下提高螺纹加工的生产效率的要求,直接为企业降低生产成本,提高企业的效益。

参考文献:

[1]

梅艳波。螺纹加工方法研究[J].长江大学学报,2009(1):279~280.

[2]刘明玺。西门子系统数控车床螺纹加工参数化编程方法探究[J].电子测试,2013(23).

[3]刘金文。浅析加工中心铣削螺纹的加工方法[J].数字技术与应用,2012(4).

[4]李庆余。机械制造装备设计[M].北京:机械工业出版社,2008.

[5]孙本绪。机械加工余量手册[M].北京:国防工业出版社,1999.

[6]艾兴,肖诗纲。切削用量简明手册[M].3版。北京:机械工业出版社,1994.

[7]陈国文,马芳薇,周瑜。宏程序在螺纹铣削快速编程中的应用[J].金属加工(冷加工),2015(16):20~21.

[8]乔龙阳。基于宏程序的螺纹数控铣削功能开发[J].机械研究与应用,2014(1):181~183.

[9]钟如全。铣削螺纹固定循环指令的开发[J].组合机床与自动化加工技术,2013(10):121~122,126.

[10]刘玉春。基于FANUC宏程序的螺纹铣削加工编程应用[J].金属加工(冷加工),2013(13):46~48.

[11]杨辉,万海鑫,张宣升。基于螺纹铣削数控宏程序的优化设计[J].制造业自动化,2012(21):26~29,39.

[12]戴冠林。基于MasterCAM9.1的螺纹铣削工艺分析与编程[J].机械,2010(8):66~68.