基于现场可编程门阵列的网络化步进电机控制器设计*
2011-08-28员天佑
员天佑, 谢 阅
(中国工程物理研究院计算机应用研究所,四川绵阳 621900)
0 引言
随着电子技术和计算机控制技术的发展,步进电机所具有的控制方便、定位准确的特点得到充分发挥,成为运动控制系统的重要执行部件,而对步进电机控制器、驱动器及控制技术的研究也成了热门课题。目前,步进电机控制系统以微控制器、驱动器和微控制器、FPGA、驱动器两种结构最为典型,其工作过程完全受软件控制,在控制精度、工作效率和系统抗干扰性方面有所限制,且普遍不具备网络通信能力,无法实现分布式控制。本文针对上述情况设计了一种基于现场可编程门阵列(Field Programmable Gata Array,FPGA)的网络化步进电机控制器,采用通信芯片、FPGA、驱动芯片的体系结构,实现了FPGA独立控制,网络化分布式管理和全系统板级集成。该系统充分利用了FPGA硬件资源丰富,并行处理能力强、速度快、精度高、稳定性好等特点,摆脱了传统结构对微控制器的依赖,在控制精度、运行速度、系统稳定性和工作方式等方面有所突破。本文针对性的给出了该控制器的硬件结构、工作原理、实现方法和验证结果,供同行参考。
1 硬件结构
网络化步进电机控制器由以太网通信芯片W5100、步进电机驱动芯片A3796和FPGA核心部件EP1C12三大部分构成,如图1所示。W5100是一款多功能的单片网络接口器件,该芯片具备10/100 Mbps的全双工通信能力,自带16 K的内部RAM(用于数据传输缓冲)和硬件化的PCT/IP协议站,提供了3种外部访问接口,使用时只需进行简单的端口(socket)操作。A3796是一款集成化的两相四拍制小功率步进电机驱动芯片,具备逻辑控制、电机驱动、自诊断和故障保护功能。该芯片接口简单,控制方便,有两个独立的H桥,通电顺序由输入逻辑控制。FPGA是智能化步进电机控制器的核心部件,代替传统模式下的微控制器,执行通信控制、电机控制、信息处理、系统诊断等任务。系统选用Altera公司的新一代SRAM工艺的FPGA芯片EP1C12,该芯片具有12 060个LE,2个PLL和52块4 K的内部RAM,在满足系统要求的同时,保有充分的硬件资源可供扩展。在接口设计方面:FPGA和W5100之间采用ISA并行总线连接,15位地址,8位数据,外加 CS/RD/WR控制信号和INT中断信号,数据操作时序和普通RAM基本相同;FPGA和A3796之间采用I/O逻辑信号连接,4个控制信号(PHASE1/2,ENABLE1/2)和2个状态反馈信号(FAUL1/2),控制时序如表1所示。
图1 硬件结构图
表1 A3796控制逻辑真值表
2 设计实现
整个系统以Altera公司的EP1C12芯片为硬件载体,利用QuartusⅡ EDA平台和VHDL硬件描述语言进行设计开发和仿真验证。FPGA作为该网络化步进电机控制器的核心部件,是系统设计的主要内容,为了便于实现该例采用自顶向下的设计方法,将FPGA内部结构按功能分为通信处理器和电机控制器两大部件。其中,通信处理器主要负责W5100芯片的初始化和网络数据的接收/发送工作,电机控制器主要负责参数解析、逻辑控制、速度控制、准确定位和系统诊断工作,它们之间通过内部 FIFO进行数据交换,通过“new_task”和“finish”信号进行同步。具体结构如图2所示,本文重点介绍两大模块的系统结构、工作原理、实现方法和信息交互机制。
2.1 通信处理器
通信处理器由时序电路构成,通过有限状态机实现。状态机采用单进程嵌套式结构,包含17个基本状态,每个基本状态分为若干个子状态,基本状态用于流程控制,子状态用于端口操作。在基本状态中S0为空闲状态,S1~S5为初始化状态,S6~S13为数据接收状态,S14~S17为数据发送状态,空闲状态到工作状态的转换由外部信号(reset,int,finish)触发,工作流程内部的状态转换靠系统时钟和决断语句控制,状态图如图3所示。
图2 FPGA内部结构示意图
图3 通信处理器状态图
状态说明如下。S0为空闲状态,系统在没有接收到任何外部信号的情况下处于该状态,另外在执行完某个操作流程后也要返回该状态。
(1)初始化过程为
S1:设置W5100的基本信息,包括工作模式(MR),中断屏蔽(IMR),重发时间(RTR),重发次数(RCR);
S2:设置网络信息,包括网关地址(GAR),本机物理地址(SHAR),子网掩码(SUBR),本机IP(SIPR);
S3:设置端口0信息,包括发送存储器读指针(S0_TX),接收存储器写指针(S0_RX);
S4:初始化端口0,包括端口模式(S0_MR),端口号(S0_PORT);
S5:通过端口命令寄存器(S0_CR)打开端口,使其处于TCP模式的监听状态,随后返回S0状态。
(2)数据接收过程为
S6:读取中断信息(S0_IR);
S7:对中断信息进行判断,如果接收到有效数据则开始数据读取操作,否则直接进入S13清除中断标志;
S8:读接收缓冲区指针(S0_RX-RD)和字节长度信息(S0_RX_RSR);
S9:计算物理地址(READ_START_ADDRESS=x"6 000"+(x"07FF"and S0_RX-RD),RMSR=0X55);
S10:根据字节数和物理地址依次读取有效数据,并将数据写入1#FIFO;
S11:重设接收数据地址指针寄存器S0_RX_RD(S0_RX_RD=S0_RX_RD+S0_RX_RSR);
S12:向命令寄存器(S0_CR)写入接收完成命令;
S13:清除中断标志,向电机控制器发送“NEW_TASK”信号随后返回S0。
(3)数据发送过程为
S14:读写指针寄存器(S0_TX_WR);
S15:计算物理地址(WRITE_START_ADDRESS=x"4 000"+(x"07FF"and S0_TX_WR),TMSR=0X55);
S16:将2#FIFO中的数据依次读出,并写入发送缓冲区;
S17:向命令寄存器(S0_CR)写入接收完成命令,随后返回S0。
2.2 电机控制器
电机控制器由控制单元、任意分频器、逻辑发生器和位置检测器四部分构成,如图4所示。
图4 电机控制器结构图
2.2.1 工作机制
控制单元在接收到来自通信处理器的“new_task”信号后,先从1#FIFO中读取电机控制所需的各种参数,再根据起始速度设定分频系数(fre_quotiety)初值,然后通过使能信号(en1、en2、en3)起动任意分频器、逻辑发生器和位置检测器等功能模块驱动电机运行,在电机运转过程中根据速度曲线和电机当前位置不断调整分频器的分频系数,以实现对步进电机的加速、匀速、减速控制。控制过程结束后控制单元先关闭外围功能模块,再将本次任务的执行结果和电机的当前状态写入2#FIFO,然后向通信处理器发出“finish”应答信号。步进电机的当前位置在闭环模式下由位置检测器提供,在开环模式下由内部计数器提供。
2.2.2 设计实现
电机控制器的4个基本组件分别由4个并行进程实现,其中控制单元和逻辑发生器采用有限状态机,分频器和位置检测器采用普通的逻辑电路,进程之间通过内部信号进行同步和数据交换。状态机的实现方法和体系结构及通信处理器类似,此处不作详细描述。
3 验证测试
测试环节以FPGA实验板为硬件平台,以TCP-UDP调试助手和SignalTaPⅡ逻辑分析器为测试工具,重点测试了通信处理器的端口服务操作流程及数据传输过程,以及电机控制器的远端控制参数响应过程及输出信号的相关特性(稳定性、准确性、重复性)。测试结果表明,该系统的各项功能满足设计要求,通信功能正常,控制逻辑正确,输出信号稳定、可靠,通过电机控制组合逻辑实现了开环状态下的速度控制和准确定位,控制过程平稳、流畅,系统具有很强的可实现性。系统测试结果如图5所示。
图5 测试结果监控图
4 结语
本文设计了一种基于FPGA的网络化步进电机控制器,通过FPGA的运用,摆脱了传统结构对控制器的依赖,简化了系统结构,提高了系统的稳定性和控制的精确性;通过以太网通信芯片的运用,改变了传统结构基于串行总线的通信方式,增强了系统的开放性,使其具备了网络化分布式控制能力;通过编码器的运用使系统具备了本地闭环控制功能,提高了控制的精确性。验证结果表明,该控制器技术路线可行,功能设置合理,具有较强的应用价值。
该控制器也存在一定局限性,由于采用了集成化的步进电机驱动芯片,驱动能力受到限制,在某些特定的应用场合需要对系统进行局部的改进和优化,用大功率驱动电路代替集成化的步进电机驱动芯片,增强系统的适用性。
[1]张崇巍,李汉强.运动控制系统[M].武汉:武汉理工大学出版社,2002.
[2]郗志刚,周宏甫.运动控制器的发展与现状[J].电气传动自动化,2005,27(3):10-14.
[3]何国军,陈维荣,刘小强.基于DSP与FPGA的运动控制器设计[J].电子应用技术,2009(7):35-37.
[4]李洪伟,袁斯华.基于 QuartusⅡ的 FPGA/CPLD设计[M].北京:电子工业出版社,2006.
[5]吴红星.电机驱动与控制专用集成电路及应用[M].北京:中国电力出版社,2006.
[6]成都浩然电子有限公司.W5100数据手册[G].2008.
[7]贾达,邹益民.基于FPGA的电机控制模块[J].计算机工程与设计,2010,31(14):3237-3240.