传统的步进电机多轴控制器是以微控制器(MCU)/微处理器(MPU)/专用集成电路(ASIC)/数字信号处理器(DSP)为核心,再辅以其他外围分立器件构成的。这种结构的步进电机多轴控制器的优点在于其硬件结构清晰,易于复制再现,对于类似的应用只需要修改其应用软件即可。然而对于多数实际应用来说,单纯依靠软件的修改通常不足以使其达到其他应用场合所需的要求,并且当系统升级时,通常需要对整个电路重新进行设计,这样既延长了升级的周期,又增加了升级成本。因而在实际应用中受到了一定的限制。由于可编程逻辑器件(PLD)技术的飞速发展,使得单一FPGA/CPLD芯片内部可以集成多个分立元件的功能,因此在对传统控制器的改进中,通常使用一个FPGA/CPLD芯片将传统控制器中的数字电路部分集成到一起,从而形成具有处理器一FPCA/CPLD-模拟电路结构形式的控制器。这类控制器比起传统控制器而言,其硬件结构的可扩展性得到了很大的提高。这是因为FPGA/CPLD芯片具有在不改变其引脚定义的情况下可对其内部逻辑关系进行重构的特性,因而对于不同的应用,可以通过改变FPGA/CPLD芯片的内部结构来满足某些特殊的应用需求,从而在一定程度上使得系统的开发升级更为简便,而且成本也更为低廉。因此,这种改进型的多步进电机控制器的应用范围也得到了很大的扩展。但是,这种结构的控制器也存在着这样的问题:在FPGA外部仍然存在一个处理器。这样不仅增加了控制器的尺寸,而且在升级处理器时,硬件电路需要重新设计,使升级成本仍然相对较高。
近年来,由于IP资源复用理念得到了普遍的认同并成为主要设计方式,MCU、DSP、MPU等嵌入式处理器IP成为了FPGA应用的核心。随着处理器内核以IP的形式嵌入到FPGA中,未来的电路板上可能只有两部分电路:模拟部分(包括电源)以及FPGA芯片和一些大容量存储器。这一切都表明可编程片上系统(SOPC)正在成为FPGA最重要的发展方向。与传统多轴控制器相比。这种基于SOPC的步进电机多轴控制器具有体积小、集成度高、硬件结构稳定、易于开发升级且成本低廉等特点,尤其适用于仪器仪表内部控制系统的设计。本文所论述的步进电机多轴控制器就是基于SOPC方式的步进电机多轴控制器。
1 基于SOPC的步进电机多轴控制器的硬件结构
基于SOPC的步进电机多轴控制器的结构框图如图2所示。其外部电路的构成包含模拟电路和数宇电路两部分。模拟电路包括供电电源及功率驱动。数字电路主要为FPGA芯片及其相关电路。
如图2,基于SOPC的步进电机多轴控制器包含两部分:FPGA芯片及其配置芯片的数字部分和电机控制及位置反馈部分。其中,虚线框内部表示FPGA芯片的内部结构,空心箭头表示FPGA芯片内部的数据连线,实心箭头表示外部连线。FPGA芯片内部由MPU模块、通讯模块、RAM模块、ROM模块、计数器模块、电机控制模块等构成。当控制器失电时,这些模块信息存储在配置芯片中,等到系统重新上电时,FPGA芯片再从配置芯片中读取其配置信息,重构内部模块结构。MPU模块是整个控制器的核心,它的功能等同于事实的微处理器。它通过通讯模块与外部主机进行数据的交换,并将数据存储在RAM模块中。RAM模块同时还用于暂存MPU模块执行ROM模块所存储的程序段时的某些中间过程值,而MPU则根据ROM模块中程序执行的结果输出相应的控制信号给电机控制模块。电机控制模块的输出连接到实际的芯片引脚上,以驱动相应的功率驱动电路工作,从而实现步进电机的运转。在闭环控制时,步进电机轴端的编码器模块输出编码信号。该信号经编码器反馈电路进行隔离等处理之后,由FPGA芯片内部的计数器模块进行计数,并将结果传输给MPU模块进行处理,从而形成位置/速度的闭环控制。图2只表示了单个步进电机闭环控制的结构框图,对于多轴步进电机而言,FPGA芯片只需要增加相应的功率驱动电路及编码器反馈电路即可。电机控制模块和计数器模块都在FPGA内部集成,因而硬件电路的结构较为稳定。
由于IP技术的飞速发展,在图2中的FPGA芯片内部模块中,MPU、ROM、RAM、计数模块等的IP核都可以很方便地获得,而电机控制模块由于与具体的功率放大电路实际相关,因而通常需要用户自行设计。下面介绍这一模块的设计。
2 二相步进电机控制模块结构
以小惯量的二相步进电机为例阐述步进电机控制模块的结构。该步进电机由两片PBL3717a芯片所驱动。其驱动时序及其控制模块如图3、图4所示。
在控制模块中,mtr_cp为步进电机的脉冲输入端,每个脉冲驱动步进电机前进,后退一步,脉冲频率即为步进电机运行的速度,因此这个脉冲信号由MPU模块根据ROM内部程序的执行结果输出。mtr_dir为步进电机的正/反转切换信号,mtr_mode为步进电机全/半步运行方式选择,mtr_on_off是电机的启停位,该位置l时,mtr_cp能够驱动步进电机工作;为O时,mtr_cp脉冲被封锁。设置该位的目的是为了在多个步进电机工作时分别控制各个电机的启停而不影响到其他电机的运行状态。mtr_reset是控制模块复位信号,A_out为图3中下标为A的驱动芯片控制信号,B_out为图3中下标为B的驱动芯片的控制信号。
由上分析,利用上述多个步进电机控制模块以图5所示的方式进行适当的连接,就能够构成本文所论述的基于SOPC的步进电机多轴控制器。由于MPU、ROM、RAM、电机控制模块等都是以功能模块的形式集成在FPGA芯片内部,因此大大缩小了基于SOPC的步进电机多轴控制器的尺寸。这些功能模块可以根据实际的应用进行添加或删除(即对FPGA芯片的内部逻辑结构进行重构),因此极大地增强了系统设计的灵活性,能更好地满足不同应用领域的需求。
IP技术的飞速发展使得开发人员很容易获得多数通用模块的可复用IP核,从而减轻了开发人员的负担,缩短了开发周期。当系统需要升级时,也不需要对硬件电路重新设计,只需通过修改FPGA中相应模块的配置文件,因此节约了控制器的升级成本。同时,由于MPU模块的功能与实际的微处理器相同,因而在微处理器上可运行的控制程序也可以很容易移植到MPU模块中运行。为了便于阐述基于SOPC的步进电机多轴控制器,本文侧重于阐述多个步进电机同速恒速运行的情况。对于变速运行的情况,可通过在MPU的脉冲输出端和各电机控制模块的脉冲输入端之间插入MPU可控的分频模块来获得。同时增加插补模块以实现不同电机之间的联动功能。
本文所述的基于SOPC的步进电机多轴控制器应用于半自动生化分析仪的取样针移位系统中,能够实现传统步进电机多轴控制器的所有控制功能,控制器的尺寸小于传统控制器;当控制器的数字电路部分需要修改时,无需更换控制器的实际硬件电路,大大方便了控制器的研究设计工作并节约了相应的开发成本。