Get Shared Variable List function
I have created a Project; when I use "Get Shared Variable List" function, I'm enountering this error: "Error 1055 occurred at Property Node in Mechanical Room1.lvlib:MechRoom5.vi; Object reference is invalid". I've just connected the name of the process the shared variable is belong to. The vi is also in this Project library. I appreciate any help.
Hi,
I've created an example vi which should help out. It gets a list of all processes deployed, and then returns a list of variables for each of those processes.
This should help to make sure that you are specifying a valid process name to the function, as this could be the cause of the error.
Try running this and see if you get the same error. If you do then can you post your project files, or a smaller project that still shows the problem, and I'll take a further look at this for you.
Regards
Hannah
NIUK & Ireland
Attachments:
get variables.vi 15 KB
Similar Messages
-
How to use the "Get Shared Variable List" VI on an RT target?
Hello,
I'd like to programatically iterate through all the shared variables in a library hosted on my CompactRIO. I dropped the "Get Shared Variable List" VI into my Real-Time VI, but when I tried deploying it, LabVIEW said
Deploying PRC_GetVarList.viPRC_GetVarList.vi loaded with errors on the target and was closed.
LabVIEW: Failed to load shared library dscProc.dll:ni_lvdsc_process_GetTagListEnd:C. Ensure that the library is present on the RT target. Use MAX to install NI software or FTP to transfer custom libraries to the RT target.
LabVIEW: Failed to load shared library dscProc.dll:ni_lvdsc_process_GetTagListBegin:C. Ensure that the library is present on the RT target. Use MAX to install NI software or FTP to transfer custom libraries to the RT target.
I looked at the MAX Software Wizard, but couldn't find any DSC-related modules. Where should I be looking?
Thanks!
Solved!
Go to Solution.Hello,
The DSC palette is not supported on Real-Time VIs and will lead to errors when deployed. Unfortunately, to have a successful build you will need to modify your application and remove any of the VIs from the DSC palette on your RT Target.
Regards,
M. Whitaker
ni.com/support -
How is work "Get Shared Variable List with another computer " ?
Hi all
I can't receive the list of Shared Variables from another computer .
From localhost computer I received it.
Why?
Regards
IskanderFirst the stupid questions...
Are you sure the variables have been deployed on the other computer?
Are you sure you have the right IP Address?
Could your IT department be blocking you?
Could Windows firewall be blocking you?
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines -
How to create an array containing shared variable values
Hi
I am trying to programmatically create an array containing shared variable values and their names. I can get the variable names by supplying the process name to the get shared variable list function. How do I then read the value of all the shared variable items returned?
I have used a data socket open to open a connection to all variables when my program starts. I then use datasocket read on the opened connections to write to an array. This works fine until I try to write to one of the variables using a shared variable node. The variables writes can take from 4secs to 2 mins. When I remove the shared variable node again all is fine. Also when I stop using the data sockets, all is fine.
Is there a conflict between shared variable nodes and data socket writes to the shared variables?
Can anyone help? I cannot easily post example code because I am reading the variables from a Wago PFC (PLC) using OPC.Hi
Sorry I forgot to mention the LabVIEW version, its 8.20. I have tried saving the shared variable node as a sub VI and it makes no difference.
Attached is a stripped down version of the software. You will not be able to connect to the IO server because it requires some Wago hardware and software. You may spot something I have done wrong with the I/O servers, variables or sub VI's.
The main program that runs is called 'HMI Engine' in the 'Framework' folder. There may be some other things in the project that aren't used in this example. I have removed all but the variable connection part of the code.
I hope someone can help!?
Thanks
Mark.
Attachments:
HMI Test.zip 144 KB -
Shared variables don't have tips?
Am I missing something here? I understand I cannot enter tip information for VIs or functions, and only for controls, indicators or constants, but shouldn't shared variables logically fall into a tip-enabled category? New developers assigned to our projects with the variable architecture already defined need a way to quickly refer to what indexes to use, and tip would be much more convenient than opening up the description in properties. This won't be the first time I've blatantly missed something obvious, so feel free to rub it in my face if I'm overlooking something.
RI've found you can't get the information by highlighting a shared variable dropped into a VI, but rather by just hovering your cursor over the variable in the shared variables list in the project window.
-
Peculiar behavior of Shared Variable RT FIFO
I'm trying to "leverage" the enhanced TCP/IP and Shared Variable properties of LabView 8.5. My application involves (among other things) doing continuous sampling (16 channels, 1KHz/channel) using 6-year-old PXIs (Pentium III) and streaming data to the host. I developed a small test routine that was more than capable of handling this data rate, even when I had the host put a 20msec wait between attending to the PXI (to simulate other processing on the host). To do this, I enabled the "RT FIFO" property of the Shared Variable (which was an array of 16 I16 integers) and specified a buffer size of 50 (that's 50 arrays). Key to making this work was figuring out the "error codes" associated with the SV RT FIFO, particularly the one that says the FIFO is empty (so don't save the "non-data" that is present).
Flush with success, I started developing a more realistic routine that involves rather more traffic between Host and Remote, including the passing back and forth of "event" data. These include, among other things, "state variables" to enable both host and remote to run state machines that stay "in sync"; in addition, the PXI also acquires digital data (button pushes, etc.) which are other "events" to be sent to the Host and streamed to disk. I developed the dual state-machine model without including the "analog data" machine, just to get the design of the Host/Remote system down and deal with exchanging digital data through other Shared Variables. Along the way, I decided to make these also use an RT FIFO, as I didn't want to "miss" any data. One problem I had noticed when using Shared Variables is the difficulty of telling "is this new?", i.e. is the variable present one that has been already read (and processed) or something that needs processing. I ended up adopting something of a kludge for the events by including an incrementing "event ID" that could be tested to see if it was "new".
Today, I put the two routines together by adding the "generate 16-channels of integer data at 1 KHz and send it to the Host via the Shared Variable" code to my existing Host/Remote state machine. I used exactly the same logic I'd previously employed to monitor the RT FIFO associated with this Shared Variable (basically, the Host reads the SV, then looks at the error code -- a value of -2220 means "Shared Variable FIFO Read Buffer Empty", so the value you just read is an "old" value, so throw it away). Very sad -- my code threw EVERYTHING away! No matter how slowly the Host ran, the indicator always said that the Shared Variable FIFO Read Buffer was empty! This wasn't true -- if I ignored the flag, and saved anyway, I saw reasonable-looking data (I was generating a sinusoid, and I saw numbers going up and down). The trouble was that I read many more points than were actually generated, since I read the same values multiple times!
Looking at the code, the error line coming into the Shared Variable (before it was read) was -2220, and it remained so after it was read. How could this be? One possibility is that my other Shared Variables were mucking up the error line, but I would have thought that the SV Engine handling reading my "analog data" SV would have set the error line appropriately for my variable. On a hunch, I turned of the RT FIFO on the two Event shared variables, and wouldn't you know, this more-or-less fixed it!
But why? What is the point of having a shared variable "attached" to an error line and having it return "Shared Variable FIFO Read Buffer Empty" if it doesn't apply to its own Read Buffer? This seems to me to be a very serious bug that renders this extremely useful feature almost worthless (certainly mega-frustrating). The beauty of the new Shared Variable structure and the new code in Version 8.5 is that it does seem to allow better and faster communication in real-time using TCP/IP, so we can devote the PXI to "real-time" chores (data acquisition, perhaps stimulus generation) and let the PC handle data streaming, displays, controls, etc.
Has anyone been successful in developing a data-streaming application using shared variables between a PXI and and PC, particularly one with multiple real-time streams (such as mine, where I have an analog stream from the PXI at 16 * 1KHz, a digital stream from the PXI at irregular intervalus, but possibly up to 300 Hz, and "control" information going between PC and PXI to keep them in step)? Note that I'm attempting to "modernize" some Version 7 code that (in the absence of a good communication mechanism) is something of a nightmare, with data being kept in PXI memory, written on occasion to the PXI hard drive (!), and then eventually being written up to the PC; in addition, because the data "stayed" on the PXI, we split the signal and ran a second A/D board in the PC just so we could "see" the signal and create a display. How much better to get the PXI to send the data to the PC, which can sock it away and take samples from the data stream to display as they fly by on their way to the hard drive!
But I need to get Shared Variables (or something similar) working more "understandably" first ...
Bob SchorBob,
The error lines passed into and out of functions are just just clusters with a status boolean, an error code, and an error string, and are not "attached" to a particular function as you describe in your post. Most functions have an error in input and an error out output, and most functions will simply do nothing except pass through the error cluster if the error in status is True (to verify this for yourself, double click on a function such as a DAQmx Read or Write and look at the block diagram. If there is an error passed in, no read/write occurs). This helps prevent unwanted code from executing when an error does arise in your program. By wiring the error cluster from your other shared variables to your analog data variable, you're essentially telling LabVIEW that these functions are related and that your analog data variable depends requires that the other shared variables are functioning properly. The error wire is a great way to enforce the flow of your program, but you must always consider how it will affect other functions if an error does arise.
Anyways, it's great that you have things more or less working at the moment. Keep us all updated! -
Valid shared variable output does not work!
I am having a problem getting the string to shared variable to function correctly. Specifically the "Valid Shared Variable?" output. It always give a false output even when I know the variable is deployed. Could it be that it only functions correctly on shared variables from the localhost and not a remote system? If so is there another way to check?
Thanks
ToddThere is a community example on this at http://decibel.ni.com/content/docs/DOC-3861
The DLL is included in DSC, but if you have 2009 you may have to relink it. There is a boolean output for valid in this as well. Pop this in a subvi, and you have the functionality you are looking for.
Rob K
Measurements Mechanical Engineer (C-Series, USB X-Series)
National Instruments
CompactRIO Developers Guide
CompactRIO Out of the Box Video -
Shared variable engine memory problem
Hello,
I have a lot of problems with DSC 8. The server that worked very well in DSC 7, in DSC 8 is creating a lot of problems starting with memory leaks in tagsrv process. I have over 5000 shared variables and when I publish them the tagsrv is around 90Mb of memory. After approx. 30 min is around 130Mb and so on until the computer becomes useless. If I restart the computer the process is the same, even if I don't start the VI that updates the shared variables. I tried to uncheck different things in the variables definition like: no alarming, no buffering, no scaling, with no improvement.
Is there a way to undeploy the shared variables or processes manually, not from the labview project, or Variable Manager. To undeploy the mentioned library with the Variable Manager takes more that an hour (just to enumerate all the shared variables).
Any suggestion is welcomed,
cosmincosmin,
I have several thoughts for you. First, I recommend
splitting up
your 5000 variable library into a set of smaller libraries. In
contrast
with the LabVIEW DSC 7 engine, the LabVIEW 8 Shared Variable Engine is
optimized for multiple smaller libraries. I would recommend
having at
most about 1000 variables per library. You'll see some different
recommendations from different people at NI, but in my personal
experience I
think 1000 is about as many Shared Variables that can be easily managed
at
once. For your case this would mean having 1000 variables in 5
different
libraries. --Splitting up your library gives you the added
benefit of being able to
undeploy/disable individual libraries without affecting the other
libraries. Unfortunately, the SCF migration tool will not do this
for you manually so it may take a little time to get everything
organized.
Your comment about ever-increasing memory usage is
concerning. Do
you see this while deploying your library, or while writing
values? If
you write to values very fast (like in an untimed loop) for an extended
period
of time memory usage will increase as the variable buffers
increase.
Please elaborate more on this topic and let me know what happens if you
separate your variables into multiple libraries. I was not able
to reproduce this on a similarly spec'd computer using 10 libraries of
500 variables each.
You can programmatically undeploy libraries using the delete process VI
on the DSC Engine Control palette in LabVIEW. Use this VI in combination
with the get process list VI to quickly remove all currently deployed
libraries.
Also, regarding your question about why variables sometimes show up the
Published Variable Monitor window; the different utilities you described may
use different methods to get that variable list. These methods behave
differently depending on how stressed the Shared Variable Engine is. If
you're in the middle of loading a library with 5000 variables I'm not surprised
that the list won't get populated immediately in the Published Variable Monitor
window. After the library successfully loads though, you should be able
to refresh the view and see all the variables.
Regards,
Nick F
LabVIEW R&D
~~ -
I am having EXTREME difficulty trying to establish communications with a Modbus device using LV8.2 shared variables. The device is a Eurotherm 6180XIO Datalogger configured as a Modbus master. The PC and a cFP-1804 are slaves. All IP addresses are set correctly. This approach using shared variables would seem simple, but I can't find any examples or proper guidance on how to get it working. I am trying to avoid having to mess around with TCP/IP, OPC, or any other old-fashioned method.
I have read many threads on related topics but none directly apply to this situation. I have created a library containing a Modbus I/O server and shared variables bound to read and write holding registers. I have followed all recommended tips for creating such variables but I can neither read or write data. All data types are U16 due to Modbus protocol limitations. I have also applied the LV x10 factor in the most significant digit in the register offset (6 digits instead of 5).
I have a cFP-1804 on the same network which reads into the datalogger OK. The registers I use are 31000 (for CH0 on module 0, 31002 for CH1, etc) and the data can be read as FLOAT32. I have updated the firmwate on the 1804 to the latest level. I cannot even get shared variables to read SGL values. Using registers 301001 for CH0 and 301002 for CH1 I can only read U16 values, and not a 2-word SGL.
Third party Modbus simulation software is able to write to and read from registers very easily, but not LabVIEW.
Some questions are:
- do I use a Modbus master or slave as an I/O server in the library as a target for binding the shared variables?
- is there some other wierd translation in register offsets between LabVIEW and traditional Modbus?
- is this actually possible using shared variables or am I wasting my time?Sending the whole 60-character string using a string or array would be the most efficient. I have tried both methods, and these only cause the datalogger to flag a message log but no text is displayed.
For a string variable, I have used the following binding "My Computer\Modbus Test.lvlib\ModbusServer6180\442305", where ModbusServer6180 is a Modbus I/O server configured with the logger IP address, and 42304 is the register offset at the start of the text block in the logger. I need to write to 30 consecutive registers starting with this one. I am not using buffering and have not enabled single writer.
Can anyone confirm whether this method should work in 8.2?
Does the string need a special termination character? -
Compact FieldPoint and Shared Variables
Hi Real-Time community,
let me first to describe my problem: I have a project running perfectly on Windows XP machine. The Real-Time Target (compact FieldPoint) is acquiring a data from different sensors and sends them via Shared Variables to the host machine (WinXP). Now this host application has to migrate to Windows 7 machine, which second Ethernet port is also connected to the compact FieldPoint's network. I have created an installer, it run on Win 7 computer but I I see no data there. Shared Variables are standart network-published. What else I need to configure to get Shared Variables visible over there? Thank you in advance for any helpful hint.
ArmenHi,
we do have the full edition of Signal Express, this is not the problem. We are already logging the information comming from our cFP-1808 : TC-120 and AI-111 module. The problem is that the AI-111 module is a 4 to 20mA module, and we have thermocouple connect to it. We want to read temperature in Signal Express instead of mA.
There's a option in MAX where you can add scaling to a cFP module. This scaling work in MAX, in the OPC server of the cFP, but not in Signal Express. In Signal Express, you still read the mA value.
I know we can add a formula in Signal Express, but we don't want to do that, when there is an other option in MAX.
Thanks -
Shared variable browse in a web published remote panel
Hallo,
I have made a simple VI where the user can select a shared variable and show the current value.
I use a shared variable control to let the user select the variable from the panel.
Everything run smooth if I interact directly on the server where the VI is running.
This VI is published on the web and when I access the VI form a web browser I cannot browse the shared variable list.
The pull down control is empty and the 'browse' text is disabled.
Is there any option to have the shared variable list browsable on the web published panel ?
I think this should be possbile since the VI is running on the server where variables are published.
thank you
GianpieroHi
I suppose you used the shared variable control to implement your vi. In this case i have to inform you are using a ActiveX control that related to LabVIEW remote front panel shows some limitations.
For more details i suggest you to visit this link which contains a list of the limitations you should keep.
http://ae.natinst.com/operations/ae/public.nsf/web/searchinternal/21b9a9c913f54f918625703d004d6fd9?O...
regards
Logan
Matteo C. - Test Engineer -
How can I get a list of available shared variables from my device?
I have to develop a program to connect to many OPC ready devices. I don't have these devices yet but I have setup two PCs. One is simulating a device. Does anyone know how to read a list of the available shared variables on a device or on another PC so that I can use them later on in the program for reading and writing?
Thanks
MattThere is a community example that lays out what I think you want to do. You can find it here:
http://decibel.ni.com/content/docs/DOC-9523
I hope that helps!
National Instruments
Applications Engineer -
Get data in a subreport based on a shared variable from the main report.
Goodd morning,
My question/problem is how to manage this scenario.
I am transfering 2 shared variables (pereiod from /period To, ) from the main report to a subreport and now i would like to get data in this subreport based on these 2 variables...
The problem is that i can not find the shared one in select expert icon...
Could anyone point me to solve this issue?
Thks for any help.
Jose Marin
Crystal Report XI SR3Hello Jos,
I recommend to post this query to the [Crystal Reports Design|SAP Crystal Reports; forum.
This forum is dedicated to topics related to the creation and design of Crystal Report documents. This includes topics such as database connectivity, parameters and parameter prompting, report formulas, record selection formulas, charting, sorting, grouping, totaling, printing, and exporting but also installation and registering.
It is monitored by qualified technicians and you will get a faster response there.
Also, all Crystal Reports Design queries remain in one place and thus can be easily searched in one place.
Best regards,
Falk -
Variable list of parameters in PL/SQL functions
As I know, PL/SQL decode function can be called with
variable number of parameters:
decode (a, b, c);
decode (a, b, c, d, e);
decode (a, b, c, d, e, f, g);
How is is possible to implement a PL/SQL procedure or function like decode, which is usable with a variable list
of arguments.
Is there another way instead of using overloading?
Thanks in advance
Stefan RichterImplement it with the IF..ELSIF condition.
-
Is there any function module to get the variables used in a query?
Hi experts
Please, do you know if is there any function module to get the variables used in a query?
Thanks and regards
LuisHi Srini
Yes, I have checked the tables but I need a function module
Thanks anyway!
Luis
Maybe you are looking for
-
Photo Gallery thumbnails in business catalyst render in different sizes in different browsers
Photo Gallery thumbnails in business catalyst render in different sizes in safari and chrome but are fine in firefox. What is the issue with Safari? I have tried the different algorithm options such as fill_proportional etc and firefox is the only br
-
Report ... conversion for fiscal year representation
have a report which prints the actuals for a fiscal year . Its like each country has their own fiscal year representation , The report is currently printing the data based on its own fiscal year representation , i have to modify the report and want i
-
Hi, I realise you're still finalising the documentation and various areas may be a little sparse at the moment. With this in mind I was wondering if you could help me out the manipulation of some of your classes. I want to iterate over all the keys i
-
When I select "Convert" using the Adobe PDF conversion - I get "Error signing in"
When I select "Convert" using the Adobe PDF conversion - I get "Error signing in"
-
After Updates on Shut down, I see HPInvent logo and Windows doesnt run
Been working out some bugs. Was using this laptop for work and work was always installing this and that for us to use. Bad medicine! Computer quit working correctly. After awhile I opened it up again to apply new knowledge. Explorer would not respond