s函数的给个的注释 RBF网络的pid控制器 顺便问一下 K_pid,eta_pid,theta,alfa,beta0,w0 这些变量theta是什么意思思

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于S函数的RBF神经网络PID控制器Simulink仿真.pdf3页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:80 &&
你可能关注的文档:
··········
··········
正在加载中,请稍后... 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于S函数的BP神经网络PID控制器及Simulink仿真
下载积分:600
内容提示:基于S函数的BP神经网络PID控制器及Simulink仿真
文档格式:PDF|
浏览次数:117|
上传日期: 20:41:32|
文档星级:
该用户还上传了这些文档
基于S函数的BP神经网络PID控制器及Simulink仿真
官方公共微信基于S函数的先进PID工具箱的设计
摘要:根据Matlab的S函数规则,设计了一个包含专家PID控制和模糊自适应PID控制模块的先进PID工具箱,该工具箱中的模块可以像Simulink中的标准模块一样使用,扩展了Simulink的动态仿真功能。
关键词:Matlab&
Simulink& S函数 先进PID
PID控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,在实际的过程控制与运动控制系统中,PID家族占有很重要的地位。智能控制技术与传统PID的结合又形成了很多新的PID控制策略,称之为先进PID控制,其中包括专家PID控制、模糊自适应整定PID控制、神经PID控制等,这些先进的PID控制策略大大的改善了控制的效果,获得了广泛的应用。
Simulink是Matlab实现动态系统建模仿真的一个集成环境,它实现了可视化建模。在Simulink的模块库中,包含有各种各样的工具箱供仿真建模使用,而其最大的特点在于它允许用户自定义自己的工具箱,这样使得Simulink功能可以得到不断的扩展。在Simulink中,至今还没有关于先进PID控制的工具箱,这使得在仿真使用日益广泛的先进PID控制器时比较困难,本文提出了用Simulink的S函数来构造先进PID控制器的模块,以帮助设计人员简便快捷的完成对各种先进PID控制的仿真工作。
S函数的工作方式
S函数是Simulink用于描述动态系统的特殊语言结构。Simulink用特定的格式调用S函数,使用S函数我们可以建立所需的线性、非线性模型,可以编写所需的分析、仿真程序,封装成一个通用模块作为Simulink库。[3,4]中用S函数建立实时动画模块,[5]中用S函数建立异步电机的仿真模型,[7]中讨论了在Simulink中建立用户模块的方法。本文利用S函数可以封装成通用模块的功能,建立先进PID控制器工具箱。S函数可以用C语言建立,也可用M文件建立,本文讨论用M文件建立方式。
S函数的调用格式为:
其中t, x, u,
flag四个参数为Simulink接口,固定不变。user_param1,…,
user_paramN是用户自定义的参数,Simulink根据不同的flag值,在不同阶段调用不同的函数,从而完成系统的动态仿真功能,表1列出了Flag的不同取值时S函数的功能。
编写S函数要考虑两个问题:
①初始化。定义S函数参数,如采样时间、连续、离散状态的初始条件,变量数量。
②编制表示系统特征及相应算法的例程。
初始化时,主要完成对sizes结构的更新,该结构变量域的含义如表2:
而系统的动态特征主要是在flag=1(连续系统)和flag=2(离散系统)时完成。关于S函数的具体规则及编写方式,可以在Simulink的模块库中的S函数模板中找到,此处不再详细讨论
专家PID和模糊自适应PID模块的设计
先进PID控制工具箱中各模块的设计,均是利用S-函数,编写其动态特性,然后进行封装,形成与标准模块相似的用户自定义模块。
一.专家PID控制
原理专家控制的实质是基于受控对象和控制规律的各种知识,并以智能方式利用这些知识来设计控制器。利用专家经验来设计PID参数便构成专家PID控制。&
令e(k)表示离散化的当前采样时刻的误差值,e(k-1)、e(k-2)表示前一个和前两个采样时刻的误差值。则de
(k)=e(k)-e(k-1)&&
de(k-1)=e(k-1)-e(k-2)。
根据误差e及其变化de,可设计专家PID控制器:
&(二) 封装
封装时要考虑到用户使用的灵活性和模块的安全性。专家模块的外部参数有:
kp, ki, kd:&&
PID控制器的比例积分和微分系数;&&&&&&
ints:&&&&
&& E1,E2,E3:
专家经验误差界限,与上述原理中的E1,E2,E3对应;
&&放大和收缩系数
&& pid_lp, pid_up:
PID模块输出的下限和上限。
通过修改这些参数,用户可以灵活的使用专家PID模块
(三) S函数设计
专家控制PID的土状使用了上述控制规则,S函数设计如下:
S函数格式为:
function [sys,x0,str,ts] =sfuntmpl ( t,
x, u, flag, kp, kd, ki, ints,
Amax,E1,E2,E3,K1,K2,pid_lp,pid_up)
&初始化阶段 flag=0
本模块使用离散化方法设计,因此,结构Sizes的各值设置如下:
NumContStates=0&&&&
NumDiscStates=5&&&&&
NumOutputs=1&&&&&&&
NumInputs=1
DirFeedthrough=0&&&
NumSampleTimes=ints
其中离散状态向量X各分量分别为error_1, error_2,
serror, y_1,
y。其中error_1和error_2分别为前一次和前两次的采样值,serror为采样值的积累,y_1,y分别为前一次和本次控制器的输出值。各量均被初始化为0。
2.&&&&&&&&
&更新阶段& flag=2
对于离散状态,系统的动态特性主要在更新阶段完成。在专家PID控制模块中,此处根据上述的专家控制原理,更新各个状态的值,使得这些状态随着时间的改变而改变。比如,对于第二条专家控制经验,程序实现如下:
&(u*error_1&0) | (u-error_1=
if abs(ration)&=E2
&y=y_1+K1*(kp*(u-error_1)+ki*u+kd*(u-2*error_1+error_2));
&&&&&y=y_1+kp*(u-error_1)+ki*u+kd*(u-2*error_1+error_2);
3.&&&&&&&&
输出阶段& flag=3&
&&&此时将输出变量赋给系统变量sys即可,即:sys=x(5)&
二. 模糊自适应PID控制
(一)原理&&&&&&
在工业生产过程中,PID参数整定的方法有很多,但是由于实际生产中被控对象的结构会发生改变或受到干扰,因此,实时调整PID参数就显得很重要,根据现场情况,计算机自动调整PID参数,这样就形成了智能PID控制,将模糊推理与传统PID相结合就形成了模糊自适应PID控制。其结构图如图3-1。
在工作过程中,模糊推理根据输入的误差e和误差导数de的变化来调整kp, ki,
kd,使得PID控制器更好的控制对象。
(二)封装
模糊自适应PID控制模块封装了输入限幅、微分限幅、输出限幅以及模糊推理、离散PID控制模块,可以允许用户自定义模糊推理规则,以允许在线调整PID各系数。值得注意的时,模糊推理库在使用前要装入工作空间中。
模糊自适应PID控制模块的封装参数有:
kp0,ki0,kd0: PID调节器的初始参数;
ints:采样周期;
fuzzy_lp,fuzzy_up:微分限幅器下限和上限,对应模糊控制器的de的范围;
In_lp, In_up:输入限幅器的下限和上限;
pid_lp, pid_up: 输出下限和上限;
fuzzyfis:模糊推理库,在使用前,该值必须装入工作空间
(三)S函数的设计
S函数的调用格式:function [sys,x0,str,ts] =
sfuntmpl(t,x,u,flag,kp0,kd0,ki0,ints,fuzzy_lp,fuzzy_up,pid_lp,pid_up,In_lp,In_up,fuzzyfis)
1.&&&&&&&&
初始化 flag=0
sizes.NumContStates &=
sizes.NumDiscStates& =
%离散状态个数
sizes.NumOutputs&&&
= 1;&& %输出向量个数1,为控制量
sizes.NumInputs&&&&&
= 1;& &%输入向量个数1,为偏差值
sizes.DirFeedthrough
%没有直接前馈
sizes.NumSampleTimes =
离散状态向量x的各个分量是:
x=[kp,kd,ki,error_1,kp_pid,ki_pid,kd_pid,serror,y]
kp, kd, ki : 调整的PID参数;
error_1:前一次采样值 ;
kp_pid, ki_pid, kd_pid:模糊推理输出的调整值;
serror: 误差积累;y为输出的控制量;
向量的初始值x0=[kp0,kd0,ki0,0,0,0,0,0,0],
采样时间是ints。
2.&&&&&&&&
更新阶段 flag=2
更新阶段的核心代码为:
kpid=evalfis([error_1,errc],fuzzyfis);&&&&&&&&&&&&
%模糊推理计算
kp_pid=kpid(1); kd_pid=kpid(2);
ki_pid=kpid(3);&
kp=kp0+kp_&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
%调整PID参数
kd=kd0+kd_
ki=ki0+ki_
y=kp*u+kd*(u-error_1)+ki*
它根据模糊推理,完成了对PID控制器的比例、积分、微分系数的修订。
3.&&&&&&&&
输出阶段 Flag=3
输出sys=x(9)即可。
模糊自适应PID控制模块的典型应用
下面给出一个模糊自适应PID控制模块控制的应用实例。控制框图是:
其中Discrete Fuzzy
PID就是自定义的模糊自适应PID控制模块,它的参数设置为:kp0=0.4,kd0=1,ki0=0,ints=0.001,In_lp=-3,In_up=3,fuzzy_lp=-3,fuzzy_up=3,pid_lp=-10,pid_lp=10,fuzzyfis=example.其中example为自己建立的模糊推理库。由于Fuzzy
PID为离散PID模块,所以,在控制连续对象时,必须加入零阶保持器,并且零阶保持器的采样周期要与Fuzzy
PID的ints参数相同。该系统对于阶跃信号和方波信号及正弦信号、三角斜坡信号的响应分别如下图所示。
从以上仿真的结果可以看出,在选取同一个初始的kp,ki,kd的情况下,系统对于正弦信号、方波信号、斜坡信号的响应都比较理想,如果采用非在线调整的PID控制器,同时响应这几个信号,一般效果不会太好([1])。当然,由于PID采用的是普通的PID控制方法,所以对于方波信号的转折处的响应不是太好,在实际应用中可以考虑使用微分先行PID加上模糊推理控制,那样效果会比较理想。
本文致力于用S函数建立Simulink的先进PID控制器仿真模块库。由于S函数可以方便的描述系统的动态特性,并且很容易与Simulink连接,对于扩展Simulink的功能具有很重要的意义。本文中用Matlab的M文件实现S函数,但是由于其语言的关系,这类S函数建立的模块仿真时速度比较慢,所以如果用C语言建立S函数,那么就可以提高先进PID控制模块库中模块的运行速度。目前有很多先进PID控制方法,在标准的Simulink中都没有标准的模块可以使用,所以,如果能够将神经PID、基于遗传算法整定的PID控制、灰色PID控制等先进PID和应用于不同场合下的PID控制添加到SIMULINK模块库中,这项工作就具有很大的意义。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。基于S函数的专家PID控制器的实现_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于S函数的专家PID控制器的实现
上传于||文档简介
&&基​于​S​函​数​的​专​家​P​I​D​控​制​器​的​实​现
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于BP网络PID控制器设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 theta s 的文章

 

随机推荐