¿Cómo usar MATLAB para observar el efecto de múltiples factores de amortiguamiento?

Quiero usar MATLAB para observar el efecto de cambiar zeta (factor de amortiguamiento) en la respuesta del sistema.

Aquí hay un código de archivo m que traza tres respuestas: subamortiguado, sobreamortiguado y críticamente amortiguado.

clc
clear all
close all
num1=[16]
den1=[1 4 16]
num2=[16]
den2=[1 8 16]
num3=[16]
den3=[1 10 16]
sys1=tf(num1,den1)

También he adjuntado una instantánea de la respuesta:

ingrese la descripción de la imagen aquí

Quiero hacer algo que me permita cambiar el valor de zeta directamente y, de acuerdo con ese valor de zeta, la respuesta cambia, en lugar de escribir una nueva función de transferencia o cambiar la función de transferencia original.

Respuestas (2)

Espero estar interpretando bien lo que preguntas. Tengo entendido que solo desea simular la función de transferencia, para varios valores zeta, sin tener que volver a definir la función de transferencia.

Puede expresar la variable zeta directamente en su matriz de denominador. Considere que la función de transferencia básica de segundo orden es la siguiente:

GRAMO ( s ) = ω norte 2 s 2 + 2 ζ ω norte s + ω norte 2

Actualmente, está codificando los valores de cada término. También puede definirlos como variables:

omega = 4;

hold on
for zeta = 0.25:0.25:1.5
  num = [omega^2];
  den = [1, omega*zeta*2, omega^2];
  sys = step(tf(num, den));
  plot(sys, 'DisplayName', ["z = ", num2str(zeta)]);
end
hold off

title("Step Response with varied Zeta");
legend show

Respuesta de paso

El código se ejecuta en Octave 5.1 que no es compatible, stepplotasí que lo sustituí step. Si hay valores específicos y aleatorios para ζ que desea probar, también puede ejecutar esto en una matriz.

Se llama identificación del sistema. Este es un buen punto de partida: http://mocha-java.uccs.edu/ECE5560/ECE5560-Notes04.pdf

ingrese la descripción de la imagen aquí

Luego podría relacionar la función de transferencia estimada y encontrar zeta. (si solo quiere encontrar zeta ahora, ya puede hacerlo con los números que tiene, y no necesita identificación del sistema).

Para encontrar una función de transferencia estimada, necesita conocer las entradas y salidas de un sistema, luego puede encontrar la relación entre las entradas y salidas, que es la función de transferencia.

Estoy bastante seguro de que esto no se puede hacer con precisión en tiempo real. Para conocer la respuesta de frecuencia de un sistema, debe tener suficiente espacio de frecuencia muestreado. Pero puede hacer esto poco tiempo después de que se liquide el sistema. (o puede calcular zeta en tiempo real, puede que no tenga sentido hasta que el sistema esté liquidado).

Hay otras herramientas y códigos ya escritos para estimar funciones de transferencia, espero que esto le brinde un buen punto de partida.