He estado leyendo el libro de ingeniería de control moderno de Ogata y trabajando en varios ejercicios para mejorar mi comprensión de los principios básicos de control. Encontré el siguiente ejemplo que estoy luchando por resolver.
Estoy atascado con la reducción del orden de mi función de transferencia mientras mantengo la misma (o muy similar) respuesta.
Estoy modelando un sistema que incluye una parte mecánica y una eléctrica. La función de transferencia general para mi sistema es de quinto orden.
La constante de tiempo para la parte eléctrica es muy pequeña en comparación con las constantes de tiempo mecánicas y debido a esto podemos reemplazar el sistema eléctrico con una ganancia y obtener un sistema de cuarto orden equivalente.
Como ejemplo, mi sistema es similar a este (tomado del libro de control de Ogata ):
Esta es mi función de transferencia e incluye tanto las partes mecánicas como eléctricas de mi sistema:
Quiero reducir el sistema de 5º orden, a un sistema de 4º orden, manteniendo la misma respuesta.
Para saber si he reducido el sistema correctamente, diseñé el diagrama de bloques de mi modelo en Simulink.
Esta es la respuesta a una señal de chirrido :
Mi idea era usar la respuesta anterior para ver si he reducido la función de transferencia correctamente.
A continuación, procedí a encontrar los polos, ceros y ganancia de mi sistema. Para hacerlo, utilicé este fragmento de código disponible en MathWorks , con el TF de quinto orden anterior:
b = [0.0001 10];
a = [0.005 5.00010060 0.661600001 61.01102010 2.1101 10];
fvtool(b,a,'polezero')
[b,a] = eqtflength(b,a);
[z,p,k] = tf2zp(b,a)
El resultado fue el siguiente, que es exactamente lo que esperaba:
y el mapa PZ equivalente:
Los resultados anteriores muestran el polo asociado con el circuito eléctrico, que está muy a la izquierda. Esto se puede eliminar, reduciendo así el orden de la función de transferencia de orden 5 a orden 4.
Luego, procedí usando zp2tf para eliminar el polo en el extremo izquierdo de la siguiente manera, sin embargo, la salida no parece tener sentido.
z = [-100000]';
p = [
-0.04 + 0.0347i % *100
-0.04 - 0.0347i
-0.02 + 0.0041i
-0.02 - 0.0041i
];
k = 0.0200;
[b,a] = zp2tf(z,p,k);
[bnew,anew] = zp2tf(z,p,k);
bnew/200
anew/200
ans =
0 0 0 0 0.0001 10.0000
ans =
0.0050 0.0500 0.0001 0.0001 0.0000 0.0000
Esperaba que lo anterior diera como resultado un sistema de cuarto orden, pero claramente estoy haciendo algo mal con mi enfoque.
Estoy atascado reemplazando la parte eléctrica del diagrama de bloques con un bloque de ganancia simple, mientras mantengo la misma (o muy similar) respuesta de salida.
¿Cómo puedo obtener el modelo de diagrama de bloques equivalente para el sistema de cuarto orden?
Se agradecería cualquier sugerencia, sugerencia y / o consejo sobre lo que debo hacer.
El sistema tiene dos polos complejos y uno regular:
Pole Damping Frequency Time Constant
(rad/seconds) (seconds)
-1.68e-02 + 4.07e-01i 4.13e-02 4.07e-01 5.94e+01
-1.68e-02 - 4.07e-01i 4.13e-02 4.07e-01 5.94e+01
-4.32e-02 + 3.47e+00i 1.25e-02 3.47e+00 2.31e+01
-4.32e-02 - 3.47e+00i 1.25e-02 3.47e+00 2.31e+01
-1.00e+03 1.00e+00 1.00e+03 1.00e-03
El más alto está en 1 krad y podría eliminarse, también podrías deshacerte de los dos más bajos:
%I see three time constants
tfmotor = tf([0.0001 10],[0.005 5 0.6616 61.1 2.11 10])
damp(tfmotor)
%find all basic transfer functions
[r,p,k] = residue([0.0001 10]*2000,2000*[0.005 5 0.6616 61.1 2.11 10]);
%eliminate highest frequency time constants
[b,a] = residue(r(2:5),p(2:5),k);
tfmotorReduced = tf(b,a)
damp(tfmotorReduced)
[b,a] = residue(r(4:5),p(4:5),k);
tfmotorReduced2 = tf(b,a)
damp(tfmotorReduced2)
%use impulse to show all frequencies (hit it with a dirac delta function, to make all frequencies ring.
figure;impulse(tfmotor,'b'),hold on,impulse(tfmotorReduced,'r'),impulse(tfmotorReduced2,'g')
legend('5-pole system','High frequency pole gone','Only lowest freq pole')
%better way to simulate, you can use chrip, step or any function for input
t = 0:0.001:10;
y =lsim(tfmotor,chirp(t,100,10,1),t);
figure;bode(tfmotor,'b'),hold on,bode(tfmotorReduced,'r'),bode(tfmotorReduced2,'g')
legend('5-pole system','High frequency pole gone','Only lowest freq pole')
El primer polo está a 0,4 rad (se muestra en negro) El segundo polo está a 3,4 rad (se muestra en amarillo) El tercer polo está a 1 krad (se muestra en rojo)
Si solo le preocupa construir un controlador (un controlador de segundo orden), el polo principal a 0,4 rad podría controlar las amplitudes más grandes, pero tendría algo de vibración a 3,4 krad porque el controlador no podría responder . Un controlador de cuarto orden podría eliminar las frecuencias a 3,4 rad. En este momento, el polo en 1 krad es insignificante (muy baja amplitud) y no tendría que preocuparse por eso para un controlador
Recuerde que para un ADC de 24 bits y 5 V, -130 dB estaría cerca del nivel de nV, por lo que, a menos que necesite ese tipo de precisión, después de -100 dB probablemente no importe porque ni siquiera podrá construir un controlador para controlar ese nivel. de precisión en presencia de ruido. (también necesitaría un DAC de precisión) La otra advertencia es que si construyó esto con electrónica analógica para el controlador, aún tendrá ruido después de -100dB. Construir controladores en presencia de ruido es un tema para otro día.
rrz0
Pico de voltaje
Pico de voltaje
rrz0
joe electro
joe electro
joe electro