机床数控课设插补.docx

上传人:b****6 文档编号:6727203 上传时间:2023-01-09 格式:DOCX 页数:12 大小:280.60KB
下载 相关 举报
机床数控课设插补.docx_第1页
第1页 / 共12页
机床数控课设插补.docx_第2页
第2页 / 共12页
机床数控课设插补.docx_第3页
第3页 / 共12页
机床数控课设插补.docx_第4页
第4页 / 共12页
机床数控课设插补.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

机床数控课设插补.docx

《机床数控课设插补.docx》由会员分享,可在线阅读,更多相关《机床数控课设插补.docx(12页珍藏版)》请在冰豆网上搜索。

机床数控课设插补.docx

机床数控课设插补

一、课设任务

用DDA法插补第二象限直线。

用逐点比较法插补第三到第二象限顺圆弧。

二、课设要求

1、具有数据输入界面,有起点、终点、半径及插补步长等;

2、具有单步插补过程的动态显示功能;

3、插补的步长可调;

三、编程语言

VisualBasic

四、功能说明

本程序用逐点比较法插补第二象限的直线,及第三二象限的顺圆弧,可进行连续插补或单步插补。

1、直线插补:

用逐点比较法实现第二象限任意直线的插补,需要输入起点、终点坐标及步长。

2、圆弧插补:

用逐点比较法实现第三二象限的顺圆弧段的插补,需要输入起点、终点坐标、半径和步长。

3、插补步长可调。

4、可以单步执行所有插补动作,单击一次按钮执行一次插补。

五、程序容

DDA法插补第二象限直线

1、源程序:

DimA,B,C,D,E,F,G,I,J,E,FAsSingle

**************连续直线插补**************

PrivateSubCommand1_Click()

If(-C+A)>(D-B)ThenF=-C+AElse:

F=D-B

G=1

DoWhile(2^G)<=F

G=G+1

Loop

ForH=0To(2^G)Step1

I=I+(-C+A)

x1=x2

If(I/(2^G))>=EThenI=I-E*(2^G):

x2=x2-E

J=J+(D-B)

y1=y2

If(J/(2^G))>=EThenJ=J-E*(2^G):

y2=y2-E

Picture1.Line(x2*Text6.Text,y2*Text6.Text)-(x1*Text6.Text,y1*Text6.Text),vbGreen

NextH

Picture1.Line(C*Text6.Text,-D*Text6.Text)-(A*Text6.Text,-B*Text6.Text),vbRed

EndSub

****************单步直线插补*************

PrivateSubCommand2_Click()

If(-C+A)>(D-B)ThenF=-C+AElse:

F=D-B

G=1

DoWhile(2^G)<=F

G=G+1

Picture1.Line(C*Text6.Text,-D*Text6.Text)-(A*Text6.Text,-B*Text6.Text),vbRed

Loop

I=I+(-C+A)

J=J+(D-B)

If(I/(2^G))>=EAnd(J/(2^G))>=EThen

Picture1.Line((x2-E)*Text6.Text,(y2-E)*Text6.Text)-(x2*Text6.Text,y2*Text6.Text),vbGreen

I=I-E*(2^G)

J=J-E*(2^G)

x2=x2-E

y2=y2-E

ElseIf(I/(2^G))>=EAnd(J/(2^G))

Picture1.Line((x2-E)*Text6.Text,y2*Text6.Text)-(x2*Text6.Text,y2*Text6.Text),vbGreen

I=I-E*(2^G)

x2=x2-E

ElseIf(I/(2^G))=EThen

Picture1.Line(x2*Text6.Text,(y2-E)*Text6.Text)-(x2*Text6.Text,y2*Text6.Text),vbGreen

J=J-E*(2^G)

y2=y2-E

EndIf

EndSub

 

3.DDA法插补第二象限直线的流程图:

 

Y

N

Y

N

Y

N

M

m

-1

Σ

X

e

←Σ

X

e

X

e

Σ

Y

e

←Σ

Y

e

Y

e

初始化

x

e

X

e

y

e

Y

e

累加次数

m

M

Σ

X

e、

Σ

Y

e

清零

M=0

吗?

Y

e

有溢出吗?

X

e

有溢出吗?

+

Y

向走一步

-

X

向走一步

结束

 

逐点比较法插补第三到第二象限顺圆弧

1.源程序:

DimX0,Y0,CXY,CD,CX1,CY1,CX2,CY2,CX11,CY11,CX22,CY22,ci,R,a1,b1,c1,d1,e1,x1,y1,x2,y2AsSingle

CONSTPi=3.1415926

***************连续圆弧插补************

PrivateSubCommand6_Click()

d1=1/2*(CX22^2+CY22^2-CX11^2-CY11^2)/(CY22-CY11)

e1=(CX11-CX22)/(CY22-CY11)

a1=1+e1^2

b1=2*d1*e1-2*CX11-2*CY11*e1

c1=CX11^2+CY11^2+d1^2-2*d1*CY11-R^2

X0=(-b1+Sqr(b1^2-4*a1*c1))/(2*a1)

Y0=d1+e1*X0***********************求得圆心

IfCX1<>X0AndCX2<>X0Then

o=Atn((CY1-Y0)/(CX1-X0))+Pi**************起始角

o1=Atn((CY2-Y0)/(CX2-X0))+Pi**************终止角

Picture2.Circle(X0,Y0),R,vbRed,o1,o

Else

Picture2.Circle(X0,Y0),R,vbRed,2/Pi,3*Pi/2

EndIf**************画圆

again:

**************开始插补过程

IfCY1

If(CX1-X0)^2+(CY1-Y0)^2<=R^2Then

Picture2.Line(CX1,CY1)-(CX1-ci,CY1)

CX1=CX1-ci

Else

Picture2.Line(CX1,CY1)-(CX1,CY1+ci)

CY1=CY1+ci

EndIf

Else

If(CX1-X0)^2+(CY1-Y0)^2<=R^2Then

Picture2.Line(CX1,CY1)-(CX1,CY1+ci)

CY1=CY1+ci

Else

Picture2.Line(CX1,CY1)-(CX1+ci,CY1)

CX1=CX1+ci

EndIf

EndIf

If(CX1-CX2)^2+(CY1-CY2)^2>(CX1-CX2+ci)^2+(CY1-CY2)^2Or(CX1-CX2)^2+(CY1-CY2)^2>(CX1-CX2-ci)^2+(CY1-CY2)^2Or(CX1-CX2)^2+(CY1-CY2)^2>(CX1-CX2)^2+(CY1-CY2+ci)^2Or(CX1-CX2)^2+(CY1-CY2)^2>(CX1-CX2)^2+(CY1-CY2-ci)^2Then

GoToagain

Else

EndIf

EndSub

*************单步圆弧插补*************

PrivateSubCommand7_Click()

d1=1/2*(CX22^2+CY22^2-CX11^2-CY11^2)/(CY22-CY11)

e1=(CX11-CX22)/(CY22-CY11)

a1=1+e1^2

b1=2*d1*e1-2*CX11-2*CY11*e1

c1=CX11^2+CY11^2+d1^2-2*d1*CY11-R^2

X0=(-b1+Sqr(b1^2-4*a1*c1))/(2*a1)

Y0=d1+e1*X0***********************求得圆心

IfCX1<>X0AndCX2<>X0Then

o=Atn((CY1-Y0)/(CX1-X0))+Pi**************终止角

o1=Atn((CY2-Y0)/(CX2-X0))+Pi**************终止角

Picture2.Circle(X0,Y0),R,vbRed,o1,o

Else

Picture2.Circle(X0,Y0),R,vbRed,2/Pi,3*Pi/2

EndIf**************画圆

If(CX1-CX2)^2+(CY1-CY2)^2>(CX1-CX2+ci)^2+(CY1-CY2)^2Or(CX1-CX2)^2+(CY1-CY2)^2>(CX1-CX2-ci)^2+(CY1-CY2)^2Or(CX1-CX2)^2+(CY1-CY2)^2>(CX1-CX2)^2+(CY1-CY2+ci)^2Or(CX1-CX2)^2+(CY1-CY2)^2>(CX1-CX2)^2+(CY1-CY2-ci)^2Then

Else

GoTocover**************开始插补过程

EndIf

IfCY1

If(CX1-X0)^2+(CY1-Y0)^2<=R^2Then

Picture2.Line(CX1,CY1)-(CX1-ci,CY1)

CX1=CX1-ci

Else

Picture2.Line(CX1,CY1)-(CX1,CY1+ci)

CY1=CY1+ci

EndIf

Else

If(CX1-X0)^2+(CY1-Y0)^2<=R^2Then

Picture2.Line(CX1,CY1)-(CX1,CY1+ci)

CY1=CY1+ci

Else

Picture2.Line(CX1,CY1)-(CX1+ci,CY1)

CX1=CX1+ci

EndIf

EndIf

cover:

EndSub

2.变量说明:

CX1=圆弧起点的横坐标值,CY1=圆弧起点的纵坐标值

CX2=圆弧终点的横坐标值,CY2=圆弧终点的纵坐标值

X0=圆弧半径的横坐标值,Y0=圆弧半径的纵坐标值

R=圆弧半径,ci=圆弧插补的步长

a1,b1,c1,d1为计算圆点的中间变量

3.逐点比较法插补第三象限顺圆弧程序流程图

逐点比较法插补第二象限顺圆弧程序流程图:

六、程序界面及运行结果

DDA插补第二象限直线运行界面

DDA插补第二象限直线运行结果

逐点比较法插补二三象限顺圆弧运行界面

逐点比较法插补二三象限顺圆弧运行结果

七、课设中遇到的问题及解决办法

1、在进行单步插补时出现问题,单步插补出不来?

定义的变量应为全局变量,通过按钮来实现单步操作。

按第一次按钮,程序执行一步,按第二次时,程序执行两步,及将第一步做的覆盖后在多做一步。

依此,每次按下按钮都比前一次多做一步,这样,作图时就表现为单步运行。

2、在圆弧插补是画出的圆跟圆弧的插补在起点和终点处不重合?

在画图的pitcure属性中的scaletop和scalewidth的值应相等,否则画出的横纵坐标不等,导致在横坐标和纵坐标上的长对不等使得与圆弧不重合。

3、如何解决起点不是原点的直线的插补

若是起点不是原点的话,可以将起点平移到原点位置,而终点也相应的平移即可,这样就解决了起点不是原点的问题。

根据这个思想在判断象限时就拿终点坐标和起点坐标比较来判断终点属于哪个象限。

和插补直线一样,当圆心不是原点时,可以将圆心平移到原点位置,圆上各点相应的平移即可。

八、心得体会

通过这次的机床数控课程设计,使我加深了对数控机床的插补的了解,更好的掌握了逐点比较法的插补原理。

这次课程设计选择了VisualBasic作为编程语言,由于是初次接触,不能熟练得掌握,所以使用起来不是很顺利,对整体进度有一些影响。

通过这次课程设计,增加了知识,锻炼了自己的实际动手和操作能力,对以后的学习有着深远的影响。

九、参考资料

陆慰民.2000.VisualBasic程序设计教程(6.0版).:

高等教育

勇.2002.VisualBasic课程设计案例精编.:

中国水利水电

段兴.2002.VisualBasic实用程序100例.:

人民邮电

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1