Comparación de respuestas para sistemas lineales y no lineales en Simulink

2

Estoy revisando y revisando este no profesional ( Resalto un error potencial en la Sección 3.4) documento: Modelo no lineal y amp; Diseño del controlador para el sistema de levitación magnética

Específicamente, estoy tratando de comparar las respuestas del modelo lineal y no lineal en Simulink, usando los parámetros proporcionados en la Tabla 1 de ese mismo documento. Debo comentar cualquier discrepancia.

Tengo problemas para comparar las respuestas, ya que son totalmente diferentes entre sí. Sospecho que puedo tener un error / malentendido cuando se trata de trazar el modelo no lineal. A continuación se presenta un breve resumen del documento.

System

Formatovectorialnolineal

Modelolineal

Comparandorespuestas-Trabajando

Paraelmodelonolinealuséun bloque de función MATLAB , con el siguiente script:

function y = fcn(u)

    % define your constants
    g = 9.81;
    m = 0.05;
    R = 1;
    L = 0.01;
    C = 0.0001; 
    x1 = 0.012;
    x2 = 0;
    x3 = 0.84;


% nonlinear set of equations
x = [x2; g-((C/m)*(x3/x1)^2); -((R/L)*x3 + (((2*C)/L)*(((x2*x3)/((x1)^2)))))] + [0;0;1/L]*u;

y = x';

Luego di una entrada de pasos al sistema y obtuve el siguiente resultado. El amarillo es la entrada del paso, el verde es la salida.

Acontinuación,procedíconelmodelolineal.ColoquélasmatricesA,B,CyDdentrodeun bloque de espacio de estado .

Paraobtenerlosnúmerosquevesarriba,reemplacélasconstantesconlosparámetrosdadoseneldocumento.Obtuveelsiguienteresultado.

Comosepuedever,ambasrespuestassoncompletamentediferentes,ynoestoysegurodequédiscrepanciasdebocomentar.¿Soncorrectasmisimplementacionesdemodelosnolinealesylineales?Puedoagregarmásdetallesotrabajossiesnecesario.

CompilacióndeSimulink

Parámetros:

Cualquier ayuda sería apreciada.

    
pregunta Rrz0

1 respuesta

1

Ah, HA! Usó un bloque de función no lineal de Matlab, pero está malinterpretando la ecuación del sistema. La función \ $ \ dot {\ vec x} = f (\ vec x, u) \ $ está tosiendo el derivado de < span class="math-container"> \ $ \ vec x \ $ , no \ $ \ vec x \ $ en sí. Debe tener un bloque de función que solo encuentre \ $ \ dot {\ vec x} \ $ de \ $ \ vec x \ $ y \ $ u \ $ , luego lo alimenta a un integrador (Simulink debería poder integrar un vector simplemente bien) y devuelve al bloque \ $ \ vec x \ $ , y extrae \ $ y \ $ de ella.

Aquí hay un diagrama de bloques de lo que quieres lograr (perdón por la imagen de mierda). No puedo recordar mi Simulink lo suficiente como para decir exactamente cómo hacerlo. Sospecho que puede crear un bloque de múltiples entradas y múltiples salidas, pero si no puede, puede crear un vector de entrada concatinado con x y u y concatene y y x-dot en la salida, y use muxing y demuxing para ingresar y salir los datos.

    
respondido por el TimWescott

Lea otras preguntas en las etiquetas