单轴位置伺服系统的设计与实现

技术分类: 运动控制/自动化    来源:慧聪网  发表时间:2008-02-13
计数通道分别记录正转和反转脉冲,在程序里读入计数值并使二者相减,便可得到在采样周期内的位置脉冲增量,给后续程序作进一步处理。作者在应用中发现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的减速比,上述性能指标已能满足实际的加工要求。另外,经过软件处理,系统彻底消除了“初值跳动”的现象。

  表 不同速度下的稳态跟踪误差


1】【2
收藏此页】【  】【打印】【关闭

精彩专题

超值订阅2009年度DESIGN NEWS China杂志

DESIGN NEWS China杂志向国内读者介绍国际上最先进的工业技术与设计,涉及电子/测试、运动控制/自动化、创新材料、工程软件/硬件、汽车设计等领域,现在订阅可获更多优惠…[ 详细内容 ]

浏览该文章的用户还看过

  • 文章
  • 论坛
  • 博客