PID Bumpless changeover


Thread Starter


Having the following:
MV - Manipulated variable
SP - Setpoint
PV - Process variable.

We are using a Q series mitsubishi PLC and using the PID block provided by the supplier.

Current configuration:
Auto: The block runs in Auto and controls as it should.

Manual: The function block, when set in Manual, the SP value is transferred to the MV output of the block. Any change on the SP is reflected on the MV. This is all fine.

Question is how to make the changeover bumpless?
Make sure the Integral portion of the controller is reset before you switch to auto.

If you switch the output of the controller back to the feedback signal during manual operation the control offset is 0 and therefore no integral build up occurs. (PV=MV)

Decent controllers have follow up mode and integral hold and or reset modes to achieve these functions, but for a simple controller the above practice should suffice.

Donald P
You should transfer value of MV to SP, when PID in manual mode. When you swich from manual to automatic mode, you must set required SP again. The swich will be bumpless.
I don't know technically how to do this in your situation but I think that you could copy the PV to the manual SP just before you switch from auto to manual.
I don't know the Mitsubishi method of handling PID control, but I would think it is most unusual to have the Setpoint being passed direct to the Manipulated Variable in manual. While in manual the Setpoint should have no influence on the output of the loop - surely that's the whole point of manual: you are controlling the output (MV) directly. Let's say I have a temperature controller with a range of -20deg to +200deg. In Auto I apply a Setpoint of 150deg and the loop reacts accordingly. What happens in manual if I then set a Setpoint of 100deg? Who's controlling the loop output - me or the controller? As far as I'm concerned, once I've switched from auto to manual the loop output should not change any further unless I explicitly alter it. No change in Setpoint or PV should affect this at all.

The bumpless issue usually comes when changing back to auto after being in manual. At the instant that the loop control block resumes control of the output, if there is any error (ie difference between SP and PV) it willl immediately react to try to counter this. What you should do is make sure that the PV and SP are equal immediately prior to changing mode. Write the current PV to the SP before making the controller change mode.


Ken Muir
Copy the value of the output while in Auto to the Manual Setpoint then when the loop is placed in Manual the Setpoint will be at the last value it was in Auto.

Robert Scott

I don't know the particulars of the PID block provided by the supplier, but in general the way you make the changeover between manual and closed-loop bumpless is to dig into the implementation of the PID loop and locate the "I" term. When going from manual to closed-loop you need to force the "I" term to be whatever it needs to be to make the Manipulated variable equal to what manual control had made it. That means calculating the current closed-loop error and finding out the contribution from the "P" term as well so to that you can take it into account when the calculate the needed "I" term. This approach required that you have "inside knowledge" of the PID implementation.

Robert Scott
Real-Time Specialties
Embedded Systems Consulting

Michel Levesque, eng.

Actually the easiest way of doing this is to use a separate value as Auto SP and Manual SP, then select which one gets moved into the PID's SP based on your mode of operation. When in Auto, move the MV back into the Manual SP which will give you a bumpless Auto->Man switch.

When going back to Auto the PID should transition smoothly based on tuning. If the PID does not cap the integral, then add a move of the MV to the Auto SP during Manual mode.

This way you have full control of your SPs at all times and have an independent MV.
If the PID has max_out and min_out settings that can be changed while running, you can simply copy the manual value into both max_out and min_out while you are in manual mode (make them follow the manual value).

The anti-reset-windup circuitry will then magically do what's needed as far as adjusting the I term is concerned. No calculations required.

To switch back to automatic, just restore max_out and min_out to their usual values.

Jiri, who coded bumpless Man->Auto for the MatPLC :)
Jiri Baum <[email protected]>
MAT LinuxPLC project --- --- Machine Automation Tools

Khalid Faridi

Quite simply now a days almost all the controllers or control fucntion blocks come with the feature of "SP Track PV" in Man mode or in some other cases you may have to write TRUE in "Bumpless Transfer" field in your controller. But as few replies suggest, if your controller is pretty old then you have to read the Manual thoroughly to come across these terms and implement!!

Hope that serves the purpose.