机床数控课设(插补)

上传人:jun****875 文档编号:23689350 上传时间:2021-06-10 格式:DOC 页数:11 大小:401.91KB
收藏 版权申诉 举报 下载
机床数控课设(插补)_第1页
第1页 / 共11页
机床数控课设(插补)_第2页
第2页 / 共11页
机床数控课设(插补)_第3页
第3页 / 共11页
资源描述:

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

1、一、 课设任务 用DDA法插补第二象限直线。 用逐点比较法插补第三到第二象限顺圆弧。 二、课设要求 1、具有数据输入界面,有起点、终点、半径及插补步长等; 2、具有单步插补过程的动态显示功能; 3、插补的步长可调; 三、编程语言 Visual Basic 四、功能说明 本程序用逐点比较法插补第二象限的直线,及第三二象限的顺圆弧,可进行连续插补或单步插补。 1、直线插补:用逐点比较法实现第二象限任意直线的插补,需要输入起点、终点坐标及步长。 2、圆弧插补:用逐点比较法实现第三二象限的顺圆弧段的插补,需要输入起点、终点坐标、半径和步长。 3、插补

2、步长可调。 4、可以单步执行所有插补动作,单击一次按钮执行一次插补。 五、程序内容 DDA法插补第二象限直线 1、源程序: Dim A, B, C, D, E, F, G, I, J, E, F As Single **************连续直线插补************** Private Sub Command1_Click() If (-C + A) > (D - B) Then F = -C + A Else: F = D - B G = 1 Do While (2 ^ G) <= F G = G + 1

3、 Loop For H = 0 To (2 ^ G) Step 1 I = I + (-C + A) x1 = x2 If (I / (2 ^ G)) >= E Then I = I - E * (2 ^ G): x2 = x2 - E J = J + (D - B) y1 = y2 If (J / (2 ^ G)) >= E Then J = J - E * (2 ^ G): y2 = y2 - E Picture1.Line (x2 * Text6.Text, y2 * Text6.Text)-(x1 * Text6.Text, y1 * Text6.T

4、ext), vbGreen Next H Picture1.Line (C * Text6.Text, -D * Text6.Text)-(A * Text6.Text, -B * Text6.Text), vbRed End Sub ****************单步直线插补************* Private Sub Command2_Click() If (-C + A) > (D - B) Then F = -C + A Else: F = D - B G = 1 Do While (2 ^ G) <= F G = G + 1 Picture1.Line

5、 (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)) >= E And (J / (2 ^ G)) >= E Then Picture1.Line ((x2 - E) * Text6.Text, (y2 - E) * Text6.Text)-(x2 * Text6.Text, y2 * Text6.Text), vbGreen I = I - E * (2 ^ G) J =

6、J - E * (2 ^ G) x2 = x2 - E y2 = y2 - E ElseIf (I / (2 ^ G)) >= E And (J / (2 ^ G)) < E Then 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)) < E And (J / (2 ^ G)) >= E Then Picture1.Line (

7、x2 * Text6.Text, (y2 - E) * Text6.Text)-(x2 * Text6.Text, y2 * Text6.Text), vbGreen J = J - E * (2 ^ G) y2 = y2 - E End If End Sub 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 →

8、 M , Σ X e、 Σ Y e 清零 M=0 吗? ∑ Y e 有溢出吗? ∑ X e 有溢出吗? + Y 向走一步 - X 向走一步 结束 逐点比较法插补第三到第二象限顺圆弧 1. 源程序: Dim X0, Y0, CXY, CD, CX1, CY1, CX2, CY2, CX11, CY11, CX22, CY22, ci, R, a1, b1, c1, d1, e1, x1, y1, x2, y2 As Single CONST Pi=3.1415926 ***************连续圆弧插补**

9、********** Private Sub Command6_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

10、* a1 * c1)) / (2 * a1) Y0 = d1 + e1 * X0 ***********************求得圆心 If CX1 <> X0 And CX2 <> X0 Then o = Atn((CY1 - Y0) / (CX1 - X0)) + Pi **************起始角 o1 = Atn((CY2 - Y0) / (CX2 - X0)) + Pi **************终止角 Picture2.Circle (X0, Y0), R, vbRed, o1, o Else

11、 Picture2.Circle (X0, Y0), R, vbRed, 2 / Pi, 3 * Pi / 2 End If **************画圆 again: **************开始插补过程 If CY1 < Y0 Then If (CX1 - X0) ^ 2 + (CY1 - Y0) ^ 2 <= R ^ 2 Then Picture2.Line (CX1, CY1)-(CX1 - ci, CY1) C

12、X1 = CX1 - ci Else Picture2.Line (CX1, CY1)-(CX1, CY1 + ci) CY1 = CY1 + ci End If Else If (CX1 - X0) ^ 2 + (CY1 - Y0) ^ 2 <= R ^ 2 Then Picture2.Line (CX1, CY1)-(CX1, CY1 + ci) CY1 = CY1 + ci Else Picture2.Line (CX1, CY1)-(CX1 + ci, CY1) CX1 = CX1 + ci End If End If If (CX1 - CX2) ^ 2

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

14、GoTo again Else End If End Sub *************单步圆弧插补************* Private Sub Command7_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 +

15、d1 ^ 2 - 2 * d1 * CY11 - R ^ 2 X0 = (-b1 + Sqr(b1 ^ 2 - 4 * a1 * c1)) / (2 * a1) Y0 = d1 + e1 * X0 ***********************求得圆心 If CX1 <> X0 And CX2 <> X0 Then o = Atn((CY1 - Y0) / (CX1 - X0)) + Pi **************终止角 o1 = Atn((CY2 - Y0) / (CX2 - X0)) + Pi **

16、************终止角 Picture2.Circle (X0, Y0), R, vbRed, o1, o Else Picture2.Circle (X0, Y0), R, vbRed, 2 / Pi, 3 * Pi / 2 End If **************画圆 If (CX1 - CX2) ^ 2 + (CY1 - CY2) ^ 2 > (CX1 - CX2 + ci) ^ 2 + (CY1 - CY2) ^ 2 Or (CX1 - CX2) ^ 2 + (CY1 - CY2)

17、 ^ 2 > (CX1 - CX2 - ci) ^ 2 + (CY1 - CY2) ^ 2 Or (CX1 - CX2) ^ 2 + (CY1 - CY2) ^ 2 > (CX1 - CX2) ^ 2 + (CY1 - CY2 + ci) ^ 2 Or (CX1 - CX2) ^ 2 + (CY1 - CY2) ^ 2 > (CX1 - CX2) ^ 2 + (CY1 - CY2 - ci) ^ 2 Then Else GoTo cover **************开始插补过程 End If If CY1 < Y0 T

18、hen If (CX1 - X0) ^ 2 + (CY1 - Y0) ^ 2 <= R ^ 2 Then Picture2.Line (CX1, CY1)-(CX1 - ci, CY1) CX1 = CX1 - ci Else Picture2.Line (CX1, CY1)-(CX1, CY1 + ci) CY1 = CY1 + ci End If Else If (CX1 - X0) ^ 2 + (CY1 - Y0) ^ 2 <= R ^ 2 Then Picture2.Line (CX1, CY1)-(CX1, CY1 + ci) CY1 = CY1 + ci E

19、lse Picture2.Line (CX1, CY1)-(CX1 + ci, CY1) CX1 = CX1 + ci End If End If cover: End Sub 2.变量说明: CX1=圆弧起点的横坐标值,CY1=圆弧起点的纵坐标值 CX2=圆弧终点的横坐标值,CY2=圆弧终点的纵坐标值 X0=圆弧半径的横坐标值, Y0=圆弧半径的纵坐标值 R=圆弧半径, ci=圆弧插补的步长 a1,b1,c1,d1为计算圆点的中间变量 3.逐点比较法插补第三象限顺圆弧程序流程图 N Y N Y + Y 向走一步

20、 初始化 x e → X , y e → Y , E=N F ≥0? - X 向走一步 E=0 ? 结束 起始 F ← F - 2Y+1 F ← F - 2X+1 E ← E - 1 逐点比较法插补第二象限顺圆弧程序流程图: N Y N Y + X 向走一步 初始化 x e → X , y e → Y , E=N F ≥0? + Y 向走一步 E=0 ? 结束 起始 F ← F + 2X+1 F ← F + 2

21、Y+1 E ← E - 1 六、程序界面及运行结果 DDA插补第二象限直线运行界面 DDA插补第二象限直线运行结果 逐点比较法插补二三象限顺圆弧运行界面 逐点比较法插补二三象限顺圆弧运行结果 七、课设中遇到的问题及解决办法 1、在进行单步插补时出现问题,单步插补出不来? 定义的变量应为全局变量,通过按钮来实现单步操作。按第一次按钮,程序执行一步,按第二次时,程序执行两步,及将第一步做的覆盖后在多做一步。依此,每次按下按钮都比前一次多做一步,这样,作图时就表现为单步运行。 2、在圆弧插补是画出的圆跟圆弧的插补在起点和终点处不重合?

22、 在画图的pitcure属性中的scaletop和scalewidth的值应相等,否则画出的横纵坐标不等,导致在横坐标和纵坐标上的长对不等使得与圆弧不重合。 3、如何解决起点不是原点的直线的插补 若是起点不是原点的话,可以将起点平移到原点位置,而终点也相应的平移即可,这样就解决了起点不是原点的问题。根据这个思想在判断象限时就拿终点坐标和起点坐标比较来判断终点属于哪个象限。 和插补直线一样,当圆心不是原点时,可以将圆心平移到原点位置,圆上各点相应的平移即可。 八、心得体会 通过这次的机床数控课程设计,使我加深了对数控机床的插补的了解,更好的掌握了逐点比较法的插补原理。这次课程设计选择了Visual Basic作为编程语言,由于是初次接触,不能熟练得掌握,所以使用起来不是很顺利,对整体进度有一些影响。通过这次课程设计,增加了知识,锻炼了自己的实际动手和操作能力,对以后的学习有着深远的影响。 九、参考资料 陆慰民. 2000 . VisualBasic程序设计教程(6.0版). 北京:高等教育出版社 张勇. 2002 . VisualBasic课程设计案例精编. 北京:中国水利水电出版社 段兴. 2002. VisualBasic实用程序100例. 北京:人民邮电出版社

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档

相关搜索

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!