|
|
Line 1: |
Line 1: |
| '''Mason's gain formula''' (MGF) is a method for finding the [[transfer function]] of a linear [[signal-flow graph]] (SFG). The formula was derived by [[Samuel Jefferson Mason]]<ref>{{cite journal|last=Mason|first=Samuel J. |date=July 1956|title=Feedback Theory - Further Properties of Signal Flow Graphs|journal=Proceedings of the IRE|pages=920–926}}</ref> and is named after its discoverer. MGF is an alternate method to finding the transfer function algebraically by labeling each signal, writing down the equation for how that signal depends on other signals, and then solving the multiple equations for the output signal in terms of the input signal. MGF provides a step by step method to obtain the transfer function from a SFG. Often, MGF can be determined by inspection of the SFG. The method can easily handle SFGs with many variables and loops including loops with inner loops. MGF comes up often in the context of [[control system]]s and digital filters because control systems and digital filters are often represented by SFGs.
| | The author is known by the title of Numbers Wunder. One of the extremely very best issues in the world for me is to do aerobics and I've been doing it for quite a whilst. California is exactly where her std testing at home ([http://javly.com/?p=56362 please click the up coming website page]) is but she requirements to move simply because of her family. Bookkeeping is what I do. |
| | |
| == Formula ==
| |
| The gain formula is as follows:
| |
| | |
| : <math>G = \frac{y_\text{out}}{y_\text{in}} = \frac{ \sum_{k=1}^N {G_k \Delta _k} }{ \Delta\ } </math>
| |
| | |
| <!-- extra blank line between two lines of "displayed" [[TeX]] for easier legibility -->
| |
| | |
| : <math>\Delta = 1 - \sum L_i + \sum L_iL_j- \sum L_iL_jL_k + \cdots + (-1)^m \sum \cdots +\cdots </math>
| |
| | |
| where:
| |
| *Δ = the determinant of the graph.
| |
| *''y''<sub>in</sub> = input-node variable
| |
| *''y''<sub>out</sub> = output-node variable
| |
| *''G'' = complete gain between ''y''<sub>in</sub> and ''y''<sub>out</sub>
| |
| *''N'' = total number of forward paths between ''y''<sub>in</sub> and ''y''<sub>out</sub>
| |
| *''G''<sub>''k''</sub> = gain of the ''k''th forward path between ''y''<sub>in</sub> and ''y''<sub>out</sub>
| |
| *''L''<sub>''i''</sub> = loop gain of each closed loop in the system
| |
| *''L''<sub>''i''</sub>''L''<sub>''j''</sub> = product of the loop gains of any two non-touching loops (no common nodes)
| |
| *''L''<sub>''i''</sub>''L''<sub>''j''</sub>''L''<sub>''k''</sub> = product of the loop gains of any three pairwise nontouching loops
| |
| *Δ<sub>''k''</sub> = the cofactor value of Δ for the ''k''<sup>th</sup> forward path, with the loops touching the ''k''<sup>th</sup> forward path removed. *
| |
| | |
| === Procedure ===
| |
| To use this technique,
| |
| # Make a list of all forward paths, and their gains, and label these ''G''<sub>''k''</sub>.
| |
| # Make a list of all the loops and their gains, and label these ''L''<sub>''i''</sub> (for ''i'' loops). Make a list of all pairs of non-touching loops, and the products of their gains (''L''<sub>''i''</sub>''L''<sub>''j''</sub>). Make a list of all pairwise non-touching loops taken three at a time (''L''<sub>''i''</sub>''L''<sub>''j''</sub>''L''<sub>''k''</sub>), then four at a time, and so forth, until there are no more.
| |
| # Compute the determinant Δ and cofactors Δ<sub>''k''</sub>.
| |
| # Apply the formula.
| |
| | |
| ==Examples==
| |
| | |
| ===Circuit containing two-port===
| |
| | |
| [[Image:Circuit with two port and equivalent signal flow graph.png|lrft|thumb|400px| Signal flow graph of a circuit containing a two port. The forward path from input to output is shown in a different color.]]
| |
| | |
| The transfer function from '''V<sub>in</sub>''' to '''V<sub>2</sub>''' is desired.
| |
| | |
| There is only one forward path:
| |
| :* '''V<sub>in</sub>''' to '''V<sub>1</sub>''' to '''I<sub>2</sub>''' to '''V<sub>2</sub>''' with gain <math> G_1 = -y_{21} R_L \, </math>
| |
| | |
| There are three loops:
| |
| :* '''V<sub>1</sub>''' to '''I<sub>1</sub>''' to '''V<sub>1</sub>''' with gain <math> L_1 = -R_{in} y_{11} \, </math>
| |
| :* '''V<sub>2</sub>''' to '''I<sub>2</sub>''' to '''V<sub>2</sub>''' with gain <math> L_2 = -R_L y_{22} \, </math>
| |
| :* '''V<sub>1</sub>''' to '''I<sub>2</sub>''' to '''V<sub>2</sub>''' to '''I<sub>1</sub>''' to '''V<sub>1</sub>''' with gain <math> L_3 = y_{21} R_L y_{12} R_{in} \, </math>
| |
| | |
| :<math> \Delta = 1 - ( L_1 + L_2 + L_3 ) + ( L_1 L_2 ) \, </math> note: '''L<sub>1</sub>''' and '''L<sub>2</sub>''' do not touch each other whereas '''L<sub>3</sub>''' touches both of the other loops.
| |
| | |
| :<math> \Delta_1 = 1 \, </math> note: the forward path touches all the loops so all that is left is '''1'''.
| |
| | |
| :<math> G = \frac { G_1 \Delta_1 } { \Delta } = \frac { -y_{21} R_L } {1 + R_{in}y_{11} + R_L y_{22} - y_{21} R_L y_{12} R_{in} + R_{in}y_{11} R_L y_{22} } \, </math>
| |
| {{-}}
| |
| | |
| ===Digital IIR biquad filter===
| |
| | |
| [[Image:Signal flow graph for a digital IIR Biquad.png|right|thumb|400px| The signal flow graph (SFG) for a digital infinite impulse response bi-quad filter. This SFG has three forward paths and two loops.]]
| |
| | |
| [[Digital filter]]s are often diagramed as signal flow graphs. | |
| | |
| : There are two loops
| |
| :*<math> L_1 = -a_1 Z^{-1} \, </math> | |
| :*<math> L_2 = -a_2 Z^{-2} \, </math>
| |
| | |
| :<math> \Delta = 1 - ( L_1 + L_2 ) \, </math> Note, the two loops touch so there is no term for their product.
| |
| | |
| :There are three forward paths
| |
| :*<math> G_0 = b_0 \, </math>
| |
| :*<math> G_1 = b_1 Z^{-1} \, </math>
| |
| :*<math> G_2 = b_2 Z^{-2} \, </math>
| |
| | |
| : All the forward paths touch all the loops so <math> \Delta_0 = \Delta_1 = \Delta_2 = 1 \, </math>
| |
| | |
| : <math> G = \frac { G_0 \Delta_0 +G_1 \Delta_1 + G_2 \Delta_2 } {\Delta} \, </math>
| |
| | |
| : <math> G = \frac { b_0 + b_1 Z^{-1} + b_2 Z^{-2} } {1 +a_1 Z^{-1} + a_2 Z^{-2} } \, </math>
| |
| | |
| {{-}}
| |
| | |
| ===Servo===
| |
| | |
| [[Image:Position servo and signal flow graph.png|right|thumb|800px| Angular position servo and signal flow graph. θ<sub>C</sub> = desired angle command, θ<sub>L</sub> = actual load angle, K<sub>P</sub> = position loop gain, V<sub>ωC</sub> = velocity command, V<sub>ωM</sub> = motor velocity sense voltage, K<sub>V</sub> = velocity loop gain, V<sub>IC</sub> = current command, V<sub>IM</sub> = current sense voltage, K<sub>C</sub> = current loop gain, V<sub>A</sub> = power amplifier output voltage, V<sub>M</sub> = effective voltage across the inductance, L<sub>M</sub> = motor inductance, I<sub>M</sub> = motor current, R<sub>M</sub> = motor resistance, R<sub>S</sub> = current sense resistance, K<sub>M</sub> = motor torque constant (Nm/amp), T = torque, M = moment of inertia of all rotating components α = angular acceleration, ω = angular velocity, β = mechanical damping, G<sub>M</sub> = motor back EMF constant, G<sub>T</sub> = tachometer conversion gain constant,. There is one forward path (shown in a different color) and six feedback loops. The drive shaft assumed to be stiff enough to not treat as a spring. Constants are shown in black and variables in purple.]]
| |
| | |
| The signal flow graph has six loops. They are:
| |
| :*<math> L_0 = - \frac {\beta} {sM} \, </math>
| |
| | |
| :*<math> L_1 = \frac{-( R_M + R_S)} {sL_M} \, </math>
| |
| | |
| :*<math> L_2 = \, \frac {-G_M K_M} {s^2 L_M M} </math>
| |
| | |
| :*<math> L_3 = \frac {-K_C R_S} {sL_M} \, </math>
| |
| | |
| :*<math> L_4 = \frac {-K_V K_C K_M G_T} {s^2 L_M M} \, </math>
| |
| | |
| :*<math> L_5 = \frac {-K_P K_V K_C K_M } {s^3 L_M M} \, </math>
| |
| | |
| :<math> \Delta = 1 - (L_0+L_1+L_2+L_3+L_4+L_5) + (L_0 L_1 + L_0 L_3)\, </math>
| |
| | |
| There is one forward path:
| |
| | |
| :*<math> g_0 = \frac {-K_P K_V K_C K_M } {s^3 L_M M} \, </math>
| |
| | |
| The forward path touches all the loops therefore the co-factor <math> \Delta_0 = 1 </math>
| |
| | |
| And the gain from input to output is <math> \frac {\theta_L} {\theta_C} = \frac {g_0 \Delta_0} {\Delta} \, </math>
| |
| | |
| {{-}}
| |
| | |
| == Equivalent matrix form ==
| |
| Mason's rule can be stated in a simple matrix form. Assume <math>\mathbf{T}</math> is the transient matrix of the graph where <math>t_{nm} = \left[\mathbf{T}\right]_{nm}</math> is the sum transmittance of branches from node ''m'' toward node ''n''. Then, the gain from node ''m'' to node ''n'' of the graph is equal to <math>u_{nm} = \left[\mathbf{U}\right]_{nm}</math>, where
| |
| | |
| : <math> \mathbf{U} = \left ( \mathbf{I} - \mathbf{T} \right ) ^ {-1} </math>,
| |
| | |
| and <math>\mathbf{I}</math> is the identity matrix.
| |
| | |
| Mason's Rule is also particularly useful for deriving the z-domain transfer function of discrete networks that have inner feedback loops embedded within outer feedback loops (nested loops). If the discrete network can be drawn as a signal flow graph, then the application of Mason's Rule will give that network's z-domain H(z) transfer function.
| |
| | |
| ==Complexity and Computational Applications==
| |
| Mason's Rule can grow factorially, because the enumeration of paths in a directed graph grows thusly. To see this consider the complete directed graph on <math>n</math> vertices, having an edge between every pair of vertices. There is a path form <math>y_{in}</math> to <math>y_{out}</math> for each of the <math>(n-2)!</math> permutations of the intermediate vertices. Thus [[Gaussian elimination]] is more efficient in the general case.
| |
| | |
| Yet Mason's rule characterizes the transfer functions of interconnected systems in a way which is simultaneously algebraic and combinatorial, allowing for general statements and other computations in algebraic systems theory. While numerous inverses occur during Gaussian eliminiation, Mason's rule naturally collects these into a single [[quasi-inverse]]. General form is
| |
| ::<math>\frac{p}{1-q},</math>
| |
| Where as described above, <math>q</math> is a sum of cycle products, each of which typically falls into an [[Ideal (ring theory)|ideal]] (for example, the strictly causal operators). Fractions of this form form a [[subring]] <math>R(1+\langle L_i\rangle)^{-1}</math> of the [[rational function field]]. This observation carries over to the noncommutative case,<ref>{{cite journal|authors=Pliam, J.O. and Lee,E.B.|year=1995|title=On the global properties of interconnected systems|journal=IEEE Trans. Circuits and Syst. I|pages=1013–1017|url=http://www.atbash.com/node/8}}</ref> even though Mason's rule itself must then be replaced by [[Noncommutative_signal-flow_graph#Return_Loop_Method|Riegle's rule]].
| |
| | |
| ==See also==
| |
| *[[Signal-flow graph]]
| |
| *[[Noncommutative_signal-flow_graph#Return_Loop_Method|Riegle's rule]]
| |
| | |
| ==Notes==
| |
| {{Reflist}}
| |
| | |
| == References ==
| |
| *{{Cite book |last=Bolton |first=W. Newnes |title=Control Engineering Pocketbook |location=Oxford |publisher=Newnes |year=1998 |isbn= }}
| |
| *{{Cite book |first=M. E. |last=Van Valkenburg |title=Network Analysis |edition=3rd |publisher=Prentice-Hall |location=Englewood Cliffs, NJ |year=1974 |isbn= }}
| |
| * [http://www.tomzap.com/notes/AutomaticControlsEE362K/MasonsRule.pdf A mason rule example]
| |
| | |
| {{DEFAULTSORT:Mason's Rule}}
| |
| [[Category:Control theory]]
| |