Select one of several FPGA VIs at runtime under RT program control

I need a CRIO RT controller to select one of several FPGA VIs (or bitfiles) at runtime based on an operating mode parameter.
The application requires the FPGA to acquire and process data using several different techniques based on a user supplied mode parameter.  Each individual technique will fit into the FPGA, but there is not enough room to fit all of the techniques into the FPGA at the same time.  Therefore, I need a way to programmatically select one of the FPGA VIs or bitfiles at runtime.  The processed data is transferred to the RT through a common DMA FIFO, and all controls and I/O can be the same for each of the VIs.
I tried using a Case Structure on the RT to select the appropriate Open FPGA VI Reference call based on the current operating mode.  When I wired the RefNum output from each case to the common output tunnel, I got an error stating that the RefNums were of different types.
I then tried binding the Open FPGA VI Reference calls to TypeDef or StrictTypeDef controls.  In both cases there was an error stating that some of the Open FPGA VI Reference calls were bound to a TypeDef control which had changed.
Is it possible to select an FPGA VI or bitfile at runtime?
If not, is there a way to force the FPGA compiler to layout multiple VIs with the same interface structure so that the RT VI doesn't care which version is running?
If not, any suggestions short of duplicating the entire RT VI for each FPGA instance?
Thanks!

JohnZ wrote:
Is it possible to select an FPGA VI or bitfile at runtime?
Yes, using the FPGA Open VI Reference function as you are already doing, but you need a separate Open FPGA VI reference for each version of the FPGA VI or bitstream.
If not, is there a way to force the FPGA compiler to layout multiple VIs with the same interface structure so that the RT VI doesn't care which version is running?
No, the FPGA VI reference for each FPGA VI will be unique due to information about the interface and VI that is stored as part of the reference. If you are not using DMA in the FPGA VI, then you can use the Upcast function to convert the FPGA Reference into a more generic form which can be used interchangably with other FPGA references that have the same front panel configuration.
If not, any suggestions short of duplicating the entire RT VI for each FPGA instance?
Unfortunately no.
Christian Loew, CLA
Principal Systems Engineer, National Instruments
Please tip your answer providers with kudos.
Any attached Code is provided As Is. It has not been tested or validated as a product, for use in a deployed application or system,
or for use in hazardous environments. You assume all risks for use of the Code and use of the Code is subject
to the Sample Code License Terms which can be found at: http://ni.com/samplecodelicense

Similar Messages

  • Selecting one of several similar records based on a column value

    Ok, here is the table structure:
    test_name     test_count     test_result
    ABC          1          2.5
    ABC          2          2.6
    ABC          3          2.7
    BCD          1          1.5
    CDE          1          3.0
    DEF          1          7.6
    and so on...
    As you can tell, the top three tests are the same test, but have different results, I need to pull just one record which has the highest test count. I tried
    SELECT test_name, test_count, test_result
    FROM test
    WHERE test_count = (
    SELECT max(test_count)
    FROM test)
    ...as you can tell, it will only return ABC, 3, 2.7, while I want it to return ABC test with highest count as well as other 3 tests...please help!

    This is just one of at least three possible ways to do this, but my personal favorite which uses an analytic function:
    sql>select * from test;
    TES TEST_COUNT TEST_RESULT
    ABC          1         2.5
    ABC          2         2.6
    ABC          3         2.7
    BCD          1         1.5
    CDE          1           3
    DEF          1         7.6
    6 rows selected.
    sql>select test_name, test_count, test_result
      2    from (select t.*,
      3                 row_number() over (partition by test_name order by test_result desc) rn
      4            from test t)
      5   where rn = 1;
    TES TEST_COUNT TEST_RESULT
    ABC          3         2.7
    BCD          1         1.5
    CDE          1           3
    DEF          1         7.6
    4 rows selected.

  • When I open Firefox I have to try several times because a Runtime Error with the program C:\Windows\System32\regsvr32.exe

    when I open Firefox I have to try several times because a Runtime Error with the program C:\Windows\System32\regsvr32.exe

    '''Try the Firefox Safe Mode''' to see how it works there. The Safe Mode is a troubleshooting mode, which disables most add-ons.''
    ''(If you're not using it, switch to the Default theme.)''
    * You can open the Firefox 4.0+ Safe Mode by holding the '''Shift''' key when you use the Firefox desktop or Start menu shortcut.
    * Or use the Help menu item and click on the '''Restart with Add-ons Disabled...''' menu item while Firefox is running.
    ''Don't select anything right now, just use "Continue in Safe Mode."''
    ''To exit the Firefox Safe Mode, just close Firefox and wait a few seconds before using the Firefox shortcut (without the Shift key) to open it again.''
    '''''If it is good in the Firefox Safe Mode''''', your problem is probably caused by an extension, and you need to figure out which one.
    Please follow the [[Troubleshooting extensions and themes]] article for that.
    ''When you figure out what's causing your issues, please let us know. It might help other users who have the same problem.''

  • Select one record attempt

    I have a form in CF 8 that lists several records depending on
    the query results.
    Each time I hit the select button it goes to the action page
    (second.cfm) and all the records show even though I just selected
    for one record.
    Here is my form:
    <FORM ACTION="second.cfm" METHOD="POST">
    <TABLE WIDTH="600" BORDER="1" ALIGN="CENTER">
    <TR>
    <TH align=left>City</TH>
    <TH align=left>State</TH>
    <TH align=left>County</TH>
    <TH align=left>SELECT ONLY ONE</TH>
    </TR>
    <CFOUTPUT QUERY="getMailingList">
    <TR>
    <TD align=left>#City#</</TD>
    <TD align=left>#State#</td>
    <TD align=left>#County#</TD>
    <TD align=left><INPUT TYPE="Submit"
    value="SELECT"></TD>
    </TR>
    </CFOUTPUT>
    <tr>
    <td colspan="8">
    </td>
    </tr>
    </TABLE>
    </FORM>
    My second.cfm page:
    <cfoutput>
    #form.City#<br>
    #form.State#<br>
    #form.County#
    </cfoutput>
    Even though I select one selection (submit) for the specific
    record I always get all the records.
    Please advise how to make this work where I hit the select
    button and it should give me the one record I selected to show up
    in the second.cfm page.

    The form code you posted does not contain anything resembling
    an input or select in which you can specify what you want.

  • Change JDBC select SQL query's where clause at runtime

    Hi,
    I have one JDBC sender channel with Select SQL Query which helps in fetching data from JDE table. We have defined where clause to fetch some particular records i.e. if ABC = NULL then fetch the record.. and then update query is used to turn that flag to "Y" i.e. ABC ="Y" so that next time the channel don't pick the same records again.
    Now the problem is that if we want to fetch some records again whose flag has been set to "Y" we cannot change the select query again and again in the production environment.
    Is there any way to change the select query of the JDBC channel at runtime e.g. Picking up some flat file where the conditions for the particular records to be picked are defined (ID=123) and changing the WHERE clause of select query in the JDBC channel for those records to be picked without using BPM.
    Thank you!
    With regards,
    Simran

    Hi Simran,
    Yes, it is possible with the help of store procedure. In SQL Server there is a IF-Else Conditional block, which you can use inside store procedure. Create a SP with 2 additional parameter something like FlagReadAgain and KeyField. Pass the flag always as True or False. For the Key field pass the record key which you want to read again if you are passing the Flag as True else pass it as 0 or whatever.
    In the procedure check if the value of flag is True -> If yes, Read the entry with key name specified in where part.
    In the else part put the query which you are using for the normal flow.
    IF (FlagReadAgain) = TRUE
    BEGIN
       SELECT EmpName, EmpAddress
       FROM Employee
       WHERE EmpID = 'E001'
    END
    ELSE
       BEGIN
         SELECT EmpName, EmpAddress
         FROM Employee
         WHERE Status = 'N'
       END
    You may also use the approach which Srini mentioned. Create an application to restore any value to intial stage so that it can be picked up by XI when it poll again.
    Choose any approach which you like.
    Regards,
    Jitender Chauhan

  • Preview is opening unselected documents in addition to the selected one.

    Preview is opening unselected documents in addition to the selected one. Recently upgraded to Mountain Lion. Tried tweaking the Preferences, but no effect.

    This is part of the resume feature of Preview, similar to Safari opening the last viewed pages when reopened. There are several methods to avoid this behavior. Clicking the red dot in the upper left corner before quitting Preview is one method. Also, clicking on the Preview menu, press and hold the option key, and then choose Quit and Close All Windows, A third method is to choose Close Window from the File menu on the document before closing Preview.

  • Error 7 during assemble test Vis for runtime distribution

    I get this error when assembling VIs for Runtime Dist. Probably can't find a file but which Vi is the problem? I tried to open diagram for TestStand - Call Package VIs for Distribution.vi to find the problem vi but it is password protected.
    Attachments:
    ts_error7.bmp ‏1678 KB

    The code was written in LV 6i and I mass compiled it using LV 7. I was able to assemble for distribution in TS 2.0 but I received an runtime error (VI not executable). I figured that since this code was saved as an llb with vi.lib included I had to remove the vi.lib VIs and reload th source in LV 7.0. I deleted a needed control when I did this and that was what was missing. I included the missing control and was able to assemble my VIs for runtime distribution. One question remains... During a mass compile shouldn't the vi.lib VIs be replaced by the newer versions?

  • I had to select one set of commands applied to build array VI to be disabled after the first iteration

    I 'am attaching one VI . here my intention is to stop the program from taking 19-0 commands after first iteration.And when I click the case selector to true  then the cpmmands from 163-170 to be read by the for or while loop  . Can i expect kind help?
    Attachments:
    translation case.png ‏86 KB

    Setup your serial port before your main loop.  Close it afterwards.
    Look into the Select function in the comparison palette.  You can wire your arrays (or better yet, strings) to each of the outside terminals and wire your button to the select input.  Wire the output to the VISA write.
    Instead of type cast, use Byte Array to String and String to Byte Array.
    You probably don't need the buttons and case structures in the inner loop.
    You are reading all of the bytes in the port, but you are only looking at the first one.  As stated in 3, use the String to Byte Array.  Use the Search 1D Array to see if your character 27 came through (the resulting index will be negative if it wasn't found).
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Selection one or multiple task

    Hi,
    i'am working with labview 2013 and I would like to select on the front panel one or several task of input analog measure, i know how to do with one task but i don't know how to do with multiple task, could i merge two task in one?
    Thanks!
    Solved!
    Go to Solution.

    s² wrote:
    Hello,
    Some channels are associated with a device (for example Ai0:6 to device 1 and Ai7:10 to device 2) and i want to have the possibility to select what device i want to "measure" by selecting it very simply on the front panel (for example with a single/multiple task selection system)
    thanks
    And your problem is what exactly?
    Jeff

  • Just upgraded my ipad 2 software to iso7 and all my Video name titles have gone? I have 4 films on the ipad and I share about 200 films from my pc, now to watch a film I need to randomly select one to see which film it is before I play it.. This is bad!

    Just upgraded my ipad 2 software to iso7 and all my Video name titles have gone? I have 4 films on the ipad and I share about 200 films from my pc, now to watch a film I need to randomly select one to see which film it is before I play it.. This can’t be right! Help!!

    You cannot go back to an earlier version of iOS.
    If you are having Wi-Fi problems I suggest going to some location that offered free Wi-Fi. Your library or a Starbucks perhaps. Does your iPad connect there and work well?
    If your iPad works well there you can eliminate the iPad and it's iOS as the cause of your problem.
    If your iPad still acts up when connecting to the other Wi-Fi sources I'd suggest a visit to an Apple store to help discover the problem. Be sure to make an appointment prior to going to the Apple store.

  • Text input in a Select One Choice Component

    Is there a simple way to enable text input in a Select One Choice Component or do I need to use an LOV or other component to provide that functionality?

    You should only use LOV.

  • How to get a value from  select one choice (created by static view)

    Hi,
    Whene ever Iam trying to get value from select one choice which is created by static view iam getting only index.How to get the actual value in 11g .please help me anybody .Thanx in advance....
    Edited by: 874530 on Jul 22, 2011 11:05 PM

    Thnax for your quick reply..
    Iam using 11.1.1.3.0 version.
    My code is
    <af:selectOneChoice value="#{bindings.DenialLevel.inputValue}"
    label="#{bindings.DenialLevel.label}"
    required="#{bindings.DenialLevel.hints.mandatory}"
    shortDesc="#{bindings.DenialLevel.hints.tooltip}"
    id="soc2"
    valuePassThru="true"
    binding="#{backing_denialcomment.denialLevelList}">
    <f:selectItems value="#{bindings.DenialLevel.items}" id="si6"/>
    </af:selectOneChoice>
    and in bean am not able to get value of attribute .Iam getting only index...

  • Get selected value from a select one choice in the bean

    I'm trying to do with the SelectOneChoice valueChangeListener and this is the code of my method, I'm using jdeveloper11g if alguin can help as I need the value you selected in the bean
    public void cambioCombo(ValueChangeEvent valueChangeEvent) {
    CoreSelectOneChoice csoc = (CoreSelectOneChoice) valueChangeEvent.getSource();
    List childList = csoc.getChildren();
    for (int i = 0; i < childList.size(); i++) {
    if (childList.get(i) instanceof CoreSelectItem){
    CoreSelectItem csi = (CoreSelectItem) childList.get(i);
    if (((String)csi.getValue()).equals((String) valueChangeEvent.getNewValue()) ){
    System.out.println("------------>"+csi.getLabel());
    I get the following error when running the application and selecting in my select one choice
    oracle.adf.view.rich.component.rich.input.RichSelectOneChoice cannot be cast to org.apache.myfaces.trinidad.component.core.input.CoreSelectOneChoice

    This is an example of some code that i wrote.
    public void changeDesc(ValueChangeEvent valueChangeEvent) {
    // Add event code here...
    System.out.println("value "+ valueChangeEvent.getNewValue().toString());
    //System.out.println("old value "+ valueChangeEvent.getOldValue().toString());
    if (valueChangeEvent.getNewValue().toString().equals("Area Uno")){
    this.descripcion.setValue("RR.HH");
    } else {
    this.descripcion.setValue("Finanzas");
    AdfFacesContext.getCurrentInstance().addPartialTarget(this.descripcion);
    For get the Value select in the "SelectOneChice" component i use this: valueChangeEvent.getNewValue().toString()
    cheers

  • When I try to sign in to the support community using one of my email addresses it asks for my apple support community user name and when I type in what I think it might be I get one of several messeges Ie. An account using this e-mail address already exis

    When I try to sign in to the support community using one of my e-mail addresses and I put in nothing or what I thought was my apple support community user name I can get one of several messages
    Ie.1. Please specify a user name
    2.An account using this e-mail address already exists; only one account per e-mail address is allowed on Apple Support Communities
    How do I find out what my Apple Support Communities user name is

    Good luck with this!!!
    EVEN USING what WAS my Username, this is the exact problem I am having having entered my correct ID and Password.
    Rgds
    Rod

  • Clearing of open items from one Bank Account to one or several customer A/C

    The requirement herein is to do the Posting & clearing of open items from one Bank Account to one or several customer Accounts. We will have to use the Standard program RFBIBL00 to achieve this because the program can do the posting and clearing of open items. I know that we will have to use the structures BSELK (Header) & BSELP (item) to get the clearing functionality as well. Now the question is to which field we will map the Bank A/C No. and the Customer Clearing A/C. I need help on mapping the data to correct structure fields. I thought about it and I think the data should be arranged like the following:
    BGR00- Session Header
    BBKPF- Header
    BBSEG- Doc. data (Bank Account BBSEG-BANKN )----Can you confirm ??
    BSELK-AGKON (Customer A/C- open item/ Header )
    BSELP - Line Item
    BSELK-AGKON (Customer A/C- open item/ Header )
    BSELP - Line Item
    BSELK-AGKON (Customer A/C- open item/ Header )
    BSELP - Line Item
    I know that the clearing can happen from one Bank A/C to several customer accounts. I am thinking on building up data in this format & then writing it to a file to sumbit the file data to RFBIBL00. Can anybody help me in building up the data. Kindly provide your helpful insights. I want to be sure if this is correct or not ?? One more question how to fill the BSELP structure ??

    Solved Through forum

Maybe you are looking for