Create a NI based PID control system? Advice?

I need to make a new PID control system using labview. I have a magnetically levitated shaft, spinning at 80,000 RPM and is subject to axial loads.
It is a pretty simple. One axial input, one output to an amplifier.
I need it to be fast, dynamic and stable.
Does labview have these capabilities? I suppose I would need to scan the one input channel continiously, and be continuously writing a PID derived control signal which would need to be smooth, obviously not notchy.
What hardware has the capabilities to read and write continuously and have the speed i require. I suppose 20khz input would be fast enough.
I have a current sytem that died on me (motherboard failure) but the computer which is a 486!, the card, the software are all SUPER old, and no one knows how to use it anymore. The DSP card company has been purchased several times and is totally unsupported.
So:
What hardware do you recommend?
What software? LV + PID toolkit?
Anything else?

FPGA is a reconfigurable logic, I can describe it as a kind of "programmable hardware", in the sense that the actual chip is defined in a high level description language, which define connections between logical block of the FPGA. Of course, you can find better definitions on wikipedia, i guess....
Anyway, you don't need to care about how does it works: it matters that these devices are used in real-time, reliable acquisition.
Real-Time is expensive, but consider that you can get discounts buying NI Developer suite, possibly buy one that includes Real-Time and PID module, check your country's sales representative.  In my company, we bought NI Developer suite "Control Edition", but it was about 2 years ago, nowadays, I don't know what similar product is offered by NI...
Yes, since cRIO is meant for reliable DAQ, it can do continuous sampling 24/24, 7/7.  Only take care to write a reliable software in labVIEW!
Hope it helps.... have a nice day!
graziano

Similar Messages

  • Steps to create vi file for PID control in 8.0 pro without specific PID addons.

    Per my other posts, I am testing a friend's software to see if this is what we would like to use.  I would prefer to use their software for our initial work to help offset the cost of the software.  Problem is their software is 8.0 pro without the extra PID stuff.  I am curious how one gets started creating a custom PID algorithm to be used in series between an input and an output.  I have viewed several tutorials but all seem to simply point at the PID toolkit that is not availalbe to me right now.  I realize it might be more work to create one but probably the only option at this point. 
    To simply the process, lets just compare a single input and output where the software will control the output to obtain to desired input.  in  tutorial, I was following right along until the PID loop was added and that seems to be just a drop and go type of deal in which would rarely apply to a real work application. I am simply trying to learn how PID systems are written into the block diagrams.  
    Hopefully my question makes sense.  

    asdfs wrote:
    Per my other posts, I am testing a friend's software to see if this is what we would like to use.  I would prefer to use their software for our initial work to help offset the cost of the software.  Problem is their software is 8.0 pro without the extra PID stuff.  I am curious how one gets started creating a custom PID algorithm to be used in series between an input and an output.  I have viewed several tutorials but all seem to simply point at the PID toolkit that is not availalbe to me right now.  I realize it might be more work to create one but probably the only option at this point. 
    To simply the process, lets just compare a single input and output where the software will control the output to obtain to desired input.  in  tutorial, I was following right along until the PID loop was added and that seems to be just a drop and go type of deal in which would rarely apply to a real work application. I am simply trying to learn how PID systems are written into the block diagrams.  
    Hopefully my question makes sense.  
    Take a look at the PID Control Toolkit User Manual . It clearly defines the math used and there is absolutely nothing stoping you from writing that code yourself.
    What you will not get by doing it yourself is the auto-tuning as well as all of the supporting and helper sub-VI along with the polymorphic versions that will support arrays of PIDs.
    If you write it yourself and it work good please post up your version for others to review or use.
    Have fun,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • I am looking for Compact RIO system for PID control

    Hi all,
    I am looking for the CompactRIO system for PID control.
    My system acquires two input data (0-10V) from two displacement sensors and sends one output signal (0-10V) to piezo-actuator at every step. And my target is the short settling time and the low overshoot.
    I think that I need fast control system. So I am interested in CompactRIO. But I am not familiar with this sytem. Could you recommend the good control system for me?
    The one important thing is that the time limiting step of my system is Piezo actuator (it's natural freq is 20kHz.) CompactRIO is much faster than the Piezo-actuator. I am not sure whether CompactRIO is good to my system or not.
    Here is the CompactRIO system which I am interested in:
    i) CompactRIO Reconfigurable Embedded System: cRIO-9004
    ii) CompactRIO Reconfigurable Chassis: cRIO-9101
    iii) I/O Module : AI : cRIO-9215 AO: cRIO-9263
    Thank you so much,
    Sungjin

    Hello Sungjin,
    CompactRIO should work great for your PID control system. Those I/O modules are the correct voltage range and the 1M gate FPGA backplane will be plenty for a single PID controller. You'll probably be able to get loop rates around 100kHz for analog PID control.
    Keep in mind that the LabVIEW FPGA module includes PID examples that will cut down your development time considerably.
    Regards,
    Vineet

  • How to create a record based on the name of a file in the file-system?

    Hi,
    With a lot of pictures I want to have a database to gather some information about these pictures.
    First question is how to generate a record based on a file in the file system?
    e.g. the pictures are "c:\fotos\2009\01\disc_001.jpg" to "c:\foto\2009\01\dis_98.jpg" .
    now i want to create records with as one of the attributes the name of the picture (not the picture itself). how to create these records (based on the information of the file-ssytem). i.e. the number of records should be the same as the number of pictures.
    any suggestions?
    any reaction will be appreciated.
    Leo

    Link to Create directory
    http://www.adp-gmbh.ch/ora/sql/create_directory.html
    You can create a list of files in the directory and read the list files from that directory.
    [UTL_FILE Documentation |http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10802/u_file.htm#996728]
    [Solution using Java|http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:439619916584]
    SS

  • I am looking to control a 4-way hydraulic solenoid valve. Do I need a PID control toolset, or can i control the system through my 16E4 daq card and scxi chasis

    I am looking to control a 4-way hydraulic solenoid valve. Do I need a PID control toolset, or can i control the system through my 16E4 daq card and scxi chasis

    I think you're asking 2 different questions.
    The PID control toolset is for using PID loops for control; it's just software.
    The DAQ card and scxi chassis are hardware. If you have the appropriate signal conditioning cards in your chassis to control/monitor your solenoid valve, then you can run a PID loop.
    I believe the simple answer is: the PID control toolset is the best way to do control, but there are simple PID VI's (even on this website) that you can download and use for simple control.
    Mark

  • How to create a central system on TDMS control system

    Seems the central system on the TDMS control system is an alias.
    Which transaction to create it?
    Thanks!

    Hi
    Central system is not required to be created explicitly. Once you install the TDMS Add-on components the system can be used as a control as well as central. Only condition being that to use a system as a central system the server should be with basis release higher than 6.2.
    Refer to TDMS installation guide for details.
    Regards
    Pankaj

  • How can I make and wire reffercence signals(ramp,sine,square) to excite and evaluate the behaviour of the system wih PID control?

    Dear all,
    I am Tri, I am a beginer with LV program. Actually I used LV for my reasearch, I had tried wiht very simple thing but the problem arise because I am not familiar with LA. Why I know that problem is simple because I compare with MatLab that I had somtime used before.
    I make a loop of PID control, It worked properly but I don't know how to make a refference signal to wire to the loop for excitating to evaluate the behaviour of the system. Please give me your help.
    Thanks

    Hi Tri,
          I've employed the "simple PID.vi" without a problem, but your example is more complex.  I think you use a Function generator to modulate DAQ inputs?
    Perhaps someone else will be able to infer your intention and identify a flaw in the logic.
    In case someone else wants to run your VI, it may help to build/attach an .llb (some sub-VIs are needed by the VI you atached.)
    To build the .llb, save your VI with Development Distribution options (Alt-F,Alt-W) and attach the .LLB
    1) \File\Save with Options
    2) select Development Distribution
    3) Save
    4) choose "New VI Library"
    But first, It would be helpful to us if you clean-up the code - straighten wire-paths, minimize bends in wires, and try to avoid "tall" diagrams.  Scrolling diagrams up and down is "bad form".  If scrolling is necessary, left&right is preferrable!
    Cheers.
    (and, for the record: in my previous post, Exitation would be wired to "Process Variable", Not "Set Point" (ouch!))
    When they give imbeciles handicap-parking, I won't have so far to walk!

  • Toolkit for feedback system? Motion; PID; Control/Simulation???

    Hi, I have to develop/program an organ bath system - a feedback system mimicking real sinusoidal breathing oscillations (shown in attached images). I have NI Labview 8.5, NI-Motion 7.6, a linear motor (M-235 DC-Mike actuator), an MID-7654 Servo Power Motor Drive and a pressure transducer. I believe I will need to control the PID controller and am aware of the PID Control Toolkit as well as the Control Design and Simulation Toolkit for NI Labview. However, is it possible to control the system using the NI-Motion software I have at the moment? If not, do I have to purchase both the PID and Control/Simulation Toolkit or just one? Thanks in advance...
    Attachments:
    feedback design1.JPG ‏25 KB
    feedback system1.JPG ‏42 KB

    Dear Garry,
    Do you have a motion controller to interface the MID-7654 to your
    computer and LabVIEW? This would be the PCI-734x or PCI-735x. If you
    do, I believe that you could implement your application with LabVIEW
    and NI-Motion. You could do so by using the analog feedback feature for
    the control loops for each axis. Then, you could specify the optimal
    sinusoidal moves/pressure patterns that mimic real breathing patterns.
    The analog feedback from your pressure transducer will be used during
    the move(s) to maintain the pressure that you want.
    Please see Chapter 13 here for more details:
    NI-Motion User Manual
    http://www.ni.com/pdf/manuals/371242c.pdf
    Here is also a good discussion forum post on Analog feedback:
    Can i use NI-7358 to implement a hybrid position force/torque control system?
    http://forums.ni.com/ni/board/message?board.id=240&thread.id=2976&view=by_date_ascending&page=1
    I believe that the above option would work for you, and you would not
    have to use the Control Design and Simulation Module or the PID
    Toolkit. Please let me know if you have any additional questions. I
    haven't actually set up a system with analog feedback from a pressure
    transducer before, but I believe that the above would be a very viable
    option.
    Best Regards,
    ~Nate

  • Best design idea for parallel DAQ (via GPIB), PID control and watchdog system

    Hello!
    I am a starter programmer in LabView, I already understand the basic ideas, and design patterns, like producer/consumer, events state machine, functional global variables, and so on, so the basics...
    I started a project a few weeks ago, and first I wrote and tested all of the necessary subvi-s for my project, like the ones initializing my GPIB devices (a Keithley mux and a dvm), controlling/reading out the measured voltage/resistancy values from them, subvi for my Static Analog Output card (I have to drive 7 analog output channels, 4 has to be PID controlled regarding to some of the measured values from the GPIB devices), and another subvi for the analogue card, sending TTL watchdog signals out to my experiment in every 2 seconds.
    Any idea is welcomed about suggesting the best design pattern for my project.
    The main features of my program would be:
    After starting the user interface the program starts with a start-up state, initializes the DAQmx channels and the GPIB devices. The program starts to read out different values from the GPIB devices, including 4 temperature values in every 3 seconds.
    In the same loop (?), using PID control, the program sets the DC voltage values of 4 channels (3 to heating wires, 1 to a Peltier-heat pump) on the Static Waveform Analogue output card, the remaining 3 values are constants.
    I have to send digital TTL watchdog signal to some relays from the same output card, changing its state in every 2 seconds (not the same rate as the GPIB values are read out).
    When the 4 temperatures and the power values regarding to the heating wires are equilibrated after a few hours, the program goes into another state, and signals to the user, that the measurement can be started. During a measurement, I write out all of the measured values to a TDMS file, and there is also some basic calculations "on the fly", like a moving average.
    After the measurement done, the user can swap samples, and the program goes into the above state, waiting for equilibration . and so on...
    Do you think I should use a Producer/Consumer pattern with events? Or someone would recommend me a better design idea?
    Thanks very much!
    ps.: I read out lots of values from the Keithleys, so I put them in a cluster. I made a small test vi (attached without the GPIB comm subvi-s), just to test the GPIB comm. So this is the recent state of my project. (all other subvi-s tested and ready to use as I wrote above, like the DAQmx output part)
    Attachments:
    GUI_Calorimeter_control_image_v2.vi ‏284 KB

    Okey
    I think it is a better approach if I work first, and after I ask
    I go with small steps. For first, now I just want to make a DAQ analog output loop, and parallel a watchdog loop sending out TTL in every 2 seconds.
    The main loop in my project will iterate with approx. 10-15 seconds.
    I want to check in my watchdog loop, if my main loop hangs up (in that case the PID control stops, but the danger is if the output voltages stay on).
    After some readings, I have decided to use a functional global variable.
    I have attached the vi, can someone give me advice, what would be the good solution for this purpose?
    (I know it is a bit silly what I messed up with the shift registers in the bottom loop, it was some experimenting).
    Thanks in advance!
    Attachments:
    watchdog_funcglobvariable.vi ‏12 KB
    Global 1_stop.vi ‏4 KB
    analog_output+Watchdog.vi ‏57 KB

  • User Control System based on MAC address?

    I wonder how can I make a user control system for my website based of visitor's computer's MAC addresses?
    Is it possible to get MAC address of visitors of my site in FLASH? If possible how?
    Thanks for reply in advance

    Not possible through flash player. You may advocate javascript approach and use it in combination with Flash.

  • Control Systems Engineer

    Control Systems Engineer
    Seattle Safety – Kent, WA 98032
    Seattle Safety is looking for a qualified individual to fill an opening for Control Systems Engineer. Seattle Safety designs, manufactures, and installs advanced crash test sled systems that are used in automotive and aeronautical industries. The duties of the Control Systems Engineer include:
    • Experience designing, testing, and optimizing industrial automation and control systems utilizing modern and classic control methodologies such as PID. Experience with neural networks.
    • Strong background in mathematics, physics, and signal analysis.
    • Electrical / Electronic design experience including automation.
    • Design, troubleshoot, and test software written in LabVIEW 8.6 & 2012 and C.
    • Help customers diagnosing electrical, software, and mechanical problems with their systems. This will sometimes involve working odd hours for customers on the other side of the planet.
    • Support installations of crash test equipment at on-site locations worldwide.
    • Provide round the clock technical support for team members locally and abroad in subject matters concerning performance, installation, and maintenance of software and data acquisition hardware.
    • Prepare and maintain software flowcharts, layouts, and diagrams as needed to demonstrate solutions to outside staff.
    • Work with current team members to restructure existing crash test software.
    • Supports all aspects of software application design, development, testing, deployment, and support.
    • Perform software testing at a unit and integration level to ensure expected behavior.
    • Comment code clearly and consistently throughout the development process.
    • Maintain professional relationships with suppliers and vendors in order to keep up with industry developments.
    • Candidates must be located in the US, the northwest would be ideal.
    Furthermore, the ideal candidate would possess the following skills:
    • Advanced or expert knowledge of LabVIEW.
    • Advanced or expert knowledge of C.
    • Expert knowledge of industrial controls.
    • Familiarity with a minimum one low-level programming language (C#, VB, Ladder, etc)
    • Familiarity with data acquisition concepts and hardware.
    • Discipline and organization with respect to software maintenance and version management. Experience with source configuration management tools a plus (CVS, ClearCase, Perforce, etc.)
    • Experience with sophisticated feedback control systems.
    • BSEE, BS Physics, and BSME are preferred but not required depending on experience.
    • Ability to work both alone and with colleagues to solve problems and to weigh the merits of differing approaches.
    Pay is commensurate with skills and qualifications of the applicant.

    Dear Sir/Mam,
    I’m particularly interested in the position of Control System Engineer, which relates strongly to my more than six years of experience in designing various applications for testing and automation. I am Certified LabVIEW Associate Developer & prepared for CLD also. Currently I am leading a team for the project for Machine Automation and remote diagnostics, and I believe I meet all the essential criteria of the position. My work at my current organization has been rewarding and productive. However, I wish to expand my career further, into the application designing and development role. The position also has a definite correlation with my practical knowledge and experience. You’ll see from my CV that I have been deeply involved in designing and development of various applications based on Programming techniques, hardware and network designing. I feel that I am well qualified to make an effective and useful contribution to design good application which will be market acceptable.
    I’m enthusiastic about the chance to participate in a meaningful role with an industry leader in the field.
    Thank you for your consideration of my application. Please contact me should you require any further information,
    Yours sincerely,
    Mohit Monga
    Mohit Monga
    Attachments:
    Mohit Monga_CV.doc ‏159 KB

  • Temperatur​e control system using thermocoup​les and cooling fans

    Greetings labview community,
    I'm fairly new to the labview program and though I have watched the tutorial videos and tried to search these forums I couldn't find a solution to my problem.
    I need to write a program in labview that controls the temperature via use of fans inside a case with heatsinks and various electronic parts.
    In particular I want to use two thermocouples, in order to measure the temperature of two transistors (one in each side of the case), where heatsinks are placed on top of them.
    When the temperature is above 25 degrees, a fan should activate. The fans speed should be faster, the longer the temperature stays above 25 degrees, until it drops down to 25 degrees. 
    How can this be done? I thought of using a "mask and limit testing" for activating it, but I can't figure out how to control the speed of the fan in a loop automatically based on the temperature.
    Here are some of my specifications:
    USB-6009 (this was provided to me and is therefore my only option)
    Labview 2011
    NIDAQmx 9.5 driver
    2 thermocouples (one for measuring the temperature for each transistor and activating one fan)
    2 fans 0-5V 
    Below you'll see an attachment of the program I've wrote so far (just for one set of thermocouple-fan) and I'm using a slider to simulate the input from the thermocouple. If there is anymore information needed, tell me. 
    Thank you very much.
    Attachments:
    Temperature sensors and fan activation.vi ‏130 KB

    Hi Lomedil
    What you have is a general control problem. This statement:
    "The fans speed should be faster, the longer the temperature stays above 25 degrees, until it drops down to 25 degrees. "
    Is an indication that you at least need a PI-controller, or you could use a PID-controller. The I in PID stands for integral and that means that the longer you have the same value different from your reference the larger the control signal will be and thereby the faster the fan will spin.
    I would recommend you to have a look at the following article to learn the basic principles of control theory:
    PID Control
    http://zone.ni.com/devzone/cda/tut/p/id/6440
    To find the coefficients in your design you can either choose to make a mathematical approximation of your test setup and then calculate the three constants Kd, Ki, Kp using this model, or you can choose to estimate the parameters on a "trial-and-error" basis until you have the desired response time / overshoot i.e.
    In general you should note that designing a control application on a General Purpose O/S as Windows will not give you deterministic timing, thus your control loop can be more unstable than expected, design your controller with this in mind! For the fan operation it should not be a problem but for more advanced control purposes your would always use a Real-Time system like the singleboardRIO, compactRIO or setting up a standard PC as a LabVIEW Real-Time Target (Converting a Desktop PC to a LabVIEW Real-Time Target - http://zone.ni.com/devzone/cda/tut/p/id/2733)
    Best Regards
    Anders Rohde
    Applications Engineer
    National Instruments Denmark

  • Labview PID control for virtual CNC lathe

    i am currently in my third year at UMIST, on the Mechanical Engineering (MEng) course. I am designing a control system for a miniaturised CNC lathe for my 3rd year project. For integration between the computer and actuators, i am planning on using Labview 7, but am currently having problems learning how to utilise the PID control toolset to create a virtual system response. I am planning on being able to input a specific transfer function for, say, a DC motor, and a ramp input, for example, and being able to view the output response as i vary the P, I and D gains. Some help with regards to the block diagram set-up for such a system would be greatly appreciated.

    The best place to look for this kind of information is the shipping examples of LabVIEW. Open LabVIEW >> help >> find examples. Another good place is online. Go to Advanced Search and look in the example programs.

  • Feedforward PID control problems

    hoping for a little help with the feed forward vi.
    I have two inputs to a PID function, the Process variable (PV) being slightly behind (phase lag) the set point (SP).
    This little bit of phase lag causes some unnecessary error in the PID algorithm.
    I believe that feedforward VI is used to correct this type of problem.
    The PV is from a load cell if it matters, recording around 1Htz cyclic load. 
    I can utilize the PID feedforward VI and plot its input vs output and see that it is indeed creating the necessary phase change (shown below in figure).
     However, when i put the phase changed signal into the main PID vi, it somehow dosent seem to ever change/correct the phase offset of the PV signal that is coming in, its like its really not being used except that at very large vales (ie 0.2min) it just becomes unstable..
    I have tried both lead and lag for both the PV and SP for every conceivable values between 0.000001 and 10min..
     The feedforward VI does create amplitude changes between the inputs and outputs at small time levels (ie 0.001min) of which i am correcting for manually. Yet, The output signal without the feedforward vi seems to always better than with it.
    Attachments:
    v65PIDLL.vi ‏175 KB

    hi george,
    Thank you for checking in.
    Im starting to get a handle on this after 3 or 4 days.
    Basics are that the PID function is used for feedback.
    It compares a setpoint (the desired state) to feedback state (process variable) in order to compute the error term which is then used for feedback.
    Sometiems the set point feedback has a time delay in it and thus, creates a little extra error in the comparision and makes it hard to get the PID accuracy perfect.
    So with a feedback load control system, there is a delay in the time the load cell is read to be compared to the desired state.
    So what "lead lag vi" does iscreate a delay or lead in one of the signals so there can be a better computation of error.
    Where it gets tricky is that lead lag vi also creates a offset and amplutide change in the set point on certain conditions such as larger phase shifts and smaller times delays,.
    This in many cases makes a worse computation of error than the loss of phase shift by itself.
    And in trying to correct for this offset and amplutide change, i was making mistakes which reduced the size of the error term.
    But i did some things to try to keep this simple and the output is still not perfect, but better.
    of course, i should add a discliamer, trying to help if anyone reads it, but im not a proffessional, i just play one on TV

  • Need help with control system that reduces a flat output signal every time a certain input exceeds given value

    I'm having difficulty setting up a closed loop control system that reduces one of my voltage outputs (connected to a high voltage system) by 30% every time a measured voltage exceeds a certain threshold value.  I'm using a USB 6229 DAQ.  I've been trying to create a waveform that looks like a DC signal, but the only waveforms that I can seem to manipulate while my VI is running are the stock waveform types.  Also, I've tried to use a formula node or conditional structure to update the output value every time the measured voltage exceeds a given value, but everything I do reinitializes the output value every time it runs or won't store the previous signal value.  I'm using LabVIEW 8.6 and don't have the PID or similar express VI's.  I've attached the mess I've got working right now.  Can anyone help?  I'm really stuck!
    Thanks! 
    Attachments:
    HiV step down.vi ‏40 KB
    output control.vi ‏100 KB

    I'm sorry it's such a mess; I'm still pretty new at this.  These are both little driver programs for a larger overall control program. 
    Output control is meant to send a flat signal to the DAQ whose value can be manipulated while the VI is running.  I have the second activated segment merely to check the values being output.  I didn't realize I attached a version with a meaningless control...I had a control where the user would put in the stating voltage (the high voltage source has a 1V-100V setting for external control).  I've attached this slightly different but equally dysfunctional version.  Ideally, I would have liked something like the analog signal generator vi to come with an input wiring for offset on the DC signal.  Most of the code was diabled because it is copied from an example; it is largely rubbish.  I initially used the DAQ Assistant, but when things weren't working out I switched to putting in each step manually to try to troubleshoot.
    As far as HiV step down is concerned, I've tried something different with a nested case structure (if that's the right terminology?), and I've attached that file.  I think this problem has been solved, but you never know!
    Attachments:
    output control slightly different.vi ‏100 KB
    HiV step down w case structures.vi ‏44 KB

Maybe you are looking for