This column is moderated by Béla Lipták, automation and safety consultant and editor of the Instrument and Automation Engineers’ Handbook (IAEH). If you have an automation-related question for this column, write to [email protected].
After a gas fire destroyed control panels (obliterated them), I'm writing two programs, one for a melting furnace and the other for a holding furnace. I am almost done with the holding furnace program and my question pertains to that. The furnace was running before the fire and a cascade loop controlled it, but the panels were destroyed and there is no way to know the tuning values. The customer is hemorrhaging money because their plant is down. I have the cascade loop programmed, and thought there might be some published guidelines on starting tuning values, but I have not found them yet.
In the process, molten aluminum from a melting furnace is transferred to a holding furnace to await use in casting. The holding furnace control panel was destroyed, and I am writing a new program for it. The old control used relays, standalone PID controllers and two Honeywell Flame Safety relays. My new PLC will modulate the combustion air flowing to the burner, and the gas flow will be matched to the air flow by a new flame safety system. The "bath" is the trough holding the molten metal and the "roof" is the part of the refractory of the furnace that gets hot and radiates heat to the bath.
In the pre-fire system, they used two controllers called the "bath temperature controller" and the "roof temperature controller." I created a cascade loop in the PLC. The configuration is that the bath temperature controller is the outer loop whose output is scaled to the setpoint of the roof temperature controller (inner loop). The output of the roof controller modulates the burner air valve. I used two PIDE (enhanced PID) loops in a ControlLogix PLC. I chose to use independent gains whose integral gain units are (1/minute) and whose derivative gain units are minutes. Proportional gain is just the usual dimensionless gain. My question is: do you have any recommendations for initial values of the tuning values for the two loops?
Interesting question. My advice has several components.
Let me start with the process. I understand that at start-up, the aluminum from the melting furnace will be hot, while your holding furnace receiving the melt will not be. Therefore, the amount of heat required to be introduced into the holding furnace will be the sum of what is required to heat up the body of the furnace itself plus the heat needed to keep the entering melt hot. Once the holding furnace temperature reaches the required level (once start-up is over), the heat demand will drop to match the heat loss of the melt, and the dynamics of the system will be that of a fired heater: a low-gain process with a long time constant. I assume that your question relates to this "holding" phase of the operation.
Now, as to the temperature-temperature cascade loop, I would not use temperature-temperature cascade at all. This is because both of your temperature loops are slow and good cascade requires that the inner loop be about an order of magnitude faster than the outer loop. Therefore, I would use the melt temperature controller as the cascade master, and the fuel flow controller (not the air!) as the slave. I would let the air flow be controlled by the required air-fuel ratio, which is manipulated by the excess oxygen in the flue gas. (For details, including the flame safety requirements of NFPA, see Chapter 8.6 of the 2nd volume of my handbook.)
So what about the roof temperature controller? I would use the roof temperature in a selective override configuration, so that fuel flow would normally be controlled by the melt temperature, and the roof temperature would take over only if it reaches one of the limits of its setpoint gap. When it did, it would temporarily take the control from the melt temperature master of the cascade loop.
If you want to further improve the operation of the system and if you have temperature and flow detectors on the entering melt, you can add feedforward to this temperature-fuel flow cascade loop. In that case, you would detect the change in the load entering from the melting furnace and use this information to adjust the required firing rate before the load change had a chance to upset the melt temperature. This way, the cascade loop would need to do less work.
As to tuning constants, what I know is that you have a low gain process (a large change in fuel flow will result in a small and slow change in temperature), and I also assume that the residence time of the melt is variable, so the initial gain setting should be high.
A difficult question to answer. You are controlling fired equipment and, therefore, all the protections recommended by the NFPA-85 must be provided. With no information of the dynamic behavior of the process, it is not really possible to suggest any "initial tuning values for a cascade loop." Sorry, but there is more to it than meets the eye. For example, the cascade will work if the dynamics of the inner loop are much faster than that of the outer loop—otherwise, you will be up for a sluggish control response.
You should try asking for a bump test, if possible, so you can get a process model, and then work out the tuning parameters. Otherwise, you will need to tune the controllers by trial and error. Start with the innermost loop, and then do the outermost loop.
Combustion processes are normally lagtime-dominated, so the most important mode to use is the controller gain. When a short Integral mode is used to compensate for the lack of gain, the changes in the process' internal, time-related parameters will reduce the robustness margin. Finally, the derivative mode can add robustness to a control loop up to a certain point, but because of the derivative cliff, the loop can suddenly lose stability.
My experience has shown me that the so-called initial values for tuning parameters are pretty much of no use. I'm currently involved in the start-up of a greenfield oil refinery, and more often than not, the initial tuning parameters put up by the DCS vendor are only troublesome. That's why my answer to this type of questions is always: it depends!
The only reasonable advice I can think of is that the most effective control mode in this type of application should be the controller gain, integral time, and derivative (if and only if needed) will help improve the performance at a cost in the robustness margin.
If I understand you correctly, then I'd suggest that there are two ways to handle this, but with the data provided there's no way to give any values.
The first way is to develop a mathematical model of the system, looking at the physical constraints like the bath and roof sizes from both heat conduction and reflection point of view, so you're able to develop a correct numerical model of the system. You have to analyze the dead times very carefully since temperature will act very slowly initially but will use a lot of energy. So the cascade loop should be the bath control with a setpoint adjustment from the roof control. That way the roof controller will limit the heat applied once this roof is at operating temperature.
The other way would be to set up the two independent loops controlling the bath and roof with a high/low select adjustment of the setpoint of the bath based on the roof temperature.
With the first approach, the model will be more precise, but will constantly change as the internal components of the furnace age and deteriorate, base material changes and fuel varies. With the second approach, you'll initially have more fluctuations while the system stabilizes, but it should be better in the long run.