Slow Acting Long Time Interval PID Tuning

@GrizzlyC is there any mixing in the tank? Is the fluid around the upper termperature sensor able to mix, by forced convection, or natural convection, or by conduction, with the fluid around the lower temperature sensor? From the last plots it is apparent there are two measurement and control systems involved, and there is also almost certainly cross-talk, in both the process and the control responses. It is also likely that the calibration between the temperature sensors differs. So the only way to keep both measured temperatures (PVs) at the same setpoint would to be to have one fluid section's physical (not measured) temperature be warmer than the second*, while continually removing extra heat from the cooler second fluid setion to balance the heat flow at steady state.


* although the PVs would read the same value

Are these actual measured valve positions, or are they the post-processed (rounded, clamped) PID output CV signals sent to the valves?


Do you have plots of the data when P was 35 and I was 60?


Your location says Alberta, CA. Is this process affected by, or open to, or insulated from, outdoor diurnal (or varying indoor) external temperatures? What do the temperatures outside the tanks look like througout a typical day?


It seems that the higher the I the more reactive the CV
Could you please double-check that the PIDs are configured to use the Dependent model? Although if it was Independent with the quoted I values as Ki, then then the process would be swinging wildly.


xxx.png
 
Last edited:
@GrizzlyC


A few more:


Is this a batch process, and if so, does the rate of internally generated heat (exothermic reaction) change over time?


What is the PIDE's update time?
 
Last edited:
Some of your (non-mutually-exclusive) options moving forward:
...


3. Increase process understanding to guide incremental tuning decisions....

c) Develop a first principle model for the process such as can be used in simulation and computational tuning techniques.


...




I added backlash to the control valve model, but only for closing the valve i.e. the valve only either "ratchets" to a more open position, or to a completely closed (CV=0%) position. Stated another way:


  • when opening the valve: the modeled valve follows the PID-output, then whole-percentage-rounded, CV (0 => 1 => 2 => ...)
  • when closing the valve: the valve does not close at all when the CV decreases, except when the CV becomes 0.
Here is the result, using the modeled data provided several days ago. N.B. the orange line in the CV plot that never decreases except to completely close:


backlash_model_data.png


I am of course over the moon that this model matches the character of the provided data much better, specifically the rounded maxima and sharp-V minima.




Here is the PID model using the PID parameters (Kc=5; Ti=8; Td=1.5), also from several days ago:


backlash_model_pid.png


Finally, here is a model of the latest tuning (Kc=35; Ti=120; Td=0):


backlash_pid_035_120_000.png


The character of the model data is not exactly like that of the actual data posted yesterday (see below), but at least the period is off by less than a factor of 2, maybe less than a factor of 1.5.

attachment.php
 
Last edited:
I'd like to add that I think I see behavioral similarities in this backlash model to a deadtime model, so I'd like to thank @PeterN for his contributions as well, and I will also gladly admit that deadtime may still be at least part of the issue here i.e. just because this backlash model fits the data better than the last model does not mean backlash is the actual cause.


As far my smart-a$$ comments to @PeterN: yes, I enjoy playing troll*, and I hope you took it in the non-malicious way in which it was intended; if not, then I sincerely apologize.



* especially to those smarter than me, which is almost everybody
 
I modified the valve positioning algorithm to handle (counteract) backlash:

  • When backlash is detected,
    • Because the PIDE-commanded CV is less than the current actual CV position,
  • Then send the actual CV position to 0.0 for two seconds,
  • And after those two seconds are up, send the actual CV position to the PIDE-commanded CV.
  • N.B. those 2s are small compared to the PIDE update time of 45s, but the results are the same when the PIDE update time is 3s.
The first plot below shows @Mispeld's tuning (Kc=50, Ti=60, Td=0); the second shows OPs most recent tuning (Kc=35, Ti=120, Td=0). Both control to +/-0.01°C with insignificant overshoot, and the more aggressive tuning arrives at setpoint about an hour earlier.




Just to be clear: I am explicitly neither saying mine is a perfect model of OP's process nor that the problem is solved; even more so on discovering there are two independent chill loops with bot crosstalk and potential for fighting each other. That said and despite the model being little more than guesswork*, it does seem to mimic the limited but actual data reasonably well, and my experience is that there is a fairly wide range of generally satisfactory PID parameters around the optimal tuning. So it might be worth at least investigating the actual control valve position behavior. If the problem does turn out to be backlash when decreasing the commanded CV, then an algorithm such as implemented in the latest model iteration may provide an solution with low capital cost, but it is also compensating for a broken part of the system with another part i.e. with the controller.



* My previous boss at Cornell would often say that, with enough free parameters, you can make a model that fits almost anything.


anti_backlash_pid_050_060_000.png

anti_backlash_pid_035_120_000.png
 
Last edited:
As far my smart-a$$ comments to @PeterN: yes, I enjoy playing troll*, and I hope you took it in the non-malicious way in which it was intended; if not, then I sincerely apologize.
No problem, I think your model is pretty good considering the bad data.
Are the PI parameters computed using the program?

Dead time and back lash aren't exactly the same but close.

* especially to those smarter than me, which is almost everybody
[/quote]
No, I think you are smarter than the average bear.

One way I learned was to assume an open loop system. Then I would generate a control output to see the response. Then I would add noise to the response. Then I would use that data as an input to my system identification program to see if my system identification program would generate the same model that I used to generate the response.

I would do this multiple times with various amounts of noise super imposed on the response data to see if I still got the same model that generated the response.
 

Similar Topics

Hey guys, I have a Controllogix and I am tying to control a PID loop for Chlorine (CL2). The trouble is the mixing point is 15 minutes away from...
Replies
16
Views
6,716
Hi All, we've recently upgraded from FTView SE v10 to v12. Since the upgrade we've been having a problem where the HMI is slow to update tags in...
Replies
0
Views
36
Hi, I have some problem with View Point which I'm using to manual control of conveyors. On begin when in network was only PLC and HMI View Point...
Replies
0
Views
62
Hi. Importing a 2014 aapck in 2023: no problem using it, adding windows, works very well, no problem whatsoever. Creating a new project: as...
Replies
2
Views
707
I am having a weird experience using KepwareEx6 as an OPC Server for a set of SLC processors where the tag data is not updating remotely at the...
Replies
2
Views
530
Back
Top Bottom