数字积分圆弧第一二三四象限顺逆插补计算.docx

上传人:b****5 文档编号:4730763 上传时间:2022-12-08 格式:DOCX 页数:28 大小:833.59KB
下载 相关 举报
数字积分圆弧第一二三四象限顺逆插补计算.docx_第1页
第1页 / 共28页
数字积分圆弧第一二三四象限顺逆插补计算.docx_第2页
第2页 / 共28页
数字积分圆弧第一二三四象限顺逆插补计算.docx_第3页
第3页 / 共28页
数字积分圆弧第一二三四象限顺逆插补计算.docx_第4页
第4页 / 共28页
数字积分圆弧第一二三四象限顺逆插补计算.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数字积分圆弧第一二三四象限顺逆插补计算.docx

《数字积分圆弧第一二三四象限顺逆插补计算.docx》由会员分享,可在线阅读,更多相关《数字积分圆弧第一二三四象限顺逆插补计算.docx(28页珍藏版)》请在冰豆网上搜索。

数字积分圆弧第一二三四象限顺逆插补计算.docx

数字积分圆弧第一二三四象限顺逆插补计算

数字积分圆弧第一二三四象限顺逆插补计算

数控技术课程设计说明书

设计题目:

数字积分法圆弧插补计软件设计

指导老师:

专业:

机械设计制造及其自动化

班级:

姓名:

学号:

 

一、课程设计题目1

二、课程设计的目的1

三、课程设计使用的主要仪器设备1

四、课程设计的任务题目描述和要求1

五、数字积分法插补原理2

5.1从几何角度来看积分运算2

5.2数字积分圆弧插补3

5.3数字积分法圆弧插补程序流程图5

5.4插补实例6

六、程序清单7

七、软件运行效果仿真18

八、课程小节21

九、参考文献22

 

一、课程设计题目

数字积分法第一、二、三、四象限顺、逆圆插补计算

二、课程设计的目的

《数控原理与系统》是自动化(数控)专业的一门主要专业课程,安排课程设计的目的是通过课程设计方式使学生进一步掌握和消化数控原理基本内容,了解数控系统的组成,掌握系统控制原理和方法,通过设计与调试,掌握各种功能实的现方法,为今后从事数控领域的工作打下扎实的基础。

1)了解连续轨迹控制数控系统的组成原理。

2)掌握数字积分法(DDA)插补的基本原理。

3)掌握数字积分法(DDA)插补的软件实现方法。

三、课程设计使用的主要仪器设备

1、PC计算机一台

2、数控机床实验装置一台

3、支持软件若干(选用VB环境)

四、课程设计的任务题目描述和要求

数字积分法又称数字微分分析法DDA(DigitalDifferentialAnalyzer)。

数字积分法具有运算速度快、脉冲分配均匀、易于实现多坐标联动及描绘平面各种函数曲线的特点,应用比较广泛。

其缺点是速度调节不便,插补精度需要采取一定措施才能满足要求。

由于计算机有较强的计算功能和灵活性,采用软件插补时,上述缺点易于克服。

本次课程设计具体要求如下:

(1)掌握数字积分插补法基本原理

(2)设计出数字积分(DDA)插补法插补软件流程图

(3)编写出算法程序清单算法描述(数字积分法算法在VB中的具体实现)

(4)要求软件能够实现第一、二、三、四象限顺、逆圆插补计算

(5)软件运行仿真效果插补结果要求能够以图形模式进行输出

五、数字积分法插补原理

数字积分法又称数字积分分析法DDA(DigitaldifferentialAnalyzer),简称积分器,是在数字积分器的基础上建立起来的一种插补算法。

具有逻辑能力强的特点,可实现一次、两次甚至高次曲线插补,易于实现多坐标联动。

只需输入不多的几个数据,就能加工圆弧等形状较为复杂的轮廓曲线。

直线插补时脉冲较均匀。

并具有运算速度快,应用广泛等特点。

5.1从几何角度来看积分运算

如下图所示,从时刻到t求函数曲线所包围的面积时,可用积分公式表示,如果将0~t的时间划分成时间间隔为的有限区间,当足够小时,可得近似公式:

若△t取“1”,上式简化为:

 

这种累加求和运算,即积分运算可用数字积分器来实现,

若求曲线与坐标轴所包围的面积,求解过程如下:

被积函数寄存器用以存放Y值,每当Δt出现一次,被积函数寄存器中的Y值就与累加器中的数值相加一次,并将累加结果存于累加器中,如果累加器的容量为一个单位面积,则在累加过程中,每超过一个单位面积,累加器就有溢出。

当累加次数达到累加器的容量时,所产生的溢出总数就是要求的总面积,即积分值。

被积函数寄存器与累加器相加的计算方法:

例:

被积函数寄存器与累加器均为3位寄存器,被积函数为5,求累加过程。

101101101101

+)000+)101+)010+)111

101010111100

101101101101

+)100+)001+)110+)011

001110011000

经过2=8次累加完成积分运算,因为有5次溢出,所以积分值等于5。

5.2数字积分圆弧插补

圆心为坐标原点的圆弧方程式为:

可得圆的参数方程为:

       

 

对t微分得、方向上的速度分量为:

 

用累加器来近似积分为:

如图所示,设加工半径为R的第一象限逆时针圆弧AB,坐标原点定在圆心上,A(Xo,Yo)为圆弧起点,B(Xe,Ye)为圆弧终点,Pi(Xi,Yi)为加工动点。

如下图所示,可以得到:

V/R=Vx/Yi=Vy/Xi=K即Vx=KYi,Vy=KXi

因而可以得到坐标微小位移增量为:

ΔX=VxΔt=KYiΔtΔY=VyΔt=KXiΔt

设Δt=1,K=1/2则有:

可看出,用DDA法进行圆弧插补时,是对加工动点的坐标Xi和Yi的值分别进行累加,若积分累加器有溢出,则相应坐标轴进给一步,则圆弧积分插补器如图所示:

5.3数字积分法圆弧插补程序流程图

DDA法插补不同象限圆弧时,算法也有所不同。

当采用软件插补时,如果参与积分运算的寄存器均采用绝对值数据,则DDA法插补的积分累加过程完全相同,即JR+JV→JR,只是进给脉冲分配方向和圆弧插补动点坐标的修正有所不同。

5.5插补实例

设有第Ⅰ象限逆圆弧SE,起点为S(4,0),终点为E(0,4),且寄存器位数N=3。

试用DDA法对该圆弧进行插补,并画出插补轨迹。

解:

插补开始时,被积函数寄存器初值分别为 JVX=YS=0,JVY=XS=4,终点判别寄存器JSX=|Xe-XS|=4,JSY=|Ye-YS|=4。

该圆弧插补运算过程见下表,插补轨迹如下图所示的折线。

六、程序清单

PrivateSub建立坐标系_Click()

Picture1.ForeColor=vbBlack

Picture1.DrawWidth=2

Picture1.Line(500,4500)-(8500,4500)'画直线坐标轴

Picture1.Line(4500,500)-(4500,8500)

Picture1.CurrentX=230'当前位置

Picture1.CurrentY=4400

Picture1.Print"-X"'坐标轴标注

Picture1.CurrentX=4300

Picture1.CurrentY=4300

Picture1.Print"(0,0)"

Picture1.CurrentX=8650

Picture1.CurrentY=4400

Picture1.Print"X"

Picture1.CurrentX=4400

Picture1.CurrentY=8600

Picture1.Print"-Y"

Picture1.CurrentX=4500

Picture1.CurrentY=400

Picture1.Print"Y"

EndSub

PrivateSub画圆弧_Click()

Dima,b,c,d,n,mAsInteger

DimrAsSingle

a=Val(Text1.Text)

b=Val(Text2.Text)

c=Val(Text3.Text)

d=Val(Text4.Text)

n=a*a+b*b

m=c*c+d*d

r=Sqr(n)

IfOption1.Value=TrueThen

Ifa<0Orb<0Orc<0Ord<0Then

ans=MsgBox("出错了,起点、终点坐标不在同一象限内,请重新输入",48,"提示信息")

EndIf

EndIf

IfOption2.Value=TrueThen

Ifa>0Orb<0Orc>0Ord<0Then

ans=MsgBox("出错了,起点、终点坐标不在同一象限内,请重新输入",48,"提示信息")

EndIf

EndIf

IfOption3.Value=TrueThen

Ifa>0Orb>0Orc>0Ord>0Then

ans=MsgBox("出错了,起点、终点坐标不在同一象限内,请重新输入",48,"提示信息")

EndIf

EndIf

IfOption4.Value=TrueThen

Ifa<0Orb>0Orc<0Ord>0Then

ans=MsgBox("出错了,起点、终点坐标不在同一象限内,请重新输入",48,"提示信息")

EndIf

EndIf

Picture1.ForeColor=vbRed

Picture1.DrawWidth=4

ConstPI=3.1415926535

IfOption1.Value=TrueThen

Ifa>cAndb

IfOption1.Value=TrueThen

Ifb=0Then

Ifc=0Then

Picture1.Circle(4500,4500),r*300,,0*3.14159,3.14159/2

Else

Picture1.Circle(4500,4500),r*300,,0*3.14159,3.14159/2-Atn(d/c)

EndIf

ElseIfc=0Then

Picture1.Circle(4500,4500),r*300,,Atn(b/a),3.14159/2

Else

Picture1.Circle(4500,4500),r*300,,Atn(b/a),3.14159/2-Atn(d/c)

EndIf

EndIf

ElseIfadThen

IfOption1.Value=TrueThen

Ifa=0Then

Ifd=0Then

Picture1.Circle(4500,4500),r*300,,0*3.14159,3.14159/2

Else

Picture1.Circle(4500,4500),r*300,,Atn(d/c),3.14159/2

EndIf

ElseIfd=0Then

Picture1.Circle(4500,4500),r*300,,0*3.14159,Atn(b/a)

Else

Picture1.Circle(4500,4500),r*300,,Atn(d/c),Atn(b/a)

EndIf

EndIf

Else

ans=MsgBox("出错了,起点或终点坐标位置错误,请重新输入",48,"提示信息")

EndIf

EndIf

IfOption2.Value=TrueThen

Ifa>cAndb>dThen

IfOption2.Value=TrueThen

Ifa=0Then

Ifd=0Then

Picture1.Circle(4500,4500),r*300,,3.14159/2,3.14159

Else

Picture1.Circle(4500,4500),r*300,,3.14159/2,3.14159-Atn(-d/c)

EndIf

ElseIfd=0Then

Picture1.Circle(4500,4500),r*300,,3.14159/2+Atn(-a/b),3.14159

Else

Picture1.Circle(4500,4500),r*300,,3.14159/2+Atn(-a/b),-Atn(-d/c)+3.14159

EndIf

EndIf

ElseIfa

IfOption2.Value=TrueThen

Ifb=0Then

Ifc=0Then

Picture1.Circle(4500,4500),r*300,,3.14159/2,3.14159

Else

Picture1.Circle(4500,4500),r*300,,Atn(-c/d),3.14159

EndIf

ElseIfc=0Then

Picture1.Circle(4500,4500),r*300,,3.14159/2,3.14159-Atn(-b/a)

Else

Picture1.Circle(4500,4500),r*300,,Atn(-c/d),3.14159-Atn(-b/a)

EndIf

EndIf

Else

ans=MsgBox("出错了,起点或终点坐标位置错误,请重新输入",48,"提示信息")

EndIf

EndIf

IfOption3.Value=TrueThen

IfadThen

IfOption3.Value=TrueThen

Ifb=0Then

Ifc=0Then

Picture1.Circle(4500,4500),r*300,,3.14159,3*3.14159/2

Else

Picture1.Circle(4500,4500),r*300,,3.14159,Atn(d/c)+3.14159

EndIf

ElseIfc=0Then

Picture1.Circle(4500,4500),r*300,,Atn(b/a)+3.14159,3*3.14159/2

Else

Picture1.Circle(4500,4500),r*300,,Atn(b/a)+3.14159,Atn(d/c)+3.14159

EndIf

EndIf

ElseIfa>cAndb

IfOption3.Value=TrueThen

Ifa=0Then

Ifd=0Then

Picture1.Circle(4500,4500),r*300,,3.14159,3*3.14159/2

Else

Picture1.Circle(4500,4500),r*300,,3.14159+Atn(d/c),2*3.14159/2

EndIf

ElseIfd=0Then

Picture1.Circle(4500,4500),r*300,,3.14159,3*3.14159/2-Atn(a/b)

Else

Picture1.Circle(4500,4500),r*300,,Atn(d/c)+3.14159,3*3.14159/2-Atn(a/b)

EndIf

EndIf

Else

ans=MsgBox("出错了,起点或终点坐标位置错误,请重新输入",48,"提示信息")

EndIf

EndIf

IfOption4.Value=TrueThen

Ifa

IfOption4.Value=TrueThen

Ifa=0Then

Ifd=0Then

Picture1.Circle(4500,4500),r*300,,3*3.14159/2,2*3.14159

Else

Picture1.Circle(4500,4500),r*300,,3*3.14159/2,Atn(d/c)+3.14159*2

EndIf

ElseIfd=0Then

Picture1.Circle(4500,4500),r*300,,Atn(b/a)+3.14159*2,2*3.14159

Else

Picture1.Circle(4500,4500),r*300,,Atn(b/a)+3.14159*2,Atn(d/c)+3.14159*2

EndIf

EndIf

ElseIfa>cAndb>dThen

IfOption4.Value=TrueThen

Ifb=0Then

Ifc=0Then

Picture1.Circle(4500,4500),r*300,,3*3.14159/2,2*3.14159

Else

Picture1.Circle(4500,4500),r*300,,3*3.14159/2+Atn(-c/d),2*3.14159

EndIf

ElseIfc=0Then

Picture1.Circle(4500,4500),r*300,,3*3.14159/2,-Atn(-b/a)

Else

Picture1.Circle(4500,4500),r*300,,3*3.14159/2+Atn(-c/d),-Atn(-b/a)

EndIf

EndIf

Else

ans=MsgBox("出错了,起点或终点坐标位置错误,请重新输入",48,"提示信息")

EndIf

EndIf

EndSub

PrivateSub插补计算_Click()

Dima,b,c,d,ni,mi,ai,bi,ci,k,f,g,m,n,l,i,xs,yx,xe,ye,jvx,jvy,xi,yiAsInteger

DimrAsSingle

a=Val(Text1.Text)

b=Val(Text2.Text)

c=Val(Text3.Text)

d=Val(Text4.Text)

ni=a*a+b*b

mi=c*c+d*d

r=Sqr(ni)

form2.Cls

IfOption1.Value=TrueThen

Ifa<0Orb<0Orc<0Ord<0Then

ans=MsgBox("出错了,起点、终点坐标不在同一象限内,请重新输入",48,"提示信息")

EndIf

EndIf

IfOption2.Value=TrueThen

Ifa>0Orb<0Orc>0Ord<0Then

ans=MsgBox("出错了,起点、终点坐标不在同一象限内,请重新输入",48,"提示信息")

EndIf

EndIf

IfOption3.Value=TrueThen

Ifa>0Orb>0Orc>0Ord>0Then

ans=MsgBox("出错了,起点、终点坐标不在同一象限内,请重新输入",48,"提示信息")

EndIf

EndIf

IfOption4.Value=TrueThen

Ifa<0Orb>0Orc<0Ord>0Then

ans=MsgBox("出错了,起点、终点坐标不在同一象限内,请重新输入",48,"提示信息")

EndIf

EndIf

ci=2

f=1

g=1

k=0'正X进给标志1正向-1负向

m=0'负Y进给标志1正向-1负向

n=0'累加次数

i=CInt(Text5)'寄存器位数赋给i

l=2^i

xs=CInt(Text1)

ys=CInt(Text2)

xe=CInt(Text3)

ye=CInt(Text4)

jvx=Abs(CInt(Text2))

jvy=Abs(CInt(Text1))

jrx=0

jry=0

xi=Abs(CInt(Text3)-CInt(Text1))'X方向总步

yi=Abs(CInt(Text4)-CInt(Text2))'Y方向总步长

ai=xs

bi=ys

Picture1.ForeColor=vbGreen

Picture1.DrawWidth=3

form1.CurrentX=200

form1.CurrentY=200

Print""&"X积分器"&"Y积分器"

form1.CurrentX=100

form1.CurrentY=400

Print"累加次数n"&"jvx"&"Jrx=Jrx+Jvx"&"△X"&"J∑x"&"Jvy"&"Jry=Jry+Jvy"&"△Y"&"J∑y"

form1.CurrentX=100

form1.CurrentY=600

Print"开始"&""&jvx&""&jrx&""&k&""&xi&""&jvy&""&jry&""&m&""&yi

wz:

k=0'X方向进给标志1X正向进给-1负向进给

m=0'Y方向进给标志1Y正向进给-1负向进给

Ifxi>0Then'X方向判断

jrx=jrx+jvx

Ifjrx>=lThen'判断寄存器是否溢出

jrx=jrx-l'溢出修正

Ifjrx>=lThen'寄存器位数判断

GoToww5

EndIf

IfOption1.Value=TrueThen

Ifa>cAndb

k=-1

Else

k=1

EndIf

EndIf

IfOption2.Value=TrueThen

Ifa>cAndb>dThe

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

当前位置:首页 > 高中教育 > 其它课程

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

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