现在的位置伺服系统一般采用所谓的“软伺服”系统,使位置增益不很大,这样系统容易稳定,并且增加一个闭环调速单元,速度环的增益很大。因此,很小的位置偏差就能产生很明显的速度偏差,速度环就以很高的增益修正,从而使系统得到很高的位置分辨率[1]。作者在研制一种数控刨齿机时,设计并完成了单轴位置伺服系统,该系统采用半闭环结构,框图如图1所示。本文将结合该系统,阐述位置伺服系统的组成及硬件实现。
2 位置伺服系统的组成
在图1中,位置控制器和速度控制器均由486个人微机编程实现。电机采用北京数控设备厂的FANUC-BESK(15型)直流伺服电机,并采用该厂的A06B-6054-H005作为功率驱动模块。由于该速度控制单元是模拟系统,因此采用12位D/A转换器,把微机根据控制算法输出的数字量转换为合适的模拟电压,控制电机向减小位置偏差的方向转动。位置反馈采用光电编码器,分辨率为4000线/转,经四倍频电路,由可编程计数器8254记录位置脉冲数,位置控制器则根据此脉冲数和指令脉冲数计算出速度指令电压,再输出
到一个12位D/A转换器,即得到模拟的速度指令电压。速度反馈也利用同一个光电编码器和计数电路,速度控制器通过对位置求一阶差分计算出实际转速,然后输出到另一个12位D/A转换器,将得到的模拟电压反馈至速度控制单元的速度反馈输入端。实际转速ω按ω=ΔN/Ts式求取,其中ΔN为在采样周期内的位置脉冲增量,Ts为采样周期,该系统取8毫秒。
作者编写的CNC控制程序采用前、后台软件结构,前台程序是一个中断服务程序,由硬件实现8毫秒定时中断,主要完成精插补和位置控制功能;后台程序是一个循环运行程序,主要完成数据输入、粗插补及其它辅助功能。
3 伺服系统的实现
数模转换采用芯片DAC1210,为了不降低分辨率,用一个电子开关CD4052处理正负号,使数模转换达到双极性12位,为了提高驱动能力和抑制干扰,输出采用集成运放OP07做成射极跟随器的形式,电路如图2所示。
3.1 四倍频器
四倍频器[2,3]采用微分电路来实现,其抗干扰能力较差。作者设计了一种四倍频器,采用积分型单稳态电路,如图3所示。电路的工作原理:A、B两路相位差90°的方波脉冲,电机正向转动时,A领先B;电机反向转动时,B领先A。该电路在A及A的反相-A和B及B的反相-B各接了一个积分型单稳态电路[4],在A的上升沿、下降沿分别产生一个短脉冲A′和-A′,在B的上升沿、下降沿分别产生一个短脉冲B′和-B′。当A为低电平时,Va为高电平,G2输出为低电平;当A上升沿来到后,G1输出为低电平,但由于电容两端的电压不能突变,所以在一段时间里Va仍在阈值电平之上,G2输出为高电平,电路进入暂稳态。随着电容的放电,Va不断下降,当Va低于阈值电平时,G2输出为低电平,待A回到低电平后,G1输出为高电平,电容又开始充电,当Va恢复为高电平时,电路又达到稳态,为下一次上升沿的到来作好准备。由以上分析可知,A′的脉冲宽度TW等于电容开始放电到Va下降至阈值电平所经历的时间,根据对RC电路暂态过程的分析,可知电容上的电压Va放电时间由下式决定[4]:
(1)
式中 R′——RC电路放电回路的电阻
C′——RC电路放电回路的电容
VC(∞)——电容电压的稳态值
VC(0)——电容电压的初值
VC(t)——经过t时间放电后的电容电压值
设LSTTL电路的输出高电平为VOH,输出低电平为VOL,VTH为阈值电平,R0为G1输出低电平时的输出电阻,将R′=R0+R、C′=C、VC(∞)=VOL、VC(0)=VOH、
VC(t)=VTH代入式(1)可得脉冲宽度TW为:
(2)
考虑到电路恢复时间,应使方波脉冲序列的周期为TW的7~8倍,这样电路才能可靠地工作。可以据此选择合适的电阻和电容。将得到的四个短脉冲序列A′、-A′、B′、-B′按图3所示进行与或非的逻辑组合,在U1、U2的输出端将产生表示正转和反转的四倍频脉冲序列,如图4所示。该电路有较好的抗干扰性能,因为高频时容抗很小,而且脉冲经过二级与门的选择。
3.2 脉冲计数电路与初值跳动
8254是与微机接口非常方便的可编程计数器,在方式2下计数器可自动重复计数,利用它的两个
计数通道分别记录正转和反转脉冲,在程序里读入计数值并使二者相减,便可得到在采样周期内的位置脉冲增量,给后续程序作进一步处理。作者在应用中发现8254有一个缺陷:对它进行初始化后,输出锁存器残留有随机数,这时程序读数就会读到这个随机数,所以当第一个计数脉冲到来后,计数器开始从编程初值减一计数。当实际位置脉冲没有来到时,程序里读到的位置脉冲值为一随机数,当有实际位置脉冲输入到计数器后,采样程序读到的是正常的位置脉冲值,所以采样程序第一次计算出的正转或反转脉冲数是不正确的,而随后计数才进入正常状态。第一次读数的这一随机性将引起系统的剧烈跳动,称之为“初值跳动”。这种跳动对数控机床来说是不可接受的,必须予以消除。
作者通过程序处理解决了这一问题,其方法:初始化后先记录下输出锁存器的起始内容,在采样程序里把读入输出锁存器的内容与此起始数值比较,若数值不变,说明没有计数脉冲,位置增量为零;若数值发生变化,说明已有计数脉冲到来,经过程序计算得到第一次的位置增量。此后不再判别“初值跳动”,进行正常计数。解决“初值跳动”的程
序如下(用Turbo C语言实现):
实时采样程序:
……
unsigned char cl,ch;
unsigned int clk0;
outportb(P8254+3,0xd6);
cl=inportb(P8254);
ch=inportb(p8254);
clk0=cl|(ch<<8);
if(clk0!=Old-clk0)first=1;
if(first)
{……
dsp0=……;
……
}
else
dsp0=0;
……
初始化程序:
……
unsigned char ch,cl;
cl=inportb(P8254);
ch=inportb(P8254);
Old-clk0=cl|(ch<<8);
……
有关变量的说明:
Old-clk0:输出锁存器的起始初值
clk0:输出锁存器的读数值
first:判断是否有第一个脉冲到来的逻辑变量
dsp0:位置增量
P8254:8254的片选地址
8254的第三个计数通道用来产生8毫秒的定时中断,用来触发中断服务程序。
4 实验与结论
该伺服系统采用4000线/转的光电编码器,再经过四倍频电路,脉冲当量为δ=360°/(4000×4)=0.0225°/脉冲,位置控制算法采用前向差分控制算法,调整速度反馈的D/A转换,使输出满足速度控制单元A06B-6054-H005的要求:3V/1000r/min,速度环反馈系数调节为1.2,电机能在不同的恒值速度指令电压下平稳运转,线性度为2000r/min/7V。
表不同速度下的稳态跟踪误差
经过实验,调整位置增益为2,电机定位误差为±8脉冲,即±0.18°。在不同的进给速度指令下,测得的稳态跟踪误差见下表。电机到工作台有150∶1的减速比,上述性能指标已能满足实际的加工要求。另外,经过软件处理,系统彻底消除了“初值跳动”的现象。