Problem with external anti-reset windup

David Hugg

Member
Join Date
Apr 2009
Location
Houston, Texas
Posts
2
My colleague and I are having a problem with the use of a PIDE algorithm with external anti-reset windup (ARWU) active. We are using a ControlLogix PLC running the RSLogix 5000 software.


The PIDE algorithm outputs a digital signal to some switchgear that can impose clamps on the signal. The clamped signal is output from the switchgear as an analog value. This analog value is converted back to a digital signal, which is sent to the PIDE algorithm as CVPrevious. We set the flag CVSetPrevious to force the PIDE to use this external signal as the ARWU value.


It should also be noted that, at the moment, the A/D conversion does not run on a cyclic clock with the PIDE block; that is we cannot guarantee that the A/D conversion runs after the PIDE block at each cycle. Also, the analog signal is a little bit noisy, which will be reflected in the converted digital signal.
When the PIDE block is placed in Auto mode, the output begins to integrate immediately in the positive direction, even if there is zero control error. We first assumed that there might be a problem with the noise introduced by the analog signal. We implemented a low pass filter on the ARWU readback signal. Though a heavy filter (τF = 100s) reduced the rate of integration, the output still integrated in the positive direction over time.


My colleague decided to implement this logic in the RSLogix 5000 simulator, and simulated the presence of the switchgear with a digital dither that is added to the output of the PIDE block. The dither switches between a small positive and equivalent-in-magnitude negative value every other processing cycle. In other words the dither has a zero mean. This modified signal is fed back as the ARWU signal. We were very surprised to find that the same situation occurs when the PIDE block is switched to Automatic; that is the output of the controller integrates in the positive direction, even though we have guaranteed that the “noise” has a zero mean.



We ran this purely digital signal through the same low pass filter, and once again observed that, although the rate of integration was reduced, we still see the output integrating in the positive direction.


We now believe that the error we are observing may be due to the asynchronous processing of the PIDE and A/D blocks. However we also cannot discount the possibility that there may be an error in the PIDE block with regard to the handling of the CVPrevious input. We can modify the logic to have it all run on a single cycle in our simulation, however implementing this change on the real process would require a total shutdown, which we are not anxious to do.


Has anyone else encountered this issue? If so, how did you go about rectifying the problem?
 
CVPrevious for cascade integral anti-windup?

Hi David,
I have a similar-sounding situation. Just wondering if you ever got to the bottom of it?
My case is a PIDE block cascading CVEU as the remote SP for an OEM PID controller (for temperature control).
The CVEU value is run through a back-calculation adjustment that is then fed back to CVPrevious.
The back-calculation is CVPrevious = CVEU + (PV - SP[OEM]).
Normally CVEU = SP[OEM], unless the CVEU was above/below a HLL clamp in which case the SP[OEM] will be at the clamp limit.
If the OEM PID is controlling perfectly then PV = SP[OEM] and so CVPrevious = CVEU.
This use of CVPrevious was intended avoid integral windup so that whenever the OEM PID is switched to/from local mode (i.e. manually entered SP) the transition is bumpless.
In testing so far we've encountered wild oscillations in the CVEU output of the PIDE.
The PV signals are not noisy. All routines are within the same task, so asynchronous processing isn't an issue.
Anyone's thoughts on this would be welcome - thanks!
 
No joy with CVPrevious

Blackadder2,

No, we were never able to get the anti-reset windup protection working correctly using CVPrevious. So instead we used logic to detect whether the controller output was high-limited, and used this to set the WindupHIn parameter on the controller.
 

Similar Topics

I got Meinberg as NTP server, and it is in same network as My S71200 PLC. I went (Device configuration -> Ethernet Port ->time synchronization)...
Replies
3
Views
2,698
Hi, I have had problem with upgrading some projects from v16 to v18. I tried it on 3 diffrent computers. I want to post this so that anyone that...
Replies
3
Views
143
Hi, I am having a challenge installing a new drive ACS355-03E-44A0-4 as it keeps on displaying Fault code F00018 even when the load is not...
Replies
3
Views
132
I have an issue on my vessel, we have water tight door system created in China, company is no longer operating. We have 7 doors each with their...
Replies
4
Views
131
Hi all. Simple as simple can be, I don't understand what's happening. I'm toggling he OSR on, GX_LUB_PUMP1_LEAD should switch. It doesn't. The...
Replies
27
Views
658
Back
Top Bottom