You were right! I knew something outside the PID was causing this!
Check to see if there is anything writing to the N addresses involved in the PID function. That could be something in the PLC5 ladder logic or from an HMI panel.
I’ve found the cause. Further downstream, there is another process and then a hopper. The hopper low limit switch sets the auger PID output to 60 (almost 0, considering the output is 0-4950) when the level gets too low. Unfortunately, whoever designed this didn’t understand level control. When the hopper level hits the low limit switch, my auger PID setpoint goes to 60, and the PID mode is set to SW simulate for exactly 1 second. The system dead time then takes its 20 seconds, and the low limit of the hopper goes away. BUT as soon as the hopper level gets above the low limit, the system ramps all the way back up to normal speed, and quickly empties the hopper again and so the loop continues over and over.
As a temporary fix, I plan to change this so that:
1. My auger speed is reduced much less dramatically, maybe in steps as necessary
2. My hopper will then fill to level much higher than the low limit
3. Once this undetermined level is met, my augers will go back to normal rate.
I’m sure this will reduce the dramatic oscillations. However, I will still see the system speed up and slow down at some interval.
The best solution may be to tune the second process so that my hopper doesn’t hit the low level. I haven’t gotten far enough into it yet to know how it is controlled. Either way, once I get this somewhat stabilized, I can go upstream to the beginning of the process and increase feed rates (master setpoint).
I really can’t describe this whole process on here, but there’s many PID loops, all in series. Probably none of them are very well tuned. I honestly don’t know the best way to get them to all work together. Any advice on all this would be greatly appreciated!