Uso de Matlab · Simulink— 【Creación y aplicación de la función S】

(〇) Prólogo

¿Cuál es la
    función S ? La función S es la abreviatura en inglés de la función del sistema, que se refiere a
cómo escribir una función S usando un lenguaje de diseño (forma no gráfica) para describir la función S :
    puede usar el lenguaje Matlab, también puede usar otros lenguajes de programación en C , C ++, etc.
    Solo presento el MATLAB de uso común que viene con "lenguaje" y plantilla de función S para escribir la función S

(1) Escribir función S

①Introduzca el comando en la ventana de la línea de comandos: >> edite sfuntmpl.m
    para abrir el archivo de
Inserte la descripción de la imagen aquí
plantilla ②El archivo de plantilla sfuntmpl.m contiene una función principal y seis subfunciones

[1] Veamos   primero la función principal :
la primera oración de la función principal, la instrucción principal es:
función [sys, x0, str, ts, simStateCompliance] = sfuntmpl (t, x, u, flag)
     donde fname es la función de la función S Nombre;
     los parámetros de entrada t, x, y, el indicador son el tiempo de simulación, el vector de estado, el vector de entrada y el
     parámetro de salida del indicador de llamada sys representa los parámetros de retorno; x0 es el valor de estado inicial; str se establece en una matriz vacía; ts es un Matriz de columna, una columna es el período de muestreo de cada variable de estado, y la otra columna es el desplazamiento del tiempo de muestreo correspondiente.
     [Así es como se configura la función S en el archivo M]

   【2】再看看**子函数**:

  El prefijo de la subfunción es mdl, y el indicador controla la situación de    la llamada.Hay
cuatro situaciones comunes:
Indicador = 0: llama a la subfunción de inicialización mdlInitializeSizes;
   Indicador = 1: llama a la subfunción de actualización continua de estado mdlDerivativos (t, x, u);
   Indicador = 2: Subfunción de actualización de estado discreto de llamada mdlUpdate (t, x, u);
   Indicador = 3: Subfunción de salida de llamada mdlOutputs (t, x, u);

(2) Aplicación de la función S:

  Tome la castaña más simple: y = kx + b

  (1) Definir la función S

        ① Inicializar la función principal

function [sys,x0,str,ts,simStateCompliance] = move(t,x,u,flag)
switch flag,
    case 0,
        [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
    case 1,
        sys=mdlDerivatives(t,x,u);
    case 2,
        sys=mdlUpdate(t,x,u);
    case 3,
        sys=mdlOutputs(t,x,u);
    case 4,
        sys=mdlGetTimeOfNextVarHit(t,x,u);
    case 9,
        sys=mdlTerminate(t,x,u);
    otherwise
        DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end

        ② Subfunción de inicialización

function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 1;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0  = [0];
str = [];
ts  = [0 0];
simStateCompliance = 'UnknownSimState';
function sys=mdlDerivatives(t,x,u)
sys = u;
function sys=mdlUpdate(t,x,u)
sys=[];
function sys=mdlOutputs(t,x,u)
sys=x;
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;    %  Example, set the next hit to be one second later.
sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)
sys = [];

  (2) Use la función S en el modelo Simulink

    En primer lugar, necesitamos construir este modelo con un módulo. Los
    novatos pueden no encontrar el dispositivo. Aquí diré brevemente: En la biblioteca de módulos estándar de Simulink, hay Scope en Sinks, Sine Wave en Sources y S-Function. Link en Funciones definidas por el usuario. Simplemente suba
    aquí y hable sobre cómo modificar el número de terminales de entrada del Scope: haga doble clic para abrir la interfaz de Scope, haga clic en la esquina superior izquierda para configurar, modifique el parámetro de entrada, solo recuerde modificar Apply .
Inserte la descripción de la imagen aquí
El modelo se construye de la siguiente manera: Los
Inserte la descripción de la imagen aquí
resultados son los siguientes:
Inserte la descripción de la imagen aquí
    Tiempo de muestreo: para el modelo Simulink, un paso en el solucionador determina el intervalo mínimo de muestreo de todo el modelo.

(3) Atención especial * -asegurar la operación correcta

    Cuando apliqué la función S por primera vez, pude encontrar muchos problemas, resumí varios problemas comunes y luego tuve que prestarles atención.

    ① Tenga en cuenta que el nombre de la función S debe ser el mismo que el archivo .m que escribe, de lo contrario obtendrá un error ② Tenga en cuentaInserte la descripción de la imagen aquí
    que debe colocar el archivo .m de la función S y el archivo modelo .slx en un directorio para asegurarse de que pueda encontrar Y abra el archivo M de la función S correspondiente
Inserte la descripción de la imagen aquí
    ③ Tenga en cuenta que debe modificar el directorio de trabajo actual de matlab en el directorio donde guardó estos dos archivos
Inserte la descripción de la imagen aquí
    para poder garantizar básicamente la operación. Si tiene otros problemas, consulte o comente usted mismo .

Publicado 7 artículos originales · ganó 21 · vistas 195

Supongo que te gusta

Origin blog.csdn.net/Nirvana_Tai/article/details/105439610
Recomendado
Clasificación