仿真数控装置的刀具补偿功能的程序实现.docx
- 文档编号:29583383
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:85
- 大小:1.27MB
仿真数控装置的刀具补偿功能的程序实现.docx
《仿真数控装置的刀具补偿功能的程序实现.docx》由会员分享,可在线阅读,更多相关《仿真数控装置的刀具补偿功能的程序实现.docx(85页珍藏版)》请在冰豆网上搜索。
仿真数控装置的刀具补偿功能的程序实现
一、课程设计的内容
用计算机高级编程语言(如VB,VC++等)来实现数控装置中的一个基本的功能——刀具补偿功能(亦即仿真数控装置的刀具补偿功能),要求对任意给定的某一由直线与圆弧组成的平面几何轮廓:
二、课程设计的要求与数据
具体的要求如下:
(1)能实现四种转接(直线—直线、直线—圆弧、圆弧—直线、圆弧—圆弧);
(2)能实现三种过渡方式(伸长型、缩短型、插入型);
(3)能实现左、右刀补(即G41,G42)。
(4)在屏幕上绘出刀具的中心轨迹。
三、课程设计应完成的工作
每个学生应在规定时间内,独立完成所选题目。
运用VB编程语言,编写计算机软件在WINDOWS实现数控装置的计算机仿真。
要求清楚地分析问题、提出算法、确定人机界面、列出流程图,最后用程序验证,完成软件测试,并且提交程序说明书。
对选择典型零件编程题目的学生,要求用编写计算机软件的方法解决数控过程的一个问题。
可以任选用本人熟悉的一种编程语言,要求清楚地分析问题、提出算法、列出流程图,最后用程序验证,并且提交程序说明书。
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
1、布置任务,领取课程设计任务书,了解课程设计的目的、内容和要求;了解课程设计的步骤;
2、理解本课程设计题目的具体内容要求,根据各自不同情况选择题目;
教室
第18周~第20周
2
了解和掌握有关软件开发的知识,如VB编程、VC编程、软件工程、软件开发的常用技巧及注意事项;
3
调查研究,收集资料,查阅文献。
学生对所选题目进行论证及确定设计方案,
4
掌握数控结构设计要求,具体技术指标和计算要求;进行机械结构设计或者软件设计;
5
进行数控系统和算法的软件编程与开发,初步实现系统的基本功能
6
通过多个实例来验证和改进系统功能,完善软件界面
7
对所开发的软件程序进行标识和说明
8
按要求的格式编制课程设计说明书
9
课程设计答辩
目录
一、内容提要..............................................2
二、软件功能介绍..........................................2
2.1软件窗口界面..........................................2
2.2软件功能简介..........................................2
三、刀具半径补偿知识.......................................3
3.1概念..................................................3
3.2主要用途..............................................3
3.3常用方法..............................................3
四、刀具半径补偿算法.......................................4
4.1转接点算法说明........................................4
4.2刀具补偿算法..........................................6
五、仿真结果图............................................8
六、设计总结..............................................9
七、参考文献..............................................10
八、附录(部分代码)........................................11
一、内容提要
本文介绍了以VisualBasic6.0为开发工具,制作程序来实现数控装置中的一个基本的功能--刀具补偿功能(亦即仿真数控装置的刀具补偿功能),要求对任意给定的某一由直线与圆弧组成的平面几何轮廓;
(1)能实现四种转接(直线--直线,直线--圆弧,圆弧--直线,圆弧--圆弧);
(2)能实现三中过渡方式(伸长型,缩短型,插入型);(3)能实现左,右刀补(即G41,G42)。
(4)在屏幕上绘出刀具的中心轨迹。
在程序中讨论了刀具半径补偿的原理,并介绍了如何判断缩短型,伸长型和插入型,如何实现直线与直线,直线与圆弧,圆弧与直线,圆弧与圆弧的转接
二、软件功能介绍
2.1.本模拟软件有一个窗口,图形界面如下:
2.2、软件功能简介:
(1)软件能实现任何直线、圆弧交叉多段线段的连接刀具插补加工;
(2)能实现直线—直线、直线—圆弧、圆弧—直线、圆弧—圆弧刀具补偿;
(3)可以实时在窗体中输入图形参数,实现加工;
(4)刀具半径可以变换大小
三、刀具半径补偿知识
3.1概念:
根据按零件轮廓编制的程序和预先设定的偏置参数,数控装置能实时自动生成刀具中心轨迹的功能称为刀具半径补偿功能。
根据ISO标准,当刀具中心轨迹在编程轨迹(零件轮廓)前进方向的右边时,称为右刀补,用G42指令实现;反之称为左刀补,用G41指令实现。
3.2主要用途
数控装置大都具有刀具半径补偿功能,这为程序编制提供了方便。
当编制零件加工程序时,可利用刀具半径补偿功能,直接按零件轮廓进行编程,而不需要进行大量的刀具中心运动轨迹的计算。
采用刀具半径补偿后,数控系统能自动计算出刀具中心的偏移向量,进而得到偏移后的刀具中心轨迹,并使系统按中心轨迹运行。
具体体现在以下两个方面:
1)由于刀具的磨损或因换刀引起的刀具半径变化时,不必重新编程,只须修改相应得偏置参数即可。
2)由于轮廓加工往往不是一道工序能完成的,在粗加工时,要为精加工工序预留加工余量。
加工余量的预留可通过修改偏置参数实现,而不必为粗、精加工各编制一个程序。
3.3常用方法
刀具半径补偿分为B类补偿和C类补偿。
B刀补的特点是刀具中心轨迹的段间连接都是以圆弧进行的;C刀补的特点是相邻两段轮廓的刀具中心轨迹之间用直线进行连接。
B类补偿只能实现在本程序段内的刀具半径补偿,而对程序段间的过渡不予处理。
只有B类刀具半径补偿功能的数控系统,使用时,对有外轮廓(外拐角)部分,必须增加尖角过渡辅助程序段;对内轮廓(内拐角),会产生过切现象。
刀具半径C类补偿功能可实现自动尖角过渡,只要给出零件轮廓的程序数据,数控系统就能自动地进行拐角处的刀具中心轨迹交点的计算,采用的算法是一次进行两段直线的处理,C类补偿功能可用于内、外拐角轮廓的加工。
四、刀具半径补偿计算
4.1转接点算法说明
4.2刀具补偿算法
刀具算法即计算各种转接类型的转接点的坐标值,下属刀补算法中,假设刀具半径d,圆弧半径R
4.2.1直线接直线的情况
假设第一段直线L1的起点为(
,
),终点为(
,
),第二段直线L2的起点为(
,
),(
,
)。
第一段直线L1的方向矢量为
第二段直线L2的方向矢量为
缩短型
直线1与直线2终点采用角度计算
刀具半径矢量的计算:
以rd表示刀具半径矢量,α1表示对应的直线编程矢量与X轴正向的夹角,则可求出:
G41:
rdx=rd*(-sin
1) rdy=rd*(cos
1)
G42:
rdx=rd*(sin
1) rdy=rd*(-cos
1)
对刀具中心轨迹起点的计算:
通过对左、右刀补及各种线型的转接分析,得出其通用的计算公式:
Jx=Ox+rdx Jy=Oy+rdy
对刀具中心轨迹终点的计算:
左刀补时:
c=1;右刀补时:
c=-1;
Kx=Fx-c*rd*sin
2 Ky=Fy+c*rd*cos
2
因此,只要配合直线的斜率就能计算出转接点的坐标,从而完成刀具补偿。
伸长型
其计算方法与缩短型一样。
插入型
刀补进行有两个转接点,采用角度判别计算,其坐标值的计算公式如下:
对左刀补(G41)kk=1; 对右刀补
(G42)kk=-1
插入点计算公式为:
C1x=Ax+rd*(cos
1-kk*sin
1)
C1y=Ay+rd*(sin
1+kk*cos
1)
C2x=Ax+rd*(-cos
2-kk*sin
2)
C2y=Ay+rd*(-sin
2+kk*cos
2)
4.2直线接圆弧的情况
假设直线L的起点为(
),终点为(
),圆弧C的起点为(
),终点为(
),圆心相对于圆弧起点的坐标为(I,K)。
刀补圆弧的半径为:
r=rd*kc+
顺圆时kc=1,逆圆时为-1。
直线接圆弧的伸长型刀补进行转接点求法如图所示,其中有两个转接点,首先求出两切线夹角的平均数,利用求出的角度计算过渡直线的斜率,从而得出直线与过渡直线的交点与直线与圆弧的交点。
4.3.圆弧接直线的情况
其原理与直线接圆弧相同。
4.4.圆弧接圆弧的情况
缩短型
刀补进行:
圆弧接圆弧的缩短型刀补进行转接点求法很简单,只要求出其刀补圆弧的交点就可以画出刀补情况。
伸长型
刀补进行:
圆弧接圆弧的伸长型刀补进行转接点求法与缩短型相类似。
插入型
刀补进行:
圆弧接圆弧的插入型刀补进行转接点求法与直线圆弧相类似。
五、仿真结果图
5.1直线与直线
5.2直线与圆弧
5.3圆弧与圆弧
六、设计总结
这个基于VB的刀补程序是用几何方法编写的,以矢量夹角为判断标准.程序分为直线—直线;直线—圆弧;圆弧--直线;圆弧—圆弧四大类。
我这次编写的程序所用的方法是很基本的几何逻辑原理,都是高中的几何知识,十分浅显.但比较冗长。
通过本次课程设计我受益良多,不仅巩固了数控技术的知识,另外,在编程实现所需功能的时候,需运用数学知识,而且需考虑各种可能出现的情况。
因此,这次课程设计也提高了个人分析问题的能力。
经过这次独立地编写这个刀具半径补偿程序,使我对VB有了更为深刻认识.由于能力有限,本软件有一定的局限性,仿真不具有通用性,程序编写的过程中,有很多地方想的不周密而令到程序不是很严谨,请见谅!
今后我会继续努力,做得更好。
最后感谢高院长的指导,指导了我们这个课程设计,谢谢老师的辛苦劳动!
七参考文献
1《机床设计手册》第三分册
2廖效果.数字控制机床.武汉:
华中理工大学出版社.1992.9
3廖效果.数控技术.武汉:
湖北科学技术出版社.2000.7
4刘又午.数字控制机床.北京:
机械工业出版社
5龚浦泉.机床电气控制.重庆:
重庆大学出版社
6谭浩强.Basic语言结构化程序设计教程.北京:
中国科学技术出版社.1990
7杨林,李继良.VisualBasic编程高手.北京:
北京大学出版社.2000
八、附录(部分代码)
DimaxAsDouble,ayAsDouble,cxAsDouble,cyAsDouble,dxAsDouble,dyAsDouble,exAsDouble,eyAsDouble,rxAsDouble
DimryAsDouble,bxAsDouble,byAsDouble,a1AsDouble,a2AsDouble,a3AsDouble,a4AsDouble,c1AsInteger,c2AsInteger
Dimr1AsDouble,r2AsDouble,x1AsDouble,x2AsDouble,x3AsDouble,x4AsDouble,y1AsDouble,y2AsDouble,y3AsDouble
Dimy4AsDouble,dAsInteger,dbAsDouble,termAsInteger,l1AsDouble,l2AsDouble,w1AsDouble,w2AsDouble
Dimj11AsDouble,j1AsDouble,j2AsDouble,j3AsDouble,jjAsDouble,jjsAsDouble,jjs1AsDouble,hxAsDouble
DimhyAsDouble,kxAsDouble,kyAsDouble,fxAsDouble,fyAsDouble,pdAsDouble,jxAsDouble,jyAsDouble,jx1AsDouble
Dimjy1AsDouble,jx2AsDouble,jy2AsDouble,tana1AsDouble,tana2AsDouble,b1AsDouble,b2AsDouble,bj1AsDouble
Dimbj2AsDouble,kaAsInteger,kbAsInteger,kcAsInteger,kdAsInteger,weAsInteger,zzqxAsDouble,zzqyAsDouble,lxAsDouble
DimlyAsDouble,zyaAsDouble,zybAsDouble,zycAsDouble,rr1AsDouble,rr2AsDouble,aa1AsDouble,aa2AsDouble,kc1AsInteger
Dimkc2AsInteger,zjAsDouble,jxx1AsDouble,jxx2AsDouble,jyy1AsDouble,jyy2AsDouble,zzjAsDouble
.
.
.
.'当非加工角大于90度时
SelectCasep
Case12
rr1=r1+kc1*db
rr2=r2+kc2*db
q=(r1+db*kc1)*(r1+db*kc1)-(r2+db*kc2)*(r2+db*kc2)
w=rx-ex
e=q+w*w-ry*ry+ey*ey
a11=4*(ry-ey)*(ry-ey)+4*w*w
b11=4*e*(ry-ey)-8*w*w*ry
c11=e*e-4*w*w*(r1+kc1*db)*(r1+kc1*db)+4*w*w*ry*ry
Calljec(a11,b11,c11,jy1,jy2)
jy11=jy1
jy12=jy1
jy13=jy2
jy14=jy2
jx11=rx+Sqr((r1+kc1*db)*(r1+kc1*db)-(ry-jy1)*(ry-jy1))
jx12=rx-Sqr((r1+kc1*db)*(r1+kc1*db)-(ry-jy1)*(ry-jy1))
jx13=rx+Sqr((r1+kc1*db)*(r1+kc1*db)-(ry-jy2)*(ry-jy2))
jx14=rx-Sqr((r1+kc1*db)*(r1+kc1*db)-(ry-jy2)*(ry-jy2))
Callhuayuan(jx11,jy11,ex,ey,rr5,aa5)
Callhuayuan(jx12,jy12,ex,ey,rr6,aa6)
Callhuayuan(jx13,jy13,ex,ey,rr7,aa7)
Callhuayuan(jx14,jy14,ex,ey,rr8,aa8)
m=0
Ifrr5=rr2Then
jx1=jx11
jy1=jy11
aaa1=aa5
m=1
Else
Ifrr6=rr2Then
Ifm=0Then
jx1=jx12
jy1=jy12
aaa1=aa6
m=1
Else
jx2=jx12
jy2=jy12
aaa2=aa6
EndIf
Else
Ifrr7=rr2Then
Ifm=0Then
jx1=jx13
jy1=jy13
aaa1=aa7
m=1
Else
jx2=jx13
jy2=jy13
aaa2=aa7
EndIf
Else
Ifrr8=rr2Then
jx2=jx14
jy2=jy14
aaa2=aa6
EndIf
EndIf
EndIf
EndIf
If(a1-aaa1)*Sgn(a1-aaa1)<(a1-aaa2)*Sgn(a1-aaa2)Then
jx=jx1
jy=jy1
Else
jx=jx2
jy=jy2
EndIf
Callhuayuan(jx,jy,rx,ry,rr1,aa1)
Ifc1=0Then
Picture1.Circle(rx,ry),rr1,RGB(255,0,0),a1,aa1
Else
Picture1.Circle(rx,ry),rr1,RGB(255,0,0),aa1,a1
EndIf
Callhuayuan(jx,jy,ex,ey,rr2,aa2)
Ifc2=0Then
Picture1.Circle(ex,ey),rr2,RGB(255,0,0),aa2,a4
Else
Picture1.Circle(ex,ey),rr2,RGB(255,0,0),a4,aa2
EndIf
Case13
zj=pd/2+j1
Ifzj>8*Atn
(1)Then
zj=zj-8*Atn
(1)
EndIf
Ifzj<>0Andzj<>2*Atn
(1)Andzj<>4*Atn
(1)Andzj<>6*Atn
(1)Andzj<>8*Atn
(1)Then
b1=by-bx*Tan(zj)
axx=(1+Tan(zj)*Tan(zj))
bxx=(2*(b1-by)*Tan(zj)-2*bx)
cxx=bx*bx+(b1-by)*(b1-by)-db*db
Calljec(axx,bxx,cxx,jzx1,jzx2)
jzy1=jzx1*Tan(zj)+b1
jzy2=jzx2*Tan(zj)+b1
Callpp(jzx1,jzy1,jzx2,jzy2,rx,ry,jzxx,jzyy)
bzj=jzyy+jzxx/Tan(zj)
aax=(1+1/(Tan(zj)*Tan(zj)))
bbx=((-1)*2*(bzj-ry)/Tan(zj)-2*rx)
ccx=rx*rx+(bzj-ry)*(bzj-ry)-(r1+kc1*db)*(r1+kc1*db)
Calljec(aax,bbx,ccx,jx11,jx12)
jy11=(-1)*jx11/Tan(zj)+bzj
jy12=(-1)*jx12/Tan(zj)+bzj
Callpp(jx11,jy11,jx12,jy12,bx,by,jx1,jy1)
aaa=(1+1/(Tan(zj)*Tan(zj)))
bbb=((-1)*2*(bzj-ey)/Tan(zj)-2*ex)
ccc=ex*ex+(bzj-ey)*(bzj-ey)-(r2+kc2*db)*(r2+kc2*db)
Calljec(aaa,bbb,ccc,jx21,jx22)
jy21=(-1)*jx21/Tan(zj)+bzj
jy22=(-1)*jx22/Tan(zj)+bzj
Callpp(jx21,jy21,jx22,jy22,bx,by,jx2,jy2)
Callhuayuan(jx1,jy1,rx,ry,rr1,aa1)
Ifc1=0Then
Picture1.Circle(rx,ry),rr1,RGB(255,0,0),a1,aa1
Else
Picture1.Circle(rx,ry),rr1,RGB(255,0,0),aa1,a1
EndIf
Callhuayuan(jx2,jy2,ex,ey,rr2,aa2)
Ifc2=0Then
Picture1.Circle(ex,ey),rr2,RGB(255,0,0),aa2,a4
Else
Picture1.Circle(ex,ey),rr2,RGB(255,0,0),a4,aa2
EndIf
Picture1.Line(jx1,jy1)-(jx2,jy2),RGB(255,0,0)
EndIf
EndSelect
Case2
pd=8*Atn
(1)-pd
zj=j1-pd/2
Ifzj>8*Atn
(1)Then
zj=zj-8*Atn
(1)
EndIf
Ifpd>2*Atn
(1)Then
p=12
Else
p=13
EndIf
Ifc1=0Then
kc1=1
Else
kc1=(-1)
EndIf
Ifc2=0Then
kc2=1
Else
kc2=(-1)
EndIf
Ifpd>2*Atn
(1)Then
p=12
Else
p=13
EndIf
'当非加工角大于90度时
SelectCasep
Case12
rr1=r1+kc1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仿真 数控 装置 刀具 补偿 功能 程序 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)