PMAC 误差补偿的方法及步骤

PMAC 误差补偿的方法及步骤

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

补偿的基本步骤是: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程序

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
0 
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 ; 关闭缓冲区


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

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


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

PMAC 误差补偿的方法及步骤_第1张图片

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

PMAC 误差补偿的方法及步骤_第2张图片

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

PMAC 误差补偿的方法及步骤_第3张图片PMAC 误差补偿的方法及步骤_第4张图片




你可能感兴趣的:(电机,PMAC)