《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 业界动态 > 基于SoPC的神经网络速度控制器的实现

基于SoPC的神经网络速度控制器的实现

2009-03-24
作者:李利歌,阎保定,孙立功

    摘 要: 一种基于SoPC的神经网络速度控制器的设计方案。速度控制器采用神经网络参数辨识自适应控制,以现场可编程门阵列(FPGA)为硬件平台,用Nios II软核处理器作为上位机,实现一个完整的速度控制器的片上可编程系统(SoPC)。实验结果表明,该控制系统能够满足现代速度控制系统高速度、高精度的要求。
    关键词: 神经网络;速度控制;片上可编程系统

 

    由于时变非线性和强耦合的控制系统还没有精确的数学模型,因而传统的依赖被控对象数学模型的控制策略及其控制系统的封闭式结构很难对其实施有效控制。神经网络控制能够很好地克服系统中模型参数的变化和非线性等不确定因素影响[1],并且随着可编程片上系统SoPC和大规模现场可编程门阵列FPGA的出现,为神经网络控制器的硬件实现提供了新的载体[2]
    本文以Altera FPGA及内含的一个Nios II嵌入式软核处理器作为上位机来研究机械手臂直流电机速度控制器的片上可编程系统(SoPC)。根据模块化的设计思想,采用Verilog HDL语言,将神经网络控制器和其他电路模块在FPGA芯片内以硬件方式实现。
1 系统总体结构
    系统控制部分采用Altera公司的CycloneII EP2C35芯片,取代了传统的单片机或DSP。FPGA与单片机最大的区别是它的并行性,FPGA能够并行地采集、处理和输出信号,是实现神经网络并行运算的关键,对提高系统的运行速度起了很大的作用。其FPGA芯片内集成的Nios II软核处理器作为上位机,根据末端执行器的速度,采用C++语言进行坐标变换和轨迹规划,定时向伺服控制系统发出控制命令和运行参数。系统总体框图如图1所示。

 


2 神经网络速度控制器
2.1 神经网络参数辨识自适应控制的基本原理

    用作自适应控制器的BPNNC,输入为电机给定转速y与实际转速yf相比较得到的转速误差e及其变化率ec,输出为PWM的控制信号Vp(k)。用作参数辨识的BPNNI的输入为驱动系统的实际输入(即BPNNC的输出值Vp)和电机实际转速yf,输出为辩识的系统输出y*,y*为预测转速,利用y*代替yf,用作RBFNNC的在线训练。图2为参数辨识自适应控制方框图。

 


    本文所用的两个BPNN都是双输入单输出网络,离线训练的样本均通过实验方法获得。NNC的输入样本向量为Xci={e(k),ec(k)},输出样本向量为Yci={Vp(k)};NNI的输入样本向量XIi={Vp(k-1),yf(k-1)},输出样本向量YIi={y*(k)}。网络参数的学习分两步进行:先在离线训练中确定隐层节点的个数及其各层的网络连接初始权值,再通过在线训练自适应地调整权值。
    两个BPNN都采用三层网络。输入层结点只起信号传输作用,隐含层和输出层神经元的激活函数采用Sigmoid函数:
    
网络训练采用负梯度下降的误差反向传播算法。
   
2.2 BPNN在FPGA中的硬件可重构实现
    目前基于SRAM工艺的FPGA具有易失性的特点,每次重新加电后FPGA都要重配置,才能使其进入工作状态。配置信息通常存放在片外存储器中,因此导致FPGA器件的资源配置可改变特性刚好可以满足由上述可知的BP网络的结构可重构、激活函数可重构和学习算法可重构的要求。
    从计算的角度考虑,BP网络的算法可以分为三个步骤,即前向传播、误差反向传播以及权值更新。但是考虑到神经网络的复杂性和设计文件的复用性,BP神经网络的硬件实现必须解决与算法有关的运算速度、计算精度、并行性和可存储性等问题。本文本着层次化、模块化的原则,采用由VerilogHDL硬件描述语言输入的自上而下的设计方法,把BP神经网络分为前向运算模块、误差反传及权值调整模块、权值存储模块、权值分配模块等几大功能模块。系统结构如图3。

 


    将上述各个BP网络运算模块组合后就可以实现一整套人工神经网络。但是仅仅将这些模块简单连在一起并不能让网络进行工作或训练,还必须精确设定在每一个时钟沿对每一个模块发出正确的使能信号,使每一个模块处在工作状态或者停滞状态,并且还必须有合适的地址信号发生器在正确的时间产生正确的地址信号,使每一次数据都能从正确位置读出并写入正确的位置。本文根据BP算法的运算规则设计控制模块,并且在整个系统中采用一个共用的地址发生器。控制模块有七个输出信号,分别是:前向模块使能信号、学习模块使能信号、片内RAM及地址产生模块使能信号、片内RAM写入控制信号wen、片内RAM读出控制信号ren、片外存储器写控制信号save、片外存储器读控制信号load。因此最后的控制器可以使网络进行离线训练时将前向模块、误差反传模块和相应的控制模块同时配置到FPGA中进行网络训练。当训练好的网络正常工作时,只要在FPGA中配置前向模块和相应的控制模块就可以高速运行该神经网络。逻辑工作流程如图4所示。

 


2.3 BP网络控制器的仿真结果
    文献[6]中,通过对一些典型应用的研究和分析发现,16位定点数是不削弱神经网络能力的最小精度要求。为避免运算规模过于庞大和节约芯片资源,本设计对32位的输出数据进行了截尾操作,仅取32位中的前16位。
    源代码通过功能仿真和时序仿真测试后综合生成网表文件,最后在Altera公司的Cyclone II EP2C35器件中实现。BP网络控制器的QuartusⅡ仿真结果如图5所示。由图5可知经过多次训练后系统输出值f越来越接近于给定值t,误差err变小,小于给定误差。

 


3 应用举例
    根据前面的仿真结果,把神经网络速度控制器应用在一个机械臂上,具体实验与结果如图6。

 


    如图6,运动控制系统模块接收到速度给定信号和命令后进行速度调节。速度调节器的输出就是PWM脉宽调制电路的控制信号,之后产生PWM信号传给伺服电机驱动器驱动电机。速度反馈信号由装在电机轴上的光电编码器产生。为了提高反馈信号的分辨率,对光电编码器的输出信号进行倍频,从而提高了编码器的分辨率,也就提高了速度反馈信号的分辨率。速度调节采用神经网络参数辨识自适应控制。
    驱动对象是一台直流力矩电机,输入电压为DC27V,额定电流2.5A,最大空载转速600r/min。图7为空载状态下转速指令由0上升到 110 r/min的阶跃输入时的系统跟踪结果。由图7可知,系统能快速响应给定转速的变化,有较好的跟踪能力和稳定性。

 


    本文运用神经网络控制方法并且通过FPGA中的硬件实现速度反馈调控电路,采用C++语言在FPGA片内集成的Nios Ⅱ软核处理器中进行坐标变换和轨迹规划,构成一个完整的机械臂关节速度控制器的SoPC系统。此方案使控制器系统的集成度变高,增加了系统的抗干扰性和稳定性,同时提高了系统调试效率和控制精度,是现代机器人伺服系统向模块化、智能化发展的方向。
参考文献
[1] 魏海坤.神经网络结构设计的理论与方法[M].北京:国防工业出版社,2005.
[2] 李昂,王沁,李占才,等.基于FPGA的神经网络硬件实现方法[J].北京科技大学学报,2007,29(1):90-95.
[3] 范峥,刘宏飞,戚新波.交流伺服电动机神经PID自适应控制器的研究与开发[J].微特电机,2006(8).
[4] 周兆勇,李铁才,高桥敏男.基于矢量控制的高性能交流电机速度伺服控制器的FPGA实现[J].中国电机工程学报,2004,24(5):168-173.
[5] 王金明.Verilog HDL程序设计教程[M].北京:电子工业出版社,2005.
[6] HIKAWA H.A new digital pulse-mode neuron with adjustable activation function[J].IEEE Trans Neural Netw,2003,14(1):236-42.
[7] 夏长亮.基于RBF神经网络的超声波电机参数辨识与模型参考自适应控制[J].中国电机工程学报,2004(7):117-121.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。