Azzera filtri
Azzera filtri

design feedback state controller

1 visualizzazione (ultimi 30 giorni)
Milad Bahaedini
Milad Bahaedini il 23 Feb 2023
Modificato: Sam Chak il 24 Feb 2023
hi,
I have a pressing system which it's input is the "press velocity" and the output is "exit temperature".SISO system
the matrices for the state space model are scalar and like this: A = [0] B = [16.6] C = [475] D = [0]
I need to design a state controller to keep the exit temperature in a range like 500-600°C by changing the press velocity during the pressing. the desired pole is let say -10.
I appreciate any idea.

Risposte (1)

Sam Chak
Sam Chak il 24 Feb 2023
Modificato: Sam Chak il 24 Feb 2023
You can try the following design approach if it works for your application.
A = 0;
B = 16.6;
C = 475;
D = 0;
sys = ss(A, B, C, D)
sys = A = x1 x1 0 B = u1 x1 16.6 C = x1 y1 475 D = u1 y1 0 Continuous-time state-space model.
The design task is to analytically compute the control gain K, or tune it
K = 10/16.6
K = 0.6024
until the desired pole is obtained
eig(A - B*K) % eigenvalue of compensated system
ans = -10
If you understand the theory behind the design, then this place() function is not needed:
place(A, B, -10) % should return the same value as K
ans = 0.6024
sysD = ss(A-B*K, B, C, D); % dummy
scale = 1/dcgain(sysD) % scale for input signal
scale = 0.0013
Td = 550; % Desired Temperature (input signal)
input = Td*scale % scaled input signal
input = 0.6975
Compensated System:
sysC = ss(A-B*K, B*(input), C, D);
step(sysC, 1)
S = stepinfo(sysC)
S = struct with fields:
RiseTime: 0.2197 TransientTime: 0.3912 SettlingTime: 0.3912 SettlingMin: 497.4754 SettlingMax: 549.9855 Overshoot: 0 Undershoot: 0 Peak: 549.9855 PeakTime: 1.0546

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by