MPC Pro/MPC Plus Rotation Factor

Hi, I'm implementing some MPC Pro single in single out controllers at a project. These control loops have some dead time dominant processes with pretty long time to steady state, and so far the results are, well,...impressive.

Some of the processes are a integrating, and I was wondering about the adjustment of the ROTATION_FACTOR.  I see that books online briefly touches on it, and says that the error is compensated every scan with a "shift" of the output prediction that works well for regulating type processes. But it says this shift has special effects on integrating processes that must be accounted for. There's also this relationship mentioned, where Shift Factor + Rotation Factor = 1. Books Online says "The Rotation Factor is the Integrating Gain in the period of one MPC scan for unmeasured disturbances and process model mismatch; usually in the range 0.0 to 0.1." After looking at the MPC Pro and MPC Plus blocks, I see that the default value for ROTATION_FACTOR is 0.05. However, I'm still not clear what to set it to for these different applications.

So, how does one apply and adjust the Rotation Factor, particularly for integrating processes? Is the range of 0.0 to 0.1 for regulating type processes or integrating as well?  Is the range strictly between 0.0 to 0.1? And if not, what happens outside this range? Is there a rule of thumb the experts have for its use?

  • Rotation Factor applies only to non-self-regulating or integrating processes. Models are never perfect, but as one of my colleagues likes to say, some are useful. When there is model mismatch, the prediction is off. In a self-regulating process, the shift is simply a bias and the Rotation Factor is meaningless. There is a Model Correction Factor that allows the user to specify how much of a bias is applied. In an integrating process with no steady state, the integrating gain is a slope. The concept of a bias is not as important as the slope error and the model correction contains both a bias and a slope correction. The Rotation Factor is the slope correction. Both the Model Correction Factor and the Rotation Factor are parameters that may be adjusted by the user. In MPCPro, the default was generally effective. In MPCPlus, the way integrating variables are predicted, we are seeing some benefit to adjusting the Rotation Factor.
  • Hi Jess,

    Lou's comments are spot on - the "shift factor" applies a 1-time bias correction to the MPC prediction for issues like measurement noise, whereas the "rotation factor" applies a 1-time slope correction for issues like a flow rate change for an unmeasured stream feeding a tank vessel. "Shift factor" handles all of the error for self-regulating processes, whereas integrating processes need slope correction as well through the "rotation factor". I think (not confirmed) that the value is the fraction of the error attributed to each component on every scan.

    The amount of rotation factor needed for integrating processes changes from application to application. I've found that tanks with very reliable flow measurements and no unmeasured streams need little rotation factor (0.05 or less), whereas MPC performs better with higher values if there are going to be unmeasured flow disturbances. I've used up to 0.15 on challenging applications, but most fall into the 0.075-0.1 range.

    When commissioning the controller, I find it useful to watch the prediction horizon to see if ROTATION_FACTOR needs adjusting. If the prediction is steady but way off (e.g. the level is clearly increasing, but prediction shows a negative slope), you may want to increase its value. If the prediction is swinging wildly all over the place, you may need to decrease its value.

    One important thing to keep in mind if you're changing the ROTATION_FACTOR parameter is that there is also a ROTATION_LIMIT parameter with a default value of 0.1. If you set the ROTATION_FACTOR to a value greater than ROTATION_LIMIT, it will default back to 0 and you'll get no slope correction.
  • In reply to JessWilson:

    Hey Jess,
    Good input from Lou and Devon!
    You can change the MOD_CORR_FACTOR from OPCWATCHIT, WATCHIT or a CALC expression (you have to type the path). The changes from the latter two methods will be flagged for an upload. The default is 0.75. I have sometimes moved it toward 1.0 if I want to put more action on unmeasured disturbances. FYI, for integrating CV's in MPCPro, I have had better results with a POE of 0.5 or less. The MPCPlus block has an internally calculated "rate of change" variable for integrating CV's that it tries to control to a 0 rate of change (not falling or rising). I have found that you have to use a POE of 2 or larger (up to 10 in some cases) to get it "over power" the 0 rate of change (ROC) goal in order to move the PV to the SP. Also, the ROC will respond to unmeasured disturbance of the integrating CV even when it is between limits and an acceptable value. In my case, I did not want this action so I reduced the ROTATION_FACTOR for the default of 0.05 to 0.01 and reduced the action to a cyclic unmeasured disturbance on the CV by a factor of 5. Note that the ROTATION_FACTOR does not impact the action (except for model error) on a measured and included Disturbance Variable. Note that MPC SimulatePro is good to see the impact of the POE but it does not appear to pick up the new ROTATION_FACTOR. I had to configure a "sped up" simulation of the process to see it's impact in a "simulation" mode.
    Hope this helps!
    James
  • In reply to James Beall:

    Thanks you very much! I was really struggling to find the ability to change the POE in the generate controller interface of PredictPro, even in expert mode and finally found the key. If anyone else is looking for it, its under the model in the navigation tree to the left, select Controller setup and uncheck "Use Automatic Control Configuration", and then the POM and POE isn't grayed out anymore.

    Again, thank you Lou, Devon and James for all your great advice and tips. I'll try out these suggested settings and observe the results. I've got some more applications that I'm excited to try this on, and I'll continue letting MPC make me look good around here at site!