前言:
眼前我们对“基于matlab的pid”大约比较着重,小伙伴们都想要剖析一些“基于matlab的pid”的相关内容。那么小编在网上收集了一些关于“基于matlab的pid””的相关文章,希望同学们能喜欢,各位老铁们一起来学习一下吧!一、初学者学习目的
1、利用Matlab/Simulink实现PID控制算法;
2、观察不同PID参数对控制性能的影响;
3、掌握PID参数整定的方法。
二、实践内容
1、以二阶系统
为被控对象,【K=(135)】,在阶跃输入信号的作用下,用simulink搭建PID控制系统,并绘制阶跃响应曲线,记录相应的PID参数;
2、在上题中,在matlab中用程序语句的方式实现题1中的PID控制算法(要求PID参数与题1一致,对比阶跃响应曲线),并分析系统的时域特性;
3、针对题1,用自定义函数的方式实现PID控制算法,主程序调用该函数实现PID控制,要求同2。
例如:function y=myPID(Kc, Ki, Kd, G)
Kc, Ki, Kd:分别为PID的比例,积分和微分系数
G:被控对象传递函数
三、结果以及分析
1.基于simulink
a)
当Kp=1;Ki=1;Kd=1;阶跃响应曲线
当Kp=10;Ki=1;Kd=1;阶跃响应曲线
Kp=1;Ki=10;Kd=1;阶跃响应曲线
2.程序代码
Kp=1; %比例Ki=1; %积分Kd=1; %微分s=tf('s');Gc=(Kd*s^2+Kp*s+Ki)/s; %PID控制器%G=zpk([],[-1 -1 -2],1);G=135/(s^2+(sqrt(135))*s);step(feedback(Gc*G,1)) %阶跃响应
a) 阶跃响应曲线
3.函数程序代码
function myPID(Kp,Ki,Kd,G) s=tf('s');Gc=(Kd*s^2+Kp*s+Ki)/s;step(feedback(Gc*G,1))end
主程序调用代码
num=135;den=[1 sqrt(135) 0];G=tf(num,den)Kp=input('请输入一个整数:'); %输入比例Ki=input('请输入一个整数:'); %输入积分Kd=input('请输入一个整数:'); %输入微分myPID(Kp,Ki,Kd,G) %调用函数
注意函数名字和文件名一致
得到的阶跃响应
标签: #基于matlab的pid