基于MicroBlaze软核的反作用飞轮控制器设计

2010-09-18 02:31赵万良刘胜忠戎蒙恬
上海航天 2010年3期
关键词:无刷电机飞轮直流

赵万良,赵 俊,刘胜忠,戎蒙恬

(1.上海交通大学 电子信息与电气工程学院,上海 200030;2.上海航天控制工程研究所,上海 200233)

0 引言

反作用飞轮是卫星的关键执行机构之一,它接收计算机的控制指令,通过对轮体的加减速产生反作用力矩,与卫星本体进行动量交换,从而精确控制卫星姿态。反作用飞轮控制系统是一个直流无刷电机控制系统,常用的反作用飞轮控制器电路普遍采用单片机或数字信号处理器(DSP)作为中央控制器。如国内某15 N◦m◦s反作用飞轮,以单片机为中央控制器,能较好地满足零动量控制卫星精确控制姿态要求,已在多颗卫星中使用。但该类控制器除中央控制器外还需要传感器信号处理电路、电机控制电路等模拟或数字电路的支持,电路复杂,不易采用小型化设计。近年来,随着卫星技术特别是小卫星技术的发展,要求反作用飞轮尽可能小而轻。对一体化反作用飞轮(控制器线路与转动部件合为一个单机)来说,小型化的主要难点是控制器线路的小型化。而FPGA技术及可编程片上系统的SOPC技术可满足此种需求。在国外,FPGA已广泛用于各类卫星、航天飞机和宇宙飞船;在国内,SOPC技术在民用产品中有广泛应用。本文对基于FPGA的反作用飞轮控制器设计进行了研究。

1 反作用飞轮控制器设计

1.1 MicroBlaze软核及开发环境

MicroBlaze软核是一种针对Xilinx公司FPGA器件设计的功能强大的标准32位精简指令集计算机(RISC)处理器[1]。在FPGA内实现约占用400 Sliecs资源。用EDK软件在可编程器件中进行配置,具较强的灵活性。

MicroBlaze处理器体系结构如图1所示。与大多数RISC处理器相同,Mciorblaze有程序计数器、指令缓冲区、指令译码、加减运算、逻辑运算、移位和乘法器等。内部有通用寄存器32个和专用寄存器(PC指针和MSR状态标志寄存器)2个,均为32位。指令字长32位,支持3个操作数和寄存器-寄存器与寄存器-立即数寻址2种方式;指令按功能划分为逻辑运算、算术运算、分支、存储器读/写和特殊指令等。MicroBlaze还有指令和数据缓存(Cache),指令执行分为三级流水线,分别为取指、译码、执行。MicroBlaze处理器采用哈佛结构的独立总线结构,包括本地块存储器总线(LMB)、片内外设总线(OPB)和8位输入8位输出快速链路接口总线(FSL),可响应软件和硬件中断,进行异常处理,通过外加控制逻辑可扩展外部中断[2]。本文使用6.3版EDK工具进行开发。

图1 MicroBlaze处理器结构Fig.1 Block diagram of MicroBlazecore

1.2 反作用飞轮控制器结构

反作用飞轮控制器主要功能是精确控制直流无刷电机的电流和转速,故控制器采用速度、电流双环控制系统。反作用飞轮控制器组成如图2所示。其中:控制器将Mciroblaze及其外围模块、deltasigma A/D转换器、直流无刷电机控制器嵌入一片FPGA;电流采集电路检测电机电流,通过隔离电路送至FPGA内部的A/D转换器采集电流,在FPGA内部形成电流闭环控制;光电编码器检测电机位置,输出位置脉冲信号送FPGA计数、运算,形成速度闭环控制。此外,光电编码器检测直流无刷电机运转时的角位移和旋转方向,同时还提供电机位置信号,供直流无刷电机换向使用;隔离电路使用运算放大器隔离电路;串行通信使用RS 422电平;A/D转换器使用EDK工具中自带的可集入FPGA的deltasigma A/D转换器。

图2 反作用飞轮控制器组成Fig.2 Structureof The controller

FPGA内部模块如图3所示。其中:UART控制器负责与上位机通信,将上位机发送的转速指令nF送至中央处理器(CPU),并将飞轮信息返回上位机;deltasigma A/D转换器采集电机电流Im,通过OPB总线送至CPU;速度检测模块检测光电编码器信号,所得反作用飞轮的转速脉冲计数值nM和方向信号DIR送直流无刷电机控制器,由直流无刷电机控制器通过OPB总线馈送CPU;CPU软件通过nF,nM,Im,DIR进行比例积分微分(PID)控制,向直流无刷电机控制器输出控制值ΔI;直流无刷电机控制器由直流无刷电机位置译码模块对电机位置信号进行译码,形成直流无刷电机控制时序,再根据ΔI进行脉宽调制(PWM),产生电机驱动信号驱动电机驱动电路,由此完成一个反作用飞轮的控制周期。

1.3 FPGA内核配置与设计

MicroBlaze软核处理器的开发流程如图4所示。图中:硬件设计(图左侧)与软件设计(图右侧)通过Data2BRAM连接。Data2BRAM提供了一种简便方法以修改Block RAM内容而无需预编译整个设计[3]。

图4 MicroBlaze软硬件开发流程Fig.4 MicroBlaze software and hardwaredevelopment flow

1.3.1 硬件设计

在配置外设前先设计自定义IP核,可在EDK工具提供的IP核基础上开发,或利用EDK工具进行全新的IP核开发。EDK软件中有Create Import Peripheral向导,可帮助设计者完成一个定制的IP核模板[4]。该模板采用超高速硬件描述语言(VHDL)设计,设计仅是在生成的文件中修改或添加程序。用该向导还可创建ISE工程文件,方便地将IP核导入ISE中进行修改、仿真。若有需要还可在ISE环境中用Xilinx公司的片内逻辑分析仪(chipscope)调试硬件。本文设计中仅有直流无刷电机控制器IP核需全新设计,IP核通过IP界面(IPIF)与OPB总线连接。

反作用飞轮控制器需添加的主要IP核见表1。添加IP核后还需对各IP核与OPB的连接关系、地址、端口和参数进行配置。在EDK工具的集成开发环境XPS中,通过微处理器硬件规范(MHS)文件和微处理器外围设备描述(MPD)文件定义包括MicroBlaze处理器软核的整个硬件系统。其中,MHS文件定义了嵌入式系统的总线结构、外设、处理器、系统连接、中断请求配置和地址空间映射等硬件配置结构,该文件还包含了外围设备的输入输出端口及参数。EDK工具开发环境中有IP核添加/修改向导(Add/Edit Cores)工具,在图形界面中进行IP核添加、修改IP核操作。所有操作均直接与MHS文件关联,用户也可直接修改MHS文件,但建议在Add/Edit Cores工具中修改,以防因考虑不周而出错。

完成上述操作后,硬件平台即构建完成。结合用户约束ucf文件对整个系统进行综合和布局布线。如有需要,可用硬件仿真模型产生器(SimGen)产生仿真模型,用Active-HDL等仿真软件进行硬件仿真。

表1 反作用飞轮控制器主要IP核Tab.1 Primary IP coreof reaction wheel controller

1.3.2 软件设计

软件设计分为驱动层和应用层两个层次。MicroBlaze处理器通过驱动程序对外部模块进行操作,该驱动程序即为驱动层软件。对EDK工具提供的IP核,Xilinx公司提供的驱动程序也分为底层和高层两个层次。可根据需要选择合适的API函数编写应用程序,API函数可以在API Doc中查阅。自己开发IP核时,需编写相应的驱动程序,EDK工具在创建IP核模板同时创建了与该IP核名称相应的头文件和C语言文件,用户在这些文件中修改即可完成驱动程序设计。EDK软件提供S/W settings...工具,可用此工具设置各个IP核的软件,所有的设置均直接与微处理器软件描述(MSS)文件关联。MSS文件用于描述软件体系结构,它主要定义了系统的内核、软件库、驱动程序和文件系统的参数。与MHS文件相同,MSS文件也可手动修改。

应用层软件即为反作用飞轮控制软件。它在驱动层的基础上编写算法程序,完成整个反作用飞轮的控制。反作用飞轮软件主流程如图5所示。反作用飞轮软件通过定时器中断完成电机电流和光电编码器脉冲的采集;在串口中断程序中接收上位机的转速指令;在主程序中对上述两个中断采集的电机电流、光电编码器脉冲、上位机转速指令进行必要的运算,编制PID算法,对速度和电流进行PID控制。该软件主流程与单片机或DSP为核心的反作用飞轮软件主流程一致,程序代码用C语言编写。

图5 反作用飞轮软件主流程Fig.5 Main flowchart of reaction wheel software

XPS所集成的软件工程管理工具允许在一个硬件平台上同时开发多个软件工程。但编译时只允许选用其中一个。完成软件代码编写后,通过EDK工具集成的XMD和GDB调试器对代码进行仿真和调试,也可配合ChipScope进行硬件及软件的协同调试。XMD通过微处理器调试(MDM)模块和JTAG口连接目标板上的CPU,GDB可对程序进行单步调试或断点设置。软件调试完成后调用EDK工具中的GNU工具进行编译。程序编译后生成为elf文件,通过Update bitstream工具将程序与硬件配置文件合成为Download.bit文件,下载到目标板。FPGA先根据硬件配置信息建立硬件系统,并将程序代码映射至片内BRAM,然后启动MicroBlaze,运行程序。

2 关键技术

与传统反作用飞轮控制器相比,本文反作用飞轮控制器在FPGA片内实现了电流环、电机控制的高度集成。本文反作用飞轮控制器的关键如下。

a)片内电流环实现

传统反作用飞轮控制器电流环均用模拟电路实现,CPU需通过数/模(D/A)转换将电流控制量转换为模拟电压给电流环控制,再由电流环控制电机控制专用芯片。本文设计将CPU、电流环和电机控制专用芯片都集入FPGA,避免了模拟式电流环所需的数字信号和模拟信号的相互转换,实现全数字量控制。

b)直流无刷电机控制模块

直流无刷电机控制模块涉及光电编码器信号处理、电机位置信号译码、PWM信号产生、电机控制(包括死区控制、电机异常控制)、IPIF和OPB总线等。该模块实现了本设计中除MicroBlaze系统外的其他所有功能。

c)A/D转换

因电机电流为模拟信号,需通过A/D转换成数字信号。本文设计采用可直接集成在FPGA中的deltasigma A/D转换器,外围只需加少量元器件。EDK工具提供专门的IP核。应用此A/D转换可避免外加A/D转换器,既满足系统需求,又显著降低了系统软硬件设计的复杂度。

3 试验结果

制作反作用飞轮控制器原理样机一套。其中:目标芯片采用Xilinx公司Virtex系列30万门的XCV300 FPGA,系统时钟频率为16 MHz。反作用飞轮电机、轮体组件实际对接试验中取各组件参数为:电机力矩系数0.062 N◦m/A,电机单相电阻0.49Ω,电机驱动电压28 V,轮体加电机转动惯量为0.040 9 kg◦m2,结果表明:反作用飞轮控制器实现了反作用飞轮的控制要求。反作用飞轮控制器输出至电机驱动电路中的两路脉冲宽度调制(PWM)波形输出如图6所示,试验时转速如图7所示。当指令转速为100 r/min时,本文控制器控制的速度偏差小于±1 r/min。该误差主要是电流采集误差引起的。

图6 PWM波形Fig.6 Wavef orm of PWM

图7 反作用飞轮转速Fig.7 Rotation speed of reaction wheel

4 结束语

本文介绍了一种使用MicroBlaze软核设计的反作用飞轮控制器,在一片FPGA内集成了多片专用芯片的功能,实现了反作用飞轮控制器小型化、集成化。与传统反作用飞轮控制器相比,该控制器的电路体积和可靠性更优,且系统可灵活配置,能在不更改电路板条件下对硬件配置进行适当修改,如改型成动量轮控制器、交流电机控制器等其他特定的电机控制器。本文设计对其他航天产品的小型化有一定的参考意义。

[1]Xilinx Company.Xilinx virtex data sheet[M].San Jos'e:Xilinx Company,2004.

[2]Xilinx Company.MicroBlaze processor reference guide(V4.0)[M].San Jos'e:Xilinx Company,2004.

[3]谭积洲,郭 滨.MicroBlaze软核处理器在遥测数据采集中的应用[J].信息与电子工程,2006,4(4):309-313.

[4]杨强浩.基于EDK的FPGA嵌入式系统开发[M].北京:机械工业出版社,2008.

猜你喜欢
无刷电机飞轮直流
基于强化学习的直流蒸汽发生器控制策略研究
基于STM32F407的无刷电机调速系统设计
无刷电机霍尔传感器位置及电机旋向确认方法研究
“宁电入湘”直流工程再提速
基于神经元控制的无刷电机调速建模仿真
飞轮座注射模设计
柔性发动机用飞轮转动工装的设计及应用
基于DSP的直流无刷电机电子控制方法研究
直流稳压电源实验教学的创新性探索与实践
某汽油机飞轮齿圈断裂分析