一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种神经网络PID闭环控制的FPGA实现方法与流程

2021-12-12 23:36:00 来源:中国专利 TAG:

一种神经网络pid闭环控制的fpga实现方法
技术领域
1.本发明涉及运动控制领域,具体涉及一种神经网络pid闭环控制的fpga实现方法。


背景技术:

2.随着人工智能的快速发展,智能化设备迅速普及。神经网络的模型和学习算法在软件实现上已经取得了巨大成就,但因cpu自身的局限性,只能顺序读取执行命令,无法解决神经网络并行运算的特点,并且随着人工智能的不断快速发展,神经网络算法越来越复杂,在实时性要求比较高的许多场合,比如自动驾驶,数据分析,工业控制等,顺序执行指令大大限制了神经网络的能力。软件串行指令实现bp神经网络一直存在网络收敛速度过慢、实时性差的问题,而可编程逻辑器件fpga的出现给神经网络提供了一种有效的硬件实现方式。可通fpga过并行计算的方式,在一个周期内完成多个运算,且其可编程以及可重构能力大大缩短了神经网络的设计周期,这使得利用硬件实现大型神经网络成为可能。


技术实现要素:

3.本发明的目的在于提供一种神经网络pid闭环控制的fpga实现方法,该方法有利于提高电机速度控制的准确性和实时性。
4.为实现上述目的,本发明的技术方案是:一种神经网络pid闭环控制的fpga实现方法,包括如下步骤:
5.步骤s1、通过外部设备获取期望的转速,通过计算得到误差、期望转速和实际转速之后进入步骤s2;
6.步骤s2、利用bp神经网络算法进行前向传播计算,计算性能指标函数后进入步骤s3;
7.步骤s3、利用梯度下降原理进行误差的反向传播来修正各层神经元的权重,然后进入步骤 s4;
8.步骤s4、在每次训练后,利用闭环pid算法计算并通过pwm技术和四倍频脉冲计数进行控制与测速。
9.在本发明一实施例中,步骤s1中,通过公式e(k)=r(k)

y(k)进行误差计算,其中e(k)、r(k) 和y(k)分别代表k时刻的当前误差、期望转速和实际转速,并作为bp神经网络的输入。
10.在本发明一实施例中,步骤s2中,通过步骤s1得到的神经网络输入,再经过输入层、隐含层和输出层的神经元,神经元包括乘法器、累加器、权值寄存器、激活函数,结果为pid控制器的kp、ki和kd控制参数;
[0011][0012]
式中的和分别代表隐含层的输入和输出层的输入;和分别代表输入层的输出、隐含层的输出和输出层的输出;g(x)和f(x)分别代表隐含层的激活函数和输出层的激活函数;w
ij
和w
jl
分别代表隐含层的各层神经元的权重和输出层的各层神经元的权重;∑代表累加符号,累加符号是当前层第i个神经元的权重与上层所有神经元的输出相乘后的累加。
[0013]
在本发明一实施例中,步骤s3,采用梯度下降原理来修正隐含层和输出层的各个神经元的权重,在训练过程中通过多次迭代改变各层神经元权重,最终通过大量的迭代找到函数极小值点,如公式(2)所示进行权重计算:
[0014][0015]
式中的η为学习率且大于0,γ为惯性系数且大于0,和分别代表上次训练的隐含层的权重和输出层的权重,o
(1)
(i)、分别代表输入层的输出、隐含层的输出,和分别是输出层的当前权重与上层权重的差值和隐含层的当前权重与上层权重的差值,和分别代表输出层各神经元的局部梯度值和隐含层各神经元的局部梯度值,其公式(3)和公式(4)如下所示:
[0016][0017][0018]
在公式(3)和公式(4)中,e(k)为给定转速和实际转速的差值;用符号函数取代控制对象的输出比上输入的变化量,由此计算不精确的影响可通过学习率来补偿;表示输出层的激活函数的导数,其中的自变量为输出层的输入值;为增量式pid算法的比例、积分和微分的乘积项;为隐含层的激活函数的导数,其中的自变量为隐含层的神经元的输入值;为输出层的各神经元的权重与输出层的各神经元的局部梯度值相乘后再累加。
[0019]
在本发明一实施例中,步骤s4,由神经网络训练得到的控制系数作为增量式pid算法的比例、积分和微分系数,公式(5)为增量式pid控制算式;四倍频脉冲计数用于计数一个
时间段的脉冲的个数,再经过m测速法计算电机的实际速度;采用pwm技术调节电机的占空比控制电机的速度;
[0020]
δu(k)=k
p
[e(k)

e(k

1)] k
i
e(k) k
d
[e(k)

2e(k

1) e(k

2)]
ꢀꢀ
(5)
[0021]
其中,k
p
、k
i
和k
d
分别为bp神经网络的输出层输出;对应pid控制算法的比例、积分和微分;e(k)、e(k

1)和e(k

2)分别是当前时刻、上时刻和上上时刻的误差;δu(k)为控制对象的输入的增量变化。
[0022]
在本发明一实施例中,所述隐含层的激活函数和输出层的激活函数分别选择tansing函数和 sigmoid的函数,其使用查找表来实现激活函数,tansing函数值范围在[

1,1]之间并关于零点对称,sigmoid的函数取值范围在[0,1]之间,如果公式(6)所示:
[0023][0024]
e为自然对数的底,e约等于2.71828182;f(x)表示为隐含层激活函数的符号,g(x)表示输出层激活函数的符号。上述公式的含义在于激活函数是用来加入非线性因素,提高神经网络对模型的表达能力,解决线性模型所能解决的问题。
[0025]
相较于现有技术,本发明具有以下有益效果:本发明能够找到最优的控制策略,在复杂环境下具有自动调节控制参数以到达自适应控制并且具有性能可靠和实时性高的特点。
附图说明
[0026]
图1为本发明实施例的bp神经网络算法流程图。
[0027]
图2为本发明实施例的pid算法流程图。
[0028]
图3为本发明实施例的系统结构图。
[0029]
图4为本发明实施例的状态机设计图。
[0030]
图5为本发明实施例的单神经元结构图。
具体实施方式
[0031]
下面结合附图,对本发明的技术方案进行具体说明。
[0032]
应该指出,以下详细说明都是示例性的,旨在对本技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
[0033]
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0034]
如图1至图5所示,本实施例提供了一种神经网络pid闭环控制的fpga实现方法,具体包括以下步骤:
[0035]
步骤s1:通过外部设备获取期望的转速,通过计算得到误差、期望转速和实际转
速;
[0036]
步骤s2:利用bp神经网络算法进行前向传播计算,计算性能指标函数;
[0037]
步骤s3:利用梯度下降原理进行误差的反向传播来修正各层神经元的权重;
[0038]
步骤s4:在每次训练后,利用闭环pid算法计算并通过pwm技术和四倍频脉冲计数进行控制与测速。
[0039]
在本实施例中,在步骤s1中,通过外部设备输入期望输入,然后经过公式e(k)=r(k)

y(k) 进行误差计算,其中e(k)、r(k)和y(k)分别代表k时刻的当前误差、期望转速和实际转速,并将这些pid运动状态量并作为系统的输入。
[0040]
在本实施例中,在步骤s2中,将pid运动状态量作为神经网络输入,再经过输入层、隐含层和输出层的神经元,其单神经元的设计主要包括乘法器、累加器、权值寄存器、激活函数等模块,结果为pid控制器的比例、积分和微分控制参数。
[0041][0042]
式中的和分别代表隐含层的输入和输出层的输入;和分别代表输入层、隐含层和输出层的输出;g(x)和f(x)分别代表隐含层和输出层的激活函数;w
ij
和w
jl
分别代表隐含层和输出层的各层神经元的权重;∑代表累加符号,累加符号是当前层第i 各神经元的权重与上层所有神经元的输出相乘后的累加。
[0043]
在本实施例中,在步骤s3中,采用梯度下降原理来修正隐含层和输出层的各个神经元的权重,在训练过程中通过多次迭代改变各层神经元权重,最终通过大量的迭代找到函数极小值点,如公式(2)所示进行权重计算:
[0044][0045]
式中的η为学习率且大于0,γ为惯性系数且大于0,和分别代表上次训练的隐含层和输出层的权重,和分别是输出层和隐含层的当前权重与上层权重的差值,和分别代表输出层和隐含层各神经元的局部梯度值,其公式(3)和公式(4) 如下所示:
[0046][0047][0048]
在公式(3)和公式(4)中,e(k)为给定转速和实际转速的差值;用符号函数取代控制对象的输出比上输入的变化量,由此计算不精确的影响可以通
过学习率来补偿;表示输出层的激活函数的导数,其中的自变量为输出层的输入值;为增量式pid算法的比例、积分和微分的乘积项;为隐含层的激活函数的导数,其中的自变量为隐含层的个神经元的输入值;为输出层的各神经元的权重与输出层的各神经元的局部梯度值相乘后再累加。
[0049]
在本实施例中,在步骤s4中,由神经网络训练得到的控制系数作为增量式pid算法的比例、积分和微分系数,公式(5)为增量式pid控制算式。四倍频脉冲计数用于计数一个时间段的脉冲的个数,再经过m测速法计算电机的实际速度。采用pwm技术调节电机的占空比控制电机的速度。
[0050]
δu(k)=k
p
[e(k)

e(k

1)] k
i
e(k) k
d
[e(k)

2e(k

1) e(k

2)]
ꢀꢀ
(5)
[0051]
其中,k
p
、k
i
和k
d
分别为bp神经网络的输出层输出;对应pid控制算法的比例、积分和微分。e(k)、e(k

1)和e(k

2)分别是当前时刻、上时刻和上上时刻的误差;δu(k)为控制对象的输入的增量变化。
[0052]
在本实施例中,所述隐含层和输出层的激活函数分别选择tansing函数和sigmoid的函数,其使用查找表来实现激活函数,tansing函数值范围在[

1,1]之间并关于零点对称,sigmoid的函数取值范围在[0,1]之间,如果公式(6)所示:
[0053][0054]
e为自然对数的底,e约等于2.71828182;f(x)表示为隐含层激活函数的符号,g(x)表示输出层激活函数的符号。上述公式的含义在于激活函数是用来加入非线性因素,提高神经网络对模型的表达能力,解决线性模型所能解决的问题。
[0055]
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献