输入值让精密平台运动,一个光栅尺测量,急!!!!!!
用了2个精密仪器:一个输入距离值(名为Text2里面)让精密平台动,一个光栅尺测量精密平台走了多少(在名为Axis的Text框里显示时实数据),由于各自精度不一样,这2个Text里的数据会有差别的,光栅尺的高。现在的目的是想:
例如:输入Text2为498um,显示为480um,我怎么写VB程序让光栅尺显示的也为498um,让平台也真正的运动了498um。
这个思路可以吗(举个例子)?
1、498-480=18
2、让精密平台增加18,如果此时显示为492了
3、498-492=6
4、让精密平台增加6,如果此时显示为496了
5、498-496=2
6、让精密平台增加2,如果显示为497了
。
。
。
直到2个数据一样了,精密平台不运动了。
怎么用VB程序实现
我想这样不行啊!
Private Sub Command5_Click()
Dim result&
result& = MMC_sendCommand("M" & "N" & "," & "M" & "A" & Round(Val(Text2.Text) * 145.6355328))
Call Sleep(2000) '在2秒时间内让平台运动到输入值(是有误差的,由后面的测量具体是多少)
If ((Text2.Text - Axis.Text) <> 0) Then
result& = MMC_sendCommand("M" & "N" & "," & "M" & "A" & Round(Val(Text2.Text - Axis.Text) * 145.6355328))
End If
End Sub 使用timer控件。 Private Sub Command5_Click() '点击这个按钮平台开始运动
Dim result&
Dim lngDif As Long, lngTune As Long
Dim sngPauseTime As Single, sngStart As Single
result& = MMC_sendCommand("M" & "N" & "," & "M" & "A" & Round(Val(Text2.Text) * 145.6355328)) '发送平台绝对运动的命令,首先想让平台运动Sleep(2000)这样的时间内到达一个绝对位置,光栅尺有个测量值显示在AxiS.Text里。
Call Sleep(2000)'让运动时间间隔2秒
sngPauseTime = 0.2 '这以后都是在大的绝对位置上相对运动,所以时间短,每次只等待0.2秒钟.
lngDif = Text2 - Ax'看Text2.Text的输入值与AxiS.Text显示值的差别
While Abs(lngDif) > 1 '如果误差大于1微米(误差要求在1微米之内)
result& = MMC_sendCommand("MN,MR(Text2 - Ax)") '给微动工作台发相对运动命令让它增加 Text2 - Ax 微米.
sngStart = Timer '等待微动工作台运动0.2秒
Do While Timer < sngStart + sngPauseTime
DoEvents
Loop
lngDif = Text2 - Ax'获得新的差值,如果为0了就表示相对运动没有了
Wend
End Sub
这个思路怎么样? 这样思路怎么样?
Private Sub Command5_Click()
Dim result&
Dim chazhi As Double
result& = MMC_sendCommand("M" & "N" & "," & "M" & "A" & Round(Val(Text2.Text) * 145.6355328))
Call Sleep(2000) '先让工作台有个大范围的逼近,如果chazhi>=1,循环判断,小范围逼近
'比较工作台与显示值,判断工作台运动到与需要显示的位置
chazhi = Val(Text2.Text) - Val(Form1.Axis(0).Text)
While (Abs(chazhi) >= 1)
result& = MMC_sendCommand("M" & "N" & "," & "M" & "R" & Round(chazhi) * 145.6355328)
Call Sleep(1000)
chazhi = Val(Text2.Text) - Val(Form1.Axis(0).Text)
Wend
End Sub
页:
[1]