A nonsquare plant has an unequal number of manipulated variables and output variables. This is common in practice, and the Model Predictive Control Toolbox™ software supports an excess of manipulated variables or outputs. In such cases you will usually need to modify default toolbox settings.
This section covers the following topics:
When there are excess outputs, you can't hold each at a setpoint. You have the following options:
The initial test of the CSTR controller used option 1 (the default), which caused both outputs to deviate from their setpoints (see Plant Outputs for T Setpoint Scenario with Added Data Markers). You can adjust the offset in each output by changing the output weights. Increasing an output weight decreases the offset in that output (at the expense of increased offset in other outputs).
The modified CSTR controller used option 2 (see the discussion in Weight Tuning). In general, if the application has Ne more outputs than manipulated variables, setting Ne output weights to zero should allow the remaining outputs to be held at setpoints (unless the manipulated variables are constrained). This was the case for the modified CSTR controller (see Improved Setpoint Tracking for CSTR Temperature).
Outputs that have been "sacrificed" by setting their weights to zero can still be useful. If measured, they can help the controller to estimate the plant's state, thereby improving its predictions. They can also be used as indicators, or as variables to be held within an operating region defined by output constraints.
In this situation, default Model Predictive Control Toolbox settings should provide offset-free output-setpoint tracking, but the manipulated variables are likely to drift.
One way to avoid this is to use manipulated variable setpoints. If there are Ne excess manipulated variables and you hold Ne of them at target values, the rest should not drift. Rather, they will attain the values needed to eliminate output offset.
To define a manipulated variable setpoint:
Enter the setpoint value in the Nominal field in the signal properties view – see Model Predictive Control Toolbox Design Tool's Signal Definition View.
Assign a nonzero input weight using the Weight entry on the controller's Weight Tuning tab – see Controller Options — Weight Tuning Tab.
In step 2, the magnitude of the input weight determines the extent to which the manipulated variable can deviate from its target during a transient. See Input Weights for more discussion and mathematical details.
You might want to allow such deviations temporarily in order to provide better output setpoint tracking. In that case, use a relatively small input weight. If you want the manipulated variable to stay near its target value at all times, increase its input weight.
Another way to avoid drift is to constrain one or more manipulated variables to a narrow operating region. You can even hold an MV constant by setting its lower and upper bounds to the same value (in which case its nominal value should also be set to this value), or by setting both of its rate constraints to zero. To define constraints, use the controller's Constraints tab (see Defining Manipulated Variable Constraints).