RSLogix 5000 PID Fan Controller

coopdegrace

Member
Join Date
Mar 2009
Location
perth
Posts
34
Hi All,

I have a PID control application that I would like to get your opinions on. As I am reality new to PID loops I am struggling somewhat... I am a huge fan of the forum and would appreciate any feedback.

We have a Chiller Unit here on site that needs to maintain a setpoint temperature. The unit consists of three fans with one connected to a VSD, the other two are DOL.

Currently the temperature is controlled by turning off a fan when temperature gets too low and turns on a fan when the temperature gets too high. Obviously this ON/OFF controller has issues with oscillation and over/undershooting setpoint.

What I would like to do is use the VSD controlled fan to "smooth" out the control of the system.

Say we have all three fans on and the temperature begins to fall below setpoint the VSD will ramp down to maintain the temperature. If the VSD drops to 0% then I would like to turn off one of the DOL fans and restart the VSD at 100% and continue to ramp it down until the temperature is stable.

On the flip side if two DOL fans are running and the temperature creeps up I want the VSD to start from 0% and ramp up until the temperature is again stable.

On my first attempt I am having issues when the temperature is high and one of the DOL fans turns off. Because we loose one of the DOL fans and the VSD controlled fan is essentially at 0% the temperature ramps up very quickly to a level that is not acceptable. I have played with the PID tuning settings to improve the loop response time but this is not enough and this also creates overshooting and oscillating issues.

My solution is to have the PID loop start back up again at 100% to mimic the DOL fan that has been turned off and ramp back down to stabilise the temperature. However I am not sure how to setup the PID function block to do this if it is at all possible??

I am wondering if this is the right way to approach the problem and if it is how is the PID block configured to control this way?
 
As I am ... new to PID loops ...

My solution is to have the PID loop start back up again at 100% to mimic the DOL fan that has been turned off and ramp back down to stabilise the temperature. However I am not sure how to setup the PID function block to do this if it is at all possible??
way?

A PID function block will typically have an Auto discrete (Boolean; bit) input. The state of the bit will be controlled by the PLC program.

When the PLC switches that input from 1 (Auto) to 0 (Manual), the PID stops manipulating the analog output (CV) to minimize the difference magnitude between the analog inputs, (PV-SP) or (SP-PV), and it is possible for the program to assign a value to the CV and/or VSD speed reference, which is normally controlled by the PID in Auto, so that is when this process can change the CV/VSD from 0% to 100% when dropping one DOL fan or from 100% to 0% when adding one DOL fan.

When the PLC switches that input back, from 0 (Manual) to 1 (Auto) is where the fun begins. Ideally the PID block will have "bumpless transfer" mode, which means that on the PID's first update after it returns to Auto it will "assume" (back-calculate its internal parameters as if) the CV value, which the PLC assigned, was assigned by the PID on the "previous" update, and the PV and SP have not changed since the "previous" update, and continue its control calculations from there*.

How to change the CV value while in Manual mode depends on the PID. Some PID implementations have an extra input value that the CV output can be directed to follow when the PID is in Manual mode.

If the Logix 5000 PIDE implementation is available, then there are several modes available to handle this and similar situation, e.g. see here, and here.

If the PID instruction/block/function in this thread's PLC does not have bumpless transfer, then the PLC may have to do some fancy dancing to emulate that behavior.

* That may not be an exact description of how every PID implements bumpless transfer, but it should be close enough.

I am wondering if this is the right way to approach the problem and if it is how is the PID block configured to control this way?

It might work, but obviously when the process operates near a DOL transition things will get dicey, as OP has already experienced.

It is probably less than ideal to have the DOL fans turning on and off several times over a short time frame. So there might need to be deadband(s), in the control scheme and/or in time, allowing the fans to stabilize at their new speeds and the system to recover from any transients before putting the PID back in Auto and/or allowing the meta-control logic to change the DOL configuration again.

One form of deadband would be allowing the temperature to go above or below setpoint by a fixed amount when the PID hits 100% or 0%, respectively, before triggering the transition up or down, respectively, so the PID will have some CV range to work with after the transition.

Or perhaps the DOLs could have a third speed, say at 90%, added, either electronically or via flow restriction, to allow a 90% DOL/0%-20% PID operation around transitions. The logic for this would be messy.

People from the power generation field probably know how to do this: high-efficiency large steam turbines 100% provide a base load; less-efficient gas turbines provide trim.
 
DOL stands for direct on-line. There is no motor starter so the speed is fixed. When one of these fans is turned on or off there will be a huge discontinuity in the amount of cooling. There is no bumpless transfer. The best that can be hoped for is to change the control output of the PID as the DOL fans are started or stopped. The PID must be tuned to respond quickly to changes but adding or subtracting from the PID's output will should minimize the "bump"



What isn't clear is how much of the load each fan produces. This is necessary to know how much the PID's output must be offset wen a DOL fan is started or stopped. Also, are these fans far enough apart so the back pressure of one fan does affect the other fans?
 
There is no bumpless transfer

If the PID is put into a different mode than auto to change the PID output when a DOL (I assume people can Google) motor changes state, then bumpless transfer in the PID will be pretty useful when the PID is put back into auto mode.

Obviously the process will experience a kick when a DOL motor changes state while trying to simultaneously invert the speed of the motor under VSD control, but using a PID's built-in bumpless transfer will minimize that kick.
 
Personally, I don't think PID is a good fit for this application because of the large upset when a DOL fan starts or stops.

My first approach would be to add or subtract an incremental change to the speed command every few seconds, the size of the increment depending on the magnitude of the error. Whenever a DOL fan starts, decrease the VFD speed by a large increment. When a DOL fan stops, increase the VFD speed command by a large increment.
 
one thing we do not know is the relative capacity of the VSD-controlled motor-fan system compared to the DOL motor-fan systems. If one DOL system has less capacity, then there may be no knife edge transitions at the limit of control e.g. turning on a DOL system means dropping the VSD system from e.g. 90% to 10%. In fact, if they were equal capacity, I would consider de-rating the DOL fans, e.g. by adding a small recycle, to make them have a smaller capacity so the transitions could be handled more cleanly.

I don't disagree with what @Steve Bailey says; he is essentially suggesting a time-only-proportional, I-only feedback control system in place of error-convolved-with-time-proportional PID* feedback control. Either approach needs to be tuned. PID may be overkill, but I might still prefer a single PIDE instruction to save writing the bespoke feedback control, trivial though it may be.

The bigger issue is still going to be how to handle, and when to trigger, the DOL on/off events. I definitely agree with @Steve Bailey that feedback PID control on full-time automatic will be unacceptable; so whether the trim control is done via PID or not, the transitions will be special cases handled by overriding whatever feedback control algorithm is chosen.

@Peter Nachtwey also makes a good point about back-pressure in that the system response to a percentage change in the VSD CV will be differ as 0, 1, or 2 DOL fans are running, so the tuning parameters may be dependent on the DOL systems' status.

* which might be PI only anyway if the system deadtime is small enough.
 
Last edited:
The likely reason the PID will cause excursions at DOL on-off transitions is that the system temperature response is slow, so the PID will not compensate for a dropped or added DOL until the temperature changes due to the dropped or added DOL.


One way around this would be to cascade a slow temperature-as-PV upstream PID control to output flowrate, and cascade that flowrate to the SP (setpoint) of a downstream PID, which outputs the VSD speed reference. Flowrate is a fast loop so the response to any process change, along with any excursions, will be smaller.


A flowrate measurement for the downstream PID's PV might be too complex to add, so fan exit pressure, upstream of the process and at or downstream of the fan manifold, could be used as a proxy for flowrate, i.e. the upstream PID output is a pressure cascaded to the SP of the downstream PID. The pressure measurement, if the volume of the system is small enough, would respond quickly to the downstream PID's output of the speed reference to the VSD.



Is this feasible? There is still the matter of handling the DOL transitions, but at least the temperature excursions at the transitions might be smaller.
 
The likely reason the PID will cause excursions at DOL on-off transitions is that the system temperature response is slow, so the PID will not compensate for a dropped or added DOL until the temperature changes due to the dropped or added DOL.
You don't understand what I said above. If a DOL fan is stopped then the PID must be offset to compensate. It can do that right away without delay. The same goes for starting a DOL fan. This can be done with the bias but it should be done by offsetting the accumulated control output due to the integrator.


The problem is that we don't know the relationship in air flow between the DOL fans and the VFD fan so we don't know how much the offset should be.


If the offsets are known then it should be possible to add or subtract a DOL fan without any significant disturbance.
 
You don't understand what I said above. If a DOL fan is stopped then the PID must be offset to compensate. It can do that right away without delay. The same goes for starting a DOL fan. This can be done with the bias but it should be done by offsetting the accumulated control output due to the integrator. ...

Thanks Peter, I think I understand now. In fact, I think we are accomplishing the same net effect via different methods:

  • you are applying an offset manually and directly to the integrator-driven accumulation of the PID output without taking the PID out of Auto;
  • I am taking the PID out of Auto, applying the offset manually and directly to the output while the PID is out of Auto, and letting the PID's bumpless transfer capability propagate that offset to the integrator-driven accumulation of the PID output when the PID is placed back into Auto mode.
Either method whould work, but Peter's is simpler*.

As you note, the tricky part will be determining the size of the offset.

* I did not realize PIDE allowed directly changing the CV while in Auto mode, which essentially effects Peter's approach. See the following from here and here.

xxx.png
 
... fan exit pressure .. could be used as a proxy for flowrate ...

On further consideration, this may be a pipe dream (pun intended):

  • the gauge pressure measurement will be small, so resolution/sensitivity may be a problem
  • the gauge pressure may be noisy; perhaps a deadband will deal with this, perhaps not
  • if the gauge pressure varies as the square of flowrate, the process response will be non-linear, and finding tuning parameters that will work over the entire range of operation could be problematic; that may be compensated for somewhat as cooling should vary with flowrate**0.8. but that may not help much.
 
I've dealt with a similar-ish problem recently. Two fans in parallel, duty/standby. Customer wants the duty to switch each day at 10am, but ideally wants there to be no disturbance to the process (in this case, controlling a negative pressure in a duct, so very quick to register a disturbance). If I just stopped one fan and started the other, I'd lose my negative pressure well before the second fan ramped up to speed. If I started the second without turning off the first, my negative pressure would get too negative and my PID would oscillate wildly.

What I ended up doing, was:
1. At the "duty change" instant, set the PID loop to manual
2. Start the standby fan. Once it gets to x% speed (a completely arbitrary figure arrived at by trial and error testing), stop the original duty fan
3. Once the new duty fan reaches speed setpoint, return the PID loop to auto

You could try a similar approach here - it may be that you have to do some trial and error testing to work out how far your VSD-controlled fan needs to ramp up or down before you stop or start the DOL, in order to maintain the same effective "output" and get the transfer as smooth as possible. As far as switching the PID loop from 0% to 100% or vice versa, when I've had to do similar things, my approach has been to set the loop to manual (set .SWM bit), then once I get confirmation that the loop is in manual (generally the next scan, or at least after the PID instruction has been executed next), set the output (.SO) to your new value. Then return the loop to auto again.
 
Not sure if it was mentioned, but typically every pump and fan have a curve. What are the curves for these fans. I can't believe that running at 2%, for example, is doing any work.
 
Not sure if it was mentioned, but typically every pump and fan have a curve. What are the curves for these fans. I can't believe that running at 2%, for example, is doing any work.
This is a good point - the two ways I usually account for this are to limit the output of the PID to meaningful values (e.g. set .MINO to 40%), or to use the scaling such that 0% output on the PID corresponds to e.g. 20Hz on the VSD, and 100% corresponds to 50 or 60Hz.
 
Not sure if it was mentioned, but typically every pump and fan have a curve. What are the curves for these fans. I can't believe that running at 2%, for example, is doing any work.
I mentioned it when I mention the back pressure. To spin the fan twice as fast requires 8 times the power but the DOL fan speed are fixed. That doesn't mean the output of the fans will not change if another fan is turned on or off.


There are two options here. Just make it work somewhat or engineer it to find the optimal solution.


I have always said there are 3 levels. Kludging a system, evolving a system or designing a system.
 
We did a similar application with an SCR-controlled heater and four DOL heaters. If the SCR controller heater was unable to meet setpoint (too cold), the PLC would reduce the output to 10% and bring in a DOL heater, and then return the loop to auto operation. If the temperature was above setpoint, it would set the output of the PID loop to 90% and turn off the heaters in the reverse order (last in, first out). It would then rotate the order in which the heaters would start, e.g. the first time through the loop the heaters would start in 1,2,3,4 order and turn off 4,3,2,1. The second time they would start in 2,3,4,1 order and turn off 1,4,3,2, etc. This was done to hopefully spread wear across the heaters equally, and the running hours for each heater were displayed on the HMI.
 

Similar Topics

Hi, Long time not in the forum, and not in the programming. I´m getting back. I was issued a conversion from RSLogix 500 to RSLogix 5000 (studio...
Replies
0
Views
1,293
So I have a PID loop on an 1756-L61 running V17 software just for background. Also the PID PV is a pressure transmitter and the CV is speed sent...
Replies
1
Views
899
Hi, I am confuse with the scaling tab on the PID dialog box. On the Process variable I am using a tag that is already scale. 0 to 16 Feet Level...
Replies
2
Views
2,429
Hi I am trying to understand the best method of providing bumpless transfer to the PID function (not PIDE) The existing code shows In Manual...
Replies
10
Views
4,621
Good day everyone. I would like to ask something regarding PID Instruction. I noticed one of our machine's PID instruction status is showing "PID...
Replies
3
Views
5,608
Back
Top Bottom