基于复杂可编程逻辑器件的多步进电机分时控制
2010-08-28石科峰何俊华
石科峰, 何俊华
(中国科学院西安光学精密机械研究所,陕西西安 710119)
0 引言
步进电机在工业、航天等领域的应用范围越来越广,不同的应用要求和环境对电机的控制也提出了不同的设计方法。比较常见的针对实现多步进电机的控制有两种:(1)完全基于运动控制卡,该方法设计简单,但需要多个运动控制卡,在硬件的连接上也比较复杂;(2)通过运动控制卡+继电器,对多电机的控制需要多个继电器占用空间且浪费成本。本文介绍的系统采用运动控制卡作为上位机,对电机进行分组选择,复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)作为下位机控制电机的通断,大大简化了电路,并节约了成本。
1 系统总体结构
该系统由运动控制卡模块、CPLD电路、4个组件控制模块(每组件8台,共32台电机)等组成。各组件控制模块相互独立,分别用于控制各组件的电机运动。控制部分采用深圳众为兴数控技术有限公司的ADT8940运动控制卡和Xilinx公司的XC9536CPLD,由于要控制32台电机,为了减少扩展I/O口的设计,系统采用CPLD取代传统的单片机[1]。运动控制卡通过PCI总线与计算机通信,其两个开关量的输出信号作为CPLD的输入信号,进行电机的分组选择,CPLD的输出信号通过模拟开关74HC4052使被选中组的电机导通。系统总体结构如图1所示。
2 系统的硬件设计
2.1 运动控制卡模块
运动控制卡完成电机运动控制的所有细节,包括脉冲和方向信号的输出、加减速的处理、原点、限位及电机的分组选择信号等。运动控制卡根据PC机的实时控制指令向步进电机驱动器发出脉冲、方向等控制信号,通过相应的步进电机驱动器驱动电机运行。系统采用的ADT8940有如下特点[2]:(1)基于PCI总线的高性能伺服/步进控制卡,支持即插即用。(2)脉冲输出方式可用单脉冲(脉冲+方向)或双脉冲(脉冲+脉冲)方式。该系统采用单脉冲方式,最大脉冲频率为2 MHz,采用先进技术,保证在输出频率较高时,频率误差小于0.1%。(3)速度控制可用定速和梯形加减速。(4)位置管理采用两个加/减计数器。一个用于内部管理驱动脉冲输出的逻辑位置计数器;一个用于接收外部的输入,输入信号是A/B相输入的编码器或光栅尺,作为实际位置计数器。(5)计数器位数高达32位,最大范围为-2 147 483 648~+2 147 483 647。(6)所有输入、输出均采用光耦隔离,抗干扰性强。运动控制卡模块的关键在于软件设计,主要是根据PC机的实时指令,由两个开关输出量OUT0、OUT1作为CPLD的输入信号进行电机分组选择,脉冲和方向信号分别接到8块模拟开关74HC4052的16个公共端,由分组信号选通后接入电机。由于ADT8940是四轴控制卡,而系统每个组件有8台电机,因此需要2张运动控制卡,如图2所示。
图1 系统总体框图
2.2 CPLD电路
整个系统有四台组件,但要求同一时间只有一台组件在工作。由于是分时工作的,因此可以通过CPLD控制电路来选择四个中的一个组件,如果需要调整其他组件,可以再次进行选择。系统采用Xilinx公司的XC9536CPLD,属XC9500系列器件,是一款高性能、有特点的可编程逻辑器件。从结构上看,其包含三个单元:宏单元、可编程I/O单元和可编程的内部连线。其主要特点如下:(1)高性能。在所有可编程引脚之间pin-pin延时5 ns,系统的时钟速度可达到100 MHz。(2)容量范围大。容量范围为36个宏单元,可用系统门为800个。(3)5 V在系统编程,可以编程10 000次。(4)具有强大的强脚锁定能力。(5)每个宏单元都有可编程低功耗模式。(6)没有用的引脚有编程接地能力。
图2 运动控制卡
对于CPLD电路,运动控制卡的两个开关量输出信号作为CPLD的输入信号,进行电机的分组选择,CPLD的输出信号通过模拟开关74HC4052使被选中组的电机导通。因此,运动控制卡1的两个开关输出量OUT0、OUT1作为CPLD的输入量,进行电机的分组选择;16个输出量通过I/O口分别接到8个模拟开关74HC4052的位选端S0、S1。具体硬件连接如图3所示。
3 系统的软件设计
软件系统是实现控制系统硬件功能的基本保障,只有在软件的控制下才能实现对设备的运动控制功能。因此,软件在整个系统中占据十分重要的位置,其性能将会直接影响到系统的可靠性、操作方便性等[3]。主程序主要用于组件选择、速度和位置的设定、信息获取及位置的判断等,软件流程如图4所示。
3.1 运动控制卡软件设计
对于组件的选择,因为系统有四台组件,同一时间只有一台组件工作,设定OUT0、OUT1为组件选择信号,给定0为低电平,1为高电平。当选择组件1时,OUT0、OUT1输出00信号。同理,当选择2、3、4 组件时,分别输出01、10、11 信号。
图3 CPLD电路硬件连接图
图4 软件流程图
对于速度的设置,要求在电机不失步的情况下,位置完全由控制卡向电机驱动器发送的脉冲数量来控制[4]。但负载及运行速度的变化,可能会导致电机在起动时由于起动频率过高而出现失步,而在停止时由于惯性作用会发生过冲。为了避免电机失步,就必须采用与电机矩频特性相适应的速度控制方案,即以较低的速度起动,而后逐渐加速到某一速度运行,再逐渐降速直至停止。因此,该系统根据总脉冲数量,通过设置相应的控制参数,自动选择加、减曲线来达到快速起停而又不失步的控制,该控制方法可大大提高电机的运行性能。针对电机驱动方式和位置的设定,ADT8940提供了专门的库函数。
3.2 CPLD软件设计
CPLD电路的主要功能是选择四个组件中的一个。当要选择组件1时,输入00信号,此时其16个I/O口输出8组00信号,然后接入8个模拟开关74HC4052的位选端,此时每个模拟开关选通1个(共8个)电机,此8个电机即为组件1。同样,当输入01信号时,I/O口输出8组01信号,选通组件2;输入10信号时,I/O口输出8组10信号,选通组件3;输入11信号时,I/O口输出8组11信号,选通组件4。流程如图5所示。
图5 CPLD软件选择组件流程
3.3 界面设计
为了更好地实施PC机的指令,需要制作一个简易的操作界面。通过该界面可以直接得到系统的状态、参数等信息,根据此信息可以方便地对这些参数进行调整和处理,以达到精确的控制效果。所有功能尽可能地安排在一个主界面中实现,标题、设置选项、操作按钮等一目了然,在力求简练的同时提供丰富的功能。通过VB编程,得到基本界面如图6所示,包括了起停、组件选择、速度和位置设置及系统的实际信息等。
图6 基本界面
4 试验结果
本文介绍的系统的主要目的是达到对电机位置的精确控制,而对步进电机而言,其位置主要由脉冲数决定,因此对设定位置(设定脉冲数)和实际位置(实际脉冲数)进行了统计,如表1所示,误差率最高达0.25%,控制效果比较理想。
表1 实际位置与设定位置统计
5 结语
该系统采用CPLD进行多电机的分时控制,抗干扰能力强,功耗低,使硬件电路得到简化,节约了成本,并通过软件编程使系统的操作性更强,达到了更高的设计精度,具有较高的实用价值。
[1]李萌萌,彭建朝,许向众.基于FPGA的多通道控制器的设计与模拟实现[J].微计算机信息,2009,14(25):168-170.
[2]深圳众为兴数控技术有限公司.ADT8940用户手册[G].2008.
[3]魏筱瑜,韩焱.基于CPLD和AD9852的多功能信号模拟器设计[J].电子技术应用,2008,11(34):71-73.
[4]关学忠.单片机与TA8435的步进电机细分控制[J].单片机与嵌入式系统应用,2006,3(10):52-54.