PID simulink block for MIMO system

39 views (last 30 days)
Pls I need help... I have this satellite system with 3axial control and i want use PID controller.. So i need simulink block for PID controller for MIMO system. Pls help as this is needed for my Thesis
  3 Comments
Sam Chak
Sam Chak on 29 Oct 2021
I hope you read the answer carefully. A method of implementing the PID controllers was suggested together with the equations. I'm merely suggesting control strategies for you to deal with the control problem, which is about implementing the SISO-based PID controllers in the MIMO system.
Another way to implement the PID controllers is through the designed LQR. Recall the gains from the LQR to control ϕ:
.
You can group them and make 3 sets of PD controllers for :
.
In theory, you should obtain more or less the same performances.
If these strategies are not what you seek to learn for solving the control problem in Simulink, please consult with your academic supervisor to find out exactly what he or she expects.

Sign in to comment.

Accepted Answer

Sam Chak
Sam Chak on 29 Oct 2021
This simple simulation is just to show you that it is possible to design and implement the PID controllers based on the control strategy that I have described previously. The initial conditions in this simulation are , , .

More Answers (1)

Sam Chak
Sam Chak on 28 Oct 2021
Edited: Sam Chak on 29 Oct 2021
The PID control tuning requires the plant model that must be single input, single output (SISO). Because the dynamics are coupled, if you want to tune the PID controller for each axis, you could first use the feedback linearization technique to decouple the dynamics with respect to the control inputs, and then tune the PID controller accordingly. For example,
.
With that, you can construct a transfer function in Simulink and then use the PID controller block to tune it
.
Else, the Linear Quadratic Regulator (LQR) is a popular control method that can handle linear MIMO systems.
% parameters
Ix = 3*9.8194;
Iy = 3*9.7030;
Iz = 3*9.7309;
wo = 0.00106496; % calculated exactly at altitude 686 km
a1 = -4*(wo^2)*(Iy - Iz)/Ix;
a2 = -3*(wo^2)*(Ix - Iz)/Iy;
a3 = -1*(wo^2)*(Iy - Ix)/Iz;
a4 = (Ix - Iy + Iz)*wo;
b1 = 1/Ix;
b2 = 1/Iy;
b3 = 1/Iz;
% state space matrices
A = [0 0 0 1 0 0; 0 0 0 0 1 0; 0 0 0 0 0 1; a1 0 0 0 0 a4/Ix; 0 a2 0 0 0 0; 0 0 a3 -a4/Iz 0 0];
B = [zeros(3); diag([b1, b2, b3])];
C = eye(6);
D = zeros(6, 3);
% design of LQR
Q = 1e0*C'*C
R = 1e0*eye(rank(B))
[K, S, e] = lqr(A, B, Q, R)
sysC = ss(A-B*K, B, C, D)
step(sysC)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!