2 算法及原理
完成数控系统仿真软件的走刀模拟主要运用插补模块进行仿真,其包含直线插补和圆弧插补。为保证插补的速度和精度,选择用逐点比较法作为插补的算法。
逐点比较法又称代数运算法、区域判别法。他的方法就是就是通过每走一步都要将加工点的瞬时坐标同规定的图形轨迹相比较,判断其偏差,然后决定下一步的走向,如果加工点走到图形外去了,那么下一步就要往图形里面走;如果加工点在图形里面,那么下一步就要往图形外走,以减小偏差。这样就能得到一个非常接近于规定图形的轨迹[1]。
一般来说,逐点比较法插补过程中每一步都要经过4个节拍的处理,其流程如图2.1所示,分别是偏差判别、坐标进给、偏差计算、终点判别。
2.1 直线插补模块
2.1.1 直线插补计算方法
如图2.2所示,OA是要加工的直线。起点坐标O为坐标原点,终点A坐标为(Xe,Ye)。点P(Xi,Yi)为任一加工点(刀具),若P点正好在直线OA上时,下式成立
即XeYi—XiYe=0
若加工点P 在直线OA上方,则
即XeYi—XiYe>0
若加工点P 在直线OA下方,则
即XeYi—XiYe=0 (2—1)
设某时刻刀具运动到P(Xi ,Yi)偏差函数为Fi,则F=XeYi-XiYe中F的数值称为该点的“偏差值”。
若点P在直线上或上方(F≥0)应向+X方向发一脉冲,使机床刀具向+X方向前进一步,以接近该直线;若点P在直线下方(F<0)应向+Y方向发一脉冲,使机床刀具向+Y方向前进一步,以接近该直线。
当偏差值F ≥0时,刀具从现加工点(Xi,Yi)向X正向前进一步,到达新加工点(Xi+1,Yi),则新加工点的偏差值为
Fi+1=XeYi+1—Xi+1Ye=XeYi—XiYe—Ye
即Fi+1=Fi—Ye (2—2)
当偏差值F <0时,刀具从现加工点(Xi,Yi)向Y正向前进一步,到达新加工点(Xi,Yi+1)则新加工点的偏差值为
Fi+1=XeYi+1—Xi+1Ye=XeYi—XiYe+Ex.
即Fi+1=Fi+Ex. (2—3)
对于逐点比较插补法,每进行一个插补循环,刀具或者沿X轴走一步,或沿Y轴走一步,因此插补次数与刀具沿X、Y轴已走的总步数相等。这样可根据插补循环数i与刀具沿X、Y轴应进给的总步数N是否相等判断终点,即直线加工结束的条件为:i=N。
2.1.2 终点判断的方法
设置变量减法计数器,在Text中读取终点坐标值Xe 、Ye,X或Y坐标每进给一步时,就在计数器中减去1,当插补到达终点时其值为零。
2.1.3 其他象限直线插补计算
四个象限的计算时,由于象限之间相互对称的关系,其它象限其实与第一象限或关于原心或关于坐标轴对称,所以,坐标进给的方式和计算公式和第一象限完全一样,不同的是进给方向的判断,四个象限的插补计算便能够由此来实现。
2.1.4 直线插补流程图(如下图)
2.1.5 直线插补源代码
Public Sub DrawLine(X1 As Single, Y1 As Single, X2 As Single, Y2 As Single) '画线过程
Dim LX1 As Single, LX2 As Single, LY1 As Single, LY2 As Single, L As Single
If StopRun = True Then '判断是否按了停止
Exit Sub
End If
If X1 = X2 And Y1 = Y2 And CurrentNZ = NEWZ Then
Exit Sub
End If
Do While PauseRun = True '暂停控制
For L = 0 To 10000 数控系统动画仿真软件设计+仿真程序(3):http://www.youerw.com/jixie/lunwen_20570.html