pid算法的matlab仿真
⑴ 模糊PID控制器的MATLAB仿真程序
Digitally, the PID-controller can very simply be programmed according to
/* Simulating a PID-controller
The controller is programmed in the position form
as independent variables
*/
#include <iostream>
using namespace std;
#include <cmath>
#include <fstream>
// Parameters
const int kmax=50;
const int kstart=5;
int main()
{
int k;
double ubias=50; double sum=0;
// The controller parameters in ISA-form
double Kc=2; double Ti=5; double Td=5;
// The sampling time
double Tsamp=1;
// recalculating the controller parameters to independent variables
double Ki=Kc/Ti;
double Kd=Kc*Td;
double u[kmax]; // controller output
double y[kmax]; // actual value
double r[kmax]; // set-point
double e[kmax]; // control error
// Writing to a file
ofstream outFile;
outFile.open("c:\temp\testdata.txt");
// initial values for the variables
u[0]=50;
y[0]=50;
r[0]=50;
e[0]=0;
// the main loop
for (k=1; k<kmax; k++)
{
// simulating a change in the set-point
if (k < kstart)
r[k]=50;
else
r[k]=51;
// Actual value (fixed in this simulation)
y[k]=50;
// calculating the control error
e[k]=r[k]-y[k];
// calculating the integral
sum+=e[k];
// Calculating the controller output, independent variables
u[k]=ubias+Kc*e[k]+Ki*Tsamp*sum+Kd/Tsamp*(e[k]-e[k-1]);
// writing results to screen and to file
cout << k << "\t" << r[k] << "\t" << y[k] << "\t" <<
e[k] << "\t" << u[k] << "\n";
outFile << k << "\t" << r[k] << "\t" << y[k] << "\t" <<
e[k] << "\t" << u[k] << "\n";
}
return 0;
}
⑵ MATLAB用增量式PID控制算法编写仿真程序
你把18-20行的%去掉,就能运行出来了~
⑶ 基于matlab的pid控制系统仿真的建模具体步骤
1. PID 控制系统原理及算法
当我们不能将被控对象的结构和参数完全地掌握,或者是不能得到精确的数学模型时,在这种情况下最便捷的方法便是采用PID 控制技术。为了使控制系统满足性能指标要求,PID 控制器一般地是依据设定值与实际值的误差,利用比例(P)、积分(I)、微分(D)等基本控制规律,或者是三者进行适当地配合形成相关的复合控制规律,例如,PD、PI、PID 等。
图1 是典型PID 控制系统结构图。在PID 调节器作用下,对误差信号分别进行比例、积分、微分组合控制。调节器的输出量作为被控对象的输入控制量。
图1 典型PID控制系统结构图
PID 控制器主要是依据给定值r(t)与实际输出值y(t)构成控制偏差,用公式表示即e(t)=r(t)-y(t),它本身属于一种线性控制器。通过线性组合偏差的比例(P)、积分(I)、微分(D),将三者构成控制量,进而控制受控对象。控制规律如下:
其传递函数为:
式中:Kp--比例系数; Ti--积分时间常数; Td--微分时间常数。
2. PID 控制器的MATLAB 仿真
美国MathWorks 公司推出的MATLAB 是一套具备高性能的数值计算和可视化软件。由于MATLAB 可以将矩阵运算、图形显示、信号处理以及数值分析集于一体,构造出的用户环境使用方便、界面友好,因此MATLAB 受到众多科研工作者的欢迎。本文利用MATLAB 仿真工具箱Simulink 的功能,在基于仿真环境Matlab/Simulink 工具上用图形化方法直接建立仿真系统模型,启动仿真过程,将结果在示波器上显示出来。
3. 仿真实例分析
3.1 建立数学建模
设被控对象等效传递函数为
3.2 仿真建模
仿真建模的目的就是将数学模型转换成计算机能够执行的模型,运用Simulink 可以达到此目的。图2 是综合图1 和给定计算公式运用Simulink 建立的PID 控制的连续系统的仿真模型(建模步骤略)。
图2 Simulink仿真建模
3.3 仿真实验
在传统的PID 调节器中,参数的整定问题是控制面临的最主要的问题,控制系统的关键之处便是将Kp、Ti、Td三个参数的值最终确定下来。而在工业过程控制中首先需要对PID 控制中三参量对系统动态性的影响进行实际深入地了解,才能确定怎样将三参数调节到最佳状态。在本实验中,对各参量单独变化对系统控制作用的影响进行讨论,其中在对一个参量变化引发的影响进行讨论时,需要将其余两个参数设定为常数。
3.3.1 P 控制作用分析
分析比例控制作用。设Td= 0、Ti=∞、Kp= 3 ~ 10.输人信号阶跃函数,分别进行仿真,如图3 所展示的系统的阶跃响应曲线。
图3 显示的仿真结果表明:系统的超调量会随着Kp值的增大而加大,系统响应速度也会会随Kp值的增大而加快。但是系统的稳定性能会随着Kp的增大而变差。
图3 单闭环调速系统P控制阶跃响应曲线
3.3.2 比例积分控制作用的分析
设比例积分调节器中Kp= 1,讨论Ti= 0.01 ~ 0.05 时。输人信号阶跃函数,分别进行仿真,如图4 所展示的系统的系统的阶跃响应曲线。
图4 单闭环调速系统PI控制阶跃给定响应曲线
系统的超调量会随着Ti值的加大而减小,系统响应速度随着Ti值的加大会略微变慢。
3.3.3 微分调节作用的分析
设Kp= 1、Ti= 0.01,讨论Td= 10 ~ 100 时对系统阶跃响应曲线的影响。输人信号阶跃函数,分别进行仿真,如图5 所展示的系统的阶跃响应曲线。
图5 单闭环调速系统PID控制阶跃给定响应曲线
图5 所显示的仿真结果表明:根据单闭环调速系统的参数配合情况,起始上升段呈现较尖锐的波峰,Kp= 1、Ti= 0.01不变时,随着Td值的加大,闭环系统的超调量增大,响应速度变慢。
4 .结论
(1)对于PID 参数采用MATLAB 进行整定和仿真,使用起来不仅快捷、方便,而且更为直观,同时也避免了传统方法反复修改参数调试。
(2)系统的响应速度会随Kp值的增大而加快,同时也有助于静差的减小,而Kp值过大则会使系统有较大超调,稳定性变坏;此外,系统的动作会因为过小的Kp值减慢。
(3)超调的减小、振荡变小以及系统稳定性的增加都取决于积分时间Ti的增大,但是系统静差消除时间会因为Ti的增大而变长。
(4)增大微分时间Td对于系统的稳定性、系统响应速度的加快以及系统超调量的减小都会有所帮助。但是如果Td过大,则会使得调节时间较长,超调量也会增大;如果Td过小,同样地也会发生以上状况。
(5)总之PID 参数的整定必须考虑在不同时刻三个参数的作用以及彼此之间的作用关系。
5.结语
PID 控制应用领域极为广泛,可将其应用于电力、化工、轻工、冶金以及机械等工业过程控制中。通常情况下,最适合采用PID 控制技术的条件是:当我们对目标系统或被控对象的内部特征不完全清楚时,或者是系统的全部参数不能经过有效的测量手段来获取,同时必须依赖于经验和现场调试来确定系统控制器的结构参数情况下采用该技术。
⑷ 如何使用matlab进行pid参数仿真设计
我来回答一下你的问题吧,你这个模块不是Simulink中传统的Sine wave模块,而是Signal processing的模块因此不是设置的问题,而是找错库了
⑸ 如何用matlab进行增量型PID仿真
在MATLAB命令窗口中键入Simulink命令;
在Simulink的浏览工具条选择“新建”按钮,打开一个空白的模型创建窗口;
在Simulink库浏览器中单击Source库,选中Step模块,单击Step模块并将其拖入到新建的模型窗口中,然后释放,完成;
按照步骤3选择Continuous库添加Transport Delay模块,Derivative模块,Integrator模块,Transfer Fcn模块;选择Math Operations库添加三个Gain模块,两个Add模块;
用鼠标定位在模块的端口,按住鼠标左键将相连的模块连线;
设置各个模块的参数,将双击Add模块,出现参数对话框,在Main中的list of
Signs中内容设置为“+-”,同理Add1模块设置为“+++”双击Transfer Fcn模块,在Numerator coefficients中添加[8],在denominator coefficients中添加[360 1]则传递函数为8/(360s+1),延时模块时间设置为10;
保存Simulink模型。
2)对刚刚建立的模型进行仿真
在Simulation菜单下的Configuration Parameters命令,打开参数的对话框设置仿真参数,start time设置为0,终止时间设置为500;
Type参数设置为Variable—step,Solver参数设置为ode45(Domand-Prince),其他参数默认值即可。
设置Gain三个模块的值
在Simulation菜单下选择Start,通过Scope模块观察输出波形;
⑹ 如何利用Matlab做PID闭环控制仿真
为了使控制系统满足性能指标要求,PID 控制器一般地是依据设定值与实际值的误差,利用比例(P)、积分(I)、微分(D)等基本控制规律,或者是三者进行适当地配合形成相关的复合控制规律,例如,PD、PI、PID 等。
⑺ 跪求:如何用matlab做专家PID控制的仿真
刘金琨的《智能控制》第12页就有这个题,第14页是具体程序代码。
⑻ 如何利用Matlab做PID闭环控制仿真
为了使控制系统满足性能指标要求,PID
控制器一般地是依据设定值与实际值的误差,利用比例(P)、积分(I)、微分(D)等基本控制规律,或者是三者进行适当地配合形成相关的复合控制规律,例如,PD、PI、PID
等。
⑼ 如何用matlab软件模拟pid控制"经验试凑法
打开matlab,在主工具栏找到应用程序一栏,打开PID调节器选项
输入模型
在输入模型栏,点击export输入需要调节的模型。
选择控制的类型
选择具体的控制类型,如P、PI、PID、PIDF等,根据需求选择即可
选择作用域
选择在时域范围还是频域范围内调节
调节
根据具体系统的性能进行调节,同时可以再图像中看出调节时变化的趋势。
6
查看结果
如果调节好了,想看具体的参数。直接选择show parameter选项即可。同时也可以看到相应的性能。