determine the equivalent system representation of two or more interconnected system objects - Maple Help

Home : Support : Online Help : Science and Engineering : Dynamic Systems : System Manipulation Tools : DynamicSystems/SystemConnect

DynamicSystems[SystemConnect] - determine the equivalent system representation of two or more interconnected system objects

 Calling Sequence SystemConnect(systems, opts) SystemConnect(systems, ui, oi, uy, oy, opts)

Parameters

 systems - System; list of System objects ui - (optional) Matrix; maps the global inputs to the subsystem inputs oi - (optional) Matrix; maps the subsystem outputs to the subsystem inputs uy - (optional) Matrix; maps the global inputs to the global outputs oy - (optional) Matrix; maps the subsystem outputs to the global outputs opts - (optional) equation(s) of the form option = value; specify options for the SystemConnect command.

Description

 • The SystemConnect command allows you to create complex interconnections between multiple system objects representing a set of subsystems to produce the equivalent system object in a block diagram simplification type procedure.
 • The inputs to the subsystems specified in the parameter systems are generated as a linear combination of the external inputs which feed into the equivalent system and the subsystem outputs which are fed back.  The mapping of the external inputs to the subsystem inputs is defined by the ui matrix and the mapping of the subsystem output to the subsystem inputs is defined by the oi matrix.  The number of rows in the ui matrix is determined by the number of subsystem inputs (the sum of the number of inputs for each system in the systems) and the number of columns by the number of external inputs to the equivalent system.  The number of rows in the oi matrix is likewise determined by the number of subsystem inputs and the number of columns is determined by the number of subsystem outputs.
 • The outputs of the equivalent system are formed in a similar manner to the inputs. The external outputs are a linear combination of the external inputs which feed directly through the equivalent system and the subsystem outputs.  The mapping of the external inputs to the external outputs is defined by the uy matrix and the mapping of the subsystem outputs to the external outputs is defined by the oy matrix.  The number of rows in the oy matrix is determined by the number of external outputs of the equivalent system and the number of columns by the number of outputs of the subsystems (the sum of the number of outputs on each system in the systems).  The number of rows in the uy matrix is likewise determined by the number of external outputs of the equivalent system and the number of columns is determined by the number of external inputs in the equivalent system.
 • An entry of 1 in the connection matrices represents a simple connection. Non-unity entries represent gains in the connection path. Negative feedback is achieved by setting the appropriate entry or entries to -1.
 • The type of the system object output by SystemConnect is determined by the type of the system objects specified in the systems parameter.  If different types of system objects are passed, the output type is determined based on a precedence list defined as tf < coeff < zpk < ss < de.  For example, if a System(ss) and a de system are supplied, the output will be a de system.

Examples

Pre-defined Connections

 > $\mathrm{with}\left(\mathrm{DynamicSystems}\right):$
 > $\mathrm{sys1}:=\mathrm{TransferFunction}\left(\frac{1}{{s}^{2}+5s+3}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys1}\right)$
 $\left[\begin{array}{l}{\mathbf{Transfer Function}}\\ {\mathrm{continuous}}\\ {\mathrm{1 output\left(s\right); 1 input\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({s}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({s}\right)\right]\\ {{\mathrm{tf}}}_{{1}{,}{1}}{=}\frac{{1}}{{{s}}^{{2}}{+}{5}{}{s}{+}{3}}\end{array}\right$ (1)
 > $\mathrm{sys2}:=\mathrm{TransferFunction}\left(\frac{1}{{s}^{3}+2s+4}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys2}\right)$
 $\left[\begin{array}{l}{\mathbf{Transfer Function}}\\ {\mathrm{continuous}}\\ {\mathrm{1 output\left(s\right); 1 input\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({s}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({s}\right)\right]\\ {{\mathrm{tf}}}_{{1}{,}{1}}{=}\frac{{1}}{{{s}}^{{3}}{+}{2}{}{s}{+}{4}}\end{array}\right$ (2)
 > $\mathrm{sys_parallel}:=\mathrm{SystemConnect}\left(\mathrm{sys1},\mathrm{sys2},\mathrm{connection}=\mathrm{parallel}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys_parallel}\right)$
 $\left[\begin{array}{l}{\mathbf{Transfer Function}}\\ {\mathrm{continuous}}\\ {\mathrm{1 output\left(s\right); 1 input\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({s}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({s}\right)\right]\\ {{\mathrm{tf}}}_{{1}{,}{1}}{=}\frac{{{s}}^{{3}}{+}{{s}}^{{2}}{+}{7}{}{s}{+}{7}}{{{s}}^{{5}}{+}{5}{}{{s}}^{{4}}{+}{5}{}{{s}}^{{3}}{+}{14}{}{{s}}^{{2}}{+}{26}{}{s}{+}{12}}\end{array}\right$ (3)
 > $\mathrm{sys_serial}:=\mathrm{SystemConnect}\left(\mathrm{sys1},\mathrm{sys2},\mathrm{connection}=\mathrm{serial},\mathrm{outputtype}=\mathrm{ss}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys_serial}\right)$
 $\left[\begin{array}{l}{\mathbf{State Space}}\\ {\mathrm{continuous}}\\ {\mathrm{1 output\left(s\right); 1 input\left(s\right); 5 state\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({t}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({t}\right)\right]\\ {\mathrm{statevariable}}{=}\left[{\mathrm{x1}}{}\left({t}\right){,}{\mathrm{x2}}{}\left({t}\right){,}{\mathrm{x3}}{}\left({t}\right){,}{\mathrm{x4}}{}\left({t}\right){,}{\mathrm{x5}}{}\left({t}\right)\right]\\ {\mathrm{a}}{=}\left[\begin{array}{ccccc}{0}& {1}& {0}& {0}& {0}\\ {-3}& {-5}& {0}& {0}& {0}\\ {0}& {0}& {0}& {1}& {0}\\ {0}& {0}& {0}& {0}& {1}\\ {1}& {0}& {-4}& {-2}& {0}\end{array}\right]\\ {\mathrm{b}}{=}\left[\begin{array}{c}{0}\\ {1}\\ {0}\\ {0}\\ {0}\end{array}\right]\\ {\mathrm{c}}{=}\left[\begin{array}{ccccc}{0}& {0}& {1}& {0}& {0}\end{array}\right]\\ {\mathrm{d}}{=}\left[\begin{array}{c}{0}\end{array}\right]\end{array}\right$ (4)
 > $\mathrm{sys_feedback}:=\mathrm{SystemConnect}\left(\mathrm{sys1},\mathrm{connection}=\mathrm{negativefeedback}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys_feedback}\right)$
 $\left[\begin{array}{l}{\mathbf{Transfer Function}}\\ {\mathrm{continuous}}\\ {\mathrm{1 output\left(s\right); 1 input\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({s}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({s}\right)\right]\\ {{\mathrm{tf}}}_{{1}{,}{1}}{=}\frac{{1}}{{{s}}^{{2}}{+}{5}{}{s}{+}{4}}\end{array}\right$ (5)
 > $\mathrm{sys_append}:=\mathrm{SystemConnect}\left(\mathrm{sys1},\mathrm{sys2},\mathrm{connection}=\mathrm{append}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys_append}\right)$
 $\left[\begin{array}{l}{\mathbf{Transfer Function}}\\ {\mathrm{continuous}}\\ {\mathrm{2 output\left(s\right); 2 input\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({s}\right){,}{\mathrm{u2}}{}\left({s}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({s}\right){,}{\mathrm{y2}}{}\left({s}\right)\right]\\ {{\mathrm{tf}}}_{{1}{,}{1}}{=}\frac{{1}}{{{s}}^{{2}}{+}{5}{}{s}{+}{3}}\\ {{\mathrm{tf}}}_{{2}{,}{1}}{=}{0}\\ {{\mathrm{tf}}}_{{1}{,}{2}}{=}{0}\\ {{\mathrm{tf}}}_{{2}{,}{2}}{=}\frac{{1}}{{{s}}^{{3}}{+}{2}{}{s}{+}{4}}\end{array}\right$ (6)

General Connection

 Consider the example system given below:

 The connections depicted above can be represented as follows
 > $\mathrm{RM}:=\left(\right)→\mathrm{LinearAlgebra}:-\mathrm{RandomMatrix}\left(\mathrm{args}\right):$
 > $\mathrm{a1}:=\mathrm{RM}\left(2,2\right):$$\mathrm{b1}:=\mathrm{RM}\left(2,2\right):$$\mathrm{c1}:=\mathrm{RM}\left(2,2\right):$$\mathrm{d1}:=\mathrm{RM}\left(2,2\right):$
 > $\mathrm{sys1}:=\mathrm{StateSpace}\left(\mathrm{a1},\mathrm{b1},\mathrm{c1},\mathrm{d1}\right):$
 > $\mathrm{a2}:=\mathrm{RM}\left(3,3\right):$$\mathrm{b2}:=\mathrm{RM}\left(3,2\right):$$\mathrm{c2}:=\mathrm{RM}\left(2,3\right):$$\mathrm{d2}:=\mathrm{RM}\left(2,2\right):$
 > $\mathrm{sys2}:=\mathrm{StateSpace}\left(\mathrm{a2},\mathrm{b2},\mathrm{c2},\mathrm{d2}\right):$
 > $\mathrm{Mui}:=⟨⟨1|0|0⟩,⟨0|0|1⟩,⟨0|0|0⟩,⟨0|3|0⟩⟩$
 ${\mathrm{Mui}}{:=}\left[\begin{array}{rrr}{1}& {0}& {0}\\ {0}& {0}& {1}\\ {0}& {0}& {0}\\ {0}& {3}& {0}\end{array}\right]$ (7)
 > $\mathrm{Moi}:=⟨⟨0|0|0|0⟩,⟨0|0|0|-1⟩,⟨0|1|0|0⟩,⟨0|0|0|0⟩⟩$
 ${\mathrm{Moi}}{:=}\left[\begin{array}{rrrr}{0}& {0}& {0}& {0}\\ {0}& {0}& {0}& {-}{1}\\ {0}& {1}& {0}& {0}\\ {0}& {0}& {0}& {0}\end{array}\right]$ (8)
 > $\mathrm{Muy}:=⟨⟨0|0|0⟩,⟨0|0|0⟩,⟨0|0|1⟩⟩$
 ${\mathrm{Muy}}{:=}\left[\begin{array}{rrr}{0}& {0}& {0}\\ {0}& {0}& {0}\\ {0}& {0}& {1}\end{array}\right]$ (9)
 > $\mathrm{Moy}:=⟨⟨0|0|1|0⟩,⟨1|0|0|0⟩,⟨0|0|0|1⟩⟩$
 ${\mathrm{Moy}}{:=}\left[\begin{array}{rrrr}{0}& {0}& {1}& {0}\\ {1}& {0}& {0}& {0}\\ {0}& {0}& {0}& {1}\end{array}\right]$ (10)
 > $\mathrm{sys_general}:=\mathrm{SystemConnect}\left(\mathrm{sys1},\mathrm{sys2},\mathrm{Mui},\mathrm{Moi},\mathrm{Muy},\mathrm{Moy}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys_general}\right)$
 $\left[\begin{array}{l}{\mathbf{State Space}}\\ {\mathrm{continuous}}\\ {\mathrm{3 output\left(s\right); 3 input\left(s\right); 5 state\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({t}\right){,}{\mathrm{u2}}{}\left({t}\right){,}{\mathrm{u3}}{}\left({t}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({t}\right){,}{\mathrm{y2}}{}\left({t}\right){,}{\mathrm{y3}}{}\left({t}\right)\right]\\ {\mathrm{statevariable}}{=}\left[{\mathrm{x1}}{}\left({t}\right){,}{\mathrm{x2}}{}\left({t}\right){,}{\mathrm{x3}}{}\left({t}\right){,}{\mathrm{x4}}{}\left({t}\right){,}{\mathrm{x5}}{}\left({t}\right)\right]\\ {\mathrm{a}}{=}\left[\begin{array}{ccccc}{-}\frac{{224422}}{{61}}& \frac{{80972}}{{61}}& \frac{{2475}}{{61}}& \frac{{1188}}{{61}}& \frac{{4950}}{{61}}\\ {-}\frac{{60914}}{{61}}& \frac{{28360}}{{61}}& \frac{{725}}{{61}}& \frac{{348}}{{61}}& \frac{{1450}}{{61}}\\ \frac{{740}}{{61}}& {-}\frac{{270}}{{61}}& {-}\frac{{5441}}{{61}}& \frac{{5067}}{{61}}& {-}\frac{{5697}}{{61}}\\ {-}\frac{{1184}}{{61}}& \frac{{432}}{{61}}& {-}\frac{{1518}}{{61}}& \frac{{2397}}{{61}}& \frac{{5077}}{{61}}\\ {-}\frac{{666}}{{61}}& \frac{{243}}{{61}}& {-}\frac{{648}}{{61}}& {-}\frac{{5762}}{{61}}& \frac{{2547}}{{61}}\end{array}\right]\\ {\mathrm{b}}{=}\left[\begin{array}{ccc}{-}\frac{{232756}}{{61}}& {-}\frac{{23760}}{{61}}& {-}\frac{{99}}{{61}}\\ {-}\frac{{64115}}{{61}}& {-}\frac{{6960}}{{61}}& {-}\frac{{29}}{{61}}\\ \frac{{760}}{{61}}& {-}\frac{{4350}}{{61}}& \frac{{20}}{{61}}\\ {-}\frac{{1216}}{{61}}& {-}\frac{{11706}}{{61}}& {-}\frac{{32}}{{61}}\\ {-}\frac{{684}}{{61}}& \frac{{3915}}{{61}}& {-}\frac{{18}}{{61}}\end{array}\right]\\ {\mathrm{c}}{=}\left[\begin{array}{ccccc}\frac{{666}}{{61}}& {-}\frac{{243}}{{61}}& \frac{{2173}}{{61}}& \frac{{5518}}{{61}}& {-}\frac{{1022}}{{61}}\\ \frac{{163216}}{{61}}& {-}\frac{{60508}}{{61}}& {-}\frac{{1800}}{{61}}& {-}\frac{{864}}{{61}}& {-}\frac{{3600}}{{61}}\\ \frac{{2294}}{{61}}& {-}\frac{{837}}{{61}}& {-}\frac{{25}}{{61}}& {-}\frac{{12}}{{61}}& {-}\frac{{50}}{{61}}\end{array}\right]\\ {\mathrm{d}}{=}\left[\begin{array}{ccc}\frac{{684}}{{61}}& {-}\frac{{4830}}{{61}}& \frac{{18}}{{61}}\\ \frac{{163959}}{{61}}& \frac{{17280}}{{61}}& \frac{{72}}{{61}}\\ \frac{{2356}}{{61}}& \frac{{240}}{{61}}& \frac{{123}}{{61}}\end{array}\right]\end{array}\right$ (11)

Merging Parameters

 When systems with parameters are combined, the merge and indices options may be used to affect how parameters are handled.
 • Create two systems with common parameters.
 > $\mathrm{sys1}:=\mathrm{TransferFunction}\left(\frac{k}{{\left(s+w\right)}^{2}},\mathrm{parameters}=\left[k=1,w=1\right]\right):$
 > $\mathrm{sys2}:=\mathrm{TransferFunction}\left(\frac{k}{s+w},\mathrm{parameters}=\left[k=2,w=3\right]\right):$
 • Use merge = keep (the default) to keep the original parameters, but replace the numeric values with those from the first system.
 > $\mathrm{sys_parallel}:=\mathrm{SystemConnect}\left(\mathrm{sys1},\mathrm{sys2},\mathrm{connection}=\mathrm{parallel},\mathrm{merge}=\mathrm{keep}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys_parallel}\right)$
 $\left[\begin{array}{l}{\mathbf{Transfer Function}}\\ {\mathrm{continuous}}\\ {\mathrm{1 output\left(s\right); 1 input\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({s}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({s}\right)\right]\\ {{\mathrm{tf}}}_{{1}{,}{1}}{=}\frac{{k}{}{s}{+}\left({w}{+}{1}\right){}{k}}{{{s}}^{{2}}{+}{2}{}{w}{}{s}{+}{{w}}^{{2}}}\end{array}\right$ (12)
 > $\mathrm{sys_parallel}:-\mathrm{parameters}$
 $\left[{k}{=}{1}{,}{w}{=}{1}\right]$ (13)
 • Use merge = evaluate to evaluate all parameters before computing the transfer function.
 > $\mathrm{sys_parallel}:=\mathrm{SystemConnect}\left(\mathrm{sys1},\mathrm{sys2},\mathrm{connection}=\mathrm{parallel},\mathrm{merge}=\mathrm{evaluate}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys_parallel}\right)$
 $\left[\begin{array}{l}{\mathbf{Transfer Function}}\\ {\mathrm{continuous}}\\ {\mathrm{1 output\left(s\right); 1 input\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({s}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({s}\right)\right]\\ {{\mathrm{tf}}}_{{1}{,}{1}}{=}\frac{{2}{}{{s}}^{{2}}{+}{5}{}{s}{+}{5}}{{{s}}^{{3}}{+}{5}{}{{s}}^{{2}}{+}{7}{}{s}{+}{3}}\end{array}\right$ (14)
 > $\mathrm{sys_parallel}:-\mathrm{parameters}$
 $\left[{}\right]$ (15)
 • Use merge = replace to replace all parameters with distinct, indexed names.
 > $\mathrm{sys_parallel}:=\mathrm{SystemConnect}\left(\mathrm{sys1},\mathrm{sys2},\mathrm{connection}=\mathrm{parallel},\mathrm{merge}=\mathrm{replace}\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys_parallel}\right)$
 $\left[\begin{array}{l}{\mathbf{Transfer Function}}\\ {\mathrm{continuous}}\\ {\mathrm{1 output\left(s\right); 1 input\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({s}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({s}\right)\right]\\ {{\mathrm{tf}}}_{{1}{,}{1}}{=}\frac{{{k}}_{{2}}{}{{s}}^{{2}}{+}\left({2}{}{{k}}_{{2}}{}{{w}}_{{1}}{+}{{k}}_{{1}}\right){}{s}{+}{{k}}_{{2}}{}{{w}}_{{1}}^{{2}}{+}{{k}}_{{1}}{}{{w}}_{{2}}}{{{s}}^{{3}}{+}\left({2}{}{{w}}_{{1}}{+}{{w}}_{{2}}\right){}{{s}}^{{2}}{+}\left({{w}}_{{1}}^{{2}}{+}{2}{}{{w}}_{{1}}{}{{w}}_{{2}}\right){}{s}{+}{{w}}_{{1}}^{{2}}{}{{w}}_{{2}}}\end{array}\right$ (16)
 > $\mathrm{sys_parallel}:-\mathrm{parameters}$
 $\left[{{k}}_{{1}}{=}{1}{,}{{w}}_{{1}}{=}{1}{,}{{k}}_{{2}}{=}{2}{,}{{w}}_{{2}}{=}{3}\right]$ (17)
 • Use the indices option with merge = replace to specify the indices for the new parameter names.
 > $\mathrm{sys_parallel}:=\mathrm{SystemConnect}\left(\mathrm{sys1},\mathrm{sys2},\mathrm{connection}=\mathrm{parallel},\mathrm{merge}=\mathrm{replace},\mathrm{indices}=\left['a','b'\right]\right):$
 > $\mathrm{PrintSystem}\left(\mathrm{sys_parallel}\right)$
 $\left[\begin{array}{l}{\mathbf{Transfer Function}}\\ {\mathrm{continuous}}\\ {\mathrm{1 output\left(s\right); 1 input\left(s\right)}}\\ {\mathrm{inputvariable}}{=}\left[{\mathrm{u1}}{}\left({s}\right)\right]\\ {\mathrm{outputvariable}}{=}\left[{\mathrm{y1}}{}\left({s}\right)\right]\\ {{\mathrm{tf}}}_{{1}{,}{1}}{=}\frac{{{k}}_{{b}}{}{{s}}^{{2}}{+}\left({2}{}{{k}}_{{b}}{}{{w}}_{{a}}{+}{{k}}_{{a}}\right){}{s}{+}{{k}}_{{b}}{}{{w}}_{{a}}^{{2}}{+}{{k}}_{{a}}{}{{w}}_{{b}}}{{{s}}^{{3}}{+}\left({2}{}{{w}}_{{a}}{+}{{w}}_{{b}}\right){}{{s}}^{{2}}{+}\left({{w}}_{{a}}^{{2}}{+}{2}{}{{w}}_{{a}}{}{{w}}_{{b}}\right){}{s}{+}{{w}}_{{a}}^{{2}}{}{{w}}_{{b}}}\end{array}\right$ (18)
 > $\mathrm{sys_parallel}:-\mathrm{parameters}$
 $\left[{{k}}_{{a}}{=}{1}{,}{{w}}_{{a}}{=}{1}{,}{{k}}_{{b}}{=}{2}{,}{{w}}_{{b}}{=}{3}\right]$ (19)