PID parameters

Hello

I would like to know what is the best and fastest strategy to twist the 3 parameters of the PID knowing that my systems are running in a loop which is executed every 40 years.

I hope this isn't by chance to guess until I have find the right parameters.

There are many ways to make the adjustment PID. The most common approach is the Ziegler-Nichols method (two versions of the open and closed loop). PID help provides an explanation of the PID tuning database (this information is also available in PDF more readable as part of your installation of LabVIEW). For more details, proven methods and best practices for the practice of ControlGuru process control has some good information. You can also try the PID Autotuning feature (I haven't used so I can't comment on its effectiveness).

Tags: NI Software

Similar Questions

  • PID parameters change manually on page layout

    Hallo,

    How could I change the PID / settings Kr, Tv, Tn manually from display layout in Dasylab. Can someone help me? Thanks in advance.

    I also don't think that you need to synchronize the cursor with the release of the MIP.  If you want, you should do with the entry.

  • Oscillation of PID control

    Hello

    I have a loop of circulating water, and I control the temperature in the following way:

    The sensor is a thermistor bridge, this bridge is driven with an accuracy of 5V reference (http://www.voltagestandard.com/New_Products.html). The output of this bridge is connected to a nanovoltmeter Keithley 2182. My LabView PID control (I bought the PID toolkit) drives a current source Keithley 2400 which is connected to a water - air heat exchanger Peltier solid state. On the side of this heat exchanger air is at a controlled temperature of the cabinet (air temperature stability is +-0.02 Celsius). The thermistor Bridge gives a signal of 50 mV/Kelvin to the excitement of 5V.

    I have attached a photo where you can see measurement of a time data (sampling rate of 1 Hz). In general, I have a stability +-3rd-6 volt (standard deviation), which corresponds to the stability of Kelvin +-6-5.

    I've set this PID command with the Ziegler-Nicholes tuning protocol standard, then first that I brought the stable oscillation system, and I measured the ultimate period time (1.375 minutes), and the nec plus ultra (147). The table Z - N gave to these values the following PID parameters:

    P = 86.47

    I have 0,687 min =

    D = min 0,171

    Overall, I am satisfied with my temperature control, but I'm looking for advice how to remove the visible oscillatory effect. This oscillation has a period of about 30-40 minutes, as you can see in the picture.

    Is there something I could try to make my even more precise control? (it is also possible that I'm already at the possible gate given by the structural limits...)

    Thank you very much!

    Martins wrote:

    Is there something I could try to make my even more precise control? (it is also possible that I'm already at the possible gate given by the structural limits...)

    Can trace you to the output of the control loop (the value being written to the power source)? Specifically, draw out of the Keithley (if available), since the PID algorithm can output values with a finer resolution the Keithley can generate; Otherwise, around the PID output to match the resolution of the Keithley. See if the current alternates constantly between two specific output values, or if the output is continuously evolving during the swing.

    What I think is happening, is that you have reached the limit of resolution of the power source, in this case, it will be difficult to eliminate this oscillation using PID, because the current source cannot output the exact value that you would allow to maintain the equilibrium temperature. If it does, the output changes between the two values from the nearest exit of you and you will always have a swing. You can try to increase the full gain (reduce integration time) to see if you can get a faster response and reduce the amplitude of the oscillation, but the trade-off is perhaps more great overtaking when you change the set value.

  • Algorithm of PID in 'PID and Fuzzy Logic Toolkit' and 'real time Module ".

    Hi all

    I am recently using LabVIEW 2011 and 2011 real time Module. My application requires the PID control.

    Now, I have a problem. In the manual for "And Fuzzy Logic Toolkit PID", Chapter 2 "algorithm PID" it indicates non-interactive algorithm (also called the ideal algorithm, Standard or ISA) be used in all the screws of PID in the Toolbox. It seems that Yes from source code. However, in Chapter 3, "Using the PID software" arrays of calculation of PID parameters based on method of Ziegler-Nichols, which was developed for the interactive algorithm (also called the series, the real classic algorithm). D action has been included in the scheme of control, the settings may be different for the two algorithms. In fact, Cohen Coons and adjustment PID Lambda rules can be used for the algorithm used by the box tool with no conversion.

    In addition, there is a PID function block comes with the real time Module, and I know not what PID algorithm it uses. Can someone help me?

    Thank you in advance.

    Su

    In the "and Fuzzy Logic PID Toolkit, we use the University structure to implement all algorithms. Tuning techniques we show on the manual to express the original work and we try to keep the same as you would look at the literature. However, in our implementation of autotuning internally converted to the structure used by our algorithms to keep compatibility with our own implementation.

    If you use an external source, you can use the Conversion.vi of Structure PID to change University, parallel or series of parameters in one used by our algorithm.

    The PID included with the real time module is a 'copy' of our algorithm, and they have the same settings and behavior. The only advantage to use this function block, you have access to the parameters through variables.

    Hope this helps...

  • PID teststand

    I did a sequence in TestStand 4.1.1 (with LabVieW) which contains a PID VI regulation which regulates power at a certain temperature.

    I was using the Ziegler-Nichols method to come up with the appropriate PID parameters for the system when you use a HAD and everything was fine, until I started

    to run with 2 HAD: s!

    The moment was not the same and the regulation was not good. Instead of having the power is stable at around 80W + / 1W, it was now 80W + / 25W.

    I tried to separate the PID vi with a separate vi for each testsocket, but it's always in trouble.

    The PID is inside a while loop in TestStand and except the PID vi there are other readings of temperature and updates of graphics etc.

    The total time of loop in this while loop is about 2. 8s, so I think that time should not be a problem. I use a PC with an Intel Pentium 4 CPU 2.40 GHz and 2 GB of RAM.

    Anyone out there who have made this successful?

    Software of NEITHER: TestStand 4.1.1 version

    OS: Windows XP

    LabView: 8.6

    After a tip from support NOR I know now that the VI can always run in the series of TestStand.

    What I had to do was not only the reentrant VI:s but also define the system of execution preferred to the other 1 or 2 others.

    That makes a big difference.

    Thank you

    Hans

  • PID tuning - temperature control

    Hello

    I'm working on a project of PID control with a dreaded heating control.  The radiator is small enough ~ 10 watts, so the response time is very fast.  My set point increases, my HP decreases.  I'm controlling the radiator with a continuous feed, so the nominal value is an environment of tension and I left PID +/-100% 0 voltage swing at full scale.

    The Kc is of about 0.4.

    With a control P, Kp = 0.2, I get a damped oscillation, which hovers at about 2-4% higher than the set value.

    With IP control, Kp = 0.2, Ki = 0.00001, I get a constant oscillation around the setpoint.

    An example with PI control is attached.  It seems that my sample rate is too slow (the PV and SP are made with GPIB).

    The sequence of events is--> order SP-> (wait)--> PV read--> PID use to set the new SP--> (loop)

    I tried to improve it by putting the measure of PV in a parallel loop.  This seems to help some, but does not eliminate the oscillation.  Old time loop was ~ 0.3 seconds, now it is 0.15 seconds.  Faster and my loop time< pv="" measurement="">

    Any suggestions?  I tried the Autotune PID vi, but he could never solve the system.

    I've done a few things to improve the response:

    1.), I use a PID of two floors.  The "inner loop" PID control constantly power from 0 to full scale.  The "outer loop" adjusts the power + / to reach the set point. (fine adjustment)   Each PID loop has its own set of PID parameters.

    (2.) for some reason, control PID never worked well because my point was inversely proportional to the power.  I created a formula that has converted my set point to a function which is proportional to the power in watts.

  • Analog interface for PXI 7811

    I need to read a signal to the PXI FPGA module 7811 ADC PXI 6220 are the frequency of the mismatches FPGA and data acquisition

    Thank you

    Concerning

    Pradeep

    Determine your PID parameters or compel the PWM 1-99

    Christian

  • writing multiple modbus registers

    Hello

    I am communicating to my labview program controller using modbus RTU and the controller has 16 bits in modbus registers.

    To send the float as '1.23' values, I write two registers to store the hex value that number in comma floating 32 bits.

    I use the modbus driver provided to this end by labview and use labview 8.2.1

    I have the following doubts in this regard.

    1. The "Modbus master series query. VI"has the command Modbus that records an entry which I use to set the registry values in the controller unit modbus. To send the above, mentioned in floating-point registers 501 and 502 (contains the full value of the PID parameters), use the same vi, whose value should be registered first... is the high or low, to be written to 501 and 502.
    2. The function code to write to multiple records in the modbus driver is 16. But my document that is specific to the Controller explained in the section "writing to multiple records" with the code of function like 10. And I see that feature codes 'writing in the single register' as well as the driver for modbus producing the same type of message frame as discussed in the document. But I see no similarity in the function "write multiple registers" in the document and the modbus labview driver.
    3. "Even if I write records 501 and 502 one after another will use"write in the single register"function code when these registries implement floating-point single using 2 registers ' 16 - bit '. If this method is possible, then I will come and do it the same way I did it for the entry in the single register. While writing data in records one after the other with a gap between the two as small as 4 ms scriptures do good?

    I suspect a confusion between 16 decimal and hexadecimal 10

    Two successive registry entries are not equivalent to a double entry: during the period between the two scripts your controller will be loaded with a false parameter. It is perhaps not necessarily a source of problems. It depends on your application. Writing the MSB should first reduce the problem.

    The order of Hi-Lo is dependent on the machine control. Some use the Big Endian, other Little Endian. But this choice should assign unique register values (U16) as well.

    If it is not documented, you should read the records and see if the result is logical. If this is not the case, invert the byte order and verify that the problem is resolved. Good luck

    Also, I assume that you know how to use the conversion feature to convert a single (32-bit float) 2 U16?

  • Fit.VI exponential fits well

    Any attempt to use the "exponential" Fit.vi to find the time constant the time of settling so that loop of PID parameters can be calculated from these data of open loop is attached. The orange line is the data, I'm trying to adapt. The blue lines is the exponential fitted with "Fit.vi" data output These data are the temperature difference between a thermoelectric cooler element in response to a radical change in the current. I know that the answer will be not exactly exponential because this response is actually the sum of many exponential as the heat is different paths. But all I need is a rough idea of the time constant of the rise of dominant, and that will be good enough.

    There are four fits that begin when each step response begins. The outcome of each adjustment is far away. The adjustment does not start at the same temperature the step response is. And the curvature is the inverse of the adjusted data. What could be wrong here? Is there a better vi to use to get this exponential time constant?

    I use the default settings for all entries to 'exponential Fit.vi.

    Your data has a big lag, so you must make sure that the offset is not fixed (by default, it is set to zero!). Change the third parameter limits to [-inf... + inf] and the rest will fall into place.

  • MID-7654 PCI-7340 engine control

    Hello

    I am configuring settings to MAX of a servomotor with a quadrature encoder embedded.  I put in place the motor on the axis-1 and I am trying to train the engine without load.

    The engine has been able to drive under settings of motor, but movement is jerky and I do not have access to the feedback of the encoder.  When I set up as a servo motor, feedback from encoder works correctly.

    Does anyone have any suggestions as to what to try?

    Thank you!

    -Erin

    This original post was a little confused.

    I meant that the servo leads under the "servo" max settings.  He was not to do a power supply.

    However, I applied a load on the engine and started tinkering with the PID parameters and it began to work (still a bit jerky).  I think I've answered my own question...

    Thanks anyway!

  • PID does not return any output...

    Hello everyone...

    process sbRIO on board and using the audio and vibration Simulator

    below I have attached my RT + FPGA... code to control the speed of the fan... using PID...

    RT. front panel

    set range

    1000, -1000

    set point... 5000 RPM (speed is the parameter)

    PID GAINS...

    the values calculated at the time of the executin arbitraty... KC = 1, gain full (Kc * Ts/Ti) = 0.011718,.

    derivative gain (Kc * Td/Ts) = 0

    other considerations

    Maximum speed of the fan is 6000 RPM

    tachometer on the vibration signal Simulator is 2 impulses/turns

    the speed is measured accurately

    Manual disturbance can be given by varying the analog output voltage

    If the pid is introduced into RT it works fine...

    but, when the pid (in fpga) is introduced not able to disturb and also not output to

    all other parameters is reset (final rpm, out outputanalog)

    all equal to zero

    This data set is meaningless... I suggest that you check that you actually save the correct values, and you have the wired PID controller correctly upward.

    There are times when (?) heated, but the speed does not change. Also there are times where speed (?) has a step increase, but there is no change in voltage. You can also see places where 5V is applied but different speeds are generated. Of course, it would be much clearer if you labeled your data, including units.

    Open-loop can the system actually achieve 4000 rpm with the applied 5volts? Try to start with a set point which is at the centre of its work.

    The ramps are integral single action? What gains have used here. You should try proportional only first of all, make sure that everything is working properly and then only start watching full action.

  • Simple PID regulation

    Hello

    I use an old version of LV, LV 6i to be exact. Now I'm building a control temperature for simple PID control of a room. I use as my NI PCI-6024E data acquisition card. But, in the middle of trying to get the right program, I stuck to the PID regulation. I use the .vi "simplePID" and connect everything that is necessary, the limits of high and low, the parameters (P, I and D), set point, take Subvi 'Temp'.vi, and connect to the variable process and exit the .vi 'simplePID' to a chart.

    The problems occurred when I run the application, the temperature did give lectures as usual and I set the setpoint and limits and also settings. But it seems that the "simplePID".vi don't not responds to these values. As the program is running, I clicked on the "simplePID".vi and see that the value of the settings inside there is not changed to the values that I have previously set. Why is happening. I'm missing something important.

    I have attached photos and my VI for your reference. Thanks in advance.

    What do you mean by Reentrant is on the right execution tab?

    I checked it and its already "ticked" and I checked the Reentrant and try to run the VI, still no response from the simplePID.vi.

  • How can I set a deadband for PID regulation

    When I use a PID. VI to set pressure, when the PV nearby OAS, I want the PID.vi hold its output, but I have no idea to set the parameters of dead zone! (can not find the definition of dead zone)

    An engineer PLC said that the dead zone is a common parameters PID, but idon't know not how to configure in labview pid!

    Help, please, thank you!

    You've already written that you have to do. A possible implementation is simply "freeze" the output of the PID controller. Use the "advanced version" of the screw of PID (normal or with automatic adjustment in case of need).

  • percentage of absolute units PID

    Hello!

    I want to update and make some changes on an old LabView project, done like 10 years ago.

    I opened it in my 2012 LabVIEW. A VI make sure PID control, and it contains a VI the obsolete PID toolkit. I have attached the VI simplified with some notes made by me, I left only the relevant parts of the VI as a whole.

    What I want to do is to implement the same control but in LabView 2012, using advanced PID VI. I would also use the absolute values for the PID, so don't not percentage values.

    I got a little confused with this very old VI, I hope someone can clarify the situation for me.

    My questions:

    1, in my new LabView VI, I will automatically be set the range on the Keithley, when it is necessary during the control. Given that I'll use absolute value for the PID, which gain approach P should be used?

    (I guess the I and D can remain the same) Should I use P = 0.03? Note, I want to the wire that the value of process directly to the advanced PID VI, not the difference between the PV and SV. Also, the PID on must be directly in Ampere, connected directly to Keithley screws.

    2, in this old VI, what "iteration" means? I don't see any similar parameters between my toolkit LabView 2012 PID live...

    3, I wonder, too, why the developer in the old days used dt = 20 s, and structure has been placed in a while loop traveled in 1 second. What that entails actually in control
    I am interested because I would like to make a very close copy of this VI, but somehow new, as explained above.

    Thanks much for any note, advice and help.

    Best regards

    Martins wrote:

    1, in my new LabView VI, I will automatically be set the range on the Keithley, when it is necessary during the control. Given that I'll use absolute value for the PID, which gain approach P should be used?

    (I guess the I and D can remain the same) Should I use P = 0.03? Note, I want to the wire that the value of process directly to the advanced PID VI, not the difference between the PV and SV. Also, the PID on must be directly in Ampere, connected directly to Keithley screws.

    You may think the P gain as a ratio of output devices to deal with variable units, which could help you to calculate the correct gain setting when you change units (in percentage of absolute units). However, I missed where the percentages here - are all PV is no logic not any sense. Why it calculate the difference between the setpoint and process variable, multiply it by a large number, then tighten it between-100 and + 100 and use it as the process variable? It's unlikely work well, because the variable setpoint and process should have the same units, they not here. You may be better off than fixing and then retune the controller.

    Martins wrote:

    2, in this old VI, what "iteration" means? I don't see any similar parameters between my toolkit LabView 2012 PID live...

    Senior year "iteration" is somewhat similar to the entrance of "Reset". You can search in the VI and see what he does. For most it resets the Integrator and disables the derived control when it is 0 (the first iteration). It also disables the process variable of filtering for the first 3 iterations. The idea is that you connect directly to the terminal of the iterator of a while loop.

    Martins wrote:

    3, I wonder, too, why the developer in the old days used dt = 20 s, and structure has been placed in a while loop traveled in 1 second. What that entails actually in control

    I don't see where the dt is set to 20. The dt is purely a mathematical structure, and assuming that the timing is consistent from one iteration to the next, you can set the I and the D values to match any dt value and get the same result. A detachment of the 1920s and a me 20s should be identical to a detachment of 1 s and an I 1 s (note, however, that in the current PID toolkit, I made a few minutes even if dt is in seconds) - in both cases, you are saying that the full time is a simple loop cycle. Definition of dt to do anything other than-1 is mainly useful to simulate a controller offline, for example in the simulation, if you can run the controller much faster than real-time.

  • Manual of PID for transfer Auto smooth

    Hello

    I am using the PID command for a pump to ISCO syringe with manual Steplessly in automatic control, but I can't seem to make it work.

    This shoot-syringe has an entry and exit pressure and is used to apply a force to keep the vertical movement of a constant of the sample. The amount of applied pressure is related to vertical displacement by an equation that appears in the attached VI. This VI aims to apply a variable force according to the displacement of the sample in order to try to keep moving 0.

    Here is some general information on the pump that I use:

    The pump is autonomous and can independently maintain pressure regardless of the LabVIEW PID controller. The pump only takes pressure of LabVIEW controls and maintain this pressure until another pressure control (I think that the pump integrated into the controller itself is a regulator PID.)

    The problem I have is if I start the VI with the pump at a constant pressure (using the hand control with advanced PID VI) and crossing the wire to automatic control, the advanced PID VI immediately shows the pump to adjust the pressure up and then slowly bring it down to the steady state. This happens even if the hand control pressure is stable and identical to the auto set pressure. This following image details what I'm talking about:

    The pump is in steady state, as shown in the diagram of pressure and the value in manual initially and then toggled mode on automatic control (designating the huge bump). I did it twice to show what happens when I go back. Manual automatic is without suddenly, because I used a local variable to constantly change the manual set temperature.

    I did some troubleshooting and experiment and here are some of the results that I found:

    1. when going from manual to automatic control, PID regulator sets the maximum pressure and then slowly bring it down to the set value

    2 when it is cold from the VI in automatic mode with true to reset, the PID controller sets the pressure at a minimum and then slowly bring it up to the set value. This occurs even if the value of the original process is close to the set point (feed the actual value in the PID controller before execution also does not help.)

    I also tried to play with the gains of PID in VI and found that if I turn off the 'I' and parameters "D" (together the two to 0), I no longer suffer from the huge bump, but the PID controller can bring the real set point value as there is always a lag.

    I don't know if this is a result of bad PID tuning, but after the initial bump in the transition between manual and automatic, the PID controller seems to be able to maintain the correct pressure well.

    The reason why I am using a PID controller rather send the pump controls (since it can independently maintain pressure) is because it is much smoother.

    In the attached VI, there are a few side screws that are called that are specific to the pump and the LVDT used for detection of vertical movement. I do not think that they have an effect on why I don't get a transfer smoothly without jerking, so I only put comments to explain what they are doing.

    I found another thread in forum with a similar question, but none of the solutions posted it seemed to have helped me. Here is the link to this thread:

    http://forums.NI.com/T5/LabVIEW/PID-manual-to-auto-bumpless-transfer/m-p/3180609#M920098

    Thank you.

    Best regards

    Victor

    Your topology is not quite how we recommend that you make the transfer smooth. Can you do something like this?

    Who will do manual setpoint pressure (units) and you need to update your gain, but it should follow. What is an option?

Maybe you are looking for