欢迎光临小豌豆知识网!
当前位置:首页 > 物理技术 > 调节控制> 一种PID控制器在一级控制系统PLC中的应用方法独创技术8886字

一种PID控制器在一级控制系统PLC中的应用方法

2021-02-26 13:40:30

一种PID控制器在一级控制系统PLC中的应用方法

  技术领域

  本发明涉及一种PID控制器在一级控制系统PLC中的应用方法,属于智能控制器开发技术领域

  背景技术

  PLC控制系统(简称:一级)采用常规PID控制较为普遍,对于实际工业生产过程来讲,一级自带的常规PID控制在启动、停止、设定值增减幅度大时会使控制量超过执行机构可能最大的动作范围所对应的极限控制量,最终引起系统较大的超调,甚至引起系统的振荡。

  发明内容

  本发明目的是提供一种PID控制器在一级控制系统PLC中的应用方法,利用C++平台下编程神经网络控制器,将神经网络PID程序生成动态链接库DLL文件,便于一级系统自带C编译器调用,利用单神经元的学习特性在线修改加权值来调整Kp、Ki、Kd参数,对被控对象参数的变化具有较强的鲁棒性,控制效果好,且所需设备简单,经济效益显著,提高系统运行安全性和经济性,并可以减少人员,提高生产效率,有效地解决了背景技术中存在的上述问题。

  本发明的技术方案是:一种PID控制器在一级控制系统PLC中的应用方法,包含以下步骤:(1)将PID的增量公式改为单神经元的输入输出表达形式;(2)采用有监督Hebb学习规则得到单神经元PID的算法描述;(3)利用C++平台下编程神经网络控制器,将单神经元PID生成动态链接库DLL文件;(4)一级控制系统PLC中调用动态链接库DLL文件。利用单神经元的学习特性实时在线修改加权值来调整Kp、Ki、Kd参数。

  所述步骤(1)中,PID算法的增量型表达式:

  Δu(k)=Kp(Δe(k))+Kie(k)+Kd(Δe(k)-Δe(k-1)),记:x1(k)=e(k),x2(k)=△e(k),x3(k)=△e(k)-△e(k-1),同时将Kp、Ki、Kd系数看作是它们对应的加权,并记为ωi(k)。这里引进一个比例系数K,则可将PID算法的增量型公式改为:其中:此时PID的增量公式已经改为单神经元的输入输出表达形式。

  所述步骤(2)中,有监督Hebb学习规则,Δωi(k)=ηiz(k)u(k)xi(k),根据学习规则定义,其中,z(k)=e(k)。而u(k)=u(k-1)+△u(k)。

  ω(k)=ω(k-1)+△ω(k)。到这里实际上已经得到了单神经元PID的算法描述。

  本发明的有益效果是:利用C++平台下编程神经网络控制器,将神经网络PID程序生成动态链接库DLL文件,便于一级系统自带C编译器调用,利用单神经元的学习特性在线修改加权值来调整Kp、Ki、Kd参数,对被控对象参数的变化具有较强的鲁棒性,控制效果好,且所需设备简单,经济效益显著,提高系统运行安全性和经济性,并可以减少人员,提高生产效率。

  附图说明

  图1是本发明的单神经元模型图;

  图2是本发明的单神经元PID图。

  具体实施方式

  为了使发明实施案例的目的、技术方案和优点更加清楚,下面将结合实施案例中的附图,对本发明实施案例中的技术方案进行清晰的、完整的描述,显然,所表述的实施案例是本发明一小部分实施案例,而不是全部的实施案例,基于本发明中的实施案例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施案例,都属于本发明保护范围。

  一种PID控制器在一级控制系统PLC中的应用方法,包含以下步骤:(1)将PID的增量公式改为单神经元的输入输出表达形式;(2)采用有监督Hebb学习规则得到单神经元PID的算法描述;(3)利用C++平台下编程神经网络控制器,将单神经元PID生成动态链接库DLL文件;(4)一级控制系统PLC中调用动态链接库DLL文件。利用单神经元的学习特性实时在线修改加权值来调整Kp、Ki、Kd参数。

  所述步骤(1)中,PID算法的增量型表达式:

  Δu(k)=Kp(Δe(k))+Kie(k)+Kd(Δe(k)-Δe(k-1)),记:x1(k)=e(k),x2(k)=△e(k),x3(k)=△e(k)-△e(k-1),同时将Kp、Ki、Kd系数看作是它们对应的加权,并记为ωi(k)。这里引进一个比例系数K,则可将PID算法的增量型公式改为:其中:此时PID的增量公式已经改为单神经元的输入输出表达形式。

  所述步骤(2)中,有监督Hebb学习规则,Δωi(k)=ηiz(k)u(k)xi(k),根据学习规则定义,其中,z(k)=e(k)。而u(k)=u(k-1)+△u(k)。ω(k)=ω(k-1)+△ω(k)。到这里实际上已经得到了单神经元PID的算法描述。

  一、单神经元模型

  单神经元作为构成神经网络的基本单位,具有自学习和自适应能力,且结构简单而易于计算。接下来我们讨论一下单神经元模型的基本原理。如图1,对于第i个神经元,x1、……、xj、……、xn是神经元接收到的信息,ω1、……、ωj、……、ωn为连接强度,又称之为权。采用某种运算方式把输入信号的作用结合起来,得到他们总的结果,称之为“净输入”通常用Neti表示。根据所采用的运算方式的不同,净输入有不同的表示形式,比较常用的是线性加权求和,其表达式如下:

  

  其中,θi是神经元i的阈值。

  而神经元i的输出yi可以表示为其当前状态的函数,这个函数我们称之为激活函数。一般表示如下:

  yi=g(Neti)

  采用的学习规则

  学习是神经网络的基本特征,而学习规则是实现学习过程的基本手段。学习规则主要实现对神经元之间连接强度的修正,即修改加权值。而学习过程可分为有监督学习和无监督学习两类。它们的区别简单的说,就是是否引入期望输出参与学习过程,引入了则称之为有督导学习。

  较为常用的学习规则有三种,该发明采用第三种学习规则:

  无监督Hebb学习规则

  Hebb学习是一类相关学习,它的基本思想是:如果神经元同时兴奋,则它们之间的连接强度的增强与它们的激励的乘积成正比。以oi表示单元i的激活值,以oj表示单元j的激活值,以ωi,j表示单元j到单元i的连接强度,则Hebb学习规则可用下式表示:

  Δωi,j(k)=ηoj(k)oi(k)

  有监督Delta学习规则

  在Hebb学习规则中,引入教师信号,将式oj换成网络期望目标输出dj和网络实际输出oj之差,即为有监督Delta学习规则,即:

  Δωi,j(k)=η(dj(k)-oj(k))oi(k)

  有监督Hebb学习规则

  将无监督Hebb学习规则和有监督Delta学习规则两者结合起来,就组成有监督Hebb学习规则,即:

  Δωi,j(k)=η(dj(k)-oj(k))oj(k)oi(k)

  二、单神经元PID的基本原理

  在前面我们说明了单神经元的基本原理,接下来我们讨论如何将其应用的PID控制中,如图2。前面我们已经知道了神经元的输入输出关系,在这里我们考虑PID算法的增量型表达式:

  Δu(k)=Kp(Δe(k))+Kie(k)+Kd(Δe(k)-Δe(k-1))

  若是我们记:x1(k)=e(k),x2(k)=△e(k),x3(k)=△e(k)-△e(k-1),同时将Kp、Ki、Kd系数看作是它们对应的加权,并记为ωi(k)。这里引进一个比例系数K,则可将PID算法的增量型公式改为:

  

  其中:

  我们将PID的增量公式已经改为单神经元的输入输出表达形式,还需要引进相应的学习规则就可以得到单神经元PID控制器了。在这里我们采用有监督Hebb学习规则于是可以得到学习过程:

  Δωi(k)=ηiz(k)u(k)xi(k)

  根据学习规则定义,其中,z(k)=e(k)。而u(k)=u(k-1)+△u(k)。

  ω(k)=ω(k-1)+△ω(k)。到这里实际上已经得到了单神经元PID的算法描述。

  三、C++实现单神经元PID

  

  

  

  四、单神经元PID生成动态链接库

  VS2012下C++创建dll动态链接库

  在VS2012中依次点击选择新建、项目、Visual C++、Windows桌面、Windows桌面向导、动态链接库(DLL)、名称NNpid.cpp。

  将上述代码复制到NNpid中。格式如下:

  

  五、一级(例如WinCC)系统中调用动态链接库

  WinCC C脚本(全局脚本)调用第三方动态链接库NNpid.dll,格式如下:

  #pragma code("D:NNpidNNpid.dll")

  float NNpid(float NowPoint,float SetPoint);

  #pragma code()

  float Output;

  Output=add(150.0,120.0);

  综上所述,基于C++神经网络PID控制器设计与在一级控制系统PLC中的应用方法的应用,将有很好的和潜在的应用前景,并有明显的理论意义和实际意义。

《一种PID控制器在一级控制系统PLC中的应用方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)