您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 神经网络PID实验平台在WinCC中的实现
神经网络PID实验平台在WinCC中的实现摘要:分析了带死区的积分分离PID控制算法,在此基础上,将应用最广泛的PID控制器与具有自学习功能的神经网络相结合,提出了基于BP神经网络的PID控制算法。并利用WinCC的全局脚本编辑器,将用户自行开发的神经网络控制算法嵌入WinCC中,开发了神经网络实验平台,然后通过WinCC与PLC之间的通讯,实现对被控实验对象的神经网络控制。关键词:带死区的积分分离PID;WinCC;实验平台;神经网络的PID中图分类号:TP31文献标识码:文章编号:Abstract:Analyzingofthedead-sectionandintegralsplittingPIDalgorithm,andmeltingthewide-usedPIDcontrollerandtheautomaticlearningnervenetwork,thepapergotaPIDcontrolalgorithmbasedontheBPnetwork.ThenetworkalgorithmisembeddedinWinCCandaneuralnetworklabtableisexploredbytheglobescenarioseditorinWinCC.ThelabtargetiscontrolledbynervenetworkthroughthecommunicationbetweentheWinCCandPLC.Keywords:dead-sectionandintegralsplittingPID;WinCC;labtable;neuralnetworkPID1前言为了适应自动化及相关专业教学需要,加深学生对控制理论及控制工程的认识和理解,实验教学控制系统除采用常规PID及改进算法外,也可采用了自适应、预测模型、模糊专家系统、神经网络等智能控制算法。为了方便学生了解人工神经网络原理及特点,对神经网络模型、控制算法及应用技术有一个基本的认识,在以有的控制系统实验软件中嵌入了神经网络控制算法,开发神经网络实验平台,用以调节PID控制器的三个可调参数Kp、KI、KD。2带死区的积分分离PID控制算法带死区积分分离PID控制实验原理框图如图1所示。变送器检测得到被控对象的输出4~20mA的电流反馈信号输入PLC,由AI模块经A/D转换成数字信号yf(t)后。再与从上位机键盘输入的给定值yr(t)(从键盘输入)比较,得到偏差信号e(t)。PLC根据偏差信号e(t),执行带死区积分分离PID控制算法程序,计算出控制量,由AO模块经D/A转换成4~20mA的电流控制信号u(t),控制广义对象的输出y(t),使其跟踪给定值yr(t)。图1带死区积分分离PID控制实验原理在普通的PID数字控制器中引入积分环节的目的,主要是为了消除静差、提高精度。但在过程的启动、结束或大幅度增减设定值时,会造成PID运算的积分积累,致使算得的控制量超过执行机构可能最大的动作范围所对应的极限控制量,最终引起系统较大的超调,甚至引起系统的振荡,这是大多数工业生产过程所不允许的。为了避免上述情况发生,采用积分分离PID控制算法,既保持了积分作用,又可以减小超调量,使得控制性能有了较大的改善。其具体实现如下:(1)根据实际情况,设定一阈值ε0。(2)当│e(k)│ε时,也即偏差值│e(k)│比较大时,采用PD控制,可避免过大的超调,又使系统有较快的响应。(3)当│e(k)│≤ε时,也即偏差值│e(k)│比较小时,采用PID控制,可保证系统的控制精度。对于算法实现,可在积分项乘一个系数β,β按下式取值:将增量式PID算式写成积分分离形式即为当│e(k)│ε时,即β=0,进行PD控制,PD控制算法为:当│e(k)│≤ε时,即β=1,进行PID控制,PID控制算法为:另外,实际系统要求机械装置运动到位后,控制作用不要频繁变动,以免机械磨损(或电子调节阀过热烧坏)。为了避免控制动作的过于频繁,消除频繁动作引起的振荡,只在累积偏差超出一定的范围后才作调整,可采用带死区的PID控制。相应的控制算式如下:式中,死区εo(εo0)是一个可调的参数,其具体数字可根据实际控制对象确定。若εo值太小,使动作过于频繁,达不到稳定被控对象的目的;若εo值太大,则系统将产生较大的稳态误差,降低控制精度。此控制系统实际上是一个非线性系统,即当│e(k)│≤εo时,PID调节器控制量输出为零;当│e(k)│εo,PID调节器由控制量输出。3基于BP神经网络的PID控制算法对于经验不足的工程人员来说,要达到好的PID控制效果并不是很容易。这是因为常规PID控制的关键问题就是PID参数整定,且一旦整定计算好后,在整个控制过程中都是固定不变的,而实际过程中,由于系统参数发生变化,使系统很难达到最佳的控制效果。为了解决常规数字PID的不足,利用神经网络的自学习特性,修正PID控制器的控制参数。通过神经网络自身的学习,可以找到PID控制规律下最优的P、I、D参数。基于BP神经网络的PID控制系统结构框图如图2所示。图2神经网络PID控制原理框图控制器由两部分组成:(1)常规PID控制器:直接对被控对象进行闭环控制,并且三个参数Kp,KI,KD可在线或离线整定;(2)BP神经网络NN:根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化。即使输出层神经元的输出状态对应于PID控制器的三个可调参数Kp,KI,KD,通过神经网络的自身学习、加权系数调整,从而使其稳定状态对应于某种最优控制下的PID控制器参数。BP神经网络多变量学习算法由前向传播算法和反向传播算法两部分组成。设BP神经网络是一个3层BP网络,其结构如图3所示,输入层节点为3个,分别为输入设定值yr、偏差信号e和偏差变化量ec;Q个隐含层节点;输出层节点为3个,分别为PID控制器的三个可调参数Kp,KI,KD。图3BP神经网络结构4神经网络PID控制算法在WinCC中的实现为了方便学生了解人工神经网络原理及特点,对神经网络模型、控制算法及应用技术有一个基本的认识,在网络控制系统实验软件中嵌入了神经网络控制算法,用以调节PID控制器的三个可调参数Kp,KI,KD。由此,在WinCC中开发了神经网络实验平台,其界面如图3所示。图3神经网络实验平台WinCC的全局脚本编辑器向用户提供了一个扩展系统功能接口,用户可以在这里用C语言编写函数,这些函数可以在整个工程中被调用。将神经网络控制算法嵌入WinCC的工作主要在这里完成。全局脚本编辑器可生成两种不同的函数:项目函数(ProjectFunctions)和动作函数(Actions),这两种函数用于完成不同的功能。项目函数与高级语言中的函数功能相似,用来完成一定的计算、显示、数据处理等功能。项目函数本身不被执行,必须被一个主函数调用后才能够完成预定功能。而动作函数则不一样,在WinCC中可以给动作增加触发器,一旦满足触发条件,动作就能够自动执行。在WinCC中通常用项目函数完成数据计算、处理等功能后,然后在动作中调用该项目函数。这样在满足触发条件的情况下,项目函数便能够不断地执行。1)生成项目程序ANN_PID()在WinCC全局脚本中生成一个项目函数ANN_PID(),用它来完成神经网络控制算法,其源程序如下:voidANN_PID(){//定义样本数据库和中间计算变量intInputNum;//实际的输入节点数intHideNum;//实际的隐层节点数intTrainNum;//实际的训练次数longNNTnP1;//样本个数……//从WinCC中获取控制算法计算所需的变量η=GetTagDouble(“LearnSpeed”);//获取学习速率ηα=GetTagDouble(“inertia”);//获取惯性系数αel=GetTagDouble(“ErrorLevel”);//获取精度要求el……}2)在WinCC中调用神经网络控制算法程序ANN_PID()由于项目函数本身不能被执行,必须生成一个全局动作(GlobeActions)来调用这个项目函数ANN_PID()。为了将所添加的项目函数和标准函数告知WinCC编译器,必须将#include“apdefap.h”作为第一行添加到全局动作函数代码中。其全局动作源程序如下:#include“apdefap.h”//确保当前动作能够使用项目函数ANN_PID()intgscAction(void){voidANN_PID();intstatus;//定义一个状态,确定神经网络训练开始status=GetTagBit(“ANN_STATUS”);if(status==1){ANN_PID();//执行项目函数ANN_PID()算法程序}return1;}上述程序中,ANN_PID()是预先生成的神经网络控制算法的项目函数名,ANN_STATUS是在标签管理器中定义的一个位型标签,用于确定神经网络训练的开始。GetTagBit(“TagName”)是WinCC中定义好的内部函数,用于读取位型标签值。在完成以上操作后,还需添加触发器。假定控制算法采样周期为T,则在全局动作中添加一个触发周期为T的触发信号。这样,每隔T时间全局动作就会调用神经网络控制算法一次,控制算法就会输出一组PID控制参数。5实验效果及分析通过对控制系统进行带死区的积分分离PID控制,获取大量的数据样本yr(k)、e(k)、ec(k)、Kp,KI,KD,并对样本进行归一化处理。对归一化处理后的样本数据库进行训练,便可调整NN各层之间的连接权值。第一次训练时,神经网络的权值取[-0.5~0.5]的随机值,训练得到的各层神经元的阈值和它们之间的权值都以文件的形式保存起来。为了简便直观的实现BP神经网络控制算法,避免因获取样本及对样本进行处理而占用宝贵的时间,在以后的离线训练(或在线训练)中,只要网络结构不变,可以直接利用上面训练好的网络权值,经过短时间的学习,得到神经网络给定输入下的输出。利用BP神经网络训练得到的PID参数Kp,KI,KD进行PID控制,并与常规PID控制进行比较,其效果如图4、图5所示。从图4可以看出,采用凑试法进行PID控制实验,系统响应曲线具有明显的超调。而从图5可知,采用神经网络训练所得PID参数进行实验,控制系统响应速度快、超调小甚至无超调、稳态误差小。所以,与无经验调试者盲目设定PID参数进行的PID控制相比,利用BP神经网路训练所得的参数进行PID控制,其控制效果得到了明显的改善。图4带死区积分分离PID控制图5基于BP神经网络的PID控制6结论带死区的积分分离PID控制算法在控制系统中应用简单,控制效果良好。但其参数整定对于经验不足的工程人员来说,一直是困扰他们的难题,由此神经网络PID将经典PID控制规律引入BP神经网络,使得控制器结构简单,原理明确,便于设计和实现。并在WinCC中嵌入神经网络控制算法,开发神经网络实验平台,提高了控制精度,减轻了实验人员的劳动强度,具有很好的理论应用价值。参考文献:[1]詹月林.基于BP神经网络的PID参数自整定的船舶操纵控制器研究[J].船舶科学技术,2003,25(5):20-23.[2]龚菲,王永骥.基于神经网络PID参数自整定与实时控制[J].华中科技大学学报(自然科学版),2002,30(10):69~71[3]张帆,邵之江,仲卫涛,钱积新.基于神经网络的在线优化软件的设计与实现[J].机电工程,2000,17(2):59~62[4]石红瑞,刘玺,刘勇,张小兵.二次开发WinCC嵌入模糊控制算法[J].石油化工自动化,2002,19(1):39~41[5]刘金琨.先进PID控制及其MATLAB仿真[J].北京:电子工业出版社,2003[6]陶永华.新型PID控制及其应用[M].北京:机械工业出版社,2002.
本文标题:神经网络PID实验平台在WinCC中的实现
链接地址:https://www.777doc.com/doc-4558097 .html