Jump to content

PID CV real time low/high limit variation


Recommended Posts

Probably this is an obvious question, but I think that in this case the ans could be simply "Yeah, of course"!

The question is:

the CV low / high limit could be change while PLC is running or are frozen at power-up?

thanks

CltOff

I try to explain better:

If I've the CV low limit in MIxx and CV high limit in MIyy, can I change the value of MIxx and MIyy while PLC is in run mode and PID is running or their values are read at power-up (at the PID config step) and frozen at that values?

Link to comment
Share on other sites

No one could help me?

I'd need this information for tomorrow... viceversa I'll tell you about the experience on the field next monday.

Probably this is an obvious question, but I think that in this case the ans could be simply "Yeah, of course"!

The question is:

the CV low / high limit could be change while PLC is running or are frozen at power-up?

thanks

CltOff

I try to explain better:

If I've the CV low limit in MIxx and CV high limit in MIyy, can I change the value of MIxx and MIyy while PLC is in run mode and PID is running or their values are read at power-up (at the PID config step) and frozen at that values?

Link to comment
Share on other sites

Sorry,

We were on National Holidays.

Yes, you can change hte limits in dynamic way. Despite PID Config module is activated with one scan condition, it's scanned all the time. Of course, it must be located in a subroutine, which is scanned all the time - recommended in Main Routine!

Why you want to change CV? In general, it's related to hardware. What is the idea? What is your system?

Link to comment
Share on other sites

Sorry,

We were on National Holidays.

Yes, you can change hte limits in dynamic way. Despite PID Config module is activated with one scan condition, it's scanned all the time. Of course, it must be located in a subroutine, which is scanned all the time - recommended in Main Routine!

Why you want to change CV? In general, it's related to hardware. What is the idea? What is your system?

I've two engines to control (one in OL and the other in CL by the PID) using a "dancer" feedback.

The "dancer" has to stay always horizontal (so I've to control the speed of the second engine in the properly way).

When I start the bench, of course I increase the speed of the OL engine using a ramp (the CL engine has the same ramp (exept for a tau ratio) plus the PID contribution).

The PID CV contribution during the ramp, in my opinion, has to be calculated between CV Low/high limit where these limit are dynamically equal to the actual speed of the OL engine, otherwise the CL engine beaviour becomes "nervous".

Best regards

CltOff

post-170-011843300 1286265695_thumb.jpg

  • Upvote 1
Link to comment
Share on other sites

Hi,

Below is a copy on my correspondence with someone with the same question. I hope ti will be useful.

Thank you for giving me so interesting and detailed information.

You’re right in both your suggestions:

• PID Config module must be activated with one scan condition, but needs to be located in subroutine, which is scanned always. The short meaning of this definition is – put PID Config module in Main routine and activate it with SB2.

• If one of the conditions of the conditions, stated above is not proper, PID will not operate properly or will not operate at all!

I have some experience with such systems and maybe can give you some valuable advices.

• First of all – there is an option to set PID “bumplessâ€. This means you can make “reverse engineering†– calculating and forcing Integral error, you can take as input CV and force PID to output this value. There is a very nice, detailed example with this option in VisiLogic > Help menu > Examples > Version 681 > Project examples > PID. This way seems to me more elegant and effective than dynamically changing CV (which technically is possible, as we already discussed). Could you give me some specific documentation about the internal calculus of Integral and derivative CV component? If I want to force the Integral value to 0 when I launch the "PID Run" what value I've to put in the ML to force in the Integral value? It seems an obvius question but if I forse with 0 at the start of PID run, the initial CV became negative olso if the PErr is closed to 0. I cannot give you details about PID algorithm – it’s company propriety. Integral error is reset when you start PID and when you enter in PB. You don’t need to reset it additionally. If you want to keep it, you can use module “Pauseâ€.

• To perform acceleration/deceleration – I’ll offer you to make dynamic Setpoint. Then, PV will follow it. You can use Linearization module. In mentioned Examples > > PIFD folder you can find demo application for Ram and Soak. Despite it’s for controlled Heating, the principle is the same and I recommend it to you. If you've had a look at the bench sketch, you understand that I can't have a dynamic set point (for my system the SP has to be olways that who guarantee the horizontal position of the "dancer"). Otherwise I'm not sure to have understood in the right way your advice. This is the reason I start and stop the bench using a ramp. You’re right – my mistake. So you need to increase slowly the speed in one side and PID will take care to keep the speed in the other one, following the input from the dancer.

About the best parameters of your system:

As you know, the parameters of each PID systems are unique. We have a very nice tool for view and log PID process – PID server. You can find it VisiLogic > Tools menu or from Start > Programs > Unitronics > Tools. If you will need my help with setting best PID parameters, please activate PID server, take a log of the process and send it to me. In such case, I highly recomme3nd to add FB PID module “Read control componentsâ€. You can put it in main routine, direct to left line – without visible condition. Coefficient in left – you can set it to 100 (on the documentation about FB's this is called "resolution factor" and the description is: "This is the value used to factor the PID control values"; I think that this description is too few to understand in the right way what it is) The values within PID are calculated as 32 bit. This makes these values quite big and difficult to operate (which you found by yourself). That’s why the factor divides these values to make them easy visible in PID server. and on right side you have 3 components of CV (CV = CVp + CVi + CVd). This will give us additional information what happens inside PID and will help us improving the process. I've had a look at CVp, CVi, CVd using resolution factor = 1 but these values were very strange; the CVp was coherent but the CVi was very "high". The CVd was 0 because D factor was at 0. If you can give me more documentation about this topic I'll apreciate it. I already recommended factor = 100, which in most of the applications gives best ratio accuracy/visualization. In some applications factor = 10 or 1000 can feed better in PID server compared with other values. Anyway – this function is for view only and has no any affect on PID performance. It’s up to you which factor to set.

About your specific PID questions:

• PID calculations are performed only within Proportional band. If the process is ‘heating†type, for example, below Pb CV=100% and above Pb CV=0% for me this means that PID action is MAX below Pb and MIN above Pb [CV = CV high limit below, CV = CV low limit above], but in the FB's documentation is written, below or above Pb "NO PID Action" -> CV always =0 for me. “No PID action†means, that no PID calculations are performed. CV becomes a constant and is not updated in any way from FB PID, which is inactive in this case.

• Proportional error Ep is linear function of the PV within Pb. For example – on the low border of Pb (“Heating†type control) Ep = 100% and respectively CVp = 100%. At Setpoint Ep=0 and CVp=0%. At the middle of Pb Ep and respectively CVp will be 50%.

• When you set different Pb, in the same PV and SP CVp, calculated in this specific point, will be different [OK]. As I already mentioned, CV = CVp + CVi + CVd. So, CV in some moment will be different too.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...