数控课程设计总VB说明书

  • 格式:doc
  • 大小:71.50 KB
  • 文档页数:8

数控技术课程设计

前加减速控制(VB)

指导教师:

应用专业:机械设计制造及其自动化

班级

学号

姓名

组号

班级序号

第 2 页 共 8 页 目 录

一 设计任务书

1. 课程的地位、任务和作用 …………………………………3

2.设计内容 …………………………………………………3

3. 设计目的 …………………………………………………3

二 VB软件设计说明书

2-1 分析问题 …………………………………………………4

2-2 提出算法 …………………………………………………4

2-3 列出流程图 ………………………………………………5

2-4 前加减速软件控制界面 …………………………………6

2-5编写程序 …………………………………………………6

三 参考文献………………………………………………… 9

第 3 页 共 8 页

一、 设计任务书

 1.课程的地位、任务和作用

本课程设计是在《数控技术》理论课程学习完后进行。《数控技术》是机械设计制造及其自动化专业必修的主干专业课之一,对实际应用能力要求很高;通过该课程设计使学生进一步掌握和消化数控机床基本内容,了解数控机床编程的特点和步骤,深化工艺处理技术和编程方法,通过调试,掌握系统软件的操作方法,了解数控系统组成,深化系统控制原理和方法,通过设计和调试,掌握各种数控功能的实现方法,为今后从事数控

领域工作作打下坚实的基础。

 2.设计内容

2.1软件设计:问题分析,提出算法,列出流程图,编写程序,最后进行程序验证。

2.2 设计成员:

3.设计目的

1)针对设计任务选择合适的实现方案;

2)培养学生查阅技术手册和有关技术资料的能力;

3)培养学生程序设计能力;

4)培养学生程序调试能力;

5)培养学生编制技术文档的能力;

6)培养学生严肃认真、一丝不苟和实事求是的科学态度。

第 4 页 共 8 页

二 、VB软件设计说明书

 2-1分析问题:

在CNC 装置中,加减数控制多数都采用软件来实现,这给系统带来了较大的灵活性,这种用软件实现的加减数控制放在插补前进行称为前加减速控制。

 2-2提出算法:

前加减速控制,仅对编程速度F指令进行控制,其优点是不会影响实际插补输出的位置精度,其缺点是需要预测减速点,而这个减速点要根据实际刀具的位置与程序段终点之间的距离来确定,预测工作需要完成的计算量较大。

(1) 稳定速度和瞬时速度

稳定速度 Fs=F*T*K/60/1000 当Fs>1000时 Fs=1000

瞬时速度fi=Fs,当系统处于加速(或减速)状态时,fiFs)

(2) 线性加减速处理

加减速度 a=1.67x10^-5*F/t (mm/ms^2)

1) 加速处理 Fs=Fs+aT

2) 减速处理 s=Fs^2/2a+s Fi+1=Fi-aT

(3) 终点判别处理

1)直线插补Xi=xi-1+x’ Yi=yi-1+y’

Si=NE=sqr((Xe-Xi)^2+(Ye-Yi)^2)

2)圆弧插补 Si=sqr((Xe-Xi)^2+(Ye-Yi)^2)

第 5 页 共 8 页  2-3列出流程图N

N

Y N N

Y 入口

Si= (xe-xi)2-(ye-yi)2

需要减速

计算减速区域

S=fs^2/2/a+ s

Si≤s?

置减速状态标志

接近终点?

置程序段转接标到终点?

置到终点标志

出口

终点判别原理框图

Y N Y N N

Y N

Y 入口

Fs=F*T*K/60/1000

Fs>f

Fs’>fs

加速处理

Fi+1=fi+a*T

Si≤s

减速处理 原始fs=f

匀速处理

Fi+1=fi-a*T

Fi+1=fs或Fi+1=0

出口 Fs=fs

Fi+1=fss

前加减速控制原理框图

第 6 页 共 8 页

 2-4前加减速软件控制界面

 2-5编写程序

前加减速控制程序代码

Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double, a As Double, b As Double

Dim fs As Double, f As Integer, t As Integer, fi As Integer, F1 As Integer, m

Dim ti As Integer, t2 As Integer, ts As Integer, t1 As Integer, tt As Double

Private Sub Command1_Click()

Timer1.Enabled = True

If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Or Text4.Text = "" Or Text5.Text =

"" Or Text6.Text = "" Then

MsgBox ("输入的数据不完整" & vbCrLf & "请输入完整后再运行程序")

If Text1.Text <= 0 Or Text2.Text <= 0 Or Text3.Text <= 0 Or Text4.Text <= 0 Or

Text5.Text <= 0 Or Text6.Text <= 0 Then

MsgBox ("所输入的数据应大于零" & vbCrLf & "请重新输入再运行程序")

End If

Else

F1 = Val(Text3.Text)

t = Val(Text4.Text)

K = Val(Text5.Text)

t = Val(Text6.Text)

fs = f * t * K / 60 / 1000

If fs > 1000 Then fs = 1000

x1 = 0

y1 = 0

x2 = Val(Text1.Text)

y2 = Val(Text2.Text)

a = (1.67 * 10 ^ -5) * F1 / t

Label11.Caption = " " & Val(t) & " " & "," & " " & Val(F1)

x1 = x1 + 1

y1 = y1 + y2 / x2

si = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)

s = fs ^ 2 / 2 / a

s1 = fs ^ 2 / 2 / a

t1 = Sqr(2 * s / a)

s2 = Sqr(x2 ^ 2 + y2 ^ 2) - si - s1

t2 = s2 / F1 * 60000

第 7 页 共 8 页 ti = Val(t + t + t2)

Label12.Caption = " " & Format(Val(t + t2), "0.00") & " " & "," & " " & Val(F1)

Label13.Caption = " " & Format(Val(t + t + t2), "0.00") & " " & "," & " " & "0"

Picture2.Scale (0, 2 * F1)-(1.5 * ti, 0)

Picture2.Line (x1, y1)-(t, F1)

Picture2.Line (t, F1)-(t + t2, F1)

Picture2.Line (t + t2, F1)-(ti, 0)

Timer2.Enabled = False

Timer3.Enabled = False

End If

ts = Val(t + t2)

End Sub

Private Sub Command2_Click()

Timer3.Enabled = False

Text1.Text = ""

Text2.Text = ""

Text3.Text = ""

Text4.Text = ""

Text5.Text = ""

Text6.Text = ""

Label11.Caption = ""

Label12.Caption = ""

Label13.Caption = ""

Picture2.Cls

End Sub

Private Sub Command3_Click()

End

End Sub

Private Sub Form_Load()

Timer1.Enabled = False

Timer2.Enabled = True

Picture1.Scale (0, 1000)-(1000, 0)

If fi < fs Then

fi = fi + a * t

End If

End Sub

Private Sub Timer1_Timer()

Timer1.Interval = Val(10)

Picture2.Line (x1, y1)-(x1 + 0.01, y1 + F1 / t / 100), vbRed

x1 = x1 + 0.01

y1 = y1 + F1 / t / 100

If y1 + F1 / t / 100 > F1 Then

Timer2.Interval = Val(20)