PMAC 误差补偿的方法及步骤(good)

电机的进行运动控制的过程中,由于误差的存在,因此要进行补偿。

补偿的基本步骤是:1.测量误差数据

                                 2.使用误差数据制作补偿表

                                 3.在程序中写入补偿表

                                 4.测试补偿后的数据

以下进行详细说明。

本文我使用的是PMAC进行直线电机的控制,使用光栅反馈,1mm对应20000个脉冲,并且使用激光干涉仪作为基准。

(一)测量误差数据
误差数据的测量就是发送指令让PMAC控制电机移动某个距离,同时对比激光干涉仪的数据,两个数据的差值就是误差值。

具体步骤:

(1)给PMAC输入指令#1j^1000000控制电机1向前移动50mm(1mm对应20000个脉冲),同时观察激光干涉仪的数值并进行记录。我这里一共测量10个数据,到500mm为止。记录的方式可以是手动记录,也可以使用干涉仪自带的软件进行数据的记录。我使用的是干涉仪软件的记录方法。

(2)反方向也同样进行测量。

(3)得到测量的数据如下:


系数    目标 (mm)    运行次数 1 (+) 位置    运行次数 1 (+) 误差
1    50.0000    50.0081    8.1
2    100.0000    100.0105    10.5
3    150.0000    150.0219    21.9
4    200.0000    200.0341    34.1
5    250.0000    250.0455    45.5
6    300.0000    300.0576    57.6
7    350.0000    350.0713    71.3
8    400.0000    400.0856    85.6
9    450.0000    450.0990    99.0
10    500.0000    500.1128    112.8
系数    目标 (mm)    运行次数 1 (-) 位置    运行次数 1 (-) 误差
1    -50.0000    -50.0108    -10.8
2    -100.0000    -100.0254    -25.4
3    -150.0000    -150.0361    -36.1
4    -200.0000    -200.0475    -47.5
5    -250.0000    -250.0600    -60.0
6    -300.0000    -300.0717    -71.7
7    -350.0000    -350.0842    -84.2
8    -400.0000    -400.0967    -96.7
9    -450.0000    -450.1084    -108.4
10    -500.0000    -500.1209    -120.9

(二)制作补偿表
(1)将误差值除以0.05(光栅分辨率为0.05um)得到值2

(2)将值2乘以16(PMAC寄存器相关量)得到值3

得到如下数据:


     目标 (mm)    运行次数 1  位置    运行次数 1 误差    误差/分辨率    *16
1    50    50.0081    8.1    162    2592
2    100    100.0105    10.5    210    3360
3    150    150.0219    21.9    438    7008
4    200    200.0341    34.1    682    10912
5    250    250.0455    45.5    910    14560
6    300    300.0576    57.6    1152    18432
7    350    350.0713    71.3    1426    22816
8    400    400.0856    85.6    1712    27392
9    450    450.099    99    1980    31680
10    500    500.1128    112.8    2256    36096
11    -50    -50.0108    -10.8    -216    -3456
12    -100    -100.025    -25.4    -508    -8128
13    -150    -150.036    -36.1    -722    -11552
14    -200    -200.048    -47.5    -950    -15200
15    -250    -250.06    -60    -1200    -19200
16    -300    -300.072    -71.7    -1434    -22944
17    -350    -350.084    -84.2    -1684    -26944
18    -400    -400.097    -96.7    -1934    -30944
19    -450    -450.108    -108.4    -2168    -34688
20    -500    -500.121    -120.9    -2418    -38688
21    -450    -450.108    -108.4    -2168    -34688
22    -500    -500.121    -120.9    -2418    -38688

(3)将值3进行排列得到补偿表,排列的方法是从正向的第一个值到最大值也就是50mm到500mm,接着从反向最大值到最小值,然后删去反向最大值对应的补偿值也就是-500mm对应的值,并在最后加上0。

排序后得到如下表格:


     目标 (mm)    运行次数 1  位置    运行次数 1 误差    误差/分辨率    *16         补偿表     
1    50    50.0081    8.1    162    2592         2592     
2    100    100.0105    10.5    210    3360         3360     
3    150    150.0219    21.9    438    7008         7008     
4    200    200.0341    34.1    682    10912         10912     
5    250    250.0455    45.5    910    14560         14560     
6    300    300.0576    57.6    1152    18432         18432     
7    350    350.0713    71.3    1426    22816         22816     
8    400    400.0856    85.6    1712    27392         27392     
9    450    450.099    99    1980    31680         31680     
10    500    500.1128    112.8    2256    36096         36096     
22    -500    -500.121    -120.9    -2418    -38688         -34688     
21    -450    -450.108    -108.4    -2168    -34688         -38688     
20    -500    -500.121    -120.9    -2418    -38688         -34688     
19    -450    -450.108    -108.4    -2168    -34688         -30944     
18    -400    -400.097    -96.7    -1934    -30944         -26944     
17    -350    -350.084    -84.2    -1684    -26944         -22944     
16    -300    -300.072    -71.7    -1434    -22944         -19200     
15    -250    -250.06    -60    -1200    -19200         -15200     
14    -200    -200.048    -47.5    -950    -15200         -11552     
13    -150    -150.036    -36.1    -722    -11552         -8128     
12    -100    -100.025    -25.4    -508    -8128         -3456     
11    -50    -50.0108    -10.8    -216    -3456         0     
但是在后续的测量中发现,如果这样进行补偿的话会造成边界数据的补偿失败,因此采用的方法是正负方向各增加一个数据,这个数据可以由前面的数据预测得到,这里我们增加550和-550mm的两个补偿表数据分别为40512和-42688,由于要删去反向最大值,因此删去-550的值,加上原来删去的-500的值。


     目标 (mm)    运行次数 1  位置    运行次数 1 误差    误差/分辨率    *16         补偿表
1    50    50.0081    8.1    162    2592         2592
2    100    100.0105    10.5    210    3360         3360
3    150    150.0219    21.9    438    7008         7008
4    200    200.0341    34.1    682    10912         10912
5    250    250.0455    45.5    910    14560         14560
6    300    300.0576    57.6    1152    18432         18432
7    350    350.0713    71.3    1426    22816         22816
8    400    400.0856    85.6    1712    27392         27392
9    450    450.099    99    1980    31680         31680
10    500    500.1128    112.8    2256    36096         36096
     550    


40512    
40512

-550    


-42688    
-38688
22    -500    -500.121    -120.9    -2418    -38688         -34688
21    -450    -450.108    -108.4    -2168    -34688         -38688
20    -500    -500.121    -120.9    -2418    -38688         -34688
19    -450    -450.108    -108.4    -2168    -34688         -30944
18    -400    -400.097    -96.7    -1934    -30944         -26944
17    -350    -350.084    -84.2    -1684    -26944         -22944
16    -300    -300.072    -71.7    -1434    -22944         -19200
15    -250    -250.06    -60    -1200    -19200         -15200
14    -200    -200.048    -47.5    -950    -15200         -11552
13    -150    -150.036    -36.1    -722    -11552         -8128
12    -100    -100.025    -25.4    -508    -8128         -3456
11    -50    -50.0108    -10.8    -216    -3456         0

由此得到一个完整的补偿表。
(三)在程序中写入补偿表
在程序中使用#1 DEFINE COMP 22,22000000指令来设置添加补偿表的参数。其中22表示一共有22个入口,也就是补偿值,而22000000则是总长度的脉冲数,也就是110mm*20000脉冲/mm。

然后就是将补偿表写入。并且使能补偿,使I51=1。

(四)测试补偿后的数据
与步骤(一)相同的方法使电机前进或后退一个距离,并与激光干涉仪的数据进行比较,可以看到相差明显变小,在几um内。但是要注意补偿后的jog指令不能使用#1j^20000,而应该使用#1j:20000,否则会出现走不到位的情况。

附:PMAC程序


<span style="font-size:18px;">close ; 关闭任意的缓冲区
delete gather ; 删除数据采集缓冲区
#1 DEFINE COMP 22,22000000
2592
3360
7008
10912
14560
18432
22816
27392
31680
36096
40512
-38688
-34688
-30944
-26944
-22944
-19200
-15200
-11552
-8128
-3456

close ; 关闭任意的缓冲区
delete gather ; 删除数据采集缓冲区
undefine all ; 删除全部轴定义
I51=1
&1
#1->20000X ; 电机#1的轴定义
 
#1J/
P1=0;
OPEN PROG 4 CLEAR ; 打开缓冲区
LINEAR ; 直线插补模式
INC ; 增量模式
WHILE(P1<10)
X 50 ; 运行一个单位
DWELL 10000
P1=P1+1;
ENDWHILE
CLOSE ; 关闭缓冲区</span>


附:雷尼绍激光干涉仪的软件数据记录方法

1.点击菜单栏上第一个图标

2.在弹出的窗口填入采集的方法,我这里是每隔50mm采集一次数据,一共10次,共500mm,保留到小数点后5位。

3.点击下一步,测量方式线性定位方式,方向选择单向

4.然后就是填入信息,自动采集选择无效


zhuan:https://blog.csdn.net/CYT0603/article/details/53545679?utm_source=blogxgwz0

猜你喜欢

转载自blog.csdn.net/eric_e/article/details/83073226
今日推荐