BAB I
Sistem Motor Arus Searah
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_cl=feedback(sys_o1,1)
Hasil Program
Fungsi Alih Lingkar Terbuka
sys_o1 =
0.01
--- 0.005 s^2 + 0.06 s + 0.1001
Continous-time transfer function.
fungsi alih tertutup
sys_c1 =
0.01
---0.005 s^2 + 0.06 s + 0.1101 continous time transfer function
Percobaan 1
Analisa Perfomansi Dalam Domain Waktu
clc
clear all
close all
close all hidden
%
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
%
% disp('Perfomansi Lingkar Terbuka dalam Domain Waktu') num_c1=get(sys_c1,'num');
den_c1=get(sys_c1,'den'); t=0:0.1:10.00;
[y,x,t]=step(num_c1,den_c1); P = stepinfo(sys_c1)
k = max(y);
tv = sum(abs(diff(y))); k1 = sort(y,'descend'); k2 = k1(1);
k3 = k1(2); K = k3/k2;
e1 = abs(1-dcgain(sys_c1)); EV = (tv/abs(dcgain(sys_c1)));
fprintf('Total Variasi = %10.5g\n',tv) fprintf('Decay Rasio = %10.5g\n',K) fprintf('Steady State Offset = $10.5g\n',e1) fprintf('Excess Variation = %10.5g\n',EV) %Tanggapan Terhadap Masukan Undak Masukan t = 0:0.01:10;
[y,x,t] = step (num_c1,den_c1,t); plot (t,y);
grid on
title('Tanggapan Terhadap Masukan Undak Satuan') ylabel('keluaran')
Hasil Program
Hasil Grafik
Percobaan 2 Analisa Perfomansi Dalam Domain Frekuensi
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_cl=feedback(sys_o1,1)
disp('Fungsi ALih Lingkar Tertutup') sys_cl=feedback(sys_o1,1)
%
%Perfomansi Lingkar Terbuka dalam Domain Frekuensi
disp('Perfomansi Lingkar Terbuka dalam Domain Frekuensi') [Gm,Pm,Wgm,Wpm] = margin (sys_o1);
fprintf('Margin Penguatan = %10.5 \n',Gm) fprintf('Margin Fasa = %10.5 \n',Pm) fprintf('Frekuensi Margin Penguatan = %10.5 \n',Wgm) fprintf('Frekuensi Margin Fasa = %10.5 \n',Wpm) %
% Digram Bode margin (sys_o1) grid on
Hasil Program
Perfomansi sistem lingkar tertutup dalam domain frekuensi meliputi nilai puncak
resonansi frekuensi puncak resonansi dan lebar pita
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah J = 1;
b = 0.16; K = 0.99; R = 0.11; L = 0.5;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 K];
den=[(J*L) ((J*R)+(b*L)) ((b*R)+(K*K))]; sys_o1=tf(num,den)
%
disp('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
% Diagram Magnitude Bode Sistem Eksitasi Generator bodemag(sys_c1)
grid on
Hasil Grafik
Percobaan 4 Analisa Kestabilan
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_cl=feedback(sys_o1,1)
disp('Fungsi Alih Lingkar Tertutup') sys_cl=feedback(sys_o1,1)
%
% Periksa Kestabilan dengan Kriteria Nyquist nyquist(num,den)
grid on
Hasil Program
Diagram Nynquist dari gambar diatas
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah J = 1;
b = 0.16; K = 0.99; R = 0.11; L = 0.5;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 K];
den=[(J*L) ((J*R)+(b*L)) ((b*R)+(K*K))]; sys_o1=tf(num,den)
%
disp('Fungsi Alih Lingkar Tertutup') sys_cl=feedback(sys_o1,1)
%
% Periksa Kestabilan dengan Kriteria Bode [Gm,Pm,Wgm,Wpm] = margin (sys_o1);
K = 1/Gm if (K<1)
disp ('Sistem Stabil') else
disp('Sistem Tidak Stabil') end
Percobaan 4 Analisa Kekokohan
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
%
disp('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
%
%Fungsi Alih Fungsi Sensitifitas
disp ('Fungsi Alih Fungsi Sensistivitas') S=1 - sys_c1
%
%Kriteria Puncak Maksimun
disp('Kriteria Puncak Maksimun Fungsi Sensitivitas Komplementer') Mt=norm((1 - sys_c1),inf,4)
disp('Kriteria Puncak Maksimun Fungsi Sensitivitas Komplementer') Mt=norm(sys_c1,inf,4)
%
%Tanggapan Fungsi Sensitivitas dan Fungsi Sensitivitas Komplementer
loops=loopsens(tf(num,den),1); bode(loops.Si,'r',loops.Ti,'b')
hleg=legend('Fungsi Sensitivitas','Fungsi Sensitivitas Komplementer');
grid on
Hasil Grafik
BAB II
Perancangan dan Analisa Sistem Kendali Kecepatan Motor Arus Searah dengan
Pengendali Proposional (P)
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_cl=feedback(sys_o1,1)
Kp=input('Konstanta Kp->'); num1=[0 0 Ka];
den1=[((1*Ta*Te*Td)/Tr)];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali P') sys_o1=tf(num,den)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali P') sys_cp1=tf(num1,den1)
Hasil Program
Percobaan 1 Analisa Perfomansi Dalam Domain Waktu
clc
clear all
close all
close all hidden
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_cl=feedback(sys_o1,1)
disp('Fungsi Alih Lingkar Terbuka dengan Kendali P') sys_op1=tf(num,den)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali P') num1=[0 0 0.01];
EssStep = 0; EssRamp = 0; EssParab=1/Ka;
EssStep =inf; EssRamp =inf; EssParab=inf; end
fprintf('Tipe Sistem adalah %2.0f\n',systype)
fprintf('Kostanta Kesalahan Posisi (Kp)adalah %5,4f\n', Kp) fprintf('Kostanta Kesalahan Kecepatan (Kv)adalah %5,4f\n', Kv) fprintf('Kostanta Kesalahan Percepatan (Ka)adalah %5,4f\n', Ka) fprintf('Kesalahan Keadaan Mantap Untuk Masukan Undak adalah %5,4f\n', EssStep)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Laju adalah %5,4f\ n', EssRamp)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Parabolik adalah %5,4f\n', EssParab)
Kp=input ('Konstanta Kp ->'); num2=[0 0 (0.01*Kp)];
den2=[0.0005 0.06 (0.1101+Kp)];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali P') sys_op1=tf(num,den)
else
fprintf('Tipe Sistem adalah %2.0f\n',systype)
fprintf('Kostanta Kesalahan Posisi (Kp)adalah %5,4f\n', Kp) fprintf('Kostanta Kesalahan Kecepatan (Kv)adalah %5,4f\n', Kv) fprintf('Kostanta Kesalahan Percepatan (Ka)adalah %5,4f\n', Ka) fprintf('Kesalahan Keadaan Mantap Untuk Masukan Undak adalah %5,4f\n', EssStep)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Laju adalah %5,4f\ n', EssRamp)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Parabolik adalah %5,4f\n', EssParab)
Program Parameter
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') Kp=input('Kostanta Kp ->');
num2=[0 0 (0.01*Kp)];
den2=[0.005 0.06 (0.1101+Kp)]; sys_cp1=tf(num,den)
%
disp('Perfomansi Lingkar Terbuka dalam Domain Waktu') num_cp1=get(sys_cp1,'num');
den_cp1=get(sys_cp1,'den'); t=0:0.01:10.00;
[y,x,t]=step(num_cp1,den_cp1); P = stepinfo(sys_cp1);
k = max(y);
tv = sum(abs(diff(y))); k1 = sort(y,'descend'); k2 = k1(1);
k3 = k1(2); K = k3/k2;
e1 = abs(1-dcgain(sys_cp1)); EV = (tv/abs (dcgain(sys_cp1)));
fprintf('Steady State Offset = %10.5g \n', e1) fprintf('Excess Variation = %10.5g \n', EV) % Tanggapan Terhadap Masukan Undak Satuan
t = 0:0.01:10;
[y,x,t] = step(num_cp1,den_cp1,t); plot(t,y);
grid on
title('Tanggapan Terhadap Masukan Undak Satuan') ylabel('Keluaran')
xlabel('detik')
Hasil Program
Percobaan 2 Analisa Perfomansi dalam Domain Frekuensi
clc
clear all
close all
close all hidden
%
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
Kp=input('Konstanta Kp->'); num=[0 0 (Td*Kp)];
den=[((1*Ta*Te*Td)/Tr)]; sys_op1=tf(num,den)
disp('Perfomansi Lingkar Tertutup dalam Domain Frekuensi') num2=[0 0 (0.01*Kp)];
den2=[0.005 0.06 (0.1101+Kp)]; sys_cp1=tf(num2,den2)
%Diagram Magnitude Bode Sistem Eksistei Generator bodemag(sys_c1,'-',sys_cp1,'-')
grid on
hleg=legend('Tanpa Pengendali Propotional(P)['-'] dengan pengendali Propotional (p) ['--']')
Hasil Program
Perfomansi sistem lingkar tertutup dalam domain frekuensi meliputi nilai puncak
resonansi, frekuensi puncak dan lebar pita
clc
clear all
close all
close all hidden
%
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_cl=feedback(sys_o1,1)
%
%Perfomansi Lingkar Terbuka dalam Domain Frekuensi
disp('Perfomansi Lingkar Terbuka dalam Domain Frekuensi') [Gm,Pm,Wgm,Wpm] = margin(sys_o1);
fprintf('Margin Penguatan = %10.5 \n',Gm) fprintf('Margin Fasa = %10.5 \n',Pm) fprintf('Frekuensi Margin Penguatan = %10.5 \n',Wgm) fprintf('Frekuensi Margin Fasa = %10.5 \n',Wpm) %
disp('Fungsi Alih Lingkar Terbuka dengan Kendali P') Kp=input('Konstanta Kp->');
num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_op1=tf(num,den)
%Perfomansi Lingkar Terbuka dalam Domain Frekuensi
disp('Perfomansi Lingkar Tertutup dalam Domain Frekuensi') num2=[0 0 (0.01*Kp)];
den2=[0.005 0.06 (0.1101+Kp)]; sys_cp1=tf(num2,den2)
disp('Perfomansi Lingkar Terbuka dalam Domain Frekuensi') [Gm,Pm,Wgm,Wpm] = margin (sys_op1);
fprintf('Margin Penguatan = %10.5 \n',Gm) fprintf('Margin Fasa = %10.5 \n',Pm) fprintf('Frekuensi Margin Penguatan = %10.5 \n',Wgm) fprintf('Frekuensi Margin Fasa = %10.5 \n',Wpm) %Diagram Bode Tanpa dan Dengan Kendali Propotional (p) bode(sys_o1,'-',sys_op1,'--')
grid on
Hasil Program
Percobaan 3 Analisa Kestabilan
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
disp ('Fungsi Alih Lingkar Terbuka dengan Kendali P') Kp=input('Konstanta Kp ->');
num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_op1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup dengan Kendali P') num2=[0 0 (0.01*Kp)];
den2=[0.005 0.06 (0.1101+Kp)]; sys_cp1=tf(num2,den2)
%
% Periksa Kestabilan dengan Kriteria Bode [Gm,Pm,Wgm,Wpm] = margin (sys_op1);
if (K < 1)
disp('Sistem Stabil') else
('Sistem Tidak Stabil') end
% Periksa Kestabilan dengan Kriteria Nyqist nyquist(sys_cp1)
grid on
Hasil Program
Percobaan 4 Analisa Kekokohan
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)%
% Fungsi alih Fungsi Sensitifitas
disp ('Fungsi Alih Fungsi Sensitifitas') s=1 - sys_c1
%
%Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas') Ms=norm((1 - sys_c1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas Komplementer') Mt=norm(sys_c1,inf,1e-4)
disp ('Fungsi Alih Lingkar Terbuka dengan Kendali P') Kp=input('Konstanta Kp ->');
num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_op1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup dengan Kendali P') num2=[0 0 (0.01*Kp)];
den2=[0.005 0.06 (0.1101+Kp)]; sys_cp1=tf(num2,den2)
% Fungsi alih Fungsi Sensitifitas
s=1 - sys_cp1 %
%Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas dengan Kendali P')
Ms_p=norm((1 -sys_cp1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas Komplementer dengan Kendali P')
%
% Tanggapan Fungsi Sensitivitas dan Fungsi Sensitivitas Komplementer
loops=loopsens(tf(num2,den2),1); bode(loops.Si,'r',loops.Ti,'b')
hleg=legend('Fungsi Sensitivitas','Fungsi Sensitivitas Komplementer');
grid on
Hasil Program
BAB III
Perancangan dan Analisa Sistem Kendali Kecepatan Motor Arus Searah dengan
Pengendali Proposional Integral (PI)
clc
clear all
close all
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
%
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
Kp=input('Konstanta Kp ->'); Ki=input('Konstanta Ki ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 0 (Td*Kp) Ki];
den2=[((1*Ta*Te*Td)/Tr) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') sys_opi1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PI') sys_cpi1=tf(num2,den2)
Hasil Program
Percobaan 1 Analisa Perfomansi dalam Domain Waktu
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah J = 10;
K = 1; R = 6; L = 0.02;
% Fungsi Alih Lingkar Terbuka num=[0 0 K];
den=[(J*L) ((J*R)+(b*L)) ((b*R)+(K*K))]; disp('Fungsi Alih Lingkar Terbuka') sys_o1=tf(num,den)
%
Kp=inf; Kv=inf; Ka=inf; adalah %5.4f \n', EssStep)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Laju adalah %5.4f \n', EssRamp)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Parabolik adalah %5.4f \n', EssParab)
Kp=input('Konstanta Kp ->'); Ki=input('Konstanta Ki ->');
den1=[(J*L) ((J*R)+(b*L)) ((b*R)+(K*K)) 0]; num2=[0 0 (K*Kp) Ki];
den2=[(J*L) ((J*R)+(b*L)) ((b*R)+(K*K)+Kp) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') sys_opi1=tf(num2,den1)
kn=kn*p(i); adalah %5.4f \n', EssStep)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Laju adalah %5.4f \n', EssRamp)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Parabolik adalah %5.4f \n', EssParab)
Perfomansi untuk menentukan perfomansi lingkar tertutup dalam domain waktu
meliputi waktu naik, waktu puncak, nilai puncak, lewetan maksimum, waktu
keadaan mantap, total variasi, decay info, steady state offset dan excess variation.
clc
clear all
close all
close all hidden
Ka = 10; Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
% disp('Performansi Lingkar Terbuka dalam Domain waktu') num_c1=get(sys_c1,'num');
den_c1=get(sys_c1,'den'); t=0:0.01:10.00;
[y,x,t]=step(num_c1,den_c1); P = stepinfo(sys_c1)
k = max(y);
tv = sum(abs(diff(y))); k1 = sort(y,'descend'); k2 = k1(1);
k3 = k1(2); K = k3/k2;
e1 = abs(1-dcgain(sys_c1)); EV = (tv/abs(dcgain(sys_c1)));
fprintf('Total Variasi = %10.5g \n',tv) fprintf('Decay Rasio = %10.5g \n',K)
fprintf('Steady State Offset = %10.5g \n',e1) fprintf('Excess Variation = %10.5g \n',EV) % Tanggapan Terhadap masukan Undak Satuan t=0:0.01:10.00;
Kp=input('Konstanta Kp ->'); Ki=input('Konstanta Ki ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 0 K Ki];
den2=[((1*Ta*Te*Td)/Tr) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') sys_opi1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PID') sys_cpi1=tf(num2,den2)
% disp('Performansi Lingkar Terbuka dalam Domain waktu') num_cpi1=get(sys_cpi1,'num');
den_cpi1=get(sys_cpi1,'den'); t=0:0.01:10.00;
[y_pi1,x_pi1,t_pi1]=step(num_cpi1,den_cpi1); P_pi1 = stepinfo(sys_cpi1)
k_pi1 = max(y);
tv_pi1 = sum(abs(diff(y))); k1_pi1 = sort(y,'descend'); k2_pi1 = k1(1);
k3_pi1 = k1(2); K_pi1 = k3/k2;
e1_pi1 = abs(1-dcgain(sys_cpi1)); EV_pi1 = (tv/abs(dcgain(sys_cpi1)));
fprintf('Total Variasi = %10.5g \n',tv_pi1) fprintf('Decay Rasio = %10.5g \n',K_pi1)
fprintf('Steady State Offset = %10.5g \n',e1_pi1) fprintf('Excess Variation = %10.5g \n',EV_pi1) % Tanggapan Terhadap masukan Undak Satuan t=0:0.01:10.00;
[y_pi1,x_pi1,t_pi1]=step(num_cpi1,den_cpi1,t); plot(t,y,'b',t,y_pi1,'r');
grid on
title ('Tanggapan terhadap Masukan Undak satuan')
hleg=legend('Tanpa Pengendali Proportional Integral (PI)','dengan Pengendali Proportional Integral (PI)');
ylabel('keluaran y') xlabel('detik (detik)')
Hasil Grafik
Percobaan 3 Analisa Perfomansi dalam Domain Frekuensi
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
%
disp ('Fungsi Alih Lingkar Tertutup') sys_c=feedback(sys_o1,1)
%
% Perpormansi Lingkar Terbuka dalam Domain Frekuensi disp('Performansi Lingkar Terbuka dalam Domain waktu') [Gm,Pm,Wgm,Wpm] = margin(sys_o1);
fprintf('Frekuensi Margin Penguatan = %10.5g \n',Wgm) fprintf('Frekuensi Margin Fasa = %10.5g \n',Wpm) %
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') Kp=input('Konstanta Kp ->');
Ki=input('Konstanta Ki ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 0 Ka Ki];
den2=[((1*Ta*Te*Td)/Tr) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') sys_opi1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PI') sys_cpi1=tf(num2,den2)
% Perpormansi Lingkar Terbuka dalam Domain Frekuensi disp('Performansi Lingkar Terbuka dalam Domain Frekuensi') [Gm,Pm,Wgm,Wpm] = margin(sys_opi1);
fprintf('Margin Penguatan = %10.5g \n',Gm) fprintf('Margin fasa = %10.5g \n',Pm)
fprintf('Frekuensi Margin Penguatan = %10.5g \n',Wgm) fprintf('Frekuensi Margin Fasa = %10.5g \n',Wpm)
% Diagram Bode Tanpa dan Dengan Pengendali Proportional Integral (PI)
bode(sys_o1, 'b',sys_opi1,'r') grid on
hleg=legend('Tanpa Pengendali Proportional Integral Diferensial (PID)','dengan Pengendali Proportional Integral (PI)');
Hasil Grafik
Perfomansi sistem lingkar tertutup dalam domain frekuensi meliputi nilai puncak
resonansi, frekuensi puncak resonansi dan lebar pita.
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
%
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') Kp=input('Konstanta Kp ->');
Ki=input('Konstanta Ki ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 0 Ka Ki];
den2=[((1*Ta*Te*Td)/Tr) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') sys_opi1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PI') sys_cpi1=tf(num2,den2)
%
% Performansi Lingkar Tertutup dalam Domain Frekuensi disp('Performansi Lingkar Tertutup dalam Domain frekuensi')
% Diagram Magnitude Bode Sistem Eksitasi Generator bodemag(sys_c1,'b',sys_cpi1,'r')
grid on
hleg=legend('Tanpa Pengendali Proportional Integral (PI)','dengan Pengendali Proportional Integral (PI)');
Hasil Program
Percobaan 4 Analisa Kestabilan
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah % Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') Kp=input('Konstanta Kp ->');
Ki=input('Konstanta Ki ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 0 Ka Ki];
den2=[((1*Ta*Te*Td)/Tr) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') sys_opi1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PI') sys_cpi1=tf(num2,den2)
%
% Periksa Kestabilan dengan Kriteria Bode [Gm,Pm,Wgm,Wpm] = margin (sys_opi1); K = 1/Gm
if (K < 1)
disp('Sistem Stabil') else
disp('Sistem Tidak Stabil') end
% Periksa Kestabilan dengan Kriteria Nyquist nyquist(sys_cpi1)
grid on
Hasil Grafik
Percobaan 5 Analisa Kekokohan
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
%
disp('Fungsi Alih Fungsi Sensitivitas') S=1 - sys_c1
%
% Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas') Ms=norm((1 - sys_c1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas Komplementer') Ms=norm(sys_c1,inf,1e-4)
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') Kp=input('Konstanta Kp ->');
Ki=input('Konstanta Ki ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 0 Ka Ki];
den2=[((1*Ta*Te*Td)/Tr) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PI') sys_opi1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PI') sys_cpi1=tf(num2,den2)
% Fungsi Alih Fungsi Sensitivitas
disp('Fungsi Alih Fungsi Sensitivitas') S=1 - sys_cpi1
%
% Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas dengan Kendali PID')
Ms_p=norm((1 - sys_cpi1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas Komplementer dengan Kendali PI')
Mt_p=norm(sys_cpi1,inf,1e-4)
%
% Tnggapan Fungsi Sensitivitas dan Fungsi Sensitivitas komplementer
loops=loopsens(tf(num2,den2),1); bode(loops.Si,'r',loops.Ti,'b')
hleg=legend('Fungsi Sensitivitas','Fungsi Sensitivitas Komplementer');
grid on
Hasil Grafik
BAB IV
Perancangan dan Analisa Sistem Kendali Kecepatan Motor Arus Searah dengan
Pengendali Proposal Differensial (PD)
clc
clear all
close all
close all hidden
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
%
%Performasi Lingkar Terbuka dalam Domain Frekuensi
disp('Performasi Lingkar Terbuka dalam Domain Frekuensi') [Gm,Pm,Wgm,Wpm] = margin (sys_o1);
fprintf('Margin Penguatan = %10.5g \n',Gm) fprintf('Margin Fasa = %10.5g \n',Pm) fprintf('Frekuensi Margin Penguatan = %10.5g \n',Wgm) fprintf('Frekuensi Margin Fasa = %10.5g \n',Wpm) %
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PD') Kp=input('Konstanta Kp->');
Kd=input('Konstatan Kd->'); den1=[((1*Ta*Te*Td)/Tr)]; num2=[0 (0.01*Kd) Kp];
den2=[(((1*Ta*Te*Td)/Tr)+Kp)];
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PD') sys_cpd1=tf(num2,den2)
%Performasi Lingkar Terbuka dalam Domain Frekuensi
disp('Performasi Lingkar Terbuka dalam Domain Frekuensi') [Gm,Pm,Wgm,Wpm] = margin(sys_cpd1);
fprintf('margin Penguatan = %10.5g \n',Gm) fprintf('Margin Fasa = %10.5g \n',Pm) fprintf('frekuensi Margin Penguatan = %10.5g \n',Wgm) fprintf('frekuensi Margin fasa = %10.5g \n',Wpm) % Diagram Bode tanpa dan dengan kendali proportional diferensial(PD)
bode(sys_o1,'b',sys_cpd1,'r') grid on
hleg=legend('tanpa pengendali proportional diferensial (PD)',' dengan pengendali proportional diferensial (PD)');
Hasil Grafik
Percobaan 1 Analisa Perfomansi dalam Domain Waktu
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka num=[0 0 K];
den=[(J*L) ((J*R)+(b*L)) ((b*R)+(K*K))]; disp('Fungsi Alih Lingkar Terbuka') sys_o1=tf(num,den)
%
disp('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
[z,p,k]=tf2zp(num,den); p=-p;
z=-z;
systype=0;
EssStep =inf; EssRamp =inf; EssParab=inf; end
fprintf('Tipe Sistem adalah %2.0f\n',systype)
fprintf('Kostanta Kesalahan Posisi (Kp)adalah %5,4f\n', Kp) fprintf('Kostanta Kesalahan Kecepatan (Kv)adalah %5,4f\n', Kv) fprintf('Kostanta Kesalahan Percepatan (Ka)adalah %5,4f\n', Ka) fprintf('Kesalahan Keadaan Mantap Untuk Masukan Undak adalah %5,4f\n', EssStep)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Parabolik adalah %5,4f\n', EssParab)
Kp=input ('Konstanta Kp ->'); Kd=input ('Konstanta Kd ->'); den1=[ ((1*Ta*Te*Td)/Tr)]; num2=[0 0*Ka Kp];
den2=[ ((1*Ta*Te*Td)/Tr)];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PD') sys_opd1=tf(num2,den1)
Kp=inf; Kv=inf; Ka=inf;
EssStep = 0; EssRamp = 0; EssParab=0; end
if(systype)<0
Kp=0; Kv=0; Ka=0
EssStep =inf; EssRamp =inf; EssParab=inf; end
fprintf('Tipe Sistem adalah %2.0f\n',systype)
fprintf('Kostanta Kesalahan Posisi (Kp)adalah %5,4f\n', Kp) fprintf('Kostanta Kesalahan Kecepatan (Kv)adalah %5,4f\n', Kv) fprintf('Kostanta Kesalahan Percepatan (Ka)adalah %5,4f\n', Ka) fprintf('Kesalahan Keadaan Mantap Untuk Masukan Undak adalah %5,4f\n', EssStep)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Laju adalah %5,4f\ n', EssRamp)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Parabolik adalah %5,4f\n', EssParab)
Hasil Program
Parameter untuk menentukan perfomansi lingkar tertutup dalam domain waktu
meliputi waktu naik, waktu puncak, nilai puncak, lewatan maksimum, waktu
keadaan mantap, total variasi, decay ratio, steady state offset dan excess variation.
clc
clear all
clear all
close all hidden
%
% Data-data Motor Arus Searah Ka = 10;
den=[((1*Ta*Te*Td)/Tr)];
disp('Fungsi Alih Lingkar Terbuka') sys_o1=tf(num,den)
disp('Fungsi Alih Lingkar Tertutup') sys_c1=tf(num,den)
%disp('performansi Lingkar Terbuka dalam Domain Waktu') num_c1=get(sys_c1,'num');
den_c1=get(sys_c1,'den'); t=0:0.01:10.00;
[y,x,t]=step(num_c1,den_c1); P = stepinfo(sys_c1)
k = max(y);
tv = sum(abs(diff(y))); k1 = sort(y,'descend'); k2 = k1(1);
k3 = k1(2); k = k3/k2;
e1 = abs(1-dcgain(sys_c1)); EV = (tv/abs(dcgain(sys_c1)));
fprintf('Total Variasi = %10.5g\n',tv) fprintf('Decay Rasio = %10.5g\n',k) fprintf('Steady State Offset= %10.5g\n',e1) fprintf('Excess Variation = %10.5g\n',EV) %Tanggapan Terhadap Masukan Undak Satuan t = 0:0.01:10;
[y,x,t] = step(num_c1,den_c1,t);
Kp=input('Konstanta Kp->'); Kd=input('Konstanta Kd->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 0 Ka Kp];
den2=[((1*Ta*Te*Td)/Tr)+Kp];
disp('Fungsi Alih Lingkar Terbuka dengan kendali PI') sys_opi1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan kendali PI') sys_cpi1=tf(num2,den1)
%disp('Performansi Lingkar Terbuka dalam Domain Waktu') num_cpi1=get(sys_cpi1,'num');
den_cpi1=get(sys_cpi1,'den'); t=0:0.01:10.00;
[y_pi1,x_pi1,t_pi1]=step(num_cpi1,den_cpi1); P_pi1 = stepinfo(sys_cpi1)
k_pi1 = max(y);
tv_pi1 = sum(abs(diff(y))); k1_pi1 =sort(y,'descend'); k2_pi1 = k1(1);
k3_pi1 = k1(2); k_pi1 = k3/k2;
e1_pi1 = abs(1-dcgain(sys_cpi1)); EV_pi1 = (tv/abs(dcgain(sys_cpi1)));
fprintf('Total Variasi = %10.5g\n',tv_pi1) fprintf('Decay Rasio = %10.5g\n',k_pi1) fprintf('Steady State offset= %10.5g\n',e1_pi1) fprintf('Excess Variation = %10.5g\n',EV_pi1) % Tanggapan Terhadap Masukan undak Satuan
[y_pi1,x_pi1,t_pi1]=step(num_cpi1,den_cpi1,t); plot(t,y,'b',t,y_pi1,'r');
grid on
title('Tanggapan Terhadap Masukan Undak Satuan')
hleg=legend('Tanpa Pengendali Proportional integral (PI)','Dengan PengendalianProportional Integral(PI)');
ylabel('Keluaran y') xlabel('detik (detik)')
Hasil Program
Percobaan 2 Analisa Perfomansi Dalam Domain Frekuensi
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
%
% Fungsi Alih Fungsi Sensitifitas
disp('Fungsi Alih Fungsi Sensitifitas') S=1 - sys_c1
%
%Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas') Ms=norm((1 - sys_c1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas Komplementer') Mt=norm(sys_c1,inf,1e-4)
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PD') Kp=input('Konstanta Kp ->');
Kd=input('Konstanta Kd ->'); den1=[((1*Ta*Te*Td)/Tr)]; num2=[0 0 Ka Kp];
den2=[(((1*Ta*Te*Td)/Tr)+Kp)];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PD') sys_opd1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PD') sys_cpd1=tf(num2,den2);
% Fungsi Alih Fungsi Sensitifitas
S=1 - sys_cpd1 %
%Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas dengan Kendali PD')
Ms_p=norm((1 - sys_cpd1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas Komplementer dengan Kendali PD')
Mt_p=norm(sys_cpd1,inf,1e-4)
%
% Tanggapan Fungsi Sensitivitas dan Fungsi Sensitivitas Komplementer
loops=loopsens(tf(num2,den2),1); bode(loops.Si,'r',loops.Ti,'b')
hleg=legend('Fungsi Sensitivitas','Fungsi Sensitivitas Komplementer');
grid on
Hasil Program
Percobaan 3 Analisa Kestabilan
clc
clear all
clear all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PD') Kp=input('Konstanta Kd ->');
Kd=input('Konstanta Kp ->'); den1=[((1*Ta*Te*Td)/Tr)]; num2=[0 0*Ka Kp];
den2=[((1*Ta*Te*Td)/Tr)+Kp];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PD') sys_opd1=tf(num2,den1);
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PD') sys_cpd1=tf(num2,den2);
%
%Periksa Kestabilan dengan Kriteria Bode [Gm,Pm,Wgm,Wpm] = margin (sys_opd1); K = 1/Gm
if (K < 1)
disp('Sistem Stabil') else
disp('Sistem Tidak Stabil') end
%Periksa Kestabilan dengan Kriteria Nyquist nyquist(sys_cpd1)
grid on
Hasil Grafik
Percobaan 4 Analisa Kekokohan
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup')
sys_c1=feedback(sys_o1,1)% Fungsi Alih Fungsi Sensitifitas disp('Fungsi Alih Fungsi Sensitifitas')
%
%Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitifitas') Ms=norm((1 - sys_c1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitifitas Komplementer') Mt=norm(sys_c1,inf,1e-4)
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PD') Kp=input('Konstanta Kp ->');
Kd=input('Konstanta Kd ->'); den1=[((1*Ta*Te*Td)/Tr)]; num2=[0 (0.01*Kd) Kp];
den2=[(((1*Ta*Te*Td)/Tr)+Kp)];
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PD') sys_opd1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendalu PD') sys_cpd1=tf(num,den2);
% Fungsi Alih Fungsi Sensitifitas
disp('Fungsi Alih Fungsi Sensitifitas') S=1 - sys_cpd1
%
%Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitifitas dengan Kendalu PD')
Ms_p=norm((1 - sys_cpd1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitifitas Komplementer dengan Kendali PD')
Mt_p=norm(sys_cpd1,inf,1e-4)
%
% Tanggapan Fungsi Sensitivitas dan Fungsi Sensitivitas Komplementer
loops=loopsens(tf(num2,den2),1); bode(loops.Si,'r',loops.Ti,'b')
hleg=legend('Fungsi Sensitivitas','Fungsi Sensitivitas Komplementer');
grid on
Hasil Grafik
BAB V
Perancangan dan Analisa Sistem Kendali Kecepatan Motor Arus Searah dengan
Pengendali Proposional Integral Differensial
Perancangan Pengendali Proposional Integral Differensial (PID)
% Data-data Motor Arus Searah Ka = 10;
Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
Kp=input('Konstanta Kp ->'); Ki=input('Konstanta Ki ->'); Kd=input('Konstanta Kd ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 (0.01*Kd) Kp Ki] den2=[((1*Ta*Te*Td)/Tr) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') sys_opid1=tf(num2,den1)
disp('Fungsi Alih Lingar Tertutup dengan Kendali PID') sys_cpid1=tf(num2,den2)
Hasil Program
Percobaan 1 Analisa Perfomansi dalam Domain Waktu
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 1;
Te = 6; Tr = 0.02;
% Fungsi Alih Lingkar Terbuka num=[0 0 Ka];
den=[(1*Ta*Te*Td)/Tr];
disp('Fungsi Alih Lingkar Terbuka') sys_o1=tf(num,den)
%
EssStep = 0; EssRamp = 0; EssParab = 0; adalah %5.4f \n', EssStep)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Laju adalah %5.4f \n', EssRamp)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Parabolik adalah %5.4f \n', EssParab)
Kp=input('Konstanta Kp ->'); Ki=input('Konstanta Ki ->'); Kd=input('Konstanta Kd ->'); den1=[(1*Ta*Te*Td)/Tr 0]; num2=[0 (0.01*Kd) Kp Ki]; den2=[(1*Ta*Te*Td)/Tr Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') sys_opid1=tf(num2,den1)
if(p(i))~=-inf adalah %5.4f \n', EssStep)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Laju adalah %5.4f \n', EssRamp)
fprintf('Kesalahan Keadaan Mantap Untuk Masukan Parabolik adalah %5.4f \n', EssParab)
Parameter untuk menentukan perfomansi lingkar tertutup dalam domain meliputi
waktu naik, waktu puncak, nilai puncak, lewatan maksimum, waktu keadaan
mantap, total variasi, decay ratio, steady state offset dan excess variation.
clc
clear all
close all
close all hidden
% Data-data Motor Arus Searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
% disp('Performansi Lingkar Terbuka dalam Domain waktu') num_c1=get(sys_c1,'num');
den_c1=get(sys_c1,'den'); t=0:0.01:10.00;
[y,x,t]=step(num_c1,den_c1); P = stepinfo(sys_c1)
k = max(y);
tv = sum(abs(diff(y))); k1 = sort(y,'descend'); k2 = k1(1);
k3 = k1(2); K = k3/k2;
e1 = abs(1-dcgain(sys_c1)); EV = (tv/abs(dcgain(sys_c1)));
fprintf('Total Variasi = %10.5g \n',tv) fprintf('Decay Rasio = %10.5g \n',K)
fprintf('Steady State Offset = %10.5g \n',e1) fprintf('Excess Variation = %10.5g \n',EV) % Tanggapan Terhadap masukan Undak Satuan t=0:0.01:10.00;
[y,x,t]=step(num_c1,den_c1,t);
Ki=input('Konstanta Ki ->'); Kd=input('Konstanta Kd ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 (0.01*Kd) Kp Ki]; den2=[((1*Ta*Te*Td)/Tr) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') sys_opid1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PID') sys_cpid1=tf(num2,den2)
% disp('Performansi Lingkar Terbuka dalam Domain waktu') num_cpid1=get(sys_cpid1,'num');
den_cpid1=get(sys_cpid1,'den'); t=0:0.01:10.00;
[y_pid1,x_pid1,t_pid1]=step(num_cpid1,den_cpid1); P_pid1 = stepinfo(sys_cpid1)
k_pid1 = max(y);
tv_pid1 = sum(abs(diff(y))); k1_pid1 = sort(y,'descend'); k2_pid1 = k1(1);
k3_pid1 = k1(2); K_pid1 = k3/k2;
e1_pid1 = abs(1-dcgain(sys_cpid1)); EV_pid1 = (tv/abs(dcgain(sys_cpid1)));
fprintf('Total Variasi = %10.5g \n',tv_pid1) fprintf('Decay Rasio = %10.5g \n',K_pid1)
fprintf('Steady State Offset = %10.5g \n',e1_pid1) fprintf('Excess Variation = %10.5g \n',EV_pid1) % Tanggapan Terhadap masukan Undak Satuan
t=0:0.01:10.00;
[y_pid1,x_pid1,t_pid1]=step(num_cpid1,den_cpid1,t); plot(t,y,'b',t,y_pid1,'r');
grid on
title ('Tanggapan terhadap Masukan Undak satuan')
hleg=legend('Tanpa Pengendali Proportional Integral Diferensial (PID)','dengan Pengendali Proportional Integral Diferensial (PID)');
ylabel('keluaran y') xlabel('detik (detik)')
Hasil Grafik
Percobaan 2 Analisa Perfomansi dalam domain Frekuensi
clc
clear all
close all
close all hidden
Ka = 10; Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
%
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
%
% Perpormansi Lingkar Terbuka dalam Domain Frekuensi disp('Performansi Lingkar Terbuka dalam Domain waktu') [Gm,Pm,Wgm,Wpm] = margin(sys_o1);
fprintf('Margin fasa = %10.5g \n',Pm)
fprintf('Frekuensi Margin Penguatan = %10.5g \n',Wgm) fprintf('Frekuensi Margin Fasa = %10.5g \n',Wpm) %
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') Kp=input('Konstanta Kp ->');
Ki=input('Konstanta Ki ->'); Kd=input('Konstanta Kd ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 (0.01*Kd) Kp Ki];
den2=[(((1*Ta*Te*Td)/Tr)+Kp) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') sys_opid1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PID') sys_cpid1=tf(num2,den2)
% Perpormansi Lingkar Terbuka dalam Domain Frekuensi disp('Performansi Lingkar Terbuka dalam Domain waktu') [Gm,Pm,Wgm,Wpm] = margin(sys_opid1);
fprintf('Margin Penguatan = %10.5g \n',Gm) fprintf('Margin fasa = %10.5g \n',Pm)
fprintf('Frekuensi Margin Penguatan = %10.5g \n',Wgm) fprintf('Frekuensi Margin Fasa = %10.5g \n',Wpm)
% Diagram Bode Tanpa dan Dengan Pengendali Proportional Integral diferensial (PID)
bode(sys_o1, 'b',sys_opid1,'r') grid on
title ('Tanggapan terhadap Masukan Undak satuan')
hleg=legend('Tanpa Pengendali Proportional Integral Diferensial (PID)','dengan Pengendali Proportional Integral Diferensial (PID)');
Hasil Grafik
Perfomansi sistem lingkar tertutup dalam domain frekuensi meliputi nilai puncak,
resonansi frekuensi puncak resonansi dan lebar pita.
clc
clear all
close all
close all hidden
Ka = 10; Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
%
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
%
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') Kp=input('Konstanta Kp ->');
Kd=input('Konstanta Kd ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 (0.01*Kd) Kp Ki];
den2=[(((1*Ta*Te*Td)/Tr)+Kp) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') sys_opid1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PID') sys_cpid1=tf(num2,den2)
% Diagram Magnitude Bode Sistem Eksitasi Generator bodemag(sys_c1,'b',sys_cpid1,'r')
grid on
hleg=legend('Tanpa Pengendali Proportional Integral Diferensial (PID)','dengan Pengendali Proportional Integral Diferensial (PID)');
Hasil Program
Percobaan 4 Analisa Kestabilan
clc
clear all
close all
close all hidden
%data-data motor arus searah Ka = 10;
Ta = 0.05; Td = 1; Te = 6; Tr = 0.02; %
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') Kp=input('Konstanta Kp ->');
Ki=input('Konstanta Ki ->'); Kd=input('Konstanta Kd ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 (0.01*Kd) Kp Ki];
den2=[(((1*Ta*Te*Td)/Tr)+Kp) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') sys_opid1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PID') sys_cpid1=tf(num2,den2)
%
% Periksa Kestabilan dengan Kriteria Bode [Gm,Pm,Wgm,Wpm] = margin (sys_opid1); K = 1/Gm
if (K < 1)
disp('Sistem Stabil') else
disp('Sistem Tidak Stabil') end
% Periksa Kestabilan dengan Kriteria Nyquist nyquist(sys_cpid1)
grid on
Hasil Grafik
Percobaan 5 Analisa Kekokohan
clc
clear all
close all
close all hidden
Ka = 10; Ta = 0.05; Td = 1; Te = 6; Tr = 0.02;
% Fungsi ALih Lingkar Terbuka
disp('Fungsi Alih Lingkar Terbuka') num=[0 0 Ka];
den=[((1*Ta*Te*Td)/Tr)]; sys_o1=tf(num,den)
%
disp ('Fungsi Alih Lingkar Tertutup') sys_c1=feedback(sys_o1,1)
%
% Fungsi Alih Fungsi Sensitivitas
S=1 - sys_c1 %
% Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas') Ms=norm((1 - sys_c1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas Komplementer') Ms=norm((1 - sys_c1),inf,1e-4)
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') Kp=input('Konstanta Kp ->');
Ki=input('Konstanta Ki ->'); Kd=input('Konstanta Kd ->'); den1=[((1*Ta*Te*Td)/Tr) 0]; num2=[0 (0.01*Kd) Kp Ki];
den2=[(((1*Ta*Te*Td)/Tr)+Kp) Ki];
disp('Fungsi Alih Lingkar Terbuka dengan Kendali PID') sys_opid1=tf(num2,den1)
disp('Fungsi Alih Lingkar Tertutup dengan Kendali PID') sys_cpid1=tf(num2,den2)
% Fungsi Alih Fungsi Sensitivitas
disp('Fungsi Alih Fungsi Sensitivitas') S=1 - sys_cpid1
%
% Kriteria Puncak Maksimum
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas dengan Kendali PID')
Ms_p=norm((1 - sys_cpid1),inf,1e-4)
disp('Kriteria Puncak Maksimum Fungsi Sensitivitas Komplementer dengan Kendali PID')
Mt_p=norm((1 - sys_cpid1),inf,1e-4)
%
% Tnggapan Fungsi Sensitivitas dan Fungsi Sensitivitas komplementer
loops=loopsens(tf(num2,den2),1); bode(loops.Si,'r',loops.Ti,'b')
hleg=legend('Fungsi Sensitivitas','Fungsi Sensitivitas Komplementer');
grid on