PID control with big delay in the process variable

Hello

My goal is to control the temperature via a valve and heat exchanger. I proceeded variable (temperature) measured from a hose. This temperature should be raised a few degrees with a heat exchanger. So basically I need to order a valve that allows the water to flow through the heat exchanger to raise the temperature to the desired level.

My original plan was to use a base PID regulation to operate the dispenser. However, it is about 0.5 to 1 minute of delay time in the temperature probe after I opened the valve, which increases the temperature. This leads to a situation where the PID regulation valve fully open during this period (trying to get the temperature rise). Then once the temperature begins to rise it fires quite quickly. PID begins turning the tap off almost immediately, but because of the time delay in the sensor, the temperature exceeds seriously. This led to severe oscillation and at worst unstable processes. I tried to adjust the PID control to "predict" the timer to close the valve in advance to minimize the excess, but failed.

I would appreciate if anyone has any ideas how to make this type of control with Labview PID functions. I also wonder if there is a better type of control procedure for this scenario as a PID control?

-Lars

This is a very common situation in the heating control, and generally PID can be adjusted to make it work. How do you do the tuning? If you do it by trial and errors, you have little chance to succeed. For a slow process with time delay, I like to use the method Cohen Coons, or similar open Ziegler-Nichols-loop method. The idea is that you temporarily remove or disable the PID. Set the valve in a fixed position and wait for the temperature to stabilize. Then, change the setting of the valve and record temperature at regular intervals data until the temperature is stable again to a new value. Use these data to get the initial values of PID using the equations provided by the tuning method you choose.

Tags: NI Software

Similar Questions

  • PID control with an H-bridge

    Hello world

    I have worked on a project with labview since a few months now and I have reached a point where I need help.

    Basically, this next part of my project requires me to drive a linear actuator to apply a force to the end of a tree, with a load cell between the actuator and the tree, giving me the real force applied.

    I need to use a PID controller to maintain a constant specified weight on the end of the shaft, which in itself should be simple, but I have a problem with the way in which the actuator is driven.

    The actuator is powered by a H-bridge which has 3 separate entrances to drive the cylinder:

    direction = high/low 5v logic 0v low high

    break = high/low 5v logic 0v low high

    Speed = pulse width modulation

    My plan was to use a PID regulator to adjust the PWM in H-bridge by adjusting its cyclical relationship between 0.10 0.90 (slow) (fast), then using basic functions of comparison between the set value and the process variable to control the direction and break logic. So, for example...

    I want it to apply 5kg on the end of the shaft

    my set point is 5 and the variable is 0, so labview applied logic senior management (to go ahead) and low logic at the break (to pass) and the PWM is adjusted to focus about to set.

    I cannot get this to work however and I was wondering if there was a better way to do it?

    I understand that it might seem unclear, so I hope that I explained well enough!

    Thank you very much

    HCook

    hcook wrote:

    The task of WOB speed, that is out of the PWM of the bridge: keeps telling me that the specified resource is reserved and will not work after my first race. This has something to do with the PID does not?

    May affect the PID does not.  Which DAQmx functions return the error?  My guess is that it's the DAQmx Timing, which is probably not necessary.  The task must already be configured for continuous samples in the project or measurement and Automation Explorer.

    hcook wrote:

    Also, when I run the program in manual mode, where I move the actuator manually by and adjust the weight based on the load cell signal, I get an error when I adjust the operating factor. He informs me that the PWM must complete a full cycle before the duty cycle can be adjusted. Now, the rate at which im changing the duty cycle manually are no where near the same speed a PID can adjust and it is why I am having the same problem in automatic mode.

    What is your frequency PWM?  Your loop rate must be lower than that to ensure that you do not get this error.  At the present time that you use the loop at 100 Hz, so if the PWM is less than that, and you use a cursor (which can generate a large number of new values quickly when you move it) to control the market factor, you may see this error.

    What is the purpose of DAQmx task accomplished in this loop?

  • Envy 14 - k012tx: running games leading sudden delay in the process of game speed with excess heat

    When running games like NFS MW12 or NFS Rivals. After a few minutes of gameplay, System heat excessively leading thus to slow down the movement of the game with weird sounds of the game. As sometimes happens when running Adobe Photoshop, as well as any other program in the background (or multiple programs). Help, please...

    Gouravxdx

    Welcome to the Community Forum of HP.

    It is a small computer that you are trying to play big games.

    HP ENVY 14-k012tx TouchSmart Sleekbook product specifications

    You are hurting your computer.

    Buy a real computer s gamer.

    Review of HP omen

    For now, you can paste a Notebook cooler under your laptop computer to help it run more fees.

    Click on the thumbs-up Kudos to say thank you!

    And... Click on accept as Solution when my answer provides a fix or a workaround!

    I am happy to provide assistance on behalf of HP. I do not work for HP.

  • WhatsApp messages and send me an email with a big delay on the 4 g and WiFi help!

    I get my WhatsApp messages and emails with large arrears, does anyone else have this problem happens on the 4g and WiFi its really irritating me

    You have activated the endurance.

  • CodeMeter USB caused a significant delay in the process of starting the BIOS on Z200

    I use a dongle CodeMeter (CodeMeter) and would prefer to be permanently connected, however whenever I leave it in when starting there is a delay of approximately 2.5 minutes (Don't exaggerate not) just after the BIOS blue HP screen (a cursor flashes in the left corner). I use a Z200 machine. I disabled the boot to removable devices and this still happens. Also, if I get out the dongle CM put in USB storage devices common there is no problem (so it's something to do with the BIOS to interact specifically with the dongle). I don't have this problem on any of my machines Z800 (other machine Yes, but I don't think the BIOS that are very different).

    Any help would be greatly appreciated, thank you in advance.

    Did. In any case, do not use a hub (ie. the monitor) solved the problem. Not sure what is the problem with USB hubs, but I'm going to call this sovled.

  • Is it possible to access control with data binding to the page

    Hello

    I want to know if we can access the datacontrol operations in the bean with managed to link these operations to the definition of the page.

    For example: I have a method in the application Module that is under the control of data and create an impression of the page with link of this operation to the definition of the page.
    I created a button on the page and when you click on the button it calls a method in the managed bean.
    Can I run the operation in the data from the managed bean code control? Can I handle for the data from the managed bean code control?

    Please let me know if this can be done or not.

    Thank you
    Stephanie

    Why you don't want to use binding for this? Is there a specific reason for it, or you want to just make life harder?
    You could write a managed bean that has a method that creates and instance of AOS and calls the method - and then just call managed method from your page bean.
    Something like this:
    http://download.Oracle.com/docs/CD/E17904_01/Web.1111/b31974/bcservices.htm#CHDIBHBD

  • Organizing PE 10 Crash anytime, anywhere with W7 and stop the process with message

    When I use Orgaizer first elements 10 with W7, it crashes with the message when I work a picture full screen.

    My configuration is:

    Graphics card last dversion driver radeon HD 6970 2 GB

    8 GB of RAM

    Intel 7 2600K

    Windows 7 Sp1 64 b

    I you have idea, welcome in France

    Do you have manually switched to Windows Update and downloaded even non-critical updates?

    Also, try to run care of advanced system Care Free deep to make sure that your computer is clean, freshly tuned and defragmented.

    http://www.iobit.com/advancedsystemcareper.html

    If this does not work, please tell us what model of camcorder that comes your video and what format it is.

  • Motor control with time delay


    Hello!

    If I understand you is good, this might help you. It is created in LV2010

    Note that you must put in logic before you run the forloop, since the trip from 0 mm and 0 mm resolution is not a good thing to run.

  • LabView PID control with PWM output and ramp / soak.



  • How to upgrade the Instance of the process Variable using process API OBPM 10.3?

    Hi all

    I have a requirement to update the Instance of another variable process, process, but I am unable to find a method to update or set the variable?

    I try the same thing using the APIs process too but no luck. Please give me the code or a link to implement even.


    Thank you and best regards,
    Ankur

    You can stop the instance using a notification. If your process has an activity wait Message that has an "Interruption" on property, once notified - the instance would be automatically routed to the Message wait and activity were downstream of the waiting Message activity. This Interactive inside your other user can edit the information. Once completed, the instance would go to an automatic activity that has logic "action = BACK" and may reallocate the instance to the original participant. The changed values, you want to go to your instance would be sent as arguments to the message wait activity.

    Dan

  • How to reverse the action of the vi PID control?

    I want to control a starter that regulates pressure in a pump application. The application has already exists, but the customer wants the software to automatically control the strangler around a pressure setpoint. The operator controls manual, output scaling, feedback to the scale and the documentation refer all signals, as 100% opens the choke (corresponding to the minimum pressure), while 0% attempts to completely close the choke, corresponding to the maximum pressure. Basically, the process and the control variable variable have an inverse relationship.

    I would use the PID of the Vi toolkit without modification. Apprently there is no built-in way to reverse the action of control. I want to show with some simplified diagrams.

    First of all, I tried reversing the process variable, which I thought would just reverse the error of the PID equation and do what I wanted. But for some reason, he still pushes the output to 0 (under pressure) 0 set-point.

    Then I tried reversing the proportional gain. This caused a very odd behavior, and he was always out of phase.

    Finally, I applied a brute force - subtract the max value PID control variable. Because my control variable only goes from 0 to 100%, it works pretty well. Now 100% from the vi PID gives me 0% (under pressure) and 0% gives me 100% (completely open), which is what I want. For example, when the controller is enabled and the set value is 0% output PID readers choke at 100%, which makes sense. However, this seems cludgy.

    Is there a better, more elegant way to invert the control action?

    If you want to invert the response of the controller, multiply by-1 controller output.

    It is also possible by reversing the proportional gain (as you've tried) providing the gain proportional acts on the controller-what he ought to do given the structure standard PID used in the toolkit blocks (see this thread which describes the structure used PID - as it confirmed OR control people).

    Reversing the variable process only does not work, you will also need to reverse the set point - although if the setpoint is zero, it makes no difference.

    Even if you have correct sign, there are a lot of things that can make the resulting behavior 'strange '.

  • Regulator PID very slow to reach the value Point and zeros process Variable when it should not

    Hello

    I am using a PID controller to regulate the emission of a filament current in an ion gauge, but I'm running into several problems.

    The first and less important, are the controller of PID VI takes at least 5 minutes to get the current where it needs to be.  Is it possible to speed this up?

    The second and more important, are that the PID controller tends to zero the process variable before you start the process of getting the close process of the target value variable.  This can be seen in the attached VI: I write 5.8 volts voltage filament - something I did at the beginning to try to get the controller PID for the process close to the target faster - value variable but when the PID controller starts to do his thing, he kills the tension before anything, rather than rise of 5.8 V.

    The attached VI is a single which has these problems.  VI actual ion gauge controller I've written has the same problems, but in a form even more frustrating.  I have a while loop set up for the filament voltage to where it should be (using a PID controller) first and foremost, then a loop of data acquisition, which also includes a feedback loop in the form of a PID regulator to maintain the filament voltage.  When the second PID controller starts to run, it concentrates the tension that the earlier had set, taking another 5 + minutes to reach the point where we can take data and giving us 5 minutes of false data in the process!

    Does anyone know why PID controllers are behaving like this, and what can I do to fix/work with this behavior?

    Hello

    It seems that PID VI will always be 0 for the first iteration. You can, however, use the advanced PID VI and set up the first iteration in manual mode. After subsequent iterations, you could then define this automatic mode and there will be a transition smoothly. I think this will give you the desired behavior.

    -Zach

  • problems with the implementation of MPC with system delays

    Hello

    I have Aproblem to implement a MPC controller for a system with significant delays. The final control system will be used with a RT PXI on an engine test bench, but for now, I'm running a few previous simulations to solve problems.

    The attached vi shows a simplified system for MIMO 2 x 2. When I run it with the default settings (initial window = 0; = 5 prediction horizon and horizon of control = 2; no delay of system, or delay of prediction model) everything works fine.

    However, if I understand a delay of the plant (time factory example = 10) the CPC shows a behaviour that is not clear to me:

    * If I put 'integral action?' false: MPC operates in open loop, and the MPC calculates (and apply) the same control in the system not delayed action. Of course, it cannot compensate for errors in modeling, is not really for me.

    * If I put 'integral action?' to true: System is not stable. for fixing it, I change the initial window at 10 (and therefore the forecast at 15 horizon). Although the system is now stable, the performance of the control is not really good, because significant overruns exist

    Then I try to include in my prediction model of the delay (through a block 'CD Set delays to the (State-Space) model'), but it seems that the PPC is not sensitive about the time defined in the model.

    Hepatitis could me?

    Thank you very much in advance,

    Carlos (Adama)

    (Note, in the attached example, in what I scored blue settings that I'm changing)

    Don't worry, I solved the problem myself including delays in the model defining additional States that aceted as souvenirs.

    I can confirm that the CPC does not takes into account the deadlines defined in the model of the SS.

  • Update of digital control with different values with array function

    Hello

    I have attached my code base. I want to execute the code for 2 sets of digital control with a gap between the two values, then pass it. Something like that

    ABC

    Initialize the P1 = 10; P2 = 20; P3 = 30; P4 = 40

    Run the code

    delay = 10ms

    Update of P1 = 150; P2 = 200; P3 = 350; P4 = 500

    Run the code

    jump to abc

    I am stuck how can I update the values of P1, P2, P3, P4? I thought about using a function table but couldn't go further.

    Thanks for the help,

    Ana

    Hello Ana,

    One way you might achieve what you are looking for is using property nodes. These property nodes will allow you to change the values of the block diagram control. You can set up a structure of case inside your loop that will change control through nodes of property value after a certain number of iterations. Here is a community sample that shows how to use the nodes property to change the Boolean controls:

    https://decibel.NI.com/content/docs/doc-22669

    -Erik S

  • The transfer of the PID block function does not show the derivator.

    Hello

    I try to use the vi of PID, but I when I try the box by itself, it does not behave as a 'classic' PID should behave. The main problem is that I can't see the derivator. In the attached vi, I compare the transfer function of the PID vi with the function of transfer of a PID built by me. My version shows should have all what a PID: section integral (with an amplitude decreasing and phase-90), Center (with a constant amplitude and phase 0) and area derived (with the magnitude and the phase of + 90).

    The PID vi shows that the part.

    You can also select a progressive input signal and see the result directly. If you choose a large enough time to bypass (100 times greater than the time to the Integrator), and you look closely at the first part of the output, you will see the choice because of the derivator in my version, but not in the version PID.vi.

    Anyone know what I am doing wrong?

    Kind regards

    Pablo Estevez

    Nathand dear,

    Thanks for your reply, I tried the change and you are right. This shows that's not a PID standard, since this means (and in fact I can see it now by checking within the vi) is not using the derivative of the error, but the derivative of the process variable. I know that it is sometimes used to prevent the effect of fast changing set points, but it's a shame that they don't how about it in the help, and that's not a selectable feature. Do you know if there is a way to edit these pre-packaged vi?

    Another question, about the style of labview. I've included the footage just for the terms of the Group and to make the code more readable separate the integrator of the derivator and not having a knot of tangled signals. Especially when I run the cleaning diagram, it becomes very tangled. I searched for another way to do this (container boxes, groups). Would be nice if you could suggest me something that I can do for her.

    Thanks again,

    Pablo

Maybe you are looking for