connect
Interconexiones del diagrama de bloques de sistemas dinámicos
Sintaxis
Descripción
conecta los modelos y los elementos del diagrama de bloques sysc
= connect(sys
1,...sys
N,inputs
,outputs
)sys
1,...
sys
N
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.
inserta sysc
= connect(sys
1,...sys
N,inputs
,outputs
,APs
)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.
utiliza la interconexión basada en índices para crear sysc
= connect(blksys
,connections
,inputs
,outputs
)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.
crea el modelo interconectado usando opciones adicionales, incluida la retención de estados no conectados que no contribuyen a la dinámica de sysc
= connect(___,opts
)sysc
. Para crear opts
, utilice connectOptions
. Puede utilizar opts
con los argumentos de entrada de cualquiera de las sintaxis anteriores.
Ejemplos
Cree un modelo agregado del siguiente diagrama de bloques desde r hasta y.
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.
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.
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
.
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.
Para que este modelo apilado sea equivalente al lazo de feedback, connect
debe realizar las siguientes conexiones:
La entrada de
G
recibe la salida deC
, ow1
se conecta au2
.La entrada de
C
recibe el negativo de la salida deG
, 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)
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
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
opid
.Un modelo LTI generalizado o con incertidumbre, como un modelo
genss
,genfrd
,uss
(Robust Control Toolbox) yufrd
(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) oumargin
(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) oidproc
(System Identification Toolbox).Un modelo disperso, representado por un objeto de modelo
sparss
omechss
.Un modelo variante en el tiempo o de parámetros variantes, representado por un objeto de modelo
ltvss
olpvss
.
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
oOutputName
de uno o más de los elementos del diagrama de bloquessys
1,...
sys
N
. 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
oOutputName
de uno o más de los elementos del diagrama de bloquessys
1,...
sys
N
. 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 sys
1,...
sys
N
.
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
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 modeloss
.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 controltunablePID
se devuelve un modelogenss
.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 R2006aPuede especificar puntos de análisis al modelar diagramas de bloques con connect
. Cuando se combinan los modelos resultantes con cualquier función de interconexión, el software cambia automáticamente el nombre de estos bloques de puntos de análisis para evitar conflictos. Antes de la versión R2024a, no se podían realizar tales combinaciones.
Para ver un ejemplo, consulte Combinar dos modelos interconectados con puntos de análisis.
Ahora puede especificar las ubicaciones de los puntos de análisis utilizando el argumento de entrada APs
, mediante la siguiente sintaxis.
sysc = connect(sys1,sys2,...,sysN,inputs,outputs,APs)
Para ver un ejemplo, consulte Lazo de feedback con punto de análisis.
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. Ahora puede utilizar el argumento de entrada opts
para conservar dichos estados no conectados. 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. Cree opts
con connectOptions
.
connect
también devuelve un modelo de espacio de estados, como un modelo ss
, genss
o uss
, a menos que uno o más de los modelos de entrada sea un modelo de datos de respuesta en frecuencia. En ese caso, connect
devuelve un modelo de datos de respuesta en frecuencia, como un modelo frd
o genfrd
. En versiones anteriores, connect
devolvía un modelo tf
o zpk
cuando todos los modelos de entrada eran modelos tf
o zpk
.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)