What is the proper interpretation of the output from PID vi?

Can someone clarify the meaning of the output from the NI PID vi's? From the documentation for the PID control toolkit, it appears that the output is an absolute quantity and not a delta (change) to the previous output. The problem I have is that if I am running proportional control only, and the controller is moving into a steady cooling air flow rate to achieve my setpoint temperature, the error goes to zero and the output from the controller drops to zero. This completely ruins the temperature control.
Simply: assume that the output to the control valve I am using needs 12mA (4-20mA controlled) constant value (flow rate) to maintain my setpoint. When the error goes to zero, the controller output goes to zero. This, of course, leads to terrible oscillation etc.
Other PID implementations I have used are all delta (change) based. In other words, you calculate a P, I, and D correction to the previous output.
What am I missing? All of the NI labview PID examples use the output directly to drive I/O, and never use it as a change (delta).
I read this newsgroup's archives and found a similar question, but the answer was not helpful.
thanks much in advance!

Hi Darth,
You have read the documentation correctly. The output of the PID VI is an absolute value. If you are using a P algorithm then you will need to use the PID Output Rate Limiter VI to control the rate of the oscillation. Your other option is to use a PID algorithm rather than just the P algorithm. The I and D portion of the PID algorithm are based on the current and previous error and output respectively. For further information on how the PID output is calculated please reference chapter 2 of the LabVIEW PID Control Toolset User Manual
Hope this helps!
Brooks W.
National Instruments

Similar Messages

  • What is the output from AN300?

    I'd like to know the output of car charger AN300. Both mA and V.

    http://www.phonesonline.ie/Product.asp?ProductID=1207              5V and 700mA.Follow link for more info.

  • What are the output specs on the creative car and house charg

    I found a belkin AC to USB adapter and here are the specs:
    Belkin Model: USB-TC-0 Input: 00~240 VAC, .3A, 50~60Hz Output: 5.5 VDC, A Plugs into US standard wall socket Provides one powered USB port
    Would this work?
    What are the output specs of the creative car and house charger so i can compare it to this?
    thanks

    Justinw wrote:
    is your charger a house one or a car one? thanks for you help.
    not sure about the .5v difference
    That would be for the house. And it should work with a .5V difference, but dont hold my word on it when your player gets hot. Also this is for a Zen Micro?

  • What are the output type and Tcodes?+

    What are the output type and Tcodes?

    hi,
    ex-how to config output type.
    You will assign output types using Transaction NACE.
    Do the follow steps to assign output type
    1)Select Application Type V2 which will have description Shipping.
    2)Click on Output types button.
    3)Go to change mode by pressing Ctrl+F4.
    4)Select one output type which already exists
    5)Do Copy As(F6)
    6)Give your output type against Output Type field.
    7)Under General data Tab, Give Program and Form routine and Save the data.
    i think it a work of functional guy but at senior level i think it is not a big deal for abaper.
    Check the following documentation
    In NACE t-codewe have the application for each one. based on the application output type can be defined, based on output type script and print progrma can be defined.
    If suppose data can be read from EDI then we should go for condition records.
    So whenever we execute the script first composer checks the output type and then execute the program. in program whenever opn form FM will be populate then script will open first. After that again program till another FM will populate if it then script will populate........like it is cycle proces. Composer does all these things and at last it will submit that output to spool.
    Go to the Transaction NACE.
    choose the related sub module.. like billing or shipping
    doubel click on Output Types
    Choose the Output Type for which whcih you wanted your script to trigger
    Then select the Output Type and double click on Processing Routine
    Then go to create new entries--> Select the Medium (1- print output), then enter your Script and Print Program detls --> Save and come out
    Now go to the Transaction (for which you have created the output type)... Issue output--> Select the output type --> Print....
    Device Types for SAP Output Devices (Detail Information)
    Definition
    The device type indicates the type of printer to be addressed. When you define an output device, choose the name of the device type that was defined in the SAP System for your printer model, such as Post2 for a PostScript printer. In the case of frontend printing under Microsoft Windows, you can also use the generic (device-independent) device type SWIN.
    The system uses the information in the device type to convert a document from the internal SAP character representation (spool request in OTF or in text format) to a device-specific, print-ready data stream (output request). Since a device type specifies attributes that apply to all devices of a certain model, it can be shared among device definitions. For example, all devices in the SAP spool system that are compatible with Hewlett-Packard LaserJet IIID printers would use the HPLJIIID device type.
    You should not confuse the device type with the printer driver. The device type is the total of all attributes of an output device that the SAP System must know to control the output device correctly, such as control commands for font selection, page size, character set selection, and so on. These attributes also include the printer driver that SAPscript/Smart Forms (the SAP form processor) should use for this printer. The SAPscript printer driver that is to be used for devices of this type for output formatting is therefore only an attribute that the device type specifies.
    How do I choose the correct device type?
    • In most cases, the SAP System already provides the appropriate device type for the printer type for the printer model that you want to use.
    These standard device types are completely defined and need no modification or extension before you use them in device definitions.
    • You can also download missing device types from the sapserv server. For a current list of the supported device types, see SAP Note 8928 in the SAP Service Marketplace.
    • Most printers can be controlled using a generic format, such as PostScript. They can be switched to a mode that is compatible with one of the standard printers for which an SAP device type is available. In this case, a supported model is emulated.
    • Almost all printers are delivered with Microsoft Windows printer drivers. The system can control these printers with the generic (device-independent) device type SWIN. The Microsoft Windows spool system then performs the processing of the print data.
    • If the specified device types are not available, and generic device types cannot be used, you must create your own device type or edit a copy of an existing device type. We recommend that only those with specialist knowledge of the SAP Spool System and printer driver code do this. For more information, see Defining a New Device Type .
    Attributes of a Device Type
    A device type is distinguished by the attributes listed below. If you change an existing device type or create a new device type, you must change at least some of these attributes.
    • Character set: A character set specifies the codes with which characters must be represented in the print-ready output stream (output request). This code replaces the generic SAP characters set that is used internally by the SAP spool system (spool request).
    • Printer driver: You can specify different printer drivers for printing SAPscript documents and ABAP lists.
    • Print controls: Print controls represent printer operations, such as boldface or changing the font size. These print control are replaced by printer-specific commands during the creation of the output request from a spool request.
    • Formats: Formats specify the format supported by the SAP system. The system differentiates between SAPScript formats (DINA4 and LETTER) and ABAP list formats (X_65_132 = 65 rows/132 columns).
    • Page format: A page format is the interface between a format and SAPscript. It specifies the paper dimensions with which SAPScript can calculate the row and column lengths.
    • Actions: Actions are output device-specific commands that are required for the implementation of a format. The action printer initialization, for example, can contain a printer command with which the number of rows on a page is defined. There is a set of actions for every format supported by a device type.
    regards
    siva

  • HT1430 What is the output power,      when using a portable batteries that the iPad need to charge up??

    What is the output power needed to charge a iPad,  when using a portable battery?
    Will 2.1A output work?
    Thanks

    The wall charger which comes with the ipad is a 10 watt charger, it's current is 2A, voltage is 5v. 2x5=10 w.
    2.1Ax5v = 10.5w.

  • Anyone get to know what's the output power of the audio system?

    Hi. It's there anyone could tell me what's the output power of the 2.1 audio system in this 24" LED display?? Thanks

    Gabi759,
    The output on the Audigy 2 ZS is Line Level. We no longer use amplification on the card as that can cause distortion and an overall loss of audio quality. You may want to look at either replacing your speakers (as few sound cards have amplification) or get a preamp for them to power them.
    Jeremy

  • What is the best way to run two programs simulataneously using the output from one to run the other?

    I just kind of wanted to get an opinion from some people on here. I have two main VIs. The first is a DAQ system that reads 99 different sensors and feeds that data into an array. The second is a real-time processing system that is designed to take the array and do numerous calculations. Both VIs output data to the front panel that I want to see, so I don't want to just use one as a SubVI.
    Is there a simple way to run both VIs, using the output from the DAQ system to feed the processor so that you can easily see the front panels of both VIs? I had considered just copying the real-time processor code into the DAQ VI, but I'm worried the resultant VI will be very large and unsightly.
    On a side note, am I over thinking this? Excuse me if this is a rather dumb question, it's been a long week...aaaand it's Wednesday.
    Solved!
    Go to Solution.

    There are a number of ways that you can go about this, but having both front panels open isn't a problem (assuming there is screen space!). Both could be sub-vi's of another "calling" vi, with their front panels set to open when called. The data from the DAQ side can be sent to the other through a number of ways, "producer-consumer" (many threads about this topic, examples in the LabVIEW examples, etc.) is one of the more robust techniques. If created correctly it allows one to run at a different rate than the other, although if the producer is "producing" much faster than the consumer can "consume" it will end up with problems.
    I guess I type too slowly
    Putnam
    Certified LabVIEW Developer
    Senior Test Engineer
    Currently using LV 6.1-LabVIEW 2012, RT8.5
    LabVIEW Champion

  • I am trying to display the output from my ipod touch on apple tv. i can get the audio but no video. please help

    i am trying to display the output from my ipod touch on apple tv. i can get the audio but no video. Thank you for any advice.

    What output are you trying to get to your tv?

  • Cannot read the output from windows command.

    Hello
    I have the following classes
    package cmd;
    import java.io.IOException;
    public class CMD {
        public CMD(){
            ProcessBuilder pb = new ProcessBuilder()
            .command("cmd.exe","/c","del *.*")
            .redirectErrorStream(false);
            Process p;
            try {
                p = pb.start();
                StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(), "ERROR");
                // any output?
                StreamGobbler outputGobbler = new StreamGobbler(p.getInputStream(), "OUTPUT");
                // start gobblers
                outputGobbler.start();
                errorGobbler.start();
            } catch (IOException e) {
                // TODO Auto-generated catch block
            System.out.println("eee "+e.getMessage());;
        public static void main(String[] args) {
            System.out.println("x");
            new CMD();
            System.out.println("x");
    and
    package cmd;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    public class StreamGobbler extends Thread {
        InputStream is;
        String type;
        StreamGobbler(InputStream is, String type) {
            this.is = is;
            this.type = type;
        @Override
        public void run() {
            try {
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String line = null;
                while ((line = br.readLine()) != null)
                    System.out.println(type + "> " + line);
            catch (IOException ioe) {
                ioe.printStackTrace();
    Please note that I cannot seee the output from wndows command : del *.* and the java class execution does not finished.
    I I will replace the above command with the dir command then the output of the command is visible.
    Would you give me a hint about how to modify the above clases in order to parse the output of the del *.* ?
    Please note that the above example is important because I am developping a tool and it is mandatory for that tool to parse the output from a windows batch command.
    Best regards,

    Please note that I cannot seee the output from wndows command : del *.* and the java class execution does not finished.
    I I will replace the above command with the dir command then the output of the command is visible.
    Would you give me a hint about how to modify the above clases in order to parse the output of the del *.* ?
    No - but I will give you a hint about ProcessBuilder and how to develop software properly.
    Hint #1: Don't try to automate something that you don't know, or understand, how to do manually.
    a. Do you know how to execute 'del *.*' manually in a command window?
    b. Did you try that manually to see what happens?
    My guess is 'no'. If you had you would know that the response to a 'del *.*' command is going to be this:
    Are you sure (Y/N)?
    And your 'java class execution' doesn't finish because the 'del' command is waiting for you to answer that question.
    Hint #2: Don't try to use ProcessBuilder for an application that requires console input unless you first know how to provide that console input via your Java code.
    Your code will wait forever since it does NOT answer that question.
    Search the net and The Java Tutorials and  you can find examples of executing command line utilities. Then try those examples first and make sure that:
    1. They work for you
    2. You understand HOW they work
    Then you can modify those examples to do what you want to do.

  • While recording a guitar do not record the output from other tracks

    Hi all,
    I'm an audition/recording newbie. I have Audition CC. I have recorded one guitar track. and now I'd like to record another one. The problem is that when I try to record it the output from the other one gets recorded as well. I do want to hear the output from the first track while recording track 2 but I want only to record my guitar playing in track 2.
    Thank you.

    The basic problem here is not actually caused by Audition, but by your sound device mixer, which appears to be letting you record everything you hear - so that will be the guitar part you are playing, and also the replayed tracks that you've already recorded. In Windows, the fix for this is generally to make sure that the recording source is set to be just the input you are using, and not 'what you hear' or whatever it is on your device. The playback part of the mixer should let you monitor both the wav playback and your source, which is what you need to be doing - it's only the record settings you need to look at.
    If you are using a Mac though, I can't help you because I don't know anything about how they work from that POV, but I'd imagine that it must be similar.

  • How to read the output from 'tlist entersq'

    Hi
    Where can I find information on interpreting the output from 'tlist entersq' ?
    We have a box that seems to go into a lock, no communication through network, nor terminal ttya.
    I did an abort on the panel and sync to force a memory dump
    I'm using scat to investigate the result.
    SolarisCAT(vmcore.0)> thread summary
            reference clock = panic_lbolt: 0x114c6f9                             
       11   threads ran since 1 second before current tick (11 user, 0 kernel)
       11   threads ran since 1 minute before current tick (11 user, 0 kernel)
       63   TS_RUN threads (50 user, 13 kernel)
        2   TS_STOPPED threads (0 user, 2 kernel)
       10   TS_FREE threads (0 user, 10 kernel)
        0   !TS_LOAD (swapped) threads
        0   threads trying to get a mutex
        0   threads trying to get an rwlock
      128   threads waiting for a condition variable (89 user, 39 kernel)
        1   threads sleeping on a semaphore (0 user, 1 kernel)
       12   threads sleeping on a user-level sobj (12 user, 0 kernel)
        7   threads sleeping on a shuttle (door) (7 user, 0 kernel)
        0   threads in biowait()
        1*  threads in entersq() (1 user, 0 kernel)
       63   threads in dispatch queues (50 user, 13 kernel)
      225   total threads in allthreads list (159 user, 66 kernel)
        0   thread_reapcnt
        5   lwp_reapcnt
      230   nthread
    SolarisCAT(vmcore.0)>  tlist entersq
      thread        pri pctcpu           idle   pid         wchan command
      0x300027dd7a0 142  0.024       1m41.83s  1684 0x300007fff18 /sz/tcp/bin/tig_tcp.bin
       1 thread in entersq() found.
    threads in entersq() by syncq:
    1 thread: 0x300027dd7a0
    syncq @ 0x300007ffee0
    sq_count: 0    sq_head: 0x30001de6e80  sq_tail: 0x30001de6e80
    sq_evhead: 0xcff010000 sq_evtail: 0x100000000cafe      sq_nqueues: 0
    sq_needexcl: 0 sq_private: 0x3000155dd18       sq_next: 0xbaddcafe
    sq_pri: 276
    sq_occount: 0
    sq_flags: 0x200 ()
    sq_type:  0x0
    sq_svcflags:  0x0
    sq_lock @ 0x300007ffee0:
      adaptive mutex:  owner: 0x0  waiters: false
    per-module syncq for ip
    streamtab @ 0x14ad6b0
    qinit     @ 0x14ad570
    modinfo   @ 0x14ad540
    queues:1 sq_msgs:1 sq_mblks:36 sq_alloc:13247273932581836904
    SolarisCAT(vmcore.0)> thread 0x30001de6e80
    ==== user thread: 0x30001de6e80 address translation failed for pid: 32 bytes @ 0x452e0d0a2a2a2a20
    pid: 0  PIL: 3 ====
    cmd:
    t_wchan: 0x30001dd5640 
    t_stk: 0x1263bfc  sp: 0x0  t_stkbase: 0x30002aa3ec0
    t_pri: 0  pctcpu: 0.000036  t_lwp: 0x30001de0d80  machpcb: 0x30001dd4c08
    t_procp: 0x30002df2900  p_as: 0x30002df2978  hat: 0x6420373031206368address translation failed for hat_3: 80 bytes @ 0x6420373031206368
      cnum: 0x0
    address translation failed for hat_3: 80 bytes @ 0x6420373031206368
      size: 4984936174853958176  rss: 0
    bound cpuid: 768  bound psrset: 768  last cpuid: 0 
    idle: -17371523 ticks (190888 days 10 hours 34 minutes 34.26 seconds)
    start: Wed Jul 10 21:34:52 6497
    age: -3297429488912 seconds (38164693 days 3 hours 48 minutes 32 seconds)
    swapped out: 3298566244800 (190888 days 4 hours 48 minutes 49.63 seconds later)
    interrupted (pinned) thread: 0x30001de6ef8
    tstate: unknown state
    tflg:   T_INTR_THREAD - thread is an interrupt thread
            T_WOULDBLOCK - for lockfs
            T_DONTBLOCK - for lockfs
            T_DONTPEND - for lockfs
            WAITCVSEM - waiting for a lwp_cv or lwp_sema on sleepq
    tpflg:  TP_CHKPT - thread is being stopped via CPR checkpoint
            TP_PRVSTOP - thread is virtually stopped via /proc
            TP_MSACCT - collect micro-state accounting information
            TP_STOPPING - thread is executing stop()
    tsched: none set
    pflag:  SLOAD - in core
            SLOCK - process cannot be swapped
            SPREXEC - process is in exec() (a flag for /proc)
            SSCONT - SIGCONT has been posted to the process
            SBPTADJ - adjust pc on breakpoint trap (/proc)
            SUGID - process was result of set[ug]id exec
            SJCTL - SIGCLD sent when children stop/continue
            SNOWAIT - children never become zombies
            SVFORK - process resulted from vfork
            SVFWAIT - parent of vfork waiting for child to exec
            EXITLWPS - have lwps exit within the process
            SWAITSIG - SIGWAITING sent when all lwps block
            HOLDFORK1 - hold lwps in place (not cloning)
            SMSACCT - process is keeping micro-state accounting
    pc: 0x30003e63600       0x30003e63600:  illegaltrap     0x00000000
    -- no stack --

    Hello ejp,
    First of all i thank you for the reply.
    I explain the process which i am doing in side the thread.
    After connecting to the remote machine, it asks another password.
    so i read the output after connecting. if it equals "password:", then write the 2nd password. then i read the output. it will be like "system>" . if this prompt comes like this, then i write the super user name and super user password. then the prompt will be like "system#". then i write the command which i need to execute and read the output whether the command is success or not.
    So after every output read, i interrupt the thread using interrupt() method. its working fine if i execute via GUI ie, click the button. But its not working when i scheduled this job in a scheduler ie, it will be executed when the time elapsed.
    Give an idea to fix this bug please.
    rgds
    tskarthikeyan

  • Reading the output from a object running in the local machine.

    Reading the output from a object running in the local machine.
    By using a signed applet i am lunching a small application that returns an image object, how to read that without storing it in the hard disk.
    Which means i need to read the image object return by the local application using applet or jsp .
    i am using tomacat and an html page with an applet with it to lunch the application.

    You can write that image in a binary format using OutputStream for System.out and then read it in your applet.

  • Getting the output from a Perl script using Runtime.exec

    I cannot get the output from a perl script using Java. Can someone PLEASE help?
    I used the following code:
    Process p = Runtime.getRuntime().exec("C:\\Perl\\bin\\Perl.exe script.pl) ;
    InputSream in = p.getInputStream();
    b...
    do
    System.out.println(b);
    while ((b = in.read()) > 0)
    But there is no way that I get the output in the inputstream. If I use the command "cmd script.pl", the output is displayed in the Dos box, but also not in the inputstream.
    I will appreciate any help.

    Try this
    Process p = Runtime.getRuntime().exec("C:\\Perl\\bin\\Perl.exe script.pl) ;
    BufferedReader rd = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String str;
    while((str=rd.readLine())!=null){
    System.out.println(str);
    Manu

  • Is it Possible to upload the output from Oracle reports To Access database

    Hi All,
    Wish you All a Very Happy New Year.
    I have a query.Is it possible to
    upload the output from the Oracle reports
    to the Access database???
    Any suggestions would be appreciated.
    TIA
    sg

    Hi sg,
    Research the DDE option.
    Dynamic Data Exchange (DDE) is a mechanism by which applications can communicate and exchange data in Windows.
    I have imported data into the excel spreadsheet using DDE built in functions. I am sure it can work with MS Acess as well. If not, then you need to create a 2 step process .. reports -> excel -> access.

  • What are the benefits from upgrading from Acrobat 9 Pro Extended to Acrobat11 Pro?

    What are the benefits from upgrading from Acrobat 9 Pro Extended to Acrobat11 Pro?

    Acrobat is a program used by a wide variety of users for a even wider number of purposes. So if we simply gave you a feature list, that wouldn't be very helpful.
    Tell us how you use Acrobat, and what you do with it, and we can suggest improvements that were made in Acrobat X and XI Pro.

Maybe you are looking for

  • XML Quote report

    We have a problem with our XML Quote report that cuts off the report at 26 pages when it should go to about 200 pages. We have another report the Acknowledge Quote and it works fine.

  • Deploy Error for Web Dynpro

    I have got the error message on Deploying the project of web dynpro, they are: Deployment aborted 2006年7月6日 上午10:21:13 /userOut/deploy (com.sap.ide.eclipse.sdm.threading.DeployThreadManager) [Thread[Deploy Thread,5,main]] ERROR: [002]Deployment abort

  • NiUSRP 1.2 / USRP N210 / beat frequencies LO

    Hi, I made a Labview 2012 program based on some examples of the ni USRP 1.2 software, for being executed in my USRP N210. The objective of my program is to measure a signal, that right now is generated by a RF signal generator, after doing an fft plo

  • I am not able to download the photoshop on my macbook , what can I do?

    When I get to download photoshop direct me to a page that is not available

  • The device is not responding to the selected base address

    my DAQ card is PC-LPM-16, a few days ago, i configed it properly. and i didn't use it for a few days, but didn't plug out from my computer. today i want to use it, but the MAX test showed that "The device is not responding to the selected base addres