Communicating Between Multiple LabVIEW Executables on different computer using Shared Variables

hi,
I need to develop some executables which will be launched on different computer of a LAN. Some DATA are common. I need to share the data using shared variables.
I usually used LabVIEW so I 'm familiar with shared variables but in this case, the RT target is a part of my
project.
I do I need to procceed in my case?
thanks

Ok but it's not my configuration and I haven't found my answer in the tutorial.
You speak of a case where there is a computer and a RT target under the same LabView project. As I said earlier, I often use labview RT and shared variable between computer and RT target. But I assume here it's different.
My question is : how do you acces to the SVE from 3 computers (without any RT target)? 
1. If I create 3 labview projects using the same Shared Variable, do I need to use the same .lvlib on each project?
2. Is it possible? 
3. How can I configure where the SVE should be? When I use a RT target, It only depends where I put my Lvlib. But here there is 3 projects. 
James
Attachments:
Sans titre.JPG ‏9 KB

Similar Messages

  • Queue data sharing between multiple LabVIEW Executables

    I have 2 LabVIEW Executables(Exe) where one Exe produces data and other one consumes the same. Is there anyway I can use a single queue reference for the same ? First Exe obtains the queue reference number and stores the reference number in V.I.G where as the second Exe read this reference number from this V.I.G. The error from the second VI dequeue was invalid queue reference.
    Is there anyway I can share the same data between different exes with the functionality of a queue ?.
    Solved!
    Go to Solution.

    Ben wrote:
    Each exe is mapped into its own memory space so refs to resource in one context will not work in another but...
    If you exposed an Action Engine in one instance to be used via VI server Invoke Node from the other, the AE (Note: it will be running in the server context) could queue the data in behalf of the client.
    Plese note:
    If the server porcess goes idle all of its resource will be invalidated (including the queue) but a ref to the AE will still be valid. In this case the enqueue op will fail so you have to code to account for this situation. (been there done that )
    This smae approach will work in any network architecture where VI serve can be used. I used this approach about 10 years ago (minus the queue) to allow control of a factory floor from a laptop with a internet connection.
    Ben
    Do you think the same must work with following scenario:
    1. LabVIEW Exe calling a data acquisitio thread dynamically(VI Server) and enqueue the data into a Queue with reference in VIG.
    2. Same Exe calling a TestStand Engine and one sequence inside that calling the same queue to dequeue the data.
    3. Remember that the LabVIEW adapter I use with TestStand is LabVIEW Run-Time Engine(Not development system)

  • How to use shared variables to address multiple Watlow controller​s on the same COM port

    Hello,
    I am trying to use LabVIEW 2010 to control 4 Watlow temperature controllers on one COM port. 3 are Model 96 and 1 is an EZ zone controller. Each controller has a unique modbus address, and I am trying to read from and write to individual registers (such as closed loop setpoint) using shared variables. I am getting return data when reading (although the data appears to be invalid), but am unable to change the value in the register by writing. How can I be sure that the Modbus server is sending commands to the correct controller?
    Chuck
    Solved!
    Go to Solution.

    Peter,
    Thanks for the reply. I have actually solved that problem. I realized that the Modbus server address has to be the same as the controller's Modbus address.
    I have, however, run into another problem. Perhaps you could help me with that. I have a system with 4 Watlow controllers, 3 are series 96 controllers, one is PID only and 2 are ramping. The 4th controller is an EZ zone. I am using RS485 for communications and the controllers are all wired in parallel for communications and power.
    I have set up 2 Modbus servers for 2 of the controllers.
    This is the first I have ever worked with Modbus based communications. I have successfully programmed using the Modbus read/write VIs, and am wanting to move to shared variables. My questions right now revolve around addressing, Modbus I/O servers and COM ports. Specifically, at this point, I know the addresses need to match up between the server and the slave device (Watlow controller in my case), how many servers can I create and use on one COM port? If the number is limited, is there a way I can specify an address that I want the server to talk to? Will the broadcast mode work to request data values from the controllers?
    I'd appreciate any information you can help me with, or if you could point me to some sort of concise 'How-To' for Modbus communication.
    Thanks.
    Chuck

  • Labview 8.2 can't write shared variable

    Hi!
    I developed LV 8.2 program using shared variable (network published) variant type. After extension of variable the vi charased after writing value in shared variable. If i changed shared variable from network published to single proces type the vi working OK.
    Attachments:
    problem.jpg ‏23 KB

    Hello,
    I have created a network published shared variable of type variant, and successfully written to and read from it.  Can you also post a snipet of your code which reproduces the problem?
    General things to try in case include:
    1. undeploy and redeploy the shared variable.
    2. repair your LabVIEW installation - this will repair the variable engine, and I know of at least one case where this helped after it was corrupted.
    I hope this helps!
    Best Regards,
    JLS
    Best,
    JLS
    Sixclear

  • Communication Between Multiple Executables

    I'm building a system that needs to communicate with several different external executables (all were programmed in LabVIEW) at approximately the same time.  I say several because this number is not known until runtime, and I say approximately the same time because all of the executables will be communicating asynchronously.  Essentially I need to receive commands from each executable, put them in a queue of some sort, run a test with my system in the order the commands were received, and then send a result back to each executable.
    Because the number of external executables is not known until runtime, I was thinking about using a network published variable that would be an array of clusters.  I could then tell each executable which array element it should use to communicate with and then when data needs to be sent back and forth I could update or read from this array element in each executable as necessary.  In my VI, I would simply build a watcher that would constantly watch the array to see if new data came in, put this data in a queue, and then process it as necessary.  The communication back to the executables would be handled in the same way (perhaps with a second network published variable only to be used for results).
    The problem with this approach is that I would need to lock the network published variable (a functional global would really help here) while I'm writing to it from each of the executables so I could be sure that I wouldn't miss data.  The number of commands won't be high, but there is a chance that 2 commands could arrive at the same time.  I've played around with this in the Shared Variable Properties dialog ("Single Writer" and "Use Buffering"), but can't seem to get it right.
    I know that I could open a TCP communication port for each executable and then use that port to communicate directly between my program and the executable, but I was wondering if anyone had any other suggestions.  If you've got a suggestion, I'd love to hear about it.  Thanks.

    You can use a network queue. The attached code works very well for us. It is a modified version from some code I got from LAVA several years back. Just unzip this file into your user.lib directly. The queues work like normal queues except they work over TCP. This means your messages will be added to the receiving queue in the order they were sent. Simply dequeue the commands and execute them.
    Mark Yedinak
    "Does anyone know where the love of God goes when the waves turn the minutes to hours?"
    Wreck of the Edmund Fitzgerald - Gordon Lightfoot
    Attachments:
    Network Queue Class.zip ‏361 KB

  • How do I set my firewall settings in Avasti to allow communications between my HP 8600 and my comput

    How do I set my firewall settings in Avasti to allow communications between my HP 8600 and my computer

    Something to Consider:
    If you are talking about "Avast!" Security Software, either the free or the paid version, the following may apply to you:
    There are three main levels of Security in the Avast! software:  Home, Work, and Public
    Home is the setting many people use when "at home", that is, connected to the home network.  The home network is sometimes defined as the "192.168" network:  these are the computers and printers that you have and use in your home environment.  The network is (most usually) private and (should be) secured with with a passphrase at your router.  The Avast! Software sees the "Home" network as a "safe" environment:  devices connected within the "Home" network are allowed to "talk" (communicate) with one another without undue restrictions.
    Work is the next setting.  The software places some restrictions on this level of communication.  Home users can certainly use this setting -- in many (most) cases, the "Work" setting is a solution that provides for communication and a bit more security for the home network and its devices.
    Public is the strictest setting and is meant to keep your computer safe in a public place:  the library, coffee shop, on a street corner.  Outside "prying eyes" are prevented from peeping and outside communications are restricted.
    If you have set (or left) your Avast! software set to Public, or even Work (and you do not know how to handle the restrictions), then you may have simply locked out the communication between the printer and the computer(s) on your home network.
    Open your Avast! Software and set the security level to either "Home" or "Work".
    You can find out more about how to use the software settings at the Avast! website.
    Advanced Users Only - You will  know if you changed the Rules... this is not something one does by accident.
    If you have changed the rules within the settings, you may have locked yourself out.  Make sure you have both "in" and "out" traffic settings adjusted correctly for each rule you change / adapt / add.
    Kind Regards,
    Dragon-Fur

  • Problems with communication across a network using shared variables

    I have two programs(projects) running on two different computers connected with a LAN. I am using LabVIEW 8.0, and the DSC-module. The program on one of the computers have measurements that I want to collect and show on the program running on the other computer on the network. I choose the indicator where I want to show the data, select ''Properties'', ''Data binding'', ''Shared Variable Engine (NI-PSP)'', ''Network Items'' and then browse for a Network...but the problem is that in my ''Network Neighborhood'' There is only one computer...and that is the one I am one...not the computer on my Network that I want to communicate with....
    Have anyone any suggestions on how to solve this?
    Kind regards Mari

    Mari,
    Check this link regarding trouble shooting network-published shared variables:
    http://digital.ni.com/public.nsf/websearch/6E37AC5435E44F9F862570D2005FEF25?OpenDocument
    This might be a firewall issue, so I would check that first.
    Frode

  • LabVIEW 8.0 Run-Time engine & shared variables

    Has LabVIEW 8.0 Run-Time Engine the shared variable's support, I wonder?
    The thing is that .exe with globals/locals runs alright, but beeing replaced with shared variables it refuses to run.
    What's wrong? May be need in library(s) absend?
    Thanks.

    You can use the Shared Variable in the Run-Time Engine (you do not need DSC).
    Can you be more specific about what happens when it refuses to run? Are you seeing an error message?
    If you are using Network-Published shared variables, they need to be deployed before you run the application.  You can either deploy them manually with the project, or your application can programmatically deploy them.  You can find some more information about this in the LabVIEW Help under "Shared Variables and Stand-Alone Applications or Shared Libraries" (follow this link and scroll down to the bottom):
    http://zone.ni.com/reference/en-XX/help/371361A-01/lvconcepts/project_variables/
    -Chris

  • Communication between multiple JVMs

    We have a Java toolkit that is shipped as a JAR file. The toolkit is ported from a C++ DLL running on Windows. Therefore, in both instances (Java and C++), we can't control who loads us or when.
    I need to communicate between different JVMs running on the same machine. The communication is very simple: "Is this user logged on in your JVM?" I send a string to the other JVM and I get back a boolean. I don't need to worry about crossing machine boundaries. Also, I'm not expecting to have a huge number of JVMs running. Maybe 3 or 4 could be likely. However, the solution does need to scale in case there are more than that. I'm not setting a limit on the number of JVMs either.
    The C++ code handled this situation very easily and elegantly. It created a named system semaphore (mutex) whenever a user logged on. The name of the mutex was the username. So, if there were multiple instances of the DLL running in separate processes (EXEs), we could easily tell if this user was logged on in another instance. We'd try to create the system semaphore - it would fail saying the name already exists. Therefore, we'd know the user was already logged on. The named system semaphore provided the means for a machine-global list - which is exactly what we wanted. It also had this extra benefit: if the process terminates normally or abnormally, the system semaphore is removed from memory. This means: the application is terminated, the user is no longer logged on, and we can relog this user on.
    Therefore, I have 2 requirements:
    1) A machine-global list where we can place a string. Keep in mind, it doesn't absolutely have to be a machine-global list. A suitable means to talk to other JVMs is acceptable too.
    2) If the process exits normally or abnormally, the string(s) get removed (for this JVM) from the list. Abnormal termination is the more important one to focus on because lots of people of varying skill levels use our toolkit. Abnormal terminations can be common.
    The first thought is to store these in a file. That solves #1, but not #2. I've seen the JIPC package. However, I'm not too crazy about requiring 3rd party developers to start up another program (JIPC) before they start up their application. As I said, we're just a toolkit so we can't control when or who loads us. It's not totally out of the question, but I'd prefer something else.
    I have a fairly involved solution that involves sockets. The first JVM creates a ServerSocket on a specific port and becomes the server. Subsequent JVMs also try to create the ServerSocket on the same port. They get a BindException because the ServerSocket already exists, so they know they're clients. Then, they create a client socket and talk to the server that way. This gets a little hairy when the server goes away. The clients will scramble to become the server and then all the other clients need to reconnect to the new server.
    This proposed solution sounds like it will address both requirements. However, I'm looking for something simpler. I'm asking this forum for help in case there's an easier way to do this. I don't have the breadth of experience with Java yet to know if there's a simpler way to fix this. If I have to go with the socket solution, I will. I just didn't want to overlook something simple that is already built into Java.
    Thanks for any tips or suggestions

    Thanks for the response.
    FileLock. We still have to target JDK 1.3 so we can't use FileLocks (at this point)
    JNI: That's an interesting idea. I suspect many people are using our software on Windows. Therefore, we could probably fix it in Windows the same as in the C++ code. If they're not on Windows, we could use the Sockets approach.
    I also had another idea: how about hashing the username string into some integer (or long) value. Then use the hashed value to lock some other resource: like the port number passed to ServerSocket. I know ServerSocket only accepts 0 - 0xFFFF so this obviously won't work. But is there some other system-wide thing we could lock given an integral value?

  • How to sync Firefox settings between multiple OS's on one computer or multiple computers

    I have three OS's on a single computer (XP SP3, WIN7 & WIN8. Each OS has it's own Firefox install and of course, different settings in each since they are all handled separately, I have no idea how to synch the user-data from all three different Firefox installations. My goal is to be able to boot up in any of the OS's and have the same user settings/details across all three.
    Once I get that figured out, then I can try to find a way to synch Thunderbird across all three OS's so that mail collected or sent in one OS is shared or synched with Thunderbird on the other two OS's.
    It's probably a tall order and not possible to accomplish, but if I don't ask then I'll never know.
    Thanks in advance for taking the time to read this.
    Ed ~ [email protected]
    Computer details: Windows XP SP3, Windows 7 SP1, Windows 8
    Asus P7P55D m/b, Intel i5 LGA 1156 cpu, Corsair water-cooled CPU HX1000, 16 GB RAM, 14 TB drive space, GT460 Video card, 3 Bluray optical drives, 5 printers, 2 scanners

    hello fastlane, for firefox you can use firefox sync to share bookmarks, passwords & history between your three OSs - [[How do I set up Firefox Sync?]]
    & for keeping your mails synced it's possibly the easiest way to use a mail-provider that offers IMAP, which keeps the mails on the server so that your mail program on any OS has the same data when it's connecting...
    (but we're not specialised on thunderbird here, you might head over to https://getsatisfaction.com/mozilla_messaging/ for more detailed questions).

  • GPIB Communication between multiple devices

    Hello, 
    I am trying to build an application in C# which will be able to send commands to more than one device on the GPIB BUS.
    For example I have 3 devices connected to the computer with addresses as:"GPIB0::18::INSTR","GPIB0::19::INSTR","GPIB0::28::INSTR"
    Now, I know how to communicate with a single device. 
    But is there a way I can send commands to multiple devices. So far I have the following. 
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Ivi.Visa.Interop;
    namespace Step_Attenuator
    public partial class Form1 : Form
    ResourceManager rMgr = new ResourceManager();
    Ivi.Visa.Interop.FormattedIO488 ioobj = new FormattedIO488();
    object resources = null;
    string address1 = "GPIB0::18::INSTR";
    string address2 = "GPIB0::19::INSTR";
    string address3 = "GPIB0::28::INSTR";
    public Form1()
    InitializeComponent();
    private void PsaComm()
    private void Form1_Load(object sender, EventArgs e)
    private void button1_Click(object sender, EventArgs e)
    ioobj.IO = (IMessage)rMgr.Open(address1);
    ioobj.WriteString("*RST");
    But now If I want to send a RST command to say device on address2, do I have to again open the session and send it?
    There are going to be a lot of commands to these devices. I am sure there is a much simpler way to do it. 
    Please pardon me if this seems to be a silly question. 
    Thank You. 

    Hi nmedelec,
    I made a research about “Ivi.Visa.Interop.FormattedIO488” and it seems that it is related with Ivi.Visa.Interop which is a third party product. If you have any issue about a third party, I would recommend you go to the office site for help.
    Thanks for your understanding.
    Best Regards,
    Edward
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

  • Communication between multiple processes

    Hi there!
    I have once again a problem concerning paralel processing in ABAP.
    The problem is that:
    I want to write a programm which invokes a process that can recursive invoke another process and so on.
    Let me try to picture it out:
    -> means invokes
    Main Program -> Thread1
    Thread 1 -> Thread 2
    Thread 2 -> Thread 3
    Thread 2 -> Thread 4
    Thread 4 -> Thread 5
    Thread 5 -> Thread 6
    As you can see I have several Threads invoking another Thread. The structure of Threads invoking each other will be dynamic. Now I face the following problem:
    I want just a few threads to run at the same time (let's say for now 3) and there are dependencies between the Invoker and the invoked Thread (e.g. Thread 3 needs some information from Thread 2).
    How can I let my Main Program know that all the data is ready? Does the WAIT UNTIL statement also applies for these nested threads?
    How does Thread 5 e.g. know that there are already too much processes running and he has to wait?
    Is there a possibility how I can queue these processes?
    sth like:
    Thread 1 - Thread 2 - Thread 3 - Thread 4 - Thread 5 - Thread 6
    If prerequisites for Thread 3 are not fullfilled it would look like:
    Thread 1 - Thread 2 - Thread 4 - Thread 5 - Thread 6
    and so on...
    The problem is the communication over the bounds of Threads. This dynamic structure is neccessary due to the large data amount that I have to handle. Due to restrictions I can only use a function group and a report. No database tables or stuff like that is allowed.
    I hope I was able to point out my problem. If it was to unclear please let me know it, then I will try to specify it more.
    Thank you in advance for your help.
    Best Regards,
    Sebastian

    @ Sandeep:  Thanks for your answer I am going to have a look at that
    @ Thomas: These nested Calls would be useful because of the amount of data that has to be processed. Think about a Tree with over 200.000 entries. For each entry there is the requirement for Check if corresponding dataset is right, if necessary Adapt data and Update on the database.
    The approach with the nested threads would check a single node, looks whether there are child nodes and if so starts a thread for processing the child nodes. These would check each child node and if neccessary starts another thread and so on. Child nodes can only be changed if parent change was successful so I have the dependency right here.
    Yesterday I had another idea that should work:
    My Main Programm first checks the root node and then the direct childs of the root node (1st hierarchy level). Then invokes a thread for each child node which has again child nodes and for which changes applied (2nd hierarchy level. Each thread 'returns' a list of nodes for which once again the main program should invoke another thread and so on. (This would build up a queue for processing within the Main Program)
    It is a similar approach to the think with nested threads but the control structure is more clear and there is no nesting of threads neccessary.
    Thanks and Best Regards,
    Sebastian

  • Communication between multiple page flow portlets

    Hi, I am working on weblogic portal 8.1.
    I've been struggling to communicate between different page flow portlets,
    I have a login page flow portlet and i need to submit login details to indeex page after login action is done.
    I am able to do this by using PageUrl class and RequestDispatcher's forward method using definition label of the index page flow portlet.
    but it is not happening again when i logged out.
    If anybody have worked on it, please let me know the soltution.
    Thanks,
    Vidya sagar

    Not sure whether you tried this option(I tried it works for me).
    configuration has to be done is portlet-2:
    =========================
    Create an custom event namely(messageCustomEvent) and also add an action for it for invoking a portlet method getMessage in Portlet-2.
    //Place this method in Portlet-2
    public void getMessage(ActionRequest request, ActionResponse response,
    Event event) {
    CustomEvent customEvent = (CustomEvent) event;
    String message = (String) customEvent.getPayload();
    response.setRenderParameter("message0", message);
    configuration has to be done is portlet-1:
    =========================
    when click on Login in portlet1, in the pageflow code you fire an custom event as shown below
    PortletBackingContext context =
    PortletBackingContext.getPortletBackingContext(getRequest());
    context.fireCustomEvent("messageCustomEvent", form.getMessage());
    return new Forward("success");
    Thanks & Regards,
    Murali.
    ============

  • Communication between applets that are in different frames

    Hi,
    I have two applets in the same browser page but not in the same Frame, and I'm trying to invoke a method of one of the applets from the other. getApplet("NAME") does not work because both are in different frames.
    I have managed to do the communication with a static method, but the invoked method doesn't have the correct variables values (also defined static), these variables have the default values (i.e. int = 0).
    My program:
    Applet A --> loads the data and waits for Applet B's invocation.
    Later....
    Applet B --> invokes an Applet A's static method, Applet A receives the data, Applet A is supossed to work correctly, but its data is not the previously loaded but the default values.
    What am I doing wrong? Looking at this, it seems that the static method invoked is from a different class.
    Has anyone any working example? Is there another way (not signing)?
    Thanks

    You could do it using javascript. From what it looks like you are describing :
    In Applet A's page, have a javascript function that looks like the following :
    function callAppletB()
         self.parent.frame[1].document.getElementById("insert applet b's id here").methodName();
    }Then, in Applet B's page, make a similar function :
    function callAppletA()
         self.parent.frame[0].document.getElementById("insert applet a's id here").methodName();
    }Just make sure that Applet A's page is the first frame on your frameset page. Hope this helped.
    Ed

  • No communication between FIOS Westell routers at different locations

    I have CrashPlan running at home. It uses port 4242. I had 10 computers at multiple locations that were backing up to me when I was using cable. Some of the locations also had cable and some had FIOS.
    Ever since I changed from cable to FIOS at home, none of the FIOS routers are talking to each other. All the cable folks are still backing up to me. But none of the FIOS routers are backing up to me now. All the FIOS routers are Westell A90-9100EM15-10.
    Any help would be greatly appreciated.

    columbiavol wrote:
    I have CrashPlan running at home. It uses port 4242. I had 10 computers at multiple locations that were backing up to me when I was using cable. Some of the locations also had cable and some had FIOS.
    Ever since I changed from cable to FIOS at home, none of the FIOS routers are talking to each other. All the cable folks are still backing up to me. But none of the FIOS routers are backing up to me now. All the FIOS routers are Westell A90-9100EM15-10.
    Any help would be greatly appreciated.
    You may need to open port 4242 on the routers firewall. By default the Verizon firewall blocks the incoming "non standard" ports above 1024. So you may need to go in and do some port forwarding to open up the Verizon firewall. I'm not really very good at the port forwarding, if you need help with that, others here will be able to offer better advice on how to do that. But that would be my guess as to what is causing your problem.
    Edit
    Oops, just re-read your post. I didnt catch the point where you said the cable people could still communicate with you. In that case, the port forwarding may not be the issue.
    ====================================================================================
    Error exists between keyboard and chair.

Maybe you are looking for