发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
如何利用SoPC实现神经网络速度控制器?
136 SoPC FPGA 网络
分享
由于时变非线性和强合的控制系统还没有精确的数学模型,因而传统的依赖被控对象数学模型的控制策略及其控制系统的封闭式结构很难对其实施有效控制。神经网络控制能够很好地克服系统中模型参数的变化和非线性等不确定因素影响,并且随着可编程片上系统SoPC和大规模现场可编程门阵列FPGA的出现,为神经网络控制器的硬件实现提供了新的载体。

0
2019-8-12 06:25:35   评论 分享淘帖 邀请回答

相关问题

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变小,小于给定误差。



2019-8-12 16:36:44 评论

举报

3 应用举例

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



如图6,运动控制系统模块接收到速度给定信号和命令后进行速度调节。速度调节器的输出就是PWM脉宽调制电路的控制信号,之后产生PWM信号传给伺服电机驱动器驱动电机。速度反馈信号由装在电机轴上的光电编码器产生。为了提高反馈信号的分辨率,对光电编码器的输出信号进行倍频,从而提高了编码器的分辨率,也就提高了速度反馈信号的分辨率。速度调节采用神经网络参数辨识自适应控制。

驱动对象是一台直流力矩电机,输入电压为DC27V,额定电流2.5A,最大空载转速600r/min。图7为空载状态下转速指令由0上升到 110 r/min的阶跃输入时的系统跟踪结果。由图7可知,系统能快速响应给定转速的变化,有较好的跟踪能力和稳定性。



本文运用神经网络控制方法并且通过FPGA中的硬件实现速度反馈调控电路,采用C++语言在FPGA片内集成的Nios Ⅱ软核处理器中进行坐标变换和轨迹规划,构成一个完整的机械臂关节速度控制器的SoPC系统。此方案使控制器系统的集成度变高,增加了系统的抗干扰性和稳定性,同时提高了系统调试效率和控制精度,是现代机器人伺服系统向模块化、智能化发展的方向。
2019-8-12 16:36:46 评论

举报

只有小组成员才能发言,加入小组>>

156个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表