Micro800 PID question

For what it's worth, this is the block diagram of the Micro 800 PID computation from the Rockwell document (Rockwell Automation Publication 2080-RM001J-EN-E - March 2021, page 567). It seems like they forgot to show the integral component, but then on later pages the examples show the PID output connected to that "Feedback (Tracking)" block diagram input. Still trying to understand if/how this accomplishes integral action -- even with the time constant of that filter being the integral gain.

micro800_PID_diag.png
 
For what it's worth, this is the block diagram of the Micro 800 PID computation from the Rockwell document (Rockwell Automation Publication 2080-RM001J-EN-E - March 2021, page 567). It seems like they forgot to show the integral component, but then on later pages the examples show the PID output connected to that "Feedback (Tracking)" block diagram input. Still trying to understand if/how this accomplishes integral action -- even with the time constant of that filter being the integral gain.

View attachment 59260
Normally a sigma is used to mean summation. What they are summing in the after the derivative term is a mystery. The summation after the Acting block is the real integrator that sums errors. It appears there are two integrators if this is the case. That is wrong.

DG is a unitless scaler. Yes it modifies the derivative gain filter but that is an odd way of implementing it. The derivative term is acting only the changes in the PV. The Feedback tracking is also odd but it is adding to the output like a bias or feed forward. Again, it is odd. What is the input to the feed back tracking?

I can see why there is some confusion. The first picture that drbitboy posted is much different and closer to how it should be.
 
Last edited:
For the love of all that is holy and as I have been telling you for some time now: Y. E. S. I.e. YES, Micro800 doesn't implement them correctly.

You are getting close; dare I deign to think I see light at the end of the tunnel? ...


... aw krap, apparently not. Also apparently you have never used CCW before, else you would not cling to that belief.
No, I have not used CCW before. When I do temperature control simulations I use the ISA model with standard definitions/terms.

Don't be misled by your presuppositions!

Drop that assumption, i.e. that the usually stellar A-B documentation is accurate in this case, and look at the data i.e. how the CCW/Micro800 PID instruction actually performs.
OK, if you want to find out how this black box is working you need to do your test differently.

First test the proportional gain. Set it to 1. Set other time constants and scalars to 0. Set the SP to 1 and the PV to 0. You should get an output of 1. When the gain is one the output should be equal to the error.

Next test the integrator gain. Set the integrator time constant to 1 second. Leave the PV at 0 and the proportional gain at 1. Make a manual change in the SP from 0 to 1. The integrator should wind up at a rate of 1 per second. So it will be equal to 1 from the proportional gain then add what is the the integrator term.

Next, you will need to write some ladder to increase the SP by 1 per second. A bigger number may be better. Set the derivative time constant to 1 and the integrator time constant back to 0. The output will be proportional to the error + the derivative term which is the rate you are increasing the SP by.
 
Last edited:
No, I have not used CCW before. When I do temperature control simulations I use the ISA model with standard definitions/terms.

OK, if you want to find out how this black box is working you need to do your test differently.

You need to read, and make an honest attempt to understand what other people write.

But okay, let's take your premise.

First test the proportional gain. Set it to 1. Set other time constants and scalars to 0. Set the SP to 1 and the PV to 0. You should get an output of 1. When the gain is one the output should be equal to the error.
Gee, Peter, what a great idea. Do you know how I know it's a great idea? Because I already did it.

Next test the integrator gain. ...
Gee, Peter, what a great idea. Do you know how I know it's a great idea? Because I already did it.

Next, you will need to write some ladder to increase the SP by 1 per second. ...

Ah geez, gimme a bloody break. Actually it is simpler to merely measure what the difference is between no derivate action and some derivative action; having a moving setpoint when the documentation claims to have some sort of output filtering makes it more difficult to isolate the individual and synergistic effects of .Td and .FC.

Do you know how I know that? Because I already did it.

I posted all the code that is necessary. I suggest you either prove me wrong, or stop confusing the issue.
 
I posted all the code that is necessary. I suggest you either prove me wrong, or stop confusing the issue.

I don't want to get into the middle of the lovely debate here, but I would like to attempt to follow along. Your attachment seems to be missing from post 16.
 
I understood that PID in Micro800 is implemented wrong. Moreover, as I can see implementations for PID and IPID controllers are different.

Could gurus advise me on an appropriate equation for calculating initial parameters for both controllers? I mean proper filling initial values for PID_GAINS (PID) members and GAIN_PID (IPIDCONTROLLER).
I've used following rules for determining initial coefficients by Cohen-Coon:
Model gain = PV change / CO change.
Deadtime = time lapse between change of CO and observable changes on PV.
Time constant = the time it takes for PV to reach about 63% of total changes.


Physically this is the water cooling tower with 2 blowers controlled by two VFDs. I've measured:
Model Gain = 0.15 (rising reference speed to 20% I've got slope down for outgoing temperature approx. 3%)
Deadtime = 120 s
Time constant = 1270 s

Thanks in advance!
 
Last edited:
If the MIcro800 PID form is actually what @drbitboy shows in post #5, I would start with these gains: Kc = 10, Ti=1270, Td=0, and very important to configure the loop as forward acting (i.e., "Acting" = +1). You probably don't need derivative action, and it avoids the messiness of @drbitboy's reverse engineering and analysis.

If those gains are insufficiently responsive, try increasing Kc to 35, leaving Ti as-is, and see if there is too much overshoot for your performance objective.

As a side note, my Cohen-Coon calculator suggests Kc=95, Ti=284 sec, Td=43 sec for dependent gains. As noted by Mr. Nachtwey, these optimize metrics that are willing to tolerate overshoot (e.g., quarter-wave damping).
 
First test the proportional gain. Set it to 1. Set other time constants and scalars to 0. Set the SP to 1 and the PV to 0. You should get an output of 1. When the gain is one the output should be equal to the error.

Gee, Peter, what a great idea. Do you know how I know it's a great idea? Because I already did it.
Yes, but you did it with the derivative gain active too. I can see the proportional gain acts as expected because after the derivative term decays there is only the proportional term.
And you did the derivative term with the filter on. That clutters things up.

Next test the integrator gain. ...
Gee, Peter, what a great idea. Do you know how I know it's a great idea? Because I already did it.
I don't see it. You didn't tell us if it works as expected so how are we to know?

Ah geez, gimme a bloody break.
NO! In post #8 you have FC labeled as the derivative gain. If it is a filter time constant the units would be seconds but if so then it should take 5 time constants for the derivative gain to decay to 1%. It looks like it is decaying faster.
if FC is a time constant then the implementation combined with derive time constant would be closer to Mispeld's diagram in post #12. However, is Mispeld's diagram the DG or derivative filter gain is a scalar.
Which is it?
Normally the derivative term with filter is Td*s/(Tf*s+1) where Tf is the filter time. In Mispeld's example the Tf is Td/DG.
There are too many inconsistencies.

Actually it is simpler to merely measure what the difference is between no derivate action and some derivative action; having a moving setpoint when the documentation claims to have some sort of output filtering makes it more difficult to isolate the individual and synergistic effects of .Td and .FC.
FC should be set so there is no derivative filter.

Do you know how I know that? Because I already did it.
If the FC is 4 seconds then why does the derivative term decay so fast? The FC should be in the denominator, not multiplied by the controller gain Kc as shown in your annotation in post #8. See the example in Misspeld's diagram.

I posted all the code that is necessary. I suggest you either prove me wrong, or stop confusing the issue.
I am not confusing the issue. You are. What is the equation that the Micro800 uses?
Normally it is CV = Kc*(1+s/Ti+Td*s)
When a low pass filter is added to the derivative term it is
CV=Kc*(1+s/Ti+Td*s/(Tf*s+1))
s is the Laplace operator where dividing by s integrates and multiply by s differentiates as show in Misspled's diagram.
 
If the MIcro800 PID form is actually what @drbitboy shows in post #5, I would start with these gains: Kc = 10, Ti=1270, Td=0, and very important to configure the loop as forward acting (i.e., "Acting" = +1). You probably don't need derivative action, and it avoids the messiness of @drbitboy's reverse engineering and analysis.

If those gains are insufficiently responsive, try increasing Kc to 35, leaving Ti as-is, and see if there is too much overshoot for your performance objective.

As a side note, my Cohen-Coon calculator suggests Kc=95, Ti=284 sec, Td=43 sec for dependent gains. As noted by Mr. Nachtwey, these optimize metrics that are willing to tolerate overshoot (e.g., quarter-wave damping).
I'm getting similar values if we're referring to this source https://blog.opticontrols.com/archives/383
But I've faced up with other equitation for initial values (in AB and Siemens manuals). As I understood that is strictly dependent on the specific model that is using for specific cases (heater, cooler, flow, level, etc) and implementation of the PID algorithm.

I've changed to 1000 ms interval of PID calculation. Thank you for your advice.
 
If the MIcro800 PID form is actually what @drbitboy shows in post #5, I would start with these gains: Kc = 10, Ti=1270, Td=0, and very important to configure the loop as forward acting (i.e., "Acting" = +1). You probably don't need derivative action, and it avoids the messiness of @drbitboy's reverse engineering and analysis.

If those gains are insufficiently responsive, try increasing Kc to 35, leaving Ti as-is, and see if there is too much overshoot for your performance objective.

As a side note, my Cohen-Coon calculator suggests Kc=95, Ti=284 sec, Td=43 sec for dependent gains. As noted by Mr. Nachtwey, these optimize metrics that are willing to tolerate overshoot (e.g., quarter-wave damping).

One thing I want to add is that, since your model specified the PV (temperature) in percent, you are pre-scaling that value going into the Micro800 PID block as percent. This, of course, requires your set point to be pre-scaled using the same relation as the PV. You do not want to feed the PV as percent and set point as engineering units. And if you change them both to engineering units (e.g., degrees C), the gain will need to be adjusted accordingly.
 

Similar Topics

So I am using a Micro850 and I downloaded the RA_PID UDFB for tuning the temperature of my Thermocouples(TC). I am not sure if I am using enough...
Replies
0
Views
1,425
Can someone tell me what i am doing wrong here? I have set the limits of the CV value for 5min and 60max. The output of the PID is not staying...
Replies
1
Views
1,591
Hi there, I have a small heating system with a micro 830 PLC to assist with the learning process of automation and PLC's etc. The system is a...
Replies
11
Views
8,297
My company built a small test machine using a Micro800 PLC and CCW software. We chose the Micro800 because the machine is very simple. We are...
Replies
2
Views
140
Back
Top Bottom