Jump to content

Recommended Posts

I have limited experience with the Unitronics PID function and desperately need some help. I am using a V570 with an IO-AI4-AO2 I/O Expansion and VisiLogic 8.6.3. I am connecting a pressure sensor (4-20ma) to AI0 and controlling a pump on AO0, also with 4-20ma. I have set up a PID control loop using the example file in VisiLogic, but some of the configuration MIs are a bit confusing. Can someone provide a common sense explanation for some of the less obvious ones? For example, the PV high and low limit - what are these values doing? I understand the limits on CV, but not PV.

Also, I am unable to get the Autotune PID Server to work properly. I was able to get it online with the PLC with all the MIs set, but when I run the Server, nothing happens - there is no data exchange with the I/O module. Any helpful hints?

Lastly, this is an extremely simple control loop and could probably work well with proportional control only. Can I & D be turned off? Either way, what are some basic starting values I should input into the configuration MIs to at least get me down the road to tuning the control loop?

Share this post


Link to post
Share on other sites

Hi Flex,

I'll try ot answer your questions:

PV range (Low and High limits) is the range PID operates and makes its calculations. Then, Proportional band (Pb) is defined as percent of PV range (with resolution of 0.1%). Proportional error Ep is calculated as percent of Pb. Ep is 100% at the border of Pb and 0% at SP.

As PV range is wider, as the absolute error in stable state is greater - having the same error in pecents. In other hand, making PV range too narrow, you risk to exit this range and then PID will be messed.

For example - if you want to heat water up to 60-80 C and you use PT100, which hardware range is -50 to 460C (IO-PT4), you can set this range as PV Min/PV Max. This is not a "mistake", but, having in mind that the water temperature usually doesn't exit 100C (boiling water) and 0C (ice), if you will set this range > 0-1000 (100.0C), you will have significant more precise PID control.

Where yo want to perform Autotune - in the congtroller itself or via PID server?

Based on my experience, I'll not perform Autotune in pressure keeping system.

I'll recommend to start with Pb = 1000, Ti = 500 and Td = 50.

BTW - setting Ti and Td = 0 disables respectivelly integral and derivative control.

Please take log with PID server and send it to support@unitronics.com.

Share this post


Link to post
Share on other sites

Thank you, Emil - that helps a lot.

Just to make sure I understand, you do not think Autotune is necessary for a pressure control scenario? I will add that the process will involve dramatically changing demand and the intent is to try to keep it steady by varying the pump.

As far as where I want to perform Autotune, I don't care - whatever will provide the customer the most trouble-free operation. I haven't been able to get the PID Server to actually exchange data with the I/O, even though I was able to get it connected and online to the PLC.

Perhaps it was the starting values I was using for some of the configuration variables, but I was having a big problem with the PID control acting as a "switch" rather than smooth control. Once the target was reached, the pump would immediately drop to the minimum (CV Low) and when the process input dropped below target the pump would immediately go to maximum (CV High). After a few cycles of this the PID control would stop working and give a Status value of -7. I will be trying again with your recommendations and with a better understanding based on your reply.

Even assuming I can overcome the "switch" behavior, I want the PID control to be able to recover automatically in the event of an error. Can you suggest actions I should take to automatically initiate recovery if there is a PID control error?

Share this post


Link to post
Share on other sites

Hi Flex,

System like yours usually are very fast. When you prefomr Autotune, it in facts makes few ON-OFF cycles. This means, that the pump will be activated in full speed. This will lead to practically immediate overpressure - which will stop the pump.

It seems this is the situation in your case. When you start he pump, you're below Pb and the system activates the pump in full speed. This leads to practically immediate strong overshoot - probably above Pb. Result - stop the pump...

Is this what you observe and describe?

If you paid attention, I recomended you Pb = 100% (1000). This means, that in the moment you start the system the pump will decrease its spead practically immediatelly. Maybe even this will not be enough and you will need ot set Pb > 1000. This is fully legal. The result will be, trhat even on 0 pressure the pump will start with part of its max speed. As result, it will take more time to reach the setpoint (let's say 5 - 20 sec) and PID will be able to take full controll of your system.

I hope this info wilol help you to start te control.

Please try again PID server. It's very helpful. In case you need my further help, it will be very useful for me.

Share this post


Link to post
Share on other sites

Emil, just wanted to let you know that I was able to test using your suggestions over the last few days and it seems to be working well. Thank you very much for your outstanding assistance.

Share this post


Link to post
Share on other sites

Use a sample time of 1 second and run the AutoTune block.

If you want to post your code so we can see your configuration that would be good.

Joe T.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×