82 LAMPIRAN 83 Lampiran A Lingkar Kendali dan Has il Simulasi A1. Skema 1 Lingkar Kendali Penjejak Akselerasi Vertikal dalam Simulink 84 A2. Skema 2 Lingkar Kendali Penjejak Akselerasi Vertikal dalam Simulink 85 Lampiran B Code Matlab close all clear all clc %% F- 16 (20.000ft 700ft/s) F16.A_Lon = [-1.0889e- 2 2.8539e+1 - 2.3779e+1 -3.2154e+1; -9.1949e- 5 -7.9044e- 1 9.4864e-1 -1.6017e- 3; 3.1611e- 5 - 6.346e- 1 -1.0254 0 ; 0 0 1 0 ]; %V alpha q theta (ft/s rad) F16.A_Lon_red = [- 1.0889e- 2 2.8539e+1 -2.3779e+1; - 9.1949e- 5 -7.9044e- 1 9.4864e- 1; 3.1611e- 5 - 6.346e- 1 -1.0254 ]; %V alpha q(ft/s rad) F16.B_Lon = [9.9851 1.6333e+1; -1.0219e- 1 0; -1.1464e+1 0; 0 0];%dE dThrot (rad -) F16.B_Lon_red = [9.9851 1.6333e+1; - 1.0219e- 1 0; - 1.1464e+1 0]; F16.C_Lon = eye(4); F16.C_Lon_red = eye(3); F16.D_Lon = zeros(4,2); F16.D_Lon_red = zeros(3,2); F16.SYS = ss(F16.A_Lon,F16.B_Lon,F16.C_Lon,F16.D_Lon); F16.SYS_red = ss(F16.A_Lon_red,F16.B_Lon_red,F16.C_Lon_red,F16.D_Lon_red); F16.Vtrim = 700; %ft/s %% Output Matrixes F16.C_q = [0 0 1 0]; F16.C_q_red = [0 0 1]; F16.C_Az_theoretical_3 = F16.Vtrim*[- 9.1949e-5 -7.9044e- 1 (9.4864e- 1-1) - 1.6017e- 3]; F16.C_Az_theoretical_3_red = F16.Vtrim*[-9.1949e- 5 -7.9044e- 1 (9.4864e-1-1)]; F16.D_Az_theoretical_3 = F16.Vtrim*[F16.B_Lon(2,:)]; %% Augmented System Design % Aug q A_aug_q = [F16.A_Lon zeros(4,1); - F16.C_q 0]; B_aug_q = [F16.B_Lon; zeros(1,2)]; Q = 1*diag([1, 1, 1, 1, 100]); R = diag([1000,1000]); %--------------------------------------------------------------------- ----- A_red_aug_q = [F16.A_Lon_red zeros(3,1); 86 -F16.C_q_red 0]; B_red_aug_q = [F16.B_Lon_red; zeros(1,2)]; Q1 = 1*diag([1, 1, 1, 1]); R1 = diag([1,1000]); % Kalau mau ambil q nya aja diganti jadi R1 = diag([1,1]); % Kalau Az Tracking diganti jadi R1 = diag([1,1000]); Q_1 = 1*diag([1, 1, 1, 10]); R_1 = diag([1,1000]); %--------------------------------------------------------------------- ----- % Aug Az A_aug_Az_theo_3 = [F16.A_Lon zeros(4,1); - F16.C_Az_theoretical_3 0]; B_aug_Az_theoretical = [F16.B_Lon; zeros(1,2)]; Q2 = 1*diag([1, 1, 1, 1, 1]);% aslinya 1 jadi 100 R2 = diag([100,100]); %--------------------------------------------------------------------- ----- %% Gain Calculation K_q = lqr(A_aug_q,B_aug_q,Q,R); %--------------------------------------------------------------------- ----- K_q_red = lqr(A_red_aug_q,B_red_aug_q,Q1,R1); %--------------------------------------------------------------------- ----- K_q_red_1 = lqr(A_red_aug_q,B_red_aug_q,Q_1,R_1); %--------------------------------------------------------------------- ----- K_Az_theoretical_3 = lqr(A_aug_Az_theo_3,B_aug_Az_theoretical,Q2,R2); %--------------------------------------------------------------------- ----- %% Close Loop Used A_red_CloseLoop_q = A_red_aug_q- (B_red_aug_q*K_q_red); B_red_CloseLoop_q = [0;0;0;1]; %--------------------------------------------------------------------- ----- K_q_from_red = [K_q_red(:,1:3) zeros(2,1) K_q_red(:,4)]; A_CL_q_from_red = A_aug_q- (B_aug_q*K_q_from_red); B_CL_q_from_red = [0;0;0;0;1]; C_CL_q_from_red = eye(size(A_CL_q_from_red)); D_CL_q_from_red = zeros(size(B_CL_q_from_red)); %--------------------------------------------------------------------- ----- A_red_CL_q_aug_Az_theo_3 = [A_red_CloseLoop_q zeros(4,1); - F16.C_Az_theoretical_3(:,1:3) 0 0]; B_red_CL_q_aug_Az_theo_3 = [0;0;0;1;0]; C_red_CL_q_aug_Az_theo_3 = eye(size(A_red_CL_q_aug_Az_theo_3)); 87 D_red_CL_q_aug_Az_theo_3 = zeros(size(B_red_CL_q_aug_Az_theo_3)); %--------------------------------------------------------------------- ----- A_CL_q_from_red_aug_Az_theo_3 = [A_CL_q_from_red zeros(5,1); - F16.C_Az_theoretical_3 0 0]; B_CL_q_from_red_aug_Az_theo_3 = [0;0;0;0;1;0]; C_CL_q_from_red_aug_Az_theo_3 = eye(size(A_CL_q_from_red_aug_Az_theo_3)); D_CL_q_from_red_aug_Az_theo_3 = zeros(size(B_CL_q_from_red_aug_Az_theo_3)); %--------------------------------------------------------------------- ----- Q3 = 1*diag([1, 1, 1, 1, 1]); R3 = 1; %--------------------------------------------------------------------- ----- Q4 = 1*diag([1, 1, 1, 1, 10]); R4 = 1; %--------------------------------------------------------------------- ----- Q5 = 1*diag([1, 1, 1, 1, 1, 1]); R5 = 1; %--------------------------------------------------------------------- ----- Q5_1 = 1*diag([1, 1, 1, 1, 1, 100]);%aslinya 10 jadi 100 R5_1 = 1; %--------------------------------------------------------------------- ----- K_Az_CL_theo_3 = lqr(A_red_CL_q_aug_Az_theo_3,B_red_CL_q_aug_Az_theo_3, ... Q3,R3); %--------------------------------------------------------------------- ----- K_Az_CL_theo_3_1 = lqr(A_red_CL_q_aug_Az_theo_3,B_red_CL_q_aug_Az_theo_3, ... Q4,R4); %--------------------------------------------------------------------- ----- K_Az_CL_from_red = lqr(A_CL_q_from_red_aug_Az_theo_3, ... B_CL_q_from_red_aug_Az_theo_3, ... Q5,R5); %--------------------------------------------------------------------- ----- K_Az_CL_from_red_1 = lqr(A_CL_q_from_red_aug_Az_theo_3, ... B_CL_q_from_red_aug_Az_theo_3, ... Q5_1,R5_1);.