Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

connect

Interconexiones del diagrama de bloques de sistemas dinámicos

    Descripción

    sysc = connect(sys1,...sysN,inputs,outputs) conecta los modelos y los elementos del diagrama de bloques sys1,...sysN en función de los nombres de las señales. El comando connect interconecta los elementos del diagrama de bloques conectando canales de entrada y salida con nombres coincidentes, como se especifica en las propiedades InputName y OutputName de sys1,...,sysN. El modelo agregado sysc es un modelo de sistema dinámico con entradas y salidas especificadas por inputs y outputs, respectivamente.

    ejemplo

    sysc = connect(sys1,...sysN,inputs,outputs,APs) inserta AnalysisPoint en cada ubicación de señal especificada en APs. Utilice puntos de análisis para marcar ubicaciones de interés que son señales internas en el modelo agregado. Por ejemplo, una ubicación en la que desea extraer una función de transferencia de lazo o medir los márgenes de estabilidad es una ubicación de interés.

    ejemplo

    sysc = connect(blksys,connections,inputs,outputs) utiliza la interconexión basada en índices para crear sysc a partir de un modelo agregado no conectado blksys. La matriz connections especifica cómo se interconectan las salidas y entradas de blksys. Para las interconexiones basadas en índices, inputs y outputs son vectores índice que especifican qué entradas y salidas de blksys son las entradas y salidas externas de sysc. Esta sintaxis puede ser útil cuando no desea asignar nombres a todas las entradas y salidas de todos los modelos para conectar. Sin embargo, en general, es más fácil realizar un seguimiento de las señales con nombre.

    ejemplo

    sysc = connect(___,opts) crea el modelo interconectado usando opciones adicionales, incluida la retención de estados no conectados que no contribuyen a la dinámica de sysc. Para crear opts, utilice connectOptions. Puede utilizar opts con los argumentos de entrada de cualquiera de las sintaxis anteriores.

    Ejemplos

    contraer todo

    Cree un modelo agregado del siguiente diagrama de bloques desde r hasta y.

    connect1.png

    Este modelo contiene una planta G, un controlador de feedback C y un controlador de feedforward F. Cree modelos de sistemas dinámicos que representen cada uno de estos elementos.

    C = pid(2,1); 
    G = zpk([],[-1,-1,-5],1);
    F = tf(3,[1 3]);

    Como preparación para crear el diagrama de bloques usando nombres de señales, asigne a cada elemento los nombres de entrada y salida que se muestran en el diagrama de bloques. Para ello, establezca las propiedades InputName y OutputName de los elementos.

    C.InputName = "e";  
    C.OutputName = "uc";
    
    G.InputName = "u";  
    G.OutputName = "y";
    
    F.InputName = "r";
    F.OutputName = "uf";

    El diagrama de bloques también contiene dos uniones de suma. Una unión de suma toma la diferencia entre la señal de referencia r y la salida de la planta y para calcular la señal de error e. La otra unión de suma añade la salida del controlador de feedforward uf a la salida del controlador de feedback uc para calcular la entrada de la planta u. Utilice el comando sumblk para crear estas uniones de suma. Para utilizar sumblk, escriba la expresión para la unión de suma como una cadena.

    S1 = sumblk("e = r - y");
    S2 = sumblk("u = uc + uf");

    sumblk devuelve un objeto de modelo tf que representa la suma, con los nombres de entrada y los nombres de salida que proporcione en la expresión. A modo de ejemplo, examine los nombres de señal de S1.

    S1
    S1 =
     
      From input "r" to output "e":
      1
     
      From input "y" to output "e":
      -1
     
    Static gain.
    Model Properties
    

    Ya puede combinar todos los elementos para crear un modelo agregado que represente la respuesta del sistema en el diagrama de bloques desde r hasta y. Proporcione a connect la lista de elementos que desea combinar, la señal de entrada deseada del modelo agregado r y la señal de salida deseada y. El comando connect une automáticamente los elementos conectando entradas y salidas con nombres coincidentes.

    T = connect(G,C,F,S1,S2,"r","y");
    size(T)
    State-space model with 1 outputs, 1 inputs, and 5 states.
    
    T.InputName
    ans = 1×1 cell array
        {'r'}
    
    
    T.OutputName
    ans = 1×1 cell array
        {'y'}
    
    

    Cree el sistema de control del ejemplo anterior, en el que G, C y F son todos modelos de dos entradas y dos salidas.

    connect1.png

    En este ejemplo, las señales r, y, e, etc. son todas señales vectoriales de dos elementos cada una. En primer lugar, cree los modelos y nombre sus entradas y salidas.

    C = [pid(2,1), 0;
         0,pid(5,6)];
    F = [tf(3,[1 3]), 0;
         0, tf(3,[1 3])];
    G = ss(-1,[1,2],[1;-1],0);

    Asigne los nombres de las entradas y de las salidas.

    C.InputName = "e";  
    C.OutputName = "uc";
    
    G.InputName = "u";  
    G.OutputName = "y";
    
    F.InputName = "r";
    F.OutputName = "uf";

    Cuando se asignan nombres individuales a señales con valores vectoriales, el software aplica automáticamente una expansión de vectores para dar un nombre único a cada canal de entrada y salida. A modo de ejemplo, examine los nombres de las entradas de la planta.

    G.InputName
    ans = 2×1 cell
        {'u(1)'}
        {'u(2)'}
    
    

    Este ejemplo utiliza la expansión de vectores para los nombres de señales de todos los componentes MIMO del diagrama de bloques. En su lugar, puede nombrar las señales individualmente, siempre que coincidan con los nombres de las señales que desea unir. Para ver un ejemplo que utiliza señales con nombres individuales para algunos elementos del diagrama de bloques, consulte MIMO Control System with Fixed and Tunable Components.

    A continuación, cree la unión de suma con valores vectoriales. sumblk también expande automáticamente los nombres de señales que proporcione en la expresión de suma para las señales vectoriales, como puede verificar al examinar los nombres de entrada de S2.

    S1 = sumblk("e = r - y",2);
    S2 = sumblk("u = uc + uf",2);
    S2.InputName
    ans = 4×1 cell
        {'uc(1)'}
        {'uc(2)'}
        {'uf(1)'}
        {'uf(2)'}
    
    

    Combine todos los elementos para crear un modelo agregado que represente la respuesta r a y, es decir, desde [r(1),r(2)] hasta [y(1),y(2)].

    T = connect(G,C,F,S1,S2,"r","y");
    size(T)
    State-space model with 2 outputs, 2 inputs, and 5 states.
    
    T.InputName
    ans = 2×1 cell
        {'r(1)'}
        {'r(2)'}
    
    
    T.OutputName
    ans = 2×1 cell
        {'y(1)'}
        {'y(2)'}
    
    

    Considere el siguiente diagrama de bloques.

    analysispoint1.png

    Puede crear un modelo de este sistema de lazo cerrado usando feedback y utilizar el modelo para estudiar la respuesta del sistema desde r hasta y. Supongamos que también desea estudiar la respuesta del sistema de lazo cerrado a una perturbación inyectada en la entrada de la planta. Para ello, puede utilizar connect para crear el sistema insertando un punto de análisis en la ubicación u.

    En primer lugar, cree modelos de planta y controlador, nombrando las entradas y salidas como se muestra en el diagrama.

    C = pid(2,1); 
    C.InputName = "e";  
    C.OutputName = "u";
    
    G = zpk([],[-1,-1],1);
    G.InputName = "u";  
    G.OutputName = "y";

    Cree una unión de suma que tome la diferencia entre la señal de referencia r y la salida de la planta y para calcular la señal de error e.

    Sum = sumblk("e = r - y");

    Combine C, G y la unión de suma para crear el modelo agregado. Utilice el argumento de entrada APs en connect para insertar un punto de análisis en u.

    input = "r";
    output = "y";
    APs = "u";
    CL = connect(G,C,Sum,input,output,APs)
    Generalized continuous-time state-space model with 1 outputs, 1 inputs, 3 states, and the following blocks:
      CONNECT_AP1: Analysis point, 1 channels, 1 occurrences.
    Model Properties
    
    Type "ss(CL)" to see the current value and "CL.Blocks" to interact with the blocks.
    

    Este modelo de lazo cerrado es un modelo de espacio de estados generalizado (genss) que contiene un bloque de diseño de control AnalysisPoint. Para ver el nombre del canal del punto de análisis en CL, utilice getPoints.

    getPoints(CL)
    ans = 1×1 cell array
        {'u'}
    
    

    Cuando se inserta el punto de análisis, se crea un modelo equivalente al siguiente diagrama de bloques, donde AP_u designa el bloque AnalysisPoint con el nombre de canal u.

    FeedbackLoopWithAnalysisPointExample_02.png

    Utilice el punto de análisis para extraer respuestas del sistema. Por ejemplo, los siguientes comandos extraen la transferencia de lazo abierto en u y la respuesta en lazo cerrado en y a una perturbación inyectada en u.

    L = getLoopTransfer(CL,"u",-1);
    CLdist = getIOTransfer(CL,"u","y");

    Puede utilizar la interconexión basada en índices para conectar elementos del modelo sin nombrar todas sus entradas y salidas. Para ver cómo hacerlo, cree un modelo del siguiente lazo de feedback desde r hasta y usando la interconexión basada en índices.

    En primer lugar, cree la planta y el controlador, los elementos del sistema de lazo cerrado.

    C = pid(2,1); 
    G = zpk([],[-1,-1,-5],1);

    Utilice append para agrupar los elementos en un único modelo agregado no conectado.

    blksys = append(C,G);

    append organiza los modelos específicos en un modelo MIMO apilado, como el que se muestra en el siguiente diagrama.

    blksys.png

    Para que este modelo apilado sea equivalente al lazo de feedback, connect debe realizar las siguientes conexiones:

    • La entrada de G recibe la salida de C, o w1 se conecta a u2.

    • La entrada de C recibe el negativo de la salida de G, o -w2 se conecta a -u1.

    Para indicar a connect cómo hacer estas conexiones, construya una matriz en la que cada fila especifique una conexión o unión de suma en términos del vector de entrada u y el vector de salida y de blksys.

    connections = [2  1;  %  w1 feeds into u2
                   1 -2]; % -w2 feeds into u1

    Por último, especifique mediante índice qué entradas y salidas de blksys utilizar para las entradas y salidas externas del modelo de lazo cerrado.

    inputs = 1;  % r drives u1
    outputs = 2; % y is y2

    Ahora puede completar el modelo de lazo cerrado.

    sysc = connect(blksys,connections,inputs,outputs);
    step(sysc)

    MATLAB figure

    Este ejemplo muestra qué esperar al combinar dos modelos creados con connect, cada uno de los cuales contiene puntos de análisis.

    Cree un modelo de lazos de feedback en cascada utilizando estos comandos.

    G1 = tf([1],[1 0]);
    G1.u = 'OuterError';
    G1.y = 'InnerCmd';
    G2 = tf([1], [1 1]);
    G2.u = 'InnerError';
    G2.y = 'ActuatorCmd';
    SumOuter = sumblk('OuterError = OuterCmd - Outer');
    SumInner = sumblk('InnerError = InnerCmd - Inner');
    Sys1 = connect(G1,G2,SumOuter,SumInner,{'OuterCmd','Outer','Inner'},'ActuatorCmd', {'InnerError','OuterError'})
    Generalized continuous-time state-space model with 1 outputs, 3 inputs, 2 states, and the following blocks:
      CONNECT_AP1: Analysis point, 2 channels, 1 occurrences.
    Model Properties
    
    Type "ss(Sys1)" to see the current value and "Sys1.Blocks" to interact with the blocks.
    

    El modelo generalizado Sys1 contiene un único bloque de puntos de análisis con canales InnerError y OuterError.

    Como alternativa, puede definir lazos internos y externos por separado.

    P1 = connect(G1,SumOuter,{'OuterCmd','Outer'},'InnerCmd','OuterError')
    Generalized continuous-time state-space model with 1 outputs, 2 inputs, 1 states, and the following blocks:
      CONNECT_AP1: Analysis point, 1 channels, 1 occurrences.
    Model Properties
    
    Type "ss(P1)" to see the current value and "P1.Blocks" to interact with the blocks.
    
    P2 = connect(G2,SumInner,{'InnerCmd','Inner'},'ActuatorCmd','InnerError')
    Generalized continuous-time state-space model with 1 outputs, 2 inputs, 1 states, and the following blocks:
      CONNECT_AP1: Analysis point, 1 channels, 1 occurrences.
    Model Properties
    
    Type "ss(P2)" to see the current value and "P2.Blocks" to interact with the blocks.
    

    Tanto P1 como P2 tienen un bloque de análisis denominado CONNECT_AP1. Ahora, combine estos dos modelos para crear un modelo Sys2 del lazo en cascada.

    Sys2 = connect(P1,P2,{'OuterCmd','Outer','Inner'},'ActuatorCmd')
    Generalized continuous-time state-space model with 1 outputs, 3 inputs, 2 states, and the following blocks:
      CONNECT_AP1: Analysis point, 1 channels, 1 occurrences.
      CONNECT_AP2: Analysis point, 1 channels, 1 occurrences.
    Model Properties
    
    Type "ss(Sys2)" to see the current value and "Sys2.Blocks" to interact with the blocks.
    

    Este modelo contiene dos bloques de puntos de análisis independientes con nombres CONNECT_AP1 y CONNECT_AP2. Los bloques AnalysisPoint de P1 y P2 se renombran automáticamente para evitar conflictos.

    Argumentos de entrada

    contraer todo

    Modelo de sistema dinámico u otro elemento de diagrama de bloques para interconectar, especificado como:

    • Cualquier objeto de modelo LTI numérico, como un objeto de modelo tf, zpk, ss, frd o pid.

    • Un modelo LTI generalizado o con incertidumbre, como un modelo genss, genfrd, uss (Robust Control Toolbox) y ufrd (Robust Control Toolbox).

    • Un bloque de diseño de control que representa un elemento de diagrama de bloques ajustable o con incertidumbre, como un bloque tunablePID, tunableSS, tunableGain, tunableTF, tunableSurface, ultidyn (Robust Control Toolbox) o umargin (Robust Control Toolbox).

    • Un bloque AnalysisPoint que representa una ubicación en el diagrama de bloques donde desea extraer las respuestas del sistema.

    • Una unión de suma que se crea con sumblk.

    • Un modelo LTI identificado, como un modelo idtf (System Identification Toolbox), idss (System Identification Toolbox) o idproc (System Identification Toolbox).

    • Un modelo disperso, representado por un objeto de modelo sparss o mechss.

    • Un modelo variante en el tiempo o de parámetros variantes, representado por un objeto de modelo ltvss o lpvss.

    Entradas del modelo combinado, especificadas como un vector de caracteres, un arreglo de celdas de vectores de caracteres, una cadena, un vector de cadenas, un entero positivo o un vector de enteros positivos.

    • Para la interconexión basada en nombres, proporcione un vector de caracteres, una cadena, un arreglo de celdas de vectores de caracteres o un arreglo de cadenas que enumere una o más señales que aparecen en la propiedad InputName o OutputName de uno o más de los elementos del diagrama de bloques sys1,...sysN. Por ejemplo, {'ref','dist','noise'}.

    • Para la interconexión basada en índices, proporcione un entero positivo o un vector de enteros positivos que especifique el índice o los índices de las entradas de blksys que desea que sean entradas del modelo agregado.

    Salidas del modelo combinado, especificadas como un vector de caracteres, un arreglo de celdas de vectores de caracteres, una cadena, un vector de cadenas, un entero positivo o un vector de enteros positivos.

    • Para la interconexión basada en nombres, proporcione un vector de caracteres, una cadena, un arreglo de celdas de vectores de caracteres o un arreglo de cadenas que enumere una o más señales que aparecen en la propiedad InputName o OutputName de uno o más de los elementos del diagrama de bloques sys1,...sysN. Por ejemplo, {'ref','dist','noise'}.

    • Para la interconexión basada en índice, proporcione un entero positivo o un vector de enteros positivos que especifique el índice o los índices de las entradas de blksys que desea que sean salidas del modelo agregado.

    Ubicaciones (señales internas) de interés en el modelo agregado, especificadas como un vector de caracteres o un arreglo de celdas de vectores de caracteres, como 'X' o {'AP1','AP2'}, o una cadena o un vector de cadenas. El modelo resultante contiene un punto de análisis en cada una de esas ubicaciones. (Consulte AnalysisPoint). Cada ubicación en APs debe corresponder a una entrada en la propiedad InputName o OutputName de uno o más de los elementos del diagrama de bloques sys1,...sysN.

    Modelo agregado no conectado, especificado como un modelo de sistema dinámico que se crea con append. Utilice blksys para la interconexión basada en índices. El comando append apila las entradas y salidas de los elementos del diagrama de bloques sin realizar ninguna interconexión entre sus entradas y salidas. Por ejemplo, si el diagrama de bloques contiene modelos de sistemas dinámicos C, G y S, cree blksys con el siguiente comando:

    blksys = append(C,G,S)

    A continuación, especifique las interconexiones entre las entradas y salidas de blksys usando el argumento connections. Para ver un ejemplo, consulte Interconexión basada en índices.

    Conexiones y uniones de suma del diagrama de bloques, especificadas como una matriz. Utilice connection para la interconexión basada en índices. Cada fila de connections especifica una conexión o unión de suma en términos del vector de entrada u y el vector de salida w del modelo agregado no conectado blksys. Por ejemplo, la fila

    [3 2 0 0]

    especifica que w(2), la segunda salida de blksys, se conecta a u(3), la tercera entrada de blksys. La fila

    [7 2 -15 6]
    

    indica que la suma w(2) - w(15) + w(6) se conecta a u(7), la séptima entrada de blksys.

    Si no especifica ninguna conexión para una entrada o salida en particular, connect omite esa entrada o salida del modelo agregado.

    Opciones adicionales para la interconexión, especificadas como un conjunto de opciones que puede crear con connectOptions.

    De forma predeterminada, el comando connect descarta los estados que no contribuyen a la dinámica en la ruta entre las entradas y salidas del sistema interconectado. Utilice connectOptions para conservar estos estados en el modelo interconectado. Esta opción puede ser útil, por ejemplo, cuando desea calcular la respuesta del sistema interconectado a partir de valores de estado inicial conocidos de los componentes.

    Argumentos de salida

    contraer todo

    Sistema interconectado, devuelto como un modelo de espacio de estados o un modelo de respuesta en frecuencia. El tipo de modelo devuelto depende de los modelos de entrada. Por ejemplo:

    • La interconexión de modelos LTI numéricos (que no sean modelos frd) devuelve un modelo ss.

    • La interconexión de un modelo LTI numérico con un bloque de diseño de control devuelve un modelo de espacio de estados generalizado. Por ejemplo, al interconectar un modelo tf con un bloque de diseño de control tunablePID se devuelve un modelo genss.

    • La interconexión de un modelo LTI numérico con un modelo disperso devuelve un modelo disperso.

    • La interconexión de cualquier modelo con un modelo de datos de respuesta en frecuencia devuelve un modelo de datos de respuesta en frecuencia.

    De forma predeterminada, connect descarta automáticamente los estados que no contribuyen a la función de transferencia de E/S a partir de las entradas especificadas a las salidas especificadas del modelo interconectado. Para conservar los estados no conectados, configure la opción Simplify de connectOptions con el valor false. Por ejemplo:

    opt = connectOptions('Simplify',false);
    sysc = connect(sys1,sys2,sys3,'r','y',opt);

    Historial de versiones

    Introducido antes de R2006a

    expandir todo