勇哥把x,y,z平台装上一两个加工件,来验证一下轴的精度。
方法是示教一个目标点,然后回原点后走到目标点,依次做十几次,然后求出最终的精度。

写一段halcon代码,测量如下图所示的地方。

每次走到目标点后,从头运行一次这段程序,记录上图中最下面那个绿色测量点的值。
* Image Acquisition 01: Code generated by Image Acquisition 01
* Image Acquisition 01: Attention: The initialization may fail in case parameters need to
* Image Acquisition 01: be set in a specific order (e.g., image resolution vs. offset).
open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '94aab8029638_Microvision_MVEM500M', 0, -1, AcqHandle)
set_framegrabber_param (AcqHandle, 'ExposureTime', 17173.0)
set_framegrabber_param (AcqHandle, 'AutoExposureTimeUpperLimit', 67567.0)
grab_image (Image, AcqHandle)
* Image Acquisition 01: Do something
close_framegrabber (AcqHandle)
* Measure 01: Code generated by Measure 01
* Measure 01: Prepare measurement
AmplitudeThreshold := 40
RoiWidthLen2 := 5
set_system ('int_zooming', 'true')
* Measure 01: Coordinates for line Measure 01 [0]
LineRowStart_Measure_01_0 := 1220.36
LineColumnStart_Measure_01_0 := 1239.55
LineRowEnd_Measure_01_0 := 966.854
LineColumnEnd_Measure_01_0 := 1248.75
* Measure 01: Convert coordinates to rectangle2 type
TmpCtrl_Row := 0.5*(LineRowStart_Measure_01_0+LineRowEnd_Measure_01_0)
TmpCtrl_Column := 0.5*(LineColumnStart_Measure_01_0+LineColumnEnd_Measure_01_0)
TmpCtrl_Dr := LineRowStart_Measure_01_0-LineRowEnd_Measure_01_0
TmpCtrl_Dc := LineColumnEnd_Measure_01_0-LineColumnStart_Measure_01_0
TmpCtrl_Phi := atan2(TmpCtrl_Dr, TmpCtrl_Dc)
TmpCtrl_Len1 := 0.5*sqrt(TmpCtrl_Dr*TmpCtrl_Dr + TmpCtrl_Dc*TmpCtrl_Dc)
TmpCtrl_Len2 := RoiWidthLen2
* Measure 01: Create measure for line Measure 01 [0]
* Measure 01: Attention: This assumes all images have the same size!
gen_measure_rectangle2 (TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2, 2592, 1944, 'nearest_neighbor', MsrHandle_Measure_01_0)
* Measure 01: ***************************************************************
* Measure 01: * The code which follows is to be executed once / measurement *
* Measure 01: ***************************************************************
* Measure 01: The image is assumed to be made available in the
* Measure 01: variable last displayed in the graphics window
copy_obj (Image, Image, 1, 1)
* Measure 01: Execute measurements
measure_pos (Image, MsrHandle_Measure_01_0, 1, AmplitudeThreshold, 'all', 'all', Row_Measure_01_0, Column_Measure_01_0, Amplitude_Measure_01_0, Distance_Measure_01_0)
* Measure 01: Do something with the results
//1184.12
//1184.13
//1184.16
//1184.09
//1184.14
//1184.14
//1184.13
//1184.2
//1184.23
//1184.23
//1184.26
//1184.29
//1184.26从这个结果来看,这个平台重复运行3,4次的话,精度为2到4个丝的样子。
但是重复次数一多后,精度就飘起来了,这个跟回原点的精度损失积累有关。
因为这个机器没有原点感应开关,它所谓的回原点只不过是开机时把当前位置确定为原点罢了。
所以存在误差积累,不能消除。
实际项目中,我们一般使用三丰指针型千分表顶住x,y轴的方式分别对每个轴进行重复性测试。

因为只要有一个轴精度损失大,定位、贴合等操作你就别想走得准了。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!


少有人走的路



















