Does PID loop transfer values to new instance

Greetings Everyone,
I'm a new forum user, but I've been using Labview for about three years now. 
I have an application that uses PID VIs in multiple cases of a case structure.  Each case structure passes a different set of setpoints, gain schedules, limits, ect to the new instance of the PIDvi.  What I'm wondering is this:  When I switch cases to the new case structure, does all the integral and derivative information get lost in the shift registers of the old PID instance, or does labview keep them in memory and pass them to the new instance?  If it kept it in memory it would be a great help, becasue there would be less upset in my PID loop.  If not, then I'm going to have to pass a cluster of that information into the new instance...which I'd rather not do to save on system requirements (real time system). 
Thanks for the input
Grub
Hell, there are no rules here...we're trying to accomplish something!!! - Thomas Edison

Using the shift register will only work if you make the VIs not reentrant. In any other case, you will need some means of global data storage. I think the most memory efficient is LV2 Globals (also known as Functional Globals), but I haven't tested it, and I know of some benchmarks that showed that the fastest is single element queues globals.
A single element queue global is a queue with the size of 1 where you always remove the element from the queue when doing an operation. This locks any other calls to the queue, because it's empty, and they will have to wait until you place the element back in the queue.
You can search for the other terms to find some documentation about them.
Try to take over the world!

Similar Messages

  • My output loop tunnel value is "#1". What does this number signify.

    I am a new Labview person. I have a While Loop containing a Fract/Exp String to Number fuction. The output goes directly to a loop tunnel whose value is 8 using a probe but when running in highlight mode the value displayed on the tunnel is "#1". What is the significance of this value.

    It means you are not dealing with a scalar value, but with an array. The #1 means that the array size is one element. For arrays, it does not show the values, but the number of elements. A wise choice, because arrays can be huge. ;-)
    LabVIEW Champion . Do more with less code and in less time .

  • Checking for a value in a field within a subform before allowing a user to add a new Instance

    Form setup:
    Page name = Page1
    1st Subform within Page1 = Info (set to flowed)
    Objects within Info subform: Name (textfield) and Email (textfield)
    I also have a 2nd subform within Page 1 which contains an add instance button
    What I'm trying to do:
    1. The user needs to enter their Name and Email address then click "Add Instance button" to create a new instance of the Info subform :  _Info.addInstance(1);
    2. If the user fails to enter an email address, I want there to be a mesage box that infos the user that an email address is required before he/she can create a new instance. Note: It would also be nice if the cursor is Set to foucs on the email field within that particular subform instance.
    3. As long as the user tries to continue adding an instance, he/she will be denied if they do not enter an email in that instance
    4. If the user includes an email address in that instance, then the script will create add a new isntance
    5. The process should continue in this manner for each each click of the add instance button
    I presume there nees to be a loop and perhaps a somExpression scipt, but I'm not sure.
    Here's what i have so far (see below)....The script works for the first instance on the page, but it doesn't prevent new instances from being created when the email field in that "current instance" is empty. I want it to prevent the user from adding new instances if the email field is balnk in that "current instance". So, I guess I'm not sure how ot test a field in the current instance in a repeating subform.
    var vName = Info.somExpression + ".email";
        var vEmail = xfa.resolveNode(vName).rawValue;
        if(vEmail == null)
    xfa.host.messageBox("PLease enter an email address.");
    else{
    Form._Info.addInstance(1);
            var i = Form._Info.count - 1;
            xfa.host.setFocus(xfa.resolveNode("Info[" + i + "].Name")); //This set's the focus of the cursor in the Name field of the newly created subform
    Please advise, and thank you in advance!!!!!!

    Hi,
    I think you can acheive what you want just by adding "lastRow.presence = "hidden";" when you do the addInstance, so it now looks like;
    var lastRow = Form.resolveNode("Info["+(_Info.count - 1)+"]"); // Get last row
    if (lastRow.Email.isNull) // If email field empty
        xfa.host.messageBox("Please enter an email address.");
    else
        lastRow.presence = "hidden";
            var newRow = _Info.addInstance();
        xfa.host.setFocus(newRow.Name.somExpression); // set focus to Name field on the row just added
    So whenever you add a row the previous one is hidden?
    For your second issue, if you could have another button on your form, you could ask the user for a password and if they enter it correctly then show for the Info subforms, so;
    var response = app.response({ cQuestion: "Do you want to see all respones?",
                                  cTitle: "Unlock Form",
                                  bPassword: true,
                                  cLabel: "Please enter the password:" });
    if (response === "Password")
        var infoSubforms = Form.resolveNodes("Info[*]");
        for (var i = 0; i < infoSubforms.length; i++)
                    var infoSubform = infoSubforms.item(i);
            infoSubform.presence = "visible";
    You would want to password protect your template as well (in Form ... Form Properties ... PDF Security) so people couldn't just open the form and look at the password.
    Probably the simplest approach.
    Hope this helps
    Bruce

  • I have a brand new macbook pro that i was doing a data transfer from an old macbook, it got stopped/cable pulled out, now have spinning wheel of death that wont stop, how do i reboot/stop the wheel of death and start again?

    i have a brand new macbook pro that i was doing a data transfer via firewire from an old macbook, it got stopped/cable pulled out, now have spinning wheel of death that wont stop, how do i reboot/stop the wheel of death and start again? (this time il use time machine transfer)

    Just power off the machine(s). Shut them down. Migration Assistant gets 'stuck' sometimes - best way to migrate really isn't over Firewire, though it will certainly work, but with both machines hardwired via Ethernet to the same router. You can use a TM backup, too, of course, provided that it's recent. Which is the best? Your choice. I've done it both ways and have a preference for MA, but TM restore can be a bit faster and less quarrelsome.
    Clinton

  • Does Oracle 10g Grid Control Create a New Instance?

    i just installed it for the first time and noticed that it created what was apparently a new instance of oracle with its own bin, etc. directories. is this what is supposed to happen?
    thanks!

    i just installed it for the first time and noticed
    that it created what was apparently a new instance of
    oracle with its own bin, etc. directories. is this
    what is supposed to happen?
    thanks!It is clearly stated in the Installation Guide that came with the CD or your download. It is important to read it before you start installation.

  • My daughters computer crashed, got new one. Trying to transfer ipod to new computer only does some of content tells me I need to aurtherize computer my wife shared itunes with daughter that ipod is gone now and dont have password.

    Trying to transfer ipod to new computer. It is telling me to autharize computer. Had another ipod on same account, it gone now. Don't have password or any info about it. What do I do?

    The password is for your iTunes account. Not for your old iPod. Enter your Email and password will give you access to all the music you bought from iTunes.  If you forget it then I dont know how to help you there guess your SOL.

  • PID loop rate with counters

    I'm trying to use a PXI-8106 RT and LabviewRT 8.5 as a PID controller to control 3 motors.  I'm measuring the speed of the motors by measuring the frequency of the encoder with a 6608.
    This article http://zone.ni.com/devzone/cda/tut/p/id/5423 claims a speed up to 107.5 khz.  I've set ethernet to polling and usb off, I didn't turn off  the CPU display, but I'll try that as soon as I can. However, I'm not anywhere close to 107khz, best I can get is about 10khz with one channel and about 2 khz with 3 channels.  I realize the tests were done with analog inputs, but I was hoping that  I'd get at least somewhere close using counters. With the 2Khz rate I really can't do what I need to do.
    Does anyone know what a realistic rate would be with this setup?
    I'm new at Labview so I may be doing something wrong, although I can't see what it could be. I've done quite a bit of research on the forums before I started to learn from other's examples.
    Here's a couple of things I've learned  trying to optimize my loops.
    Seems like Daqmx has some issues with applying a scale.  I have 2 scales, one is just a scale factor, 0.166, the other is .0002.  When applying the .0002 factor in Daqmx my performance takes  a huge hit, something like 10%!  If I just leave it at hz, and do the scaling myself I see no performance penalty.
    There is something strange about the timed loop % display in RT8.5, I wrote my own routine using expected end, actual end time, and the period to give me a % loop useage and it matches very well to the RT8.5 display for most of the time, however, when the loop starts missing iterations because I've gone over 100% the RT display drops down to about 50% which pretty much makes it useless.
    I've attached a couple of shots of my test loop. I can get this one to almost hit 10 khz. the other screen shots are of how I set up the counter, and how I read the counter. the read counter has the error trap to restart itself.  Also I set it to use DMA explicitly somewhere else in the program.
    Thanks for any help.
    Henri
    Attachments:
    Main Loop.JPG ‏55 KB
    Setup Counter.JPG ‏72 KB
    Read Counter.JPG ‏67 KB

    Devin,
    Thanks for the suggestions.
    A couple of related questions for you.
    The 200 uSec is leftover from my attempts at getting the 3 PID loops to work within the loop availability.  I can run  about 70 uSec i.e about 14khz  with only  a single counter.
    I've tried changing the buffers value and it has barely any effect on the speed of the loop. Right now I have 3 counters running with 200uSec timing and I get about 69% loop utilization. With a few missed iterations every once in a while. This is using 10000 samples, if I drop down to 100 samples utilization actually goes up to 70%!?  Doesn't make sense to me either, but this is using both my VI and the on screen Timed Structures % of LV8.5RT so I'm trusting it as real,
    In theory if I can get my loop rate up to 10 khz I'll only need 10 for the buffers since my top frequency to be measured is 100 kHz.
    Funny thing on the RT fifo variable... I turned on FIFO and it actually decreased performance by about 1%, both Total load and Time structures went up... so I turned it off for stop-RT, and got a 3% improvement! Down to 66% time structures.
    You mentioned the hardware timing to get a hardware timed single point. Unless I misunderstood the counters, this isn't possible since the sample rate is implicit in the frequency measured? i.e. it latches the count every rising edge.. so I'm my case I'd get a 100 khz sample rate (although obviouslyl that would be the max) Can you let me know if I've missed something there.
    I bought this system explicitly based on its dual core and its high speed so I could close my PID loops quickly enough with one CPU and still have processing time left over to log data, etc.  And the 6608 card is there so I can get high accuracy for my frequency measurements.   However, I'm really struggling to get this thing going.
    Any help would be greatly appreciated.
    Thanks
    Henri

  • Why do I have a rate-independent delay in my PID Loop?

    I am preparing to use an ETS Realtime target to do some fast PID loops. I have a 3 GHz P4 machine with a PCI-6259 DAQ card, ruuning LabVIEW 7.1RT with NI-DAQ 7.3 for the PCI-6259 board. For starters I decided to just do some speed tests, with the AO putting out exactly the value measured by the AI, with no PID calculations. I would expect the output to be an exact duplicate of the input, but jagged and with a small delay of approximately 1 loop time. What I see on the scope is that there is a fixed 0.1 msec delay between the input and output that is independent of the loop rate. I can run the loop up to 100 kHz rate. With this fast loop rate the output is a faithful replication of the input, but shifted by 0.1 msec. This delay will cause big problems in a real PID loop, since this is several sample periods. At first I thought that there was a buffer that was delaying the samples, but if that were the case the delay would be proportional to the sampling time and not independent of it. The delay is not in the loop itself, which can operate up to 10 times faster than the observed delay. I have attached the vi and configuration sub-vis. Please tell me what I am overlooking here.
    Thanks,
    Rich
    Attachments:
    Speed_test.zip ‏51 KB

    I am looking to run a very similar application with the same card, a similar computer, and do PID control. I'm amazed you were able to get a loop rate of 100 kHz even if it wasn't doing anything real! NI quotes 1 kHz max loop rates in most of its documentation, though I suspect most of it is quite old. I'm interested in what rate you were finally able to achieve with the PID control. I would also be interested in seeing the PID/DAQ communication part of your could if you are able/willing to share it. I was hoping to get 4-5 kHz with at least one channel and hopefully more.
    Thanks,
    Aaron

  • Creating new instances of MDBs at runtime

    I am creating an application with a single input point (messages on a JMS Queue). The application needs to be multi-threaded, but would like to process the messages sequentially based on the message type.
    For example, a message of type A and a message type B can be processed simultaneously, but only 1 message of type A can be processed at a time. So if the application is processing a message of type A, and it receives another type A message, it must complete the first message before processing the second message.
    What I would like to do is have a single MDB (called the dispatcher MDB) that listens on the input point (JMS Queue). The dispatcher MDB calls onMessage() which will look at the message type and the forward to another JMS Queue based on the type. For example, if message type is A, send to Queue A, else if message type B, send to Queue B and so on. Each queue would have a MDB instance servicing the messages. In order to process the messages sequentially on each queue, the pool size for each MDB would be 1.
    My problem is that I don't know how many message types there are, this is decided at runtime.
    How can I create the Queues and register MDB at runtime?
    After some research, I have found the ability to create the Queues using JMX. But, I cannot seem to find details on how to create a register an MDB and tell it to listen on a particular Queue. Has anyone had any experience doing such a thing?

    OK, i have some code similar to below, where I want to
    create a new instance of the class BookRecord which
    takes parameters from Book b, which is an instance if
    the class Book.
    //This is code from the Libraray class
    public void addBookRecord(Book  b, String author,
    String title)
    bookHolder  = new BookRecord(b, author, title);
    }Now this creates a new BookRecord object that has an
    author and title which refer to the Book b. Now when i
    invoke the method again, choosing the same object for
    b as i did last time it creates a second BookRecord
    object, when I just want it to overwrite the values of
    the previous BookRecord object. how can i do this
    simply?
    Thanks in advanceWell I am not quite sure if I understood.
    But refering to what you wrote I would say:
    //This is code from the Libraray class
    public void addBookRecord(Book  b, String author, String title)
            if(bookHolder.getBook() != b)
               // Not the same book object
               bookHolder  = new BookRecord(b, author, title);
             else
                // same book object
                bookHolder.setAuthor(author);
                book.setTitle(tile);
    As I said may be totally not what you are looking for.
    Regards
    Tarik

  • Running into strange errors when creating a new instance

    Hello:
    I am running 9.2.0.8 on a Windows 2003 Server.
    When I try to create a new instance, I chose a New Database/UTF-8/16KB Block Size. Everything else was default value. However, I get a "ORA-29807: specified operator does not exist" error. When I looked into the Create log file, the file, CreateDBCatalog.log has the following errors:
    No errors.
    No errors.
    drop table AUDIT_ACTIONS
    ERROR at line 1:
    ORA-00942: table or view does not exist
    No errors.
    CREATE ROLE exp_full_database
    ERROR at line 1:
    ORA-01921: role name 'EXP_FULL_DATABASE' conflicts with another user or role name
    CREATE ROLE imp_full_database
    ERROR at line 1:
    ORA-01921: role name 'IMP_FULL_DATABASE' conflicts with another user or role name
    drop table system.logstdby$skip_support
    ERROR at line 1:
    ORA-00942: table or view does not exist
    Warning: View created with compilation errors.
    Warning: View created with compilation errors.
    CREATE ROLE exp_full_database
    ERROR at line 1:
    ORA-01921: role name 'EXP_FULL_DATABASE' conflicts with another user or role name
    CREATE ROLE imp_full_database
    ERROR at line 1:
    ORA-01921: role name 'IMP_FULL_DATABASE' conflicts with another user or role name
    drop synonym DBA_LOCKS
    ERROR at line 1:
    ORA-01434: private synonym to be dropped does not exist
    drop view DBA_LOCKS
    ERROR at line 1:
    ORA-00942: table or view does not exist
    No errors.
    drop package body sys.diana
    ERROR at line 1:
    ORA-04043: object DIANA does not exist
    drop package sys.diana
    ERROR at line 1:
    ORA-04043: object DIANA does not exist
    drop table sys.pstubtbl
    ERROR at line 1:
    ORA-00942: table or view does not exist
    drop package body sys.diutil
    ERROR at line 1:
    ORA-04043: object DIUTIL does not exist
    drop package sys.diutil
    ERROR at line 1:
    ORA-04043: object DIUTIL does not exist
    drop procedure sys.pstubt
    ERROR at line 1:
    ORA-04043: object PSTUBT does not exist
    drop procedure sys.pstub
    ERROR at line 1:
    ORA-04043: object PSTUB does not exist
    drop procedure sys.subptxt2
    ERROR at line 1:
    ORA-04043: object SUBPTXT2 does not exist
    drop procedure sys.subptxt
    ERROR at line 1:
    ORA-04043: object SUBPTXT does not exist
    No errors.
    No errors.
    No errors.
    No errors.
    drop type dbms_xplan_type_table
    ERROR at line 1:
    ORA-04043: object DBMS_XPLAN_TYPE_TABLE does not exist
    drop type dbms_xplan_type
    ERROR at line 1:
    ORA-04043: object DBMS_XPLAN_TYPE does not exist
    No errors.
    DROP TABLE ODCI_SECOBJ$
    ERROR at line 1:
    ORA-00942: table or view does not exist
    DROP TABLE ODCI_WARNINGS$
    ERROR at line 1:
    ORA-00942: table or view does not exist
    No errors.
    No errors.
    No errors.
    No errors.
    drop sequence dbms_lock_id
    ERROR at line 1:
    ORA-02289: sequence does not exist
    drop table dbms_alert_info
    ERROR at line 1:
    ORA-00942: table or view does not exist
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    drop table SYSTEM.AQ$_Internet_Agent_Privs
    ERROR at line 1:
    ORA-00942: table or view does not exist
    drop table SYSTEM.AQ$_Internet_Agents
    ERROR at line 1:
    ORA-00942: table or view does not exist
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    DROP SYNONYM def$_tran
    ERROR at line 1:
    ORA-01434: private synonym to be dropped does not exist
    DROP SYNONYM def$_call
    ERROR at line 1:
    ORA-01434: private synonym to be dropped does not exist
    DROP SYNONYM def$_defaultdest
    ERROR at line 1:
    ORA-01434: private synonym to be dropped does not exist
    DBMS_DEBUG successfully loaded.
    PBUTL     successfully loaded.
    PBRPH     successfully loaded.
    PBSDE     successfully loaded.
    PBREAK     successfully loaded.
    DROP TYPE SYS.RewriteMessage FORCE
    ERROR at line 1:
    ORA-04043: object REWRITEMESSAGE does not exist
    DROP TYPE SYS.RewriteArrayType FORCE
    ERROR at line 1:
    ORA-04043: object REWRITEARRAYTYPE does not exist
    DROP TYPE SYS.ExplainMVMessage FORCE
    ERROR at line 1:
    ORA-04043: object EXPLAINMVMESSAGE does not exist
    DROP TYPE SYS.ExplainMVArrayType FORCE
    ERROR at line 1:
    ORA-04043: object EXPLAINMVARRAYTYPE does not exist
    No errors.
    drop view sys.transport_set_violations
    ERROR at line 1:
    ORA-00942: table or view does not exist
    drop table sys.transts_error$
    ERROR at line 1:
    ORA-00942: table or view does not exist
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    No errors.
    drop operator XMLSequence
    ERROR at line 1:
    ORA-29807: specified operator does not exist
    What does this mean?
    venki
    Edited by: thevenkat on Mar 11, 2009 10:17 PM

    Venki,
    The ORA-00942 is okay because there is no existing object. But what stuck me is the ORA-01921 error which may indicate that this might not be a new database.
    CREATE ROLE exp_full_database
    ERROR at line 1:
    ORA-01921: role name 'EXP_FULL_DATABASE' conflicts with another user or role name
    CREATE ROLE imp_full_database
    ERROR at line 1:
    ORA-01921: role name 'IMP_FULL_DATABASE' conflicts with another user or role name
    Are there any existing databases on this server? Have you tried to create it on other machine?I searched on Metalink too and found Doc ID: 237486.1 ORA-29807 Signalled While Creating Database using DBCA which say that eroror could be ignored. You may want to review that as well.
    Ittichai

  • Create new instance through global interactive activity

    Hi All,
    I have a requirement where when instance is completed, I need to provide a link at instance end through global interactive activity. Once user clicks on that activity a screen appears where user clicks on button and new instance should be created.
    Now the problem is I tried notifying the main process and then use process creation activity to create instance but this cannot be used as instance is already completed.
    Second approach i used is processinstance.create method. But new insatnce is not getting created. Also i m not getting any exception.
    Please reply as this is very important requirement.
    Regards,
    Yasmin

    Create a new instance before the END activity is executed..
    After the screenflow for the global activity pass a variable to collect the button value on ON CLICK..
    If button value = true, then call a sub-process else END.. The sub-process does not need any Global activity to start the process . The values would be passed from the BEGIN activity of the sub-process itself.

  • New Instance of class

    I have two classes. In one class I have created a new instance of the other class as follows:
    class1{
    class2 c2 = new class2(this);
    However in class2 I now want to create a new instance of class1 but I cant do this as I go into an infinite loop right. What can I do???

    In class1 I have a JTable, with a number of colums and
    each row containing data pertaining to a record. In
    class2 I have a text area, comboboxes, and other such
    gui items. class1 extends JFrame. class2 extends
    JPanel. When the user selects a row the gui created in
    class2 is added to the frame in class1 (south of
    JTable)
    Each time the user selects a different row, the
    appropriate data (data from the row selected)is
    displayed in the gui items in class2 - hence the need
    for a new instance of class2 in class1.
    However when the user presses the save button in the
    class 2 gui I wish the data to be updated in the
    class1 JTable - hence the need for a new instance of
    class1 in class2. I can see the need for class2 to have a reference to the instance of class1. But it does not sound like you need or want to create a new instance of class1. class1 is a JFrame. If you pass a reference to class1 in the constructor of class2, then class2 can use the reference to the class1 instance to add, remove or otherwise update class1.

  • Digital PID Loop Output from MV?

    I'm setting up a PID loop with a digital output. It's a heating pad (which heats up pretty quickly). I've been looking for a good example of PID loops with digital outputs and haven't really found much. It seems like I just need to find a way to turn a 0-100% value into a binary value which turns on and off rapidly.
    I made a simple little VI which I would attach to the output (MV) of the PID loops (standard). I just wondered if anyone could let me know if this is good enough? Is there a level of complexity I haven't thought of yet?
    Attachments:
    Digital PID Output.png ‏21 KB

    Are you looking for a PWM digital output?  If so, this thread might be useful.  It uses a USB-6008 for the digital ouput so it should work with any NI-DAQ device with a digtial output.  There are better ways of doing PWM with more capable devices but it's a start.
    ~Simon

  • Optimum servo pid loop rate

    Hi,
    I want some confirmation on the optimum pid loop rate and the fastest servo motor operation that we can acheive with Pxi-7352 running on Window.
    The manual of 7352 says "62 μs PID loop update rate for up to 2 axes". The requirment is to acheive periodic equi sized straight line and rotary motion ( using yaskawa servo motors in torque mode and 7352 to close position loop ) Both motion are independant and not operating simultaneous i.e rotary completes one full rotation in small steps and then linear moves by one small step then rotary completes next rotation in small steps and again linear motor moves this continues till end of test.
    you can observe here that both rotary and liner motion are periodic and move equi spaced distance for each step with small stoppage/dwell time of 500 u sec , The catch is in addition to positional accuracy in terms of 50 -100 microns the time for complete each step is also very crucial and very small (many peridoc steps together consitute complete linear and rotary motion). Find expected velocity profile attached for more details on desired timing.
    As the motors have simple and periodic straight line and rotary motion i suppose buffered contour moves are not needed which have limitation of 10 msec between two points, then can the time to acheive each step be as low as 2.5 to 5 msec considering best loop rate of 62.5 u sec and highest/worst pid loop rate of 500 usec.
    1. Is the expected timing of 2.5 - 5 m sec feasible assuming that the motor is capable of reaching 5000 rpm which is well above desired speed.
    2. 735x series being high performance motion controller what is the order of closed loop timing that we can expect for simple and periodic moves (say in order of 1000 usec or 10 msec)
    3. Can i interface one stepper motor and another servo motor where both the motors and drives are in position mode on single 7352 and UMI 7772.
    4. Are there any limitation if NI motion is not used for code development and NI motion Assistant along with LabVIEW is used instead.
    This is precision application and the component is very small ,the weight of the component would be less than 400 grams so i hope we do not have to consider inertial affect on motion significantly.
    Appriciate if some one with similar experience can provide more details.
    Regards,
    Bipin
    Solved!
    Go to Solution.
    Attachments:
    Velocity Profile.png ‏21 KB

    Hi Bipin,
    thank you for your comprehensive post. I had a close look at your timing specs and I strongly doubt, that these specs can be met with a 7352 board. Even though the PID loop rate of 62.5µs might be enough, both trajectory generator and the supervisory control (host communication, move command sequencing,...) are too slow to meet your requirements. Please note, that the trajectory generator always works with a timing interval of 10 ms, regardless of the operation mode (linear move, contouring, blending,...), so there is no way to reach your timing specs with this product. In general contouring is the fastest way to run a quick succession of moves, as it doesn't require host communication (by the way: onboard programs don't execute much faster, than programs that are running on the host).
    I don't want to make negative mareketing for our 735x boards, but your timing requirements are just way beyond the requirements of typical motion control applications and it's probably quite hard to find any COTS product in the market, that can meet these specs. 
    With this said, I would like to offer you an alternative solution, that is based on NI's FPGA technology. Additionally to a faster trajectory generator a faster control loop is probably also very desireable for your application. Even with the lowest price Virtex-II based R-Series multifunction board (PCI-7830R) you can run PID loops with 5µs cycle time and the trajectory generator at the same rate. You even can use a different type of control algorithm if required. This technology is leveraged very successfull in a lot of applications with very high performance and accuracy requirements (here are some examples).
    So these are the pros, but where are the cons? Well, the R-Series boards are general purpose FPGA boards and not ready to run motion control boards, so you need to develop the low-level control application by yourself. The good news here is, that it can all be done graphically in LabVIEW and that there are many ready to run examples for motion control, that can be used as a base for your development. Additionally you may want to have a look at the NI SoftMotion Development Module for LabVIEW, that simplifies the development of motion control applications, but it is not a mandatory tool and the benefits of this module might not be as high for your application, as ithey are for more standard motion control applications.
    I hope that helps.
    Kind regards,
    Jochen Klier
    National Instruments

  • I need to transition my 1st Generation Apple TV from an older instance of iTunes to a new instance of iTunes on my brand new Mac... How do I "switch" from one instance of iTunes to another? How do I get the 5 Digit Code Network to come back on my Screen?

    I need to transition my 1st Generation Apple TV from an older instance of iTunes on my iBook to a new instance of iTunes on my new Mac... How do I get the 5 digit Network code to come back? Is there anyway for 1st Generation Apple TV to be synched to two instances of iTunes or do I have to choose one or the other? I appreciate any advice or suggestions. Thanks!

    The 5 digit code is every time different. That does not matter. Just integrate every device into your network.
    You can connect many computers to Apple TV but syncronisation works exactly with one computer. That's why I use "streaming". But you can sync one computer, then another, and so on. The content on your Apple TV is the content from your computer that has synced last. But you can not mix it.
    The new Apple TV has no syncronisation. Everything is streamed,
    Regards,
    Torsten,
    Germany

Maybe you are looking for