Assignment 7 - 2014
Due date(s): | 07 April 2014, in class (no late hand-ins) |
(PDF) | Assignment questions |
(PDF) | Assignment solutions |
<rst> <rst-options: 'toc' = False/> <rst-options: 'reset-figures' = False/> .. rubric:: This assignment gives you practice with multiloop control.
.. question:: :grading: 5
*From a previous final exam*
A 2x2 subsystem, derived from step inputs to a heavy oil fractionator, lead to the following transfer function model:
.. math::
y_1 &= \dfrac{1.2e^{-27s}}{45s + 1}m_1 + \dfrac{4.5e^{-27s}}{50s + 1}m_2 \\ y_2 &= \dfrac{1.4e^{-8s}}{19s + 1}m_1 + \dfrac{4.0}{13s + 1}m_2
where
* :math:`y_1` = top end point * :math:`y_2` = intermediate reflux temperature * :math:`m_1` = top draw rate * :math:`m_2` = intermediate reflux duty
Use a relative gain array analysis to calculate the appropriate loop pairing for this system.
.. answer::
The RGA analysis requires the steady state gain matrix, :math:`\mathbf{K} = \mathbf{G}(s=0)`:
.. math::
\left(\begin{array}{c}y_1\\y_2\end{array}\right) &= \left(\begin{array}{cc} \dfrac{1.2e^{-27s}}{45s + 1} & \dfrac{4.5e^{-27s}}{50s + 1} \\ \dfrac{1.4e^{-8s}}{19s + 1} & \dfrac{4.0}{13s + 1}\end{array}\right) \left(\begin{array}{c} m_1\\ m_2\end{array}\right) \\ \mathbf{y(s)} &= \mathbf{G}(s) \mathbf{m}(s)\\ \text{Now set it to steady state, $\mathbf{G(s=0)}$}\\ \left(\begin{array}{c}y_1\\y_2\end{array}\right) &= \left(\begin{array}{cc} 1.2 & 4.5 \\ 1.4 & 4.0\end{array}\right) \left(\begin{array}{c} m_1\\ m_2\end{array}\right) \\ \mathbf{y}(s) &= \mathbf{K} \mathbf{m}(s)\\
The relative gain array is :math:`\mathbf{\Lambda} = \mathbf{K} \otimes \left(\mathbf{K}^{-1}\right)^T`
.. math::
\mathbf{\Lambda} = \left(\begin{array}{cc} -3.2 & 4.2 \\ 4.2 & -3.2\end{array}\right)
which indicates that the following pairing should be made (pick the pairing with :math:`\lambda_{ij}` values closest to 1, and positive)
* the top end point should be controlled by manipulating the intermediate reflux duty * the intermediate reflux temperature should be controlled by changing the top draw rate
.. question::
:grading: 27 = 5 + 6 + 8 + 8
*From a previous final exam*
Step tests on a distillation column with a methanol-water feed resulted in the following transfer function model:
.. math::
y_1 &= \dfrac{10e^{-7s}}{15s+1}u_1(s) - \dfrac{17e^{-2s}}{21s+1}u_2(s) + \dfrac{4e^{-8s}}{15s+1}d(s)\\ y_2 &= \dfrac{6e^{-7s}}{10s+1}u_1(s) - \dfrac{17e^{-3s}}{12s+1}u_2(s) + \dfrac{5e^{-3s}}{13s+1}d(s)
where:
* :math:`y_1` = overhead methanol mole fraction * :math:`y_2` = bottoms methanol mole fraction * :math:`u_1` = reflux flow rate * :math:`u_2` = reboiler steam flow rate * :math:`d` = feed flow rate
#. Draw a diagram of the equipment, showing the sensor and manipulated variable locations.
#. Determine the appropriate loop pairing for this system.
#. Draw a complete block diagram of the controlled system showing clearly all the transfer function elements.
#. Since the feed flow rate can be readily measured, design a feedforward control system for this process, and show on your block diagram how it would be implemented along with the feedback control system. You may express your design in terms of the transfer function element identifiers :math:`g_{11}(s)`, :math:`g_d(s)` *etc*. without substituting the analytical expressions for the transfer functions.
.. answer::
#. An example of a generic distillation column is shown here; reboiler and reflux entry points vary from column to column. The key features of the manipulated variables, controlled variables and disturbances are shown though.
.. image:: ../figures/process-control/assignments/distillation-column-pairing.png :scale: 70 :width: 750px
#. Appropriate loop pairing can be selected using the relative gain array:
.. math::
\left(\begin{array}{c}y_1\\y_2\end{array}\right) &= \left(\begin{array}{cc} \dfrac{10e^{-7s}}{15s+1} & - \dfrac{17e^{-2s}}{21s+1} \\ \dfrac{6e^{-7s}}{10s+1} & - \dfrac{17e^{-3s}}{12s+1} \end{array}\right)\left(\begin{array}{c} u_1\\ u_2\end{array}\right) \\ \mathbf{K} &= \left(\begin{array}{cc} 10 & -17 \\ 6 & -17\end{array}\right) \\ \mathbf{\Lambda} &= \left(\begin{array}{cc} 2.5 & -1.5 \\ -1.5 & 2.5\end{array}\right)
which indicates that the following pairing should be made (pick the pairing with :math:`\lambda_{ij}` values closest to 1, and positive)
* the overhead methanol mol fraction should be controlled by manipulating the reflux flow rate * the bottoms methanol mole fraction should be controlled by changing the reboiler steam flow rate
Note that the feed flow to the column is a disturbance. In most real systems we cannot adjust that feed flow rate, since it is set by operational constraints (we have to process :math:`N` tons of material per day), so we cannot vary it.
#. The block diagram, with pairing and feedback and disturbances is shown below:
.. image:: ../figures/process-control/assignments/distillation-pairing-block-diagram.png :scale: 95 :width: 750px
#. The feed flow is a valid disturbance to apply feedforward to, because it causes unacceptable deviation in the two controlled variables, it is measured, changes in either the reflex flow, :math:`(u_1)`, or the reboiler steam flow, :math:`(u_2)`, do not have a causal relationship to the flow, and the dynamics from flow to the two outputs is comparable (if a bit longer) than from the two manipulated variables to the two controlled variables.
#. This question combines knowledge from two areas of the course: feedforward control and multiloop control.
The parts in red have been added to the block diagram to show how feedforward can be used in this context. The key insight is to recognize the same feedforward controller has to be used for both controlled variables, :math:`y_1` and :math:`y_2`.
.. image:: ../figures/process-control/assignments/distillation-pairing-block-diagram-feedforward.png :scale: 95 :width: 750px
Deriving the feedforward controller is no different to the single loop case: start from the controlled variable and work backwards:
.. math::
y_1 = g_{d1} d + g_{12}G_{ff}d + g_{11} G_{ff} d
Since we would like :math:`y_1(s) =0`, we can solve for the feedforward controller:
.. math::
0 &= d\left(g_{d1} + g_{12}G_{ff} + g_{11} G_{ff} \right)\\ 0 &= g_{d1} + g_{12}G_{ff} + g_{11} G_{ff} \\ G_{ff}(s) &= -\dfrac{g_{d1}}{g_{12} + g_{11}}
Similarly, we can derive a feedforward controller for the second output:
.. math::
0 &= d\left(g_{d2} + g_{21}G_{ff} + g_{22} G_{ff} \right)\\ G_{ff}(s) &= -\dfrac{g_{d2}}{g_{21} + g_{22}}
Which one of these two to pick would depend on which output we would like to be least affected by the disturbance.
A compromise is possible. Ignoring the dynamics of the system and dealing purely with the steady state gains we would get (a suboptimal, but still perfectly functional controller):
.. math::
G_{ff,1}(s) &= -\dfrac{g_{d1}}{g_{12} + g_{11}} = -\dfrac{4}{-17 + 10} = 0.57 \\ G_{ff,2}(s) &= -\dfrac{g_{d2}}{g_{21} + g_{22}} = -\dfrac{5}{6 -17} = 0.45
Picking a value of :math:`G_{ff} \approx 0.5` will work well for both outputs in this scenario then.
</rst>