神经网络pid控制matlab程序
MATLAB基于BP神经网络PID控制程序
MATLAB基于BP神经网络PID控制程序>> %BP based PID Control
clear all;
close all;
xite=0.20; %学习速率
alfa=0.01; %惯性因子
IN=4;H=5;Out=3; %NN Structure
wi=[-0.6394 -0.2696 -0.3756 -0.7023;
-0.8603 -0.2013 -0.5024 -0.2596;
-1.0749 0.5543 -1.6820 -0.5437;
-0.3625 -0.0724 -0.6463 -0.2859;
0.1425 0.0279 -0.5406 -0.7660];
%wi=0.50*rands(H,IN); %隐含层加权系数wi初始化
wi_1=wi;wi_2=wi;wi_3=wi;
wo=[0.7576 0.2616 0.5820 -0.1416 -0.1325;
-0.1146 0.2949 0.8352 0.2205 0.4508;
0.7201 0.4566 0.7672 0.4962 0.3632];
%wo=0.50*rands(Out,H); %输出层加权系数wo初始化wo_1=wo;wo_2=wo;wo_3=wo;
ts=20; %采样周期取值
x=[0,0,0]; %比例,积分,微分赋初值
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;
Oh=zeros(H,1); %Output from NN middle layer 隐含层的输出
Matlab控制系统工具箱的PID控制设计指南
Matlab控制系统工具箱的PID控制设计指南导言
控制系统工具箱是Matlab提供的一个用于分析和设计控制系统的工具包。其中,PID控制是最常用且广泛应用的一种控制算法。本文将介绍Matlab控制系统工具箱中PID控制的设计指南,帮助读者快速掌握PID控制的原理和实践技巧。
一、PID控制简介
PID控制是一种基于比例、积分和微分的控制方法,适用于各种不确定性和变化的系统。PID控制器通过实时测量系统的误差(e),并计算比例项(P)、积分项(I)和微分项(D)的乘积和,调整输出控制信号(u),进而实现对系统的稳定控制。
二、PID控制的数学模型
PID控制器可以用以下的数学模型表示:
u(t) = Kp * e(t) + Ki * ∫e(t)dt + Kd * △e(t)/dt
其中,u(t)表示控制器的输出,e(t)表示误差,Kp、Ki和Kd分别代表比例、积分和微分控制器的增益参数。PID控制的目标是调整这些参数以使误差最小化。
三、PID控制器的参数调节
PID控制器的性能和稳定性取决于增益参数的设置。Matlab控制系统工具箱提供了多种方法来自动或手动地调节这些参数。
1. 自动调参方法
Matlab提供了一些自动调参的函数,如pidtune和pidtool。这些函数可以根据系统的频率响应和稳定性指标,自动选择合适的PID参数。使用这些方法可以节省调试时间,但需要注意调参结果的合理性和系统实际需求的匹配性。
2. 手动调参方法
手动调参是一种通过试验和调整来寻找最佳PID参数的方法。Matlab中可以使用step函数或PID Controller Tuner App来进行手动调参。这种方法需要对系统的特性和动态响应有一定的了解,并经过多次试验和优化来寻找最佳参数。
神经网络PID控制系统的研究
神经网络PID控制系统的研究
一、本文概述
随着科技的发展,控制理论在各个领域的应用越来越广泛,其中,PID(比例-积分-微分)控制算法以其简单、稳定、有效的特性,被广泛应用于工业控制系统中。然而,传统的PID控制算法在面对非线性、时变、不确定性等复杂系统时,其性能往往会受到限制。近年来,神经网络作为一种强大的非线性映射工具,其强大的自学习和自适应能力为解决这些问题提供了新的思路。
本文将研究神经网络与PID控制算法的结合,构建一种神经网络PID控制系统。我们将概述神经网络和PID控制算法的基本原理和特点,然后分析神经网络PID控制系统的基本结构和运行机制。接着,我们将通过仿真实验和实际应用案例,研究神经网络PID控制系统在不同场景下的性能表现,并探讨其优点和可能存在的问题。我们将对神经网络PID控制系统的未来发展进行展望,以期能为控制理论的发展和应用提供新的启示和参考。
二、神经网络PID控制系统的基本原理
神经网络PID控制系统是一种结合了神经网络与传统PID控制算法的先进控制系统。这种系统的基本原理在于利用神经网络的强大学
习和自适应能力,优化和改进传统的PID控制算法,从而提高系统的控制精度和稳定性。
PID(比例-积分-微分)控制器是一种广泛使用的线性控制器,它通过计算误差的比例、积分和微分来调整系统的输出,以实现对目标值的精确追踪。然而,传统的PID控制器在处理非线性、时变和不确定性的系统时,其性能可能会受到限制。
神经网络作为一种模拟人脑神经元网络工作的计算模型,具有很强的学习和适应能力。通过训练,神经网络可以逼近任意的非线性函数,这使得它成为处理复杂、非线性系统问题的有力工具。
matlab pid控制 粒子群算法
matlab pid控制粒子群算法
在控制系统设计中,PID控制器是一种常用的控制策略,它具有简单、稳定、可靠等优点。然而,传统的PID控制器参数通常需要手动调整,这需要大量的经验和时间。为了解决这个问题,可以使用粒子群优化(Particle Swarm Optimization,PSO)算法来自动调整PID控制器的参数。
PSO算法是一种基于群体智能的优化算法,它通过模拟鸟群、鱼群等生物群体的行为来寻找最优解。在PSO算法中,每个解被称为一个粒子,每个粒子都有一个速度和位置。粒子们通过比较自己的适应度和群体的适应度来更新自己的速度和位置,最终找到最优解。
将PSO算法应用于PID控制器参数调整,可以按照以下步骤进行:
1.定义PID控制器的参数范围,包括比例系数(Kp)、积分系数(Ki)和微分
系数(Kd)。
2.初始化粒子群,每个粒子表示一个PID控制器的参数组合。
3.计算每个粒子的适应度,适应度可以使用控制系统的性能指标来计算,如超
调量、稳态误差等。
4.更新粒子的速度和位置,根据粒子的适应度和群体的适应度来更新粒子的速
度和位置。
5.重复步骤3和4,直到达到停止条件,如达到预设的迭代次数或找到满足要
求的最优解。
6.使用最优解作为PID控制器的参数,对控制系统进行优化。
在实际应用中,需要注意以下几点:
1.定义合适的适应度函数,以评估控制系统的性能。
2.初始化粒子的速度和位置时,需要考虑参数范围和分布情况。
3.在更新粒子的速度和位置时,需要平衡全局搜索和局部搜索的能力。
4.需要根据具体的应用场景和要求来确定停止条件和最优解的评估标准。
PID控制算法的MATLAB仿真应用
PID控制算法的MATLAB仿真应用
首先,我们需要了解PID控制算法的原理。PID控制算法由比例控制、积分控制和微分控制三部分组成。比例控制是根据误差信号的大小与输出
信号的差异来调节控制器输出信号的增益。积分控制是根据误差信号的累
积值来调节控制器输出信号的增益。微分控制是根据误差信号的变化率来
调节控制器输出信号的增益。PID控制算法的输出信号可以表示为:u(t) = Kp * e(t) + Ki * ∫e(t) dt + Kd * de(t)/dt
其中,e(t)是系统输入与目标值之间的误差信号,u(t)是控制器的输
出信号,Kp、Ki和Kd分别是比例增益、积分增益和微分增益。
在MATLAB中使用PID控制算法进行仿真应用,可以按照以下步骤进行:
1. 创建一个Simulink模型,可以通过在命令窗口中输入simulink
打开Simulink库,然后从库中选择合适的模块进行建模。在模型中,需
要包括被控对象、PID控制器和反馈信号。
2. 配置PID控制器的参数。在Simulink模型中,可以使用PID Controller模块配置PID控制器的参数,包括比例增益、积分增益和微
分增益。
3. 配置被控对象的模型。在Simulink模型中,可以使用Transfer Fcn模块来建立被控对象的传递函数模型,包括系统的输入和输出端口,
以及系统的传递函数。
4. 配置反馈信号。在Simulink模型中,可以使用Sum模块将被控对
象的输出信号和控制器的输出信号相加,作为反馈信号传递给PID控制器。
5. 运行Simulink模型进行仿真。在Simulink中,可以选择仿真的时间范围和时间步长,然后点击运行按钮开始仿真。仿真结果可以在模型中的Scope或To Workspace模块中查看和分析。
matlab pid算例
matlab pid算例
在MATLAB中,你可以使用Control System Toolbox来设计和分析PID控制器。以下是一个简单的PID控制器设计示例:
首先,我们需要定义一个目标系统。假设我们正在控制一个简单的系统,如直流电机,其传递函数为:
```matlab
s = tf('s');
P_motor = 1/(0.05*s + 1);
```
在这个例子中,`s`是Laplace变换的变量,`P_motor`是电机的传递函数。
接下来,我们可以设计PID控制器。PID控制器的传递函数为:
```matlab
Kp = 1; % 比例增益
Ki = 1; % 积分增益
Kd = 1; % 微分增益
C_pid = tf([Kp Kd], [1 Ki]);
```
在这里,`Kp`、`Ki`和`Kd`是PID控制器的比例、积分和微分增益。
然后,我们可以创建一个系统模型,该模型包含我们的目标系统(电机)和PID控制器。这个系统的传递函数为:
```matlab
sys = feedback(C_pid*P_motor, 1);
```
在这里,`feedback`函数创建了一个包含PID控制器和电机的反馈系统。
最后,我们可以使用`step`函数来模拟系统的响应。例如,我们可以模拟系统对单位阶跃函数的响应:
```matlab
step(sys);
```
这将生成一个图形,显示系统在单位阶跃输入下的响应。
需要注意的是,上述代码中的`Kp`、`Ki`和`Kd`值是随意选择的。在实际应用中,你可能需要通过实验或优化算法来确定这些值,以便得到最佳的系统性能。
神经网络PID控制策略及其Matlab仿真研究
神经网络PID控制策略及其Matlab仿真研
究
摘要:本文讨论了神经网络PID控制策略,利用神经网络的自学习能力进行PID控制参数的在线整定,并使用Matlab软件进行了仿真研究。仿真结果表明,神经网络PID控制器参数调整简单,具有很高的精度和很强的适应性,可以获得满意的控制效果。
关键词:神经网络,BP网络,PID,参数整定,仿真
Abstract: This paper discusses the nerve network PID control strategy, makes use of the study ability of the nerve network to turning the PID control parameters, and proceeds the simulation research using matlab software. From the simulation results, it is can be shown that Neural Network PID controller have the higher accuracy and stronger adaptability, and can get satisfied control result.
Key word: neural network, BP neural network, PID, parameter turning, simulation
1.引言
PID控制由于其具有直观性好、实现简单、可靠性高以及强鲁棒性等优点,在工业控制中得到广泛的应用,尤其适用于建立了精确数学模型的确定性系统。然而常规PID控制效果的优劣直接取决于控制参数选取的好坏,而传统方法是在获取控制对象数学模型的基础上,根据某一整定原则来确定PID参数,但现代工业过程机理复杂,大都存在着非线性、时变、变参数、变结构等不确定性,难以确定精确的数学模型,利用常规的PID控制很难获得满意的控制效果。另外,常规PID控制存在着控制参数形式固定、不易在线调整、参数整定过程长、参数间相互影响等问题,这在一定程度上影响了PID控制的使用及控制效果;
pid控制及其matlab仿真-详细
MATLAB在控制系统设计中的重要性
总结词
MATLAB作为一种强大的数学计算软件,在 控制系统设计和分析中具有不可替代的作用 。它提供了丰富的工具箱和函数库,方便用 户进行建模、仿真和分析。
详细描述
MATLAB是一种广泛应用于控制系统设计和 分析的数学计算软件。它提供了丰富的工具 箱和函数库,支持各种控制系统分析和设计 方法。通过使用MATLAB,用户可以方便地 进行控制系统建模、仿真和分析。此外, MATLAB还支持与其他编程语言的接口,如 C/C和Simulink等,方便用户进行系统集成 和测试。因此,对于从事控制系统设计和分 析的专业人员来说,掌握MATLAB是非常重 要的。
PID控制器在MATLAB中的实现
简单系统的PID控制
01
02
03
04
简单系统建模
建立被控对象的数学模型 ,通常使用传递函数或状 态方程表示。
PID控制器设计
根据系统性能要求,选择 合适的PID控制器参数( 比例增益、积分时间常数 和微分时间常数)。
MATLAB仿真
使用MATLAB的 Simulink工具箱,搭建 控制系统仿真模型,将 PID控制器与被控对象连 接起来。
02
CATALOGUE
MATLAB仿真环境介绍
MATLAB的基本操作
01
变量定义与赋 值
02
B-P神经网络改进及其在Matlab中应用程序发布的研究
第16卷第2期
河南教育学院学报(自然科学版)
Vol .16No .22007年6月
Journa l of Henan Institute of Educa tion (Natura l Sc i ence)
Jun .2007
收稿日期:2006-12-10
作者简介陈郁(8—),女,河南郑州人,河南大学环境与规划学院地图学与地理信息系统专业级硕士研究生,研究方
向地理信息系统软件开发与应用B 2P 神经网络改进及其在M a tl ab 中
应用程序发布的研究陈 郁,秦 奋,余明全
(河南大学环境与规划学院,河南开封475004)
摘要:主要讨论了B 2P 神经网络的结构、算法及不足,列举了一些关于训练时间长、出现局部极小值等问题的改进方法,分析了各种改进方法及其改进的效果,还选取了几种可以与B 2P 算法相结合的算法,最后以实例说明B 2
P 神经网络在M atl ab 中的实现及发布成独立应用程序的过程.
关键词:人工神经网络;B 2P 神经网络;算法改进;独立应用程序
中图分类号:TP183 文献标识码:A 文章编号:1007-0834(2007)02-0029-04
B 2P (B ack 2Pr opagati on)模型是一种用于前向多
层神经网络的反传学习算法,由鲁梅尔哈特(D Rum elha rt )和麦克莱伦德(McC lelland )于1985年提出[1].在此之前,虽然已有韦伯斯(W er bos)[2]和派克(Parker)分别于1974年及1982年提出过类似算法,但只有在鲁梅尔哈特等提出后才引起了广泛的重视和应用.目前,B 2P 算法已成为应用最多且最重要的一种训练前向神经网络的学习算法,亦是前向网络得以广泛应用的基础.1 B 2P 神经网络
MATLAB基于BP神经网络PID控制程序.pdf
MATLAB基于BP神经网络PID控制程序
>> %BP based PID Control
clear all;
close all;
xite=0.20; %学习速率
alfa=0.01; %惯性因子
IN=4;H=5;Out=3; %NN Structure
wi=[-0.6394 -0.2696 -0.3756 -0.7023;
-0.8603 -0.XXXX -0.5024 -0.2596;
-1.0749 0.5543 -1.6820 -0.5437;
-0.3625 -0.0724 -0.6463 -0.2859;
0.1425 0.0279 -0.5406 -0.7660];
%wi=0.50*rands(H,IN); %隐含层加权系数wi初始化
wi_1=wi;wi_2=wi;wi_3=wi;
wo=[0.7576 0.2616 0.5820 -0.1416 -0.1325;
-0.1146 0.2949 0.8352 0.2205 0.4508;
0.7201 0.4566 0.7672 0.4962 0.3632];
%wo=0.50*rands(Out,H); %输出层加权系数wo初始化
wo_1=wo;wo_2=wo;wo_3=wo;
ts=20; %采样周期取值
x=[0,0,0]; %比例,积分,微分赋初值
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;
Oh=zeros(H,1); %Output from NN middle layer 隐含层的输出
基于MATLAB的PID控制器设计说明
基于MATLAB的PID控制器设计说明
PID控制器是一种经典的控制算法,被广泛应用于工业自动化领域。
本文将详细介绍基于MATLAB的PID控制器设计说明。
首先,我们需要明确PID控制器的基本原理。PID控制器由比例(P)、积分(I)和微分(D)三部分组成。比例部分根据当前偏差与设
定值之间的关系进行调节;积分部分通过累积误差来消除系统的稳态偏差;微分部分根据当前误差与前一次误差的差异来预测系统的未来状态。
在MATLAB中,我们可以使用pid函数来设计PID控制器。pid函数
的基本语法如下:
C = pid(Kp, Ki, Kd)
其中,Kp、Ki、Kd分别表示PID控制器的比例增益、积分时间常数
和微分时间常数。根据实际需求,我们可以通过调整这三个参数来优化控
制器的性能。
接下来,我们需要明确控制系统的传递函数。传递函数是描述系统输
入与输出之间关系的函数,通常用一个分子多项式除以一个分母多项式的
比值来表示。在MATLAB中,我们通过tf函数来创建传递函数。tf函数
的基本语法如下:
G = tf(num, den)
其中,num表示分子多项式的系数,den表示分母多项式的系数。通
过tf函数创建的传递函数可以方便地进行各种运算和分析。
设计PID控制器的一种常见方法是将传递函数G(s)与控制器C(s)串
接起来。通过串接两个传递函数,我们可以得到一个闭环传递函数,用于
描述控制器对系统的影响。MATLAB提供了series函数来实现传递函数的
串接。series函数的基本语法如下:
H = series(G, C)
pid控制算法 matlab
PID控制算法在Matlab中的应用
1. 简介
PID控制算法是一种经典控制算法,它通过比例、积分和微分三个部
分来调节控制系统的输出,以实现对系统的稳定控制。在Matlab中,可以利用其丰富的工具箱和编程功能来实现PID控制算法,并对系统
进行仿真和分析。
2. PID控制算法原理
PID控制算法是由比例项(P)、积分项(I)和微分项(D)组成的。比例项根据当前误差进行控制,积分项根据累积误差进行控制,微分
项则根据误差变化速度进行控制。通过这三个部分的调节,PID控制
算法可以有效地实现对系统的稳定控制。
3. 在Matlab中实现PID控制算法
在Matlab中,可以利用Control System Toolbox提供的函数和工
具来实现PID控制算法。可以使用pid函数创建一个PID控制器对象,设置其比例、积分和微分系数。可以将该PID控制器对象与系统模型
进行连接,通过sim函数对系统进行仿真和分析。
4. 使用示例
以下是一个简单的示例来演示如何在Matlab中实现PID控制算法。
创建一个一阶惯性系统模型,然后使用pid函数创建一个PID控制器
对象,设置其比例、积分和微分系数。将PID控制器对象与系统模型进行连接,通过sim函数对系统进行仿真并绘制响应曲线。
```matlab
创建一阶惯性系统模型
sys = tf(1, [1 1]);
创建PID控制器对象
Kp = 1;
Ki = 0.1;
Kd = 0.2;
pid_controller = pid(Kp, Ki, Kd);
将PID控制器对象与系统模型进行连接
神经网络PID控制及其Matlab仿真
1 引 言
相应的离散算式为:
k
在工业控制中, P I D 控制是工业控制中最常用的 方法。这是因为 P I D 控制器结构简单、实现简单, 控 制效果良好, 已得到广泛应用。 据统计, 在目前的控 制系统中, P I D 控制占了绝大多数。但是, 他具有一定 的局限性: 当控制对象不同时, 控制器的参数难以自 动调整以适应外界环境的变化。 为了使控制器具有较 好的自适应性, 实现控制器参数的自动调整, 可以采 用神经网络控制的方法。 利用人工神经网络的自学习 这一特性, 并结合传统的 P I D 控制理论, 构造神经网 络PI D 控制器, 实现控制器参数的自动调整。
《现代电子技术》 2004 年第 2 期总第 169 期
网络与通信
神经网络 P ID 控制及其 M a tlab 仿真
曾 军, 方厚辉
( 湖南大学 电气与信息工程学院 湖南 长沙 410082)
Leabharlann Baidu
摘 要: 讨论了基于神经网络的 P I D 控制, 并将其作用于工业控制, 利用神经网络的自学习能力进行在线参数整定, 并利用M a tlab 软件进行仿真。仿真结果表明, 神经网络 P I D 控制器具有较高的精度和较强的适应性, 可以获得满意的控 制效果。 关键词: 神经网络; P I D 控制; M a tlab 仿真; 工业控制 中图分类号: T P 183 文献标识码: B 文章编号: 1004 373X ( 2004) 02 051 02
基于神经网络的PID参数自整定控制及其Matlab仿真研究
棒 性好 、 定性 高等 优 点 而广 泛 地 应 用 于 各种 工 稳 业 过程 控制 之 中. I 控 制 中参数 整 定 是 重要 的 PD
内容 , 但是 传 统 的 P D参 数 整 定 方 法 比较 繁 琐 , I
并且对 一些 较复 杂的 控制对 象 而言 控制 效果 不 明 显, 因此 限制 了 P D 控 制 的进 一 步 发 展 [ . 经 I 1 神 ]
的复 杂程度 , 通过 调 整 内部 大 量 节 点 之 间相 互 连 接 的关 系从 而 达到 处 理 信 息 的 目的[ . 用 神 经 2 利 ]
网络 的特点 , 与传统 的 P D控 制 相结 合 建立 神 经 I 网络 P D控 制 器 , 仅 能 够 克 服 P D 控 制 的 缺 I 不 I 陷, 而且 具有 快速 的学 习能力 和 快速 的适应 性 , 解
应 PD 控 制算 法 在 总 体 上 优 于 传 统 的 PD 控 制 算 法 . 方 法 有 利 于 系 统 控 制 效 果 的 提 高 , 且 受 环 境 的 影 响 I I 该 并 较 小 , 一 定 程 度 上 弥 补 了传 统 P D控 制 的 不 足 . 在 I 关键词: 经网络 ;I 神 P D控 制 ; 神 经 元 ;i l k仿 真 单 Smui n 中 图分 类 号 : P 7 T 2 文献标识码 : A
网络 是一种 模拟 动 物 神 经 网 络行 为特 征 , 行 分 进
基于BP神经网络的自整定PID控制的MATLAB程序代码
基于BP神经网络的自整定PID控制仿真在工业控制中,PID控制是工业控制中最常用的方法。这是因为PID控制器结构简单、实现简单,控制效果良好,已得到广泛应用。但是,PID具有一定的局限性:被控制对象参数随时间变化时,控制器的参数难以自动调整以适应外界环境的变化。为了使控制器具有较好的自适应性,实现控制器参数的自动调整,可以采用神经网络控制的方法。利用人工神经网络的自学习这一特性,并结合传统的PID控制理论,构造神经网络PID控制器,实现控制器参数的自动调整。
基于BP神经网络的PID控制器结构如图1所示。控制器由两部分组成:一是常规PID 控制器,用以直接对对象进行闭环控制,且三个参数在线整定;二是神经网络NN,根据系统的运行状态,学习调整权系数,从而调整PID参数,达到某种性能指标的最优化。
图1 基于神经网络的PID控制器结构
1.设计原理
神经网络采用结构为4-5-3型的BP网络,如图2。
图2 BP网络结构
其中,输出层激励函数取非负的Sigmoid函数,隐层取正负对称的Sigmoid函数。
被控对象为一时变非线性对象,数学模型可表示为: 2
()(1)
()(1)1(1)
a k y k y k u k y k -=+-+- 式中,系数a(k)是慢时变的,
。
为保证控制器有一定的动态跟踪能力,选定神经网络的输入层输入为
[(),(1),(2),1]T in X e k e k e k =--
网络的学习过程由正向和反向传播两部分组成。如果输出层不能得到期望输出,那么转入反向传播过程,通过修改各层神经元的权值,使得输出误差信号最小。 输出层节点分别对应三个可调参数
控制系统pid参数整定方法的matlab仿真
控制系统pid参数整定方法的matlab仿真
控制系统PID参数整定方法的MATLAB仿真,可以分为以下几个步骤:
1. 建立模型。在MATLAB中建立你要进行PID参数整定的模型,比如电机速度控制系统或温度控制系统。
2. 设计控制器。根据建立的模型,设计出对应的PID控制器,并将其加入到系统中。
3. 确定初始参数。在进行PID参数整定前,需要确定PID控制器的初始参数。通常可以选择Ziegler-Nichols方法、Chien-Hrones-Reswick方法等经典的PID参数整定法则来确定初始参数。
4. 仿真模拟。使用MATLAB中的仿真工具,对整定后的PID控制器进行仿真模拟,并记录下系统的响应曲线和各项性能指标。
5. 调整参数。根据仿真结果,对PID控制器的参数进行适当的调整,以达到更理想的控制效果。
6. 再次仿真模拟。调整完参数后,再次使用MATLAB中的仿真工具,对整定后的PID控制器进行仿真模拟,并比较其与上一次仿真的差异,以确认调整是否合理。
7. 实现控制。最后,将优化后的PID控制器应用到实际控制系统中,进行控制。
总的来说,PID参数整定是一个相对复杂的过程,需要根据具体情况选择合适的方法和工具。MATLAB作为一种强大的数学计算软件,可以提供丰富的工具和函数,方便进行控制系统的建模和仿
真,也可以帮助我们更好地进行PID参数整定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%Single Neural Adaptive PID Controller
clear all;
close all;
x=[0,0,0]';
xiteP=0.40;
xiteI=0.35;
xiteD=0.40;
%Initilizing kp,ki and kd
wkp_1=0.10;
wki_1=0.10;
wkd_1=0.10;
%wkp_1=rand;
%wki_1=rand;
%wkd_1=rand;
error_1=0;
error_2=0;
y_1=0;y_2=0;y_3=0;
u_1=0;u_2=0;u_3=0;
ts=0.001;
for k=1:1:1000
time(k)=k*ts;
yd(k)=0.5*sign(sin(2*2*pi*k*ts));
y(k)=0.368*y_1+0.26*y_2+0.1*u_1+0.632*u_2;
error(k)=yd(k)-y(k);
%Adjusting Weight Value by hebb learning algorithm
M=4;
if M==1 %No Supervised Heb learning algorithm wkp(k)=wkp_1+xiteP*u_1*x(1); %P
wki(k)=wki_1+xiteI*u_1*x(2); %I
wkd(k)=wkd_1+xiteD*u_1*x(3); %D
K=0.06;
elseif M==2 %Supervised Delta learning algorithm wkp(k)=wkp_1+xiteP*error(k)*u_1; %P
wki(k)=wki_1+xiteI*error(k)*u_1; %I
wkd(k)=wkd_1+xiteD*error(k)*u_1; %D
K=0.12;
elseif M==3 %Supervised Heb learning algorithm
wkp(k)=wkp_1+xiteP*error(k)*u_1*x(1); %P
wki(k)=wki_1+xiteI*error(k)*u_1*x(2); %I
wkd(k)=wkd_1+xiteD*error(k)*u_1*x(3); %D
K=0.12;
elseif M==4 %Improved Heb learning algorithm
wkp(k)=wkp_1+xiteP*error(k)*u_1*(2*error(k)-error_1); wki(k)=wki_1+xiteI*error(k)*u_1*(2*error(k)-error_1); wkd(k)=wkd_1+xiteD*error(k)*u_1*(2*error(k)-error_1); K=0.12;
end
x(1)=error(k)-error_1; %P
x(2)=error(k); %I
x(3)=error(k)-2*error_1+error_2; %D
wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k)); w11(k)=wkp(k)/wadd(k);
w22(k)=wki(k)/wadd(k);
w33(k)=wkd(k)/wadd(k);
w=[w11(k),w22(k),w33(k)];
u(k)=u_1+K*w*x; %Control law
error_2=error_1;
error_1=error(k);
u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=y(k);
wkp_1=wkp(k);
wkd_1=wkd(k);
wki_1=wki(k);
end
figure(1);
plot(time,yd,'r',time,y,'k:','linewidth',2); xlabel('time(s)');ylabel('yd,y');
legend('ideal position','position tracking'); figure(2);
plot(time,u,'r','linewidth',2);
xlabel('time(s)');ylabel('Control input');