关键词:工控机;位置控制;长驻内存;电流漂移?
当前,精密化、自动化、智能化和柔性化是数控技术的发展方向。其关键技术之一的多轴联动数控技术,日益引起国内外有关学者的普遍重视和广泛研究。但是如何更方便地实现高精度、高效率、高柔性的多轴联动还是一个有待继续探索的课题。目前,多轴联动系统大多采用主从式结构,主机完成系统的管理和产生指令,而各轴控制则由各单独从机控制单元完成[1,2]。以PC工控机为核心的控制系统,集管理与控制为一体,运用PCL833、PCL728两块功能板,可同时实现2台伺服电机间同步传动的柔性化控制 ,使之满足数控机床的多轴联动要求。?
1系统整体结构
系统整体结构简图,如图1所示。本系统的控制回路分数字和模拟部分2部分,数字部分由1台PC工控机和两块硬件功能接口板组成。PC工控机主要完成2台电机的位置控制调节运算;硬件功能板1为计数器,实现对两伺服电机反馈脉冲的检测、倍频辩相和计数功能;硬件功能板2为D/A板,实现对2台伺服电机的控制。

PCL833是由研华公司生产的24位可逆计数器[3],是专为位置和速度控制设计的计数器接口板,能够对正交输入和数字输入进行计数,具有如下特点:
(1) 3个24位可逆计数器;
(2) 最大脉冲输入频率2.4MHz;
(3) 计数方式为脉冲/方向计数和正反向计数;
(4) *1、*2、*4 3种倍频方式;
(5) 具有对9个不同中断源中断控制;
(6) 光电隔离最大能达到2500V;
(7) 4级数字滤波;
(8) 可编程中断时间;
(9) 适合IBM PC/AT 和兼容机(ISA总线)。
3个24位可逆计数器既可单独使用,也可级联使用。最大可实现48位计数器方式。并可根据要求设置为增量式和绝对式。具有溢出中断和溢出计数等功能。在本系统中,为保证计数器读数准确、不丢步,采用了24位计数方式,同时要求计数器进行绝对式循环计数。接口板1占有计算机连续16个映射地址,根据PC计算机映射地址的分配情况,设置0X200~0X215连续16个映射地址给计数器。
PCL728是由研华公司生产的12位D/A转换器[4],该转换器针对恶劣的工况设计的12位双通道D/A输出卡。每一通道完全光电隔离,并且独立于系统地,可设置为以下范围输出:0~5V、0~10V、±5V、±10V、4~20mA、0~20mA。根据伺服电机的控制要求,设置为双极性±10V输出。D/A输出占有4个映射地址,分别为0x2c0、0x2c1、0x2c2和0x2c3 4个连续地址。
伺服电机及其驱动系统采用日本安川公司的产品,电机型号为BMH0955N11A1L,光电编码器为伺服电机随机携带,3072脉冲/转。?
3 PC机实时控制算法软件设计与实现
在本系统中实现2伺服电机同步跟踪的控制。2电机分别定义为主电机和从电机,由该工控机同时完成对2台伺服电机的控制。
采用工控机中的8253零计数器来实现定时中断,并通过其控制的0x1cH中断相量中安装中断服务程序。8253零计数器的默认设置为每秒产生18.2次中断,即每发生一次中断间隔周期为55ms。这样,可根据公式interrupt——hige=sample——time×1193180%256000和interrupt——low=sample——time×1193180/256000获得计数器预置数,通过修改该计数器预置值,可获得不同的中断时间。
整个系统软件由2个模块组成:位置锁定模块和控制模块。当系统采用了数模混合结构时,即使没有输入,也会因各种干扰的存在,引起模拟电路中产生电流“零漂”,从而将影响到控制效果。位置锁定模块即为解决上述问题而设计,该模块的中断服务程序与控制模块的中断服务程序占有同一中断相量,运用TSR(Terminate and Resident ),即长驻内存技术[5],将其长驻于内存中。当主控制模块未运行时,该锁定模块通过定时中断自动激活,采用零输入负反馈控制策略,实现对伺服电机零位置的锁定。当有任务时,运行主控制模块,此时该模块的中断服务程序的入口地址将取代锁定模块中断服务程序的入口地址,获得对伺服电机的控制权。任务结束后,退出主控制模块,位置锁定模块将重新收回其控制权,从而使伺服电机始终处于闭环,有效地保证了系统的工作性能。
实际设计中,锁定模块采用了C语言和汇编语言混合编程,控制方案采用简单的零输入比例控制。该模块流程图,如图2所示。比例系数Kp=0.4,中断采样时间与主控制模块采用相同时间,均为4ms。整个程序仅占560bit,对主控制模块或其他模块的运行几乎没有影响,但对伺服电机的位置漂移却获得了明显的改善,位置偏差始终保持在±1脉冲内。?

控制模块的主程序流程图,如图3(a)所示。中断服务子程序流程图,如图3(b)所示。主程序完成寄存器、定时器初始化,定义控制变量,显示输入输出,数据的存贮,打印等功能;中断服务子程序则主要完成对2台伺服电机的控制。在控制策略上对主电机采用简单的PI控制,而从动电机采用了模糊-PID和前馈微分控制构成的复合控制,运用C语言和汇编语言混合编程。复合控制充分运用模糊控制和传统PID控制各自的优点,采用模糊控制和PID控制相结合的控制模式。通过查询模糊控制表,根据系统处于不同状态和对控制过程不同时刻的不同要求,得到比例\Kp、积分Kd、微分K\3系数及前馈微分系数K1,兼顾控制系统的动、静态等多项性能指标,达到预期目的。?

软件设计要点如下:
(1) 驻留函数。长驻内存函数keep(),将程序驻留在内存中,并通过热键或其它方式进行激活。函数括号内为该程序所需字节数,如本软件中的位置锁定模块,需560bit,这样可写为keep(560)。
(2) 在计数器采样子程序和D/A输出子程序的设计中,为了缩短运行读取计数器和输出D/A数据时间,提高运算效率,运用了结构体和公用体,如下所示:

(3) 溢出判断子程序。为保证计数器的计数准确,要求计数器进行绝对式循环计数,这样必然会产生溢出现象。因此,在每次采样后都要对计数器是否溢出进行判断。计数器由于采用24位计数方式,分3次进行读取,若将24位全读出后再进行判断,则势必增加中断程序运行时间。实际应用中,采用了高八位判断方式。由于采用的编码器为4096脉冲/转,伺服电机的最高速度为600r/min,采样时间为4ms。因此,最高位的2次采样之差绝对值不可能大于255,否则,为溢出。若本次采样高位值与前次采样值之差为255,则说明计数器下溢;若本次采样高位值与前次采样值之差为-255,则说明计数器下溢。
主电机采用恒速控制,从动电机进行位置跟踪时,采用常规PID控制及复合控制跟踪特性曲线的比较图,如图4所示。从图中可以看出,与常规PID控制比较,复合控制具有响应速度快等优点。说明该控制策略是不仅可用于伺服电机的位置同步控制,而且具有以上诸多优点。?

4结束语
基于工控机实现的位置同步控制系统,具有系统可靠性高、结构简单、编程灵活等优点,既可运用高级软件,又可运用汇编语言,提高编程调试速度和程序的可读性。在实现伺服电机控制的同时,可直接对控制进度、输入、输出等进行观察、分析、打印等处理。
参考文献
[1] 许春全,胡洪国,杨汝清.多伺服电机的串联同步控制[J].电气自动化,2001,(4).
[2] 潘晓彬,李国平,俞岳平.伺服电机间同步传动的柔性化控制[J].机电工程,1999,(5).
[3] PCL833 3-axis Quadrature Encoder and Counter Card User‘s Manual[Z]. Advance Co. Ltd.,1998.
[4] PCL728 D/A Conveter Card User‘s Manual[Z].Advance Co. Ltd.,1998.
[5] IBM PC XT/AT 系列微机高级程序员编程指南[M].北京:中科院希望电脑技术公司,1987.