clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
%% Transfer Function Definition
%This is just an example
D = 0.5;
E = 48;
R = 10;
C = 100e-6;
L = 100e-6;
Vc = E/(1-D);
IL = E/(R*(1-D)^2);
A = [0 , -(1-D)/L ; (1-D)/C , -1/(R*C)];
B = [Vc/L ; -IL/C];
C = [0 , 1];
D = 0;
s = tf('s');
TF = tf(ss(A,B,C,D));
%% Ku Ultimate Gain (WORK IN PROGRESS)
%Still need to make sure that the Ku used is the correct one (as just
%finding Ku this way might not be the only option)
syms K
CE = cell2mat(TF.Denominator) + K*cell2mat(TF.Numerator);%Characteristic Equation
nonzero = find(cell2mat(TF.Numerator)~=0);
Kvalues = zeros(1,length(CE));
for i = nonzero
Kvalues(i) = solve(CE(i),K);
end
Ku = Kvalues(Kvalues> 0 & min(Kvalues));%The selection of this Ku value still needs to be checked
%% Frecuency and Period
System = feedback(Ku*TF,1);
Poles = abs(pole(System));
Frecuency = Poles(1);
Pu = 2*pi/Frecuency;
%% For a P Controller
Kp = 0.5*Ku;
P = Kp;
System = feedback(P*TF,1);
%% For a P Controller
Kp = 0.5*Ku;
P = Kp;
System = feedback(P*TF,1);
step(48*System,'g')
hold on
%% For a PI Controller
Kp = 0.45*Ku;
Ti = Pu/1.2;
Ki = Kp/Ti;
PI = (Kp + Ki/s);
System = feedback(PI*TF,1);
step(48*System,'r')
%% For a PID Controller
Kp = 0.6*Ku;
Ti = Pu/2;
Ki = Kp/Ti;
Td = Pu/8;
Kd = Kp*Td;
PID = (Kp + s*Kd + Ki/s);
System = feedback(PID*TF,1);
step(48*System,'b')
matlab-使用Ziegler-Nichols闭环计算方法计算PID控制器的kp,ki,kd三个参数-源码
版权申诉
135 浏览量
2021-09-30
21:23:56
上传
评论
收藏 1KB RAR 举报
mYlEaVeiSmVp
- 粉丝: 1935
- 资源: 19万+
最新资源
- 整卷预览.mhtml
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- 基于Javascript的结婚请帖设计源码 - Invitation
- mysql语句大全及用法
- mysql语句大全及用法
- mysql语句大全及用法
- MySQL是一种广泛使用的开源关系型数据库管理系统
- MySQL是一种广泛使用的开源关系型数据库管理系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈