Denver - ALARM

cancel
Showing results for 
Search instead for 
Did you mean: 

Shared Variable Issues Spreadsheet

Please add any new issues and feedback items regarding variables (shared and I/O) at the bottom of this spreadsheet.

Issue #Reported byDescriptionInitial Response (may be forward looking)Resolution
1David ThomsonThere is no way to search for shared variables.  (I love NI.  You guys are brilliant.  But frankly, this is incredible.  It simply astounds me that Shared Variables would be released without a Search feature being implemented.  SV's are basically globals, right?  You KNOW what the problem with globals is - race conditions.  How can one ever hope to debug those when you can't find where the heck all the SV are?)  (And yes, I'm aware of the ugly kludge of deleting the varibable so as to search for the resulting errors.)Black eye on the variable.  Well, needed other features.  In 09, part of that feature is added.  Not in traditional ctl-f.  Some right click options on the node in project and the variable nodes themselves.  Will point to all VI's that have the SV, but not the node itself.  Feature is in the beta.  Choice between that and nothing.  David:  "Something is better than nothing"  NI still trying to envision the full search.  Battle of the resources.  NI recognizes this is important. LV 2009: Project Find for Variables
2David ThomsonSV's cannot be type-def'ed.  Make a SV with a custom data type.  Update the data type type-def.  The SV now breaks the code...  Probably has to do with propagating the type-def to all the possible receivers across the network...Same question asked by Steve.  NI trying to hash out plans for working on down the road.  NI wants to work on it.  Need full relationship with the type-def linker.  David glad to see it's on the roadmap.Will be addressed soon.
3David ThomsonThe first time a SV is read, it returns meaningless default data and sets the connection.  http://digital.ni.com/public.nsf/allkb/7DBC2C3E95AFD85C86257442005CF74C  Whoa!  I should hope we could do better than that.  Also, I don't understand what is meant by "relative to the target" on the dev zone article.A CAR has been assigned.  The DevZone article needs updating; the error code was not accurate.  Error should be negative  "Error -1950679034: (Hex 0x8BBB0006) The shared variable has no value." . This has improved in 8.6.  Hopefully in LV 2009 it only returns when no value really exists.

To avoid this problem, show timeouts, can block on the value.  Right click on terminal to set a timeout and then use the boolean "timeout?" to act accordingly.

A warning will happen when no value has been written to the SV, or when there is a connection time lag (first read when hit run button and the VI will try to open connection, but by time get to node, it might not have connected in time)

For LV 2009 we will have programmatic API to talk to variables other than DataSocket; still an Open, Read, Write, Close.  DS has DS specific stuff.  NI will build an API that will evolve to do all SVE stuff.  Initial release in LV 2009 will not have all features (logging and alarming) but is a #1 priority.  Nancy:  "Very Nice!!!"

There is a TAG API on the NI Labs.  The user can type in url of lib in project and it will open reference to all shared variables in the lib and the user can read and write all properties and the values.  (ni.com/labs)  Called the LV DSC Module Tag API.
LV 2009: Programmatic API
4David ThomsonI created an app on my desktop which deployed SV's to the desktop and communicated with the RT on a cRIO.  Worked fine.  Took the code to the customer, copied the code to their laptop, didn't work.  Tried deploying SV's to the RT as well as to the Windows host.  No difference.  (Details:  I wrote three different RT apps, then loaded them all onto the RT memory.  The host app connects to the RT and starts one of the apps (selected by a config file) that is already on the RT.  The app starts, but the SV's never connect.  To resolve this, I gave up on precompiling and loading the RT apps and I have the user start the RT app from the host every time.  Then the SV's work.  But this is not acceptable for fully autonomous systems.)Also issue #15.  Similar to issue #23.  The problem is the step of deployment and the step of run-time variable use.  Deployment sends configuration to where the variable is.  But is deploymen is not done, the RT app will have problems.  Need a self contained app that will deploy it's own variables.  In short term, there is a web-downloadable RT system replication VI (and in 09).  Will go to live RT target and will know what to look for on the system.  Will take along all the right varibles and settings.  That is one approach that works for RT.  In 09 can include libraries and variable to deploy when the EXE executes on Windows (not RT).  When build the EXE, when useing SV libraries, will automatically pull them in.   On RT and manually include lib.

WRT David's issues:  Watch the CPU usage and memory usage.  If they are deployed and windows says they are deployed then it sounds like a CPU usage issue.
Will be addressed in a future version. We plan on adding functionality to the Programmatic API for deployment that is not tied into the project.
5David ThomsonTotally bizzarro - probably impossible to duplicate.  Third party spectroscopy software uses a key file based on NIC address.  So LV has to init that device with a particular NIC enabled.  But due to the local network environoment, we need to run with that NIC off and another NIC on.  However, depending on which NIC is on, we get different SV behavior.  In one case, all SV's work.  In another case, all (about 3 dozen) but two SV's work.  Those two just never get updated values.  The workaround is to very carefully sequence which NIC is on when as the system comes up.Need to work with support team to try to reproduce.  David:  "how chose NIC and how connect seems to have effect".  NI says try to restart the service. Support Issue
6David ThomsonProbably impossible to duplicate, but I swear it was real.  I made a new SV of an array of Booleans.  I initialized it to 4 Falses in the host program.  The RT program reads them and sets four FPGA relays appropriately.  Probing the RT program showed that it had an array of 4 Falses.  Then in the Host, to change one, I read the SV and insert a new value into the array of 4, then write the resulting new array back to the SV.  (The SV serves as my memory of the relay states.)  When this happens, the Read in the host gets an empty array.  The insert does nothing, resulting in an empty array, and the Write from the Host then sends an empty array to the RT.  The RT sees that empty array and the Index function pulls out False for every value.  Turns all the relays off.  Can't turn them on.  It appears that RT can read it, host can write it, but host can't read it.  To fix this, I had to delete the SV and create a new one.  Different name but exactly the same programming.  Then it worked!NI can't really comment without getting hands on it.  Make sure watching the error terminals.  Make sure wire the error cluster, data will be the default for data type on error.  New religion at NI, wire the error cluster on the shared variable.  This is not just a global variable.Support Issue
7David ThomsonIn order for the host laptop to talk to the cRIO RT with SV's, I had to edit the Windows Firewall to allow certain exceptions.  These were documented on the dev zone.  This was 6 months ago.  A few months later, a Windows Update was pushed out and SV's stopped working again.  I could not find any updated info on the dev zone, nor could I find what else to change on the Windows Firewall.  We had to disable the Firewall.Exceptions should still be the same.  David 8.2.  With improvement in 8.5 and the transport, then could be different set of ports.  NI will look at the dev zone.  David - A recent web search yielded this: http://zone.ni.com/reference/en-XX/help/371361D-01/lvhowto/psp_firewall/ which is part of the 8.5 LV manual, but for some reason didn't come up on searches of ni.com a year ago.  Anyway, this seems to fix it.
Support Issue
8Nancy HollenbackSo why is the Distributed System Manager so pokey at times.How many.  Probably hundreds of vars.  Just a basic network traffic issues.  NI has not seen performance issue.  Steve:  "had window task manager open and DSM - SQL Server was consuming 80% of desktop, support said that in certain situations, SQL server just takes over"  Yes, DSC installed and 8.6.1. DSM makes connection to all expanded variables
9Nancy HollenbackThere are some very good examples in the Datalogging and Monitoring Reference architecture, but for Joe LV Programmer to dig through this and find the goodies is well.. time consuming to say the least.  But then, again I can make $$$ helping clients wade through this large app to get to the golden egg.NI.com/dsc has some getting started material.  Yes it's on the roadmap for Arun. Arun and Nancy will talk offline. LabVIEW Best Practices will be added to product documentation
10Steve DrouilhetThe multi-variable editor allows one to easily edit the properties of many shared variables at once.  Why not all properties?  I especially would like to be able to enable or disable RT FIFO from the multi-variable editor.  Currently, I have to do it one by one, which is a real pain in the butt.CAR has been filed.  The work around is to export to Excel, the edit and then reimport.  Then do it.  Yes, NI says is a kludge.  Right click on library in project to export to Excel.  Steve: "setting something to be target relative or not - not accessible from MVE - is this an oversight?" "Would like to be able to create target relative by default"  NI will look into. 

The reason SP SV is always target relative, scope is within the target.  At one point default was this, but broke other stuff, so NI had to roll it back. 

NI needs to work on this a bit more.
May be addressed soon.
11Steve DrouilhetWhy can't a cluster shared variable have the RT FIFO enabled?Also. it appears that you cannot use RT FIFO NSV's within a built application when the build has the "Enabled Enhanced DSC support" this will crash the exe.LV 2009: Flat cluster datatype support for Variables
12Steve DrouilhetI would like to be able to highlight a group of controls or indicators on the block diagram and do a bulk creation of shared variables from them and also be able to specify whether they will be created as single process or network published shared variables.  This is currently a cumbersome one at a time procedure.8.6 introduced a function block.  All inputs and outputs are variables.  NI looking for feedback.  NI says good feedback.Can be automated using the LV 2009 Programmatic API and VI server methods. Will be addressed soon in property pages.
13Steve DrouilhetFrom what I read, there is only upside to using the RT FIFO with shared variables and no downside.  When would you NOT want to enable the RT FIFO when creating a shared variable?Small memory hit and performance issue.  Depending on the app, could be a performance improvement.

>> Also. it appears that you cannot use RT FIFO NSV's within a built application when the build has the "Enabled Enhanced DSC support" this will crash the exe.
RT FIFO creates an additional process in the background and allocated additional memory. Limited data type support in order to avoid memory allocation during operation.
14Nancy HollenbackI want access to the value of a SV from the property node!!!Incomplete API at this time.  Have not absorbed all DSC functionality in LV.  Not there yet.

>> enableSVDynamicAPI=True will give you the ability to use SV tags with a URL input.  I have been using this to read scan engine IOV's
LV 2009: Programmatic API
15Chris ClarkHey we need John McGlaughlin sp? to say "Issue Number Four!" Dave Thomson's Issue 4 is a classic. I have SVs deployed on an RT FieldPoint target, works great. Change host computer, copy host exe over, check aliases file. Doesn't work, SV error SVs not found. I have to fuss around like a blind woodsman hacking away to get it to work. I can always get it to work but I don't know how.(see #4)Support Issue
16Steve DrouilhetI have created shared variables from a strict type definition custom control.  I would expect the shared variable to update if I change the strict type definition, however it does not.  The data type of the shared variable is static, i.e. it remains the same even if the strict type definition is modified.  This is inconvenient and defeats the purpose of using a strict type definition.Same as #2Will be addressed soon.
17Disable Autodeploy Variables in the project does not seem to work.  Actually, it is just confusing, I thought that disabling autodeploy on 'My Computer' would prevent autodeployment of bound variables to a RT target but you need to also disable autodeploy on each RT target referenced in your windows vi.Feature suggestion. The Disable Autodeploy option is a Per Target setting.
18Please remove old documents and KB articles about NSV's that are not current. Review DevZone articles
17Martin KellerWhen I have a Runtime Menu pulled out (eg. click on "File" on my running VI and leave it pulled out), the VI "DataSocket Open" blocks the execution of my code first, then times out returning error code 56. Why does this happen? Am I doing something wrong or could this be a bug?This is a bug and will file a CAR. Expected behavior: DataSocket API uses UI thread. Blocks on menu usage. Suggestion: use LV 2009 Programmatic API instead.
18Scot BlackfordIt would be very helpful for those of us off site to have conference shared the so that questions and answers could be addressed real time.Included LiveMeeting online conference for most recent ALARM meeting.
19Steve DrouilhetLabVIEW shouldn't allow you to delete a shared variable from a project if it is used in a VI in the project.Want to build a programmatice API to allow users control of the variable configuration and now have the control under the project.Feature suggestion
20Nancy HollenbackWhy does the Create Shared Variable.vi (with DSC) not allow me to specify a Variant data type.  The work around is very cumbersome and I have not seen direct NI documentation on how to do this.2009 API.Variant will be added at some point.
21Nancy Hollenbackneed to dynamically create a process with SVs that will be variants.  I then need to be able to read the actual value back out.  I noticed that the SVE (via the distributed system manager) will recognize a number/boolen and other types even when they are created as a variant.  How ever it does not distinguish an array (ie need the basic data types in the properties dialog when statically creating a SV).  So the only way I know to get the data type for conversion is to save the information in the description of the SVE.  Is there a better way?VI.lib, some VI's in there.  /Utility/Variant.  Will give enum with all the types.  Not promoted as there are some rought edges.  2009 will have API to get property node as variant.

>> Not smart to change data types programmatically.
Get Variant Data Type

Will be considered in future product planning
22Nancy Hollenbackwhy is it faster to use the Citadel Writing API to store data to Citadel than to have the SVE log it automatically?Small performance hit with SVE, Citadel API is just faster.Product behavior due to additional abstraction layers
23Brandon SettlesWhy can't SV's be programmatically deployed from an RT environment? If there is some trick that doesn't involve running an app in Windows, please let me know.

Will be considered in future product planning

24Dave ThomsonSV nodes are the simplest way to transmit data across a network.  Easy to use between a PC and a cRIO by defining both targets in a project that contains a variable library.  But you can't add a second Windows PC to the project.  Data Sockets or the API can be used between PC's, but it would be great if SV nodes could easily be deployed over multiple targets, including multiple PCs.Adding additional Windows PCs as LV targets in the LV project has been considered and will lkkley be added at some point in the future. No timeline on when this feature may be added.
25Dave ThomsonWhen creating new shared variables in the project, the Buffering property is sometimes enabled and sometimes disabled by default. Why is there different behavior?In a LabVIEW installation without the DSC module SVs by default will have Buffering disabled, while with DSC installed the default setting for Buffering is enabled with 50 elements in the buffer.

authored by
Christian L, CLA
Systems Engineering Manager - Automotive and Transportation
NI - Austin, TX


  
0 Kudos
Message 1 of 1
(8,990 Views)