搜索
bottom↓
回复: 3

输入值让精密平台运动,一个光栅尺测量,急!!!!!!

[复制链接]

出0入0汤圆

发表于 2009-12-28 23:05:11 | 显示全部楼层 |阅读模式
用了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

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-12-29 08:31:22 | 显示全部楼层
使用timer控件。

出0入0汤圆

 楼主| 发表于 2009-12-29 10:13:51 | 显示全部楼层
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


这个思路怎么样?

出0入0汤圆

 楼主| 发表于 2009-12-30 00:50:38 | 显示全部楼层
这样思路怎么样?
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
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 12:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表