在玩51单片机时就想玩神经网络PID控制,但51单片机的数据存储器地址空间很小,就普通的应用,要增加一个变量尚且“抖抖哗哗”,更遑论玩神经网络PID控制,那可需要非常多的变量,而玩STM32F407就不存在这方面问题了。转入正题,大部分书上的神经网络PID控制,讲的是BP神经网络PID控制,举的例子都是非线性系统,通常仿真效果都不错,但BP神经网络PID控制有一个限制,就是kp、ki、kd小于1,这就限制了它的应用范围,如果kp、ki、kd>1,那就得改进,而刘金琨的《先进PID控制 MATLAB仿真》一书中讲了一种RBF神经网络PID控制,它突破了前者的限制,其原理如图1所示,图中RBF NN1神经网络根据偏差e、Jacobian等信息计算Δkp、Δki、Δkd,RBF NN2神经网络用于系统辨识,然后算出Jacobian信息并传递给RBF NN1,PID控制器的实际PID参数为:kp=kp0+Δkp、ki=ki0+Δki、kd=kd0+Δkd,剩下的过程就是普通PID控制了,C语言中实现径向基神经网络(RBF NN)并不难,只需照抄计算公式就行,如果说有什么注意要点的话,那就是要细心、细心、再细心,我们在STM32F407中做的神经网络PID控制,其效果如图2所示,从图中可以看出,这是一个大纯滞后系统,系统中也加入有白噪声,我们可以看出控制效果还是相当好,此外,一般说来,神经网络PID控制对初始PID值的选取不是很敏感,当然也不能偏的太多。
这个专题就到此结束了,本来还想玩实时PID参数优化、预测控制等APC内容,但由于:1玩电脑头颈很累,2也兴趣转移,所以就不想再玩下去了,以后再说了。
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。