PMAC 误差补偿的方法及步骤

来源:互联网 发布:js中单选按钮点击事件 编辑:程序博客网 时间:2024/04/30 13:12

PMAC 误差补偿的方法及步骤

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

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

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

                                 3.在程序中写入补偿表

                                 4.测试补偿后的数据

以下进行详细说明。

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

(一)测量误差数据

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

具体步骤:

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

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

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

系数目标 (mm)运行次数 1 (+) 位置运行次数 1 (+) 误差150.000050.00818.12100.0000100.010510.53150.0000150.021921.94200.0000200.034134.15250.0000250.045545.56300.0000300.057657.67350.0000350.071371.38400.0000400.085685.69450.0000450.099099.010500.0000500.1128112.8系数目标 (mm)运行次数 1 (-) 位置运行次数 1 (-) 误差1-50.0000-50.0108-10.82-100.0000-100.0254-25.43-150.0000-150.0361-36.14-200.0000-200.0475-47.55-250.0000-250.0600-60.06-300.0000-300.0717-71.77-350.0000-350.0842-84.28-400.0000-400.0967-96.79-450.0000-450.1084-108.410-500.0000-500.1209-120.9

(二)制作补偿表

(1)将误差值除以0.05(光栅分辨率为0.05um)得到值2

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

得到如下数据:

 目标 (mm)运行次数 1  位置运行次数 1 误差误差/分辨率*1615050.00818.116225922100100.010510.521033603150150.021921.943870084200200.034134.1682109125250250.045545.5910145606300300.057657.61152184327350350.071371.31426228168400400.085685.61712273929450450.0999919803168010500500.1128112.822563609611-50-50.0108-10.8-216-345612-100-100.025-25.4-508-812813-150-150.036-36.1-722-1155214-200-200.048-47.5-950-1520015-250-250.06-60-1200-1920016-300-300.072-71.7-1434-2294417-350-350.084-84.2-1684-2694418-400-400.097-96.7-1934-3094419-450-450.108-108.4-2168-3468820-500-500.121-120.9-2418-3868821-450-450.108-108.4-2168-3468822-500-500.121-120.9-2418-38688

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

排序后得到如下表格:

 目标 (mm)运行次数 1  位置运行次数 1 误差误差/分辨率*16 补偿表 15050.00818.11622592 2592 2100100.010510.52103360 3360 3150150.021921.94387008 7008 4200200.034134.168210912 10912 5250250.045545.591014560 14560 6300300.057657.6115218432 18432 7350350.071371.3142622816 22816 8400400.085685.6171227392 27392 9450450.09999198031680 31680 10500500.1128112.8225636096 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 补偿表15050.00818.11622592 25922100100.010510.52103360 33603150150.021921.94387008 70084200200.034134.168210912 109125250250.045545.591014560 145606300300.057657.6115218432 184327350350.071371.3142622816 228168400400.085685.6171227392 273929450450.09999198031680 3168010500500.1128112.8225636096 36096 550


40512
40512
-550


-42688
-3868822-500-500.121-120.9-2418-38688 -3468821-450-450.108-108.4-2168-34688 -3868820-500-500.121-120.9-2418-38688 -3468819-450-450.108-108.4-2168-34688 -3094418-400-400.097-96.7-1934-30944 -2694417-350-350.084-84.2-1684-26944 -2294416-300-300.072-71.7-1434-22944 -1920015-250-250.06-60-1200-19200 -1520014-200-200.048-47.5-950-15200 -1155213-150-150.036-36.1-722-11552 -812812-100-100.025-25.4-508-8128 -345611-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,220000002592336070081091214560184322281627392316803609640512-38688-34688-30944-26944-22944-19200-15200-11552-8128-34560 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 10000P1=P1+1;ENDWHILECLOSE ; 关闭缓冲区


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

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


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


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


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





0 0
原创粉丝点击