Datasocket performance

Let's say we have a server app and several clients, all communicating via
items in a Datasocket server. There are two broad mechanisms; the first is
to have a single item, and all "packets" have a source and destination ID
and are written to and read from that single item, like an ethernet
interface. Multiple writers.
The second is to use the single item just for initial connection and
(perhaps) server broadcasts, setting up two new items for every client that
connects (server to client and vice versa).
The perceived advantage of the first is that DataSocket only has to
administer one item, whereas with the second DataSocket has to administer 11
items if 5 servers are connected. How much additional overhead does the
DataSocket server place on the
machine if 10 sockets are used instead of 1
but the same amount of data in total is passed through it?
Dr. Craig Graham, Software Engineer
Advanced Analysis and Integration Limited, UK

"JRA" wrote in message
news:[email protected]...
> What exactly is it that you are wanting to do? Is your final goal to
> have multiple writers? If you only want one writer, then you only
> need one item. However, if you want multiple writers who can also
> read, you will need multiple items because you will have to open up
> one connection to an item for reading and another connection to
> another item for reading. Let me know a little more about what you're
> trying to accomplish and we'll look into this some more.
A client-server system for running a new instrument.
A server sits on the PC the instrument is connected to and accepts incoming
connection requests from remote clients. These remote clients may either be
monitor-only or may take control of the instrument to modify instrument
settings, load a new sample, start an experiment etc.
The model I'm going with so far has the server hook into a single public
item, statically defined in the Datasocket Server Manager and with the
"multiple writers" flag set. It broadcasts new data through this item as
data becomes available- typically a few times a second. Data transfer takes
place via "packets"- essentially an array of a few variants, passed as a
variant.
When a client wishes to connect, it writes a packet to the static broadcast
item containing information such as username and IP address. It also
contains a "cookie"- a random string of letters and digits. If the client is
authorised to connect, the server then creates two new dynamic items, each
of which has only one writer- one for client to server and one from server
to client. The names of the items are based around the "cookie" string.
Communication to all clients simultaneously then takes place via the static
"broadcast" socket and private communication takes place via the two dynamic
sockets.
My original post about performance was because I wasn't sure how the server
would hold up with many items being created and destroyed, but I've verified
that I can quite easily have a hundred or so clients all open at the same
time, and additionally have a few of them destroyed and a few new ones
created every second. It looks somewhat impressive and doesn't hammer the
machine (2 gig P4) particularly hard. So unless there's something wrong with
my approach that will cause me problems later, it looks like everything's
sorted.
Dr. Craig Graham, Software Engineer
Advanced Analysis and Integration Limited, UK

Similar Messages

  • OPC: what is the path to follow in LabVIEW 8.20?

    Hello:
    I started with OPC in Labview 6. The only two functions that I need is "read  multiple tags" and "write tag". The tags are either located on the same PC or on a different one. I use Labview as an OPC client. The number of tags that i need to acquire is in the range of 2000-5000, once per minute. In Labview 6 and 7, all experts in the discussion forum and at NI said that above 100 tags, it was impossible to use Datasocket (performance issue when too many tags) and that the preferred path had to be DSC. So I started using DSC. Now that I migrated towards LabVIEW 8.20 the people at NI say that the best option is to use.... Datasockets! The read/write tags vi having  disappeared the suggest me to make my own "read multiple tags.vi" and "write tag.vi" by encapsulating a "DS read/ write" in a for loop. As an entry to the loop, I would just wire the ref number that the connection ids that the Datasocket Open.vi supplies.
    So my first question: why is this old Datasocket mechanism again the path to follow in Labview 8.20?
    By curiosity I checked in Labview 8.20 what was embodied in the "read multiple tags.vi" that were shipped in the Labview DSC 7.1. And found that the very last layer of the Vi used... Datasocket read in a for loop.
    So my second question: why was the Datasocket mechanism so poor in Labview 6 and 7 (for more than 100 tags) and now is the preferred way to go?
    I cannot use the shared variable mechanism in my case because the entry of my application is a list of tags (2000-5000) to read and I just want an automated way to read these tags values in one take.
    As I need to install the compiled application on dozens of PC I would prefer not to be forced to buy the DSC licenses on each runtime machine hence Datasocket that does not require the DSC license might be a good choice?
    Thanks for all ideas and comments,
    Christophe

    I have an example of a DSC application in this thread. This is in DSC 7.0 format.
    http://forums.ni.com/ni/board/message?board.id=170&message.id=234478#M234478
    Here is the scf file. It might have some stuff added to it since the llb file was created.
    Attachments:
    d103210.zip ‏3 KB

  • Has anyone else ever had a problem where you had to perform 2 datasocket writes before the datasocket read would pick up the change?

    I have a local VI that is simply a control that writes to the datasocket server whenever the control value changes.(the dataitem on the server is permanent - its initialized and never released by the server)
    In the same local VI I have a datasocket read polling a different dataitem on the server.
    The remote machine has a VI that reads the permanent dataitem on the server once per second.
    For some reason, after adding the local VI mentioned above, the remote VI stopped picking up the first change in the permanent variable.
    I'd start both the local and remote VIs...
    Then change the local control and the remote V
    I would not update - as if the datasocket write(upon adjusting the control) did not take place. So I'd change the control value again - this time the remote VI would update to this new value. And from here on out - the remote VI would update correctly. This problem only occurs when the local VI is first started up.
    What in the heck is going on?

    dingler44 wrote:
    >
    > Has anyone else ever had a problem where you had to perform 2
    > datasocket writes before the datasocket read would pick up the change?
    >
    > I have a local VI that is simply a control that writes to the
    > datasocket server whenever the control value changes.(the dataitem on
    > the server is permanent - its initialized and never released by the
    > server)
    > In the same local VI I have a datasocket read polling a different
    > dataitem on the server.
    > The remote machine has a VI that reads the permanent dataitem on the
    > server once per second.
    > For some reason, after adding the local VI mentioned above, the
    > remote VI stopped picking up the first change in the permanent
    > variable.
    > I'd start both the local and remote VIs...
    > Then change the local control and the remote VI would not update -
    > as if the datasocket write(upon adjusting the control) did not take
    > place. So I'd change the control value again - this time the remote
    > VI would update to this new value. And from here on out - the remote
    > VI would update correctly. This problem only occurs when the local VI
    > is first started up.
    >
    > What in the heck is going on?
    Gorka is right, this came up on Info-LV a few days ago. Someone
    described a similar problem. I replied that I had seen similar
    behaviour, reported it to NI, and they verified a bug. There is no fix
    yet, but they are aware of it and will fix it. No anticipated release
    date for the fix.
    Regards,
    Dave Thomson
    David Thomson 303-499-1973 (voice and fax)
    Original Code Consulting [email protected]
    www.originalcode.com
    National Instruments Alliance Program Member
    Research Scientist 303-497-3470 (voice)
    NOAA Aeronomy Laboratory 303-497-5373 (fax)
    Boulder, Colorado [email protected]

  • DataSocket memory leak problem (2VO0SF00) -- more info?

    When upgrading to LabVIEW 8.5 recently, I noticed the following known issue in the readme file:
    "ID: 2VO0SF00
    DataSocket/OPC Leaks Memory using ActiveX VIs to perform open-write-close repeatedly
    If you call the DataSocket Open, DataSocket Write, and DataSocket Close functions in succession repeatedly, LabVIEW leaks memory. Workaround — To correct this problem, call the DataSocket Open function once, use the DataSocket Write function to write multiple times, and then use the DataSocket Close function."
    Looking back, I think this problem may have been present in previous LabVIEW releases as well, and might be giving rise to a problem that's been dogging me for quite some time (see my thread, "Error 66 with DataSockets", http://forums.ni.com/ni/board/message?board.id=170&thread.id=187206), in addition to general slow/glitchy behaviour when my VI's have been running continuously for a long time. But in order to determine whether or not this issue affects me, and how I should go about fixing it in the context of my own programs, I need a bit more information about the nature of the issue itself and the inner workings of the DataSocket VI's. Any help or insight the community can provide into this would be greatly appreciated!
    Here are my questions:
    It is my understanding from the "known issue" description above that the memory leak happens when you have a DS Open wired to a DS Write wired to a DS Close, all inside a loop (example 1), and that the suggested workaround would be to move the DS Open and DS Close functions out of the loop on opposite sides, wired to the DS Write which remains inside the loop (example 2). Is this correct?
    Does this leak also happen when performing DS open-read-close's repeatedly (example 3)?
    What happens when a DS Write (or DS Read) is called without a corresponding DS Open and DS Close (examples 4a and 4b)? Does it implicitly do a DS open before doing the write operation and a DS close afterwards? What I'm getting at is this: would having an isolated DS Write (or DS Read) inside a loop, not connected to any DS Open or DS Close functions at all, cause this same memory leak?
    If one computer is running the DS server and a second computer is running the VI with the repeated open-write-close's, on which computer does the memory leak occur?
    In my question #1 workaround (example 2), the DS Open and DS Close outside the loop are routed through a shift register and in to and out of the DS Write inside the loop. If the DS connection id goes into the DS Write "connection in" and then splits and goes around the DS Write and out to the DS Close, without coming out of the DS Write "connection out" (example 5), will the memory leak still be avoided? I.e. if the DS Write function doesn't have anything connected to its "connection out", will it try to do an implicit DS Close?
    If the VI causing the memory leak is stopped, but LabVIEW stays running, will the leaked memory be reclaimed? What if the VI is closed? What if all of LabVIEW is closed?
    FYI, in the examples above "x1a" is a statically-defined DataSocket on the DS server running on the computer Max, to which the computer running the example VI's has read/write access. My actual application has numerous VI's and hundreds of DataSocket items, many of which are written to / read from every 50-100 ms in the style of examples 4a and 4b.
    Does anyone have any idea about this stuff?
    Thanks in advance,
    Patrick
    Attachments:
    examples_jpg1.zip ‏63 KB
    examples_vi1.zip ‏40 KB

    Hi Meghan,
    Yes, some of the larger VIs in my application do write to / read from several hundred DataSockets, so it's not feasible to use shift registers for each one individually, and hence why I'm passing the references into an array, etc.
    Your Alternate Solution 2 is more along the lines of something that would work for me. However, my actual code has a lot of nested loops, sequences and DataSocket items which are not all written to in the same frame, so this solution would still be difficult to implement: it would be cumbersome to unpack the entire 500-element reference id array and build a new one (maintaining the positions and values of the unaffected elements) every time I write to some small subset of the DataSockets.
    I think I have a solution which solves the problem and is also scalable to the size of my application -- I've attached it as Example 7. Do you think this will avoid the memory leak? It's the same as your Alternate Solution 2, except that instead of building a new array out of the DS Write reference outs, each reference out replaces the appropriate element of the original array.
    If I understand you correctly, in order to avoid implicit reference opens and closes, a DS Write needs to have both it's reference in and reference out wired to something. Thus, even though my Example 7 replaces an element of the array with an identical value, and therefore doesn't actually change the array (which would be a silly thing to do normally), the DS Writes have their reference outs wired to something, and eventually in a convoluted way to a DS Close, so it should avoid the memory leak.
    Just out of curiosity (I don't think anything like this would apply to my application or any fixes I implement), when would the implicit reference close happen in the attached Example 8? The DS Write has its reference in and reference out both connected to temporally "adjacent" DS Writes via the shift register, so perhaps it wouldn't try to close the reference on each loop iteration? Or would it look into the future and see that there is no DS Close and decide to implicitly do that itself? Or maybe only the DS Write on the last loop iteration does this?
    Thanks for bearing with me through this,
    Patrick
    Attachments:
    example73.JPG ‏40 KB
    example83.JPG ‏14 KB

  • How can I read published data from a datasocket server running in a different network?

    Hi all,
    I have been trying to solve this problem but without any success. I want to develop data acquisition Vi to run on a computer on a remote location. I want to use the datasocket technology to acquire and publish this data so that in my office (in a different network), I can read the published data and perform analysis with it. I can successfully use this approach for the two computers in the same network but not when they are in different networks. My real problem is how to specify the URL for the acquisition computer in one network while the analysis Vi runs on a different network.
    I have attached two Vis to illustrate my point (I simply want to be able to read the random numbers generated in the acquisition computer in a different network). The first Vi (RemoteDatasocketWrite.vi) will run on the remote computer with an IP address (192.168.0.110). My office computer on which RemoteDatasocketRead.vi runs has an IP address (192.168.0.11) and I can log in remotely into the remote computer using Remote Desktop Protocol with name (emelvin.001.eairlink.com) from my office computer.
     Is it possible to do what I am trying to do or is there a simpler way to solve this problem?
    I will really appreciate any help towards a solution to this problem.
    Thanks
    Attachments:
    RemoteDatasocketWrite.vi ‏9 KB
    RemoteDatasocketRead.vi ‏9 KB

    Are you getting an error? The way you have it set up, you can have an error and it will never be displayed. Put and error control on your front panel and see what it gives you. Also, shared variables in a project can be useful. Look at some examples for that.

  • Which is better: Polling DataSockets(UpdatedData) or Polling through VI Server

    I need a C++ program to monitor controls in a local instance of LabView. From my research, I have found two ways:
    -I can use CWDataSocket ActiveX controls and poll the UpdatedData property for each control.
    -Or I can Use the VI Server ActiveX Control and poll using GetControlValue().
    I am wondering which is the better way. Is there a performance difference?
    Any thoughts on this matter would be greatly appreciated.
    -Clayton T.
    P.S. I like that polling through VI Server decouples the VI control from my polling program. (Using datasockets, you have to explicitly setup each control to a datasocket. With VI Server, you just use the already available control name.)

    "C++" is not the most appealing topic for many LV types.
    The only reason I respond is because I used to do C ( but "I got better"). If you are willing to address the heavy hitters on this subject, try post to Info-LabVIEW. You may get a reply from Rolf, Greg, Jean-Pierre, or Uwe with this question.
    I will keep my eyes open for your post.
    In the event you do not know how to use info-LabVIEW, I have included the contents of a recent message that will get you started.
    Ben
    Quote:
    This is the weekly admin reminder for readers of the Info-LabVIEW mailing
    list and mail digest. (19oct01)
    o Administrative issues such as SUBSCRIPTION and DELETION REQUESTS
    MUST be addressed to the admin address, which is
    mil>.
    o To post to the list, mail to . DO NOT
    send subscription and deletion requests to .
    o This is a user list, run by and for LabVIEW users. If you have a
    commercially available item to announce, please make the announcement
    brief.
    o It is not, ever, acceptable to post "virus warnings" to this list. For
    any reason.
    A set of Frequently Asked Questions (FAQs) for LabVIEW are available from
    our web server at .
    Tom Coradeschi, Info-LabVIEW List Maintainer
    http://www.info-labview.org/
    Un-quote
    >
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Datasocket and Shared Variables

    I am curious if there is any advantage to using Datasocket to read/write shared variables (as opposed to a direct read/write).  I'm specifically talking networked shared variables here.
    Is there any speed advantage to accessing shared variables thru the Datasocket functions?  Since both a direct read/write and a Datasocket PSP read/write talk to the same variable engine I assume they are equally efficient but I'm looking for confirmation here.  I've seen benchmarks for shared variable performance but none of them use DS/PSP to access the variables.
    Normally I would not even think of using Datasocket to access shared var's but where I currently work we have a large app that does this and it works great.  I suspect that this functionality only exists in LV8.x for backward compatibility and non-Windows OS compatibility and is not really meant to be used for new, Windows-based apps?   Am I off base on this?
    I am working in LV 8.5, BTW.....

    Hello Jared,
    Thank you for the reply with clarification. 
    Based on your comment, I changed the buffer parameters and also tried the programs with two different data types, previously StringArray and now String.
    In the attached LV8.6 project, you have all the programs, and shared variable library to review my tests. 
    There are two sets of two files - each set has a Write Shared Variable and Read Shared Variable file. One set is for StringArray type Shared Variable (named StrArr in the library), and the other set is for String type Shared Variable (named Str in the library).
    String Array example:
    MultipleDS-Write-SharedV-StrArr.vi / MultipleDS-Read-SharedV-StrArr.vi
    In my String Array shared variable, I use only 4 element array, each having 4 character strings - meaning 16 bytes per String Array data. I have two loops in the write file, writing to the same variable, an array of 4 strings, each loop continues until the loop index is >0. This means, sometimes, depending on the processor speed, the variable will be written 3 times or 4 times (the variable could have a new value before the loop condition is checked).
    So this means, if I have buffer of 100 bytes (16*4=64<100), it's enough for 4 such arrays (of 4 elements, each element with 4 characters) could be buffered to have sufficient time at the client (Read) program to read them. 
    I am putting 2048 bytes in buffer, which is much more than sufficient in my case. 
    The writer loops run with 200 ms to wait for each iteration. The reader loop runs with 100 ms in DS timeout and 100 ms in wait timer. This gives results without any loss. However, if I run the reader loop with 1000 ms to wait for each iteration, the data is lost. The buffer is not maintained for 2048 bytes.
    In the read program, just to make sure if all data is read or not, I am showing data in two different string indicators, showing data of each loop.
    String example:
    MultipleDS-Write-SharedV-Str.vi / MultipleDS-Read-SharedV-Str.vi 
    The String Array shared variable didn't show values in the Distributed System Manager. Hence, I created another simple variable with String datatype.
    The writer program writes strings of 4 characters, one-by-one, in two loops. Meaning, total 8 strings of 4 characters each are written in the "Str" Shared variable. 
    The reader program, however, doesn't always display all the 8 strings. Although the wait timer is not high (slow) it still misses some data usually. Data is overwritten even before the buffer is filled (in buffer, I have defined 50 strings with 4 elements in each).
    In both of the Read programs, I read using datasocket. I think thought datasocket has more ability to buffer. Earlier I had "BufferedRead" in DataSocket, which I have changed to just Read, because BufferedRead didn't give any special buffer advantage in the Shared Variable reading.
    ---- This is an update on the issue. 
    Ok, just while typing the last paragraph above, regarding datasocket, something clicked in my mind, and I changed the DataSocket functions to simple Shared variables (completely eliminating datasocket functions) in the read programs as well. And bingo, the buffer works as expected, even if I have reading loops very very slow, there is no data loss in any of the program sets. 
    The two changed Read programs are also included in the attached project - MultipleSV-Read-SharedV-Str.vi and MultipleSV-Read-SharedV-StrArr.vi
    So this means, I can completely eliminate DataSockets (not even using PSP URLs in DataSocket Open/Read functions) from my programs. 
    One question here, what will be an advantage of this (or any side effects that I should be keeping in mind)?
    Vaibhav
    Attachments:
    DataSocket.zip ‏71 KB

  • Tag value set to zero when performing a tag write.

    I have several tester PCs with identical equipment and versions of Labview 7.1. The TAG configuration I am using was provided by the company we purchased the equipment from. One of the testers is having an issue with the DSC module or configuration. If I write an identical analog value to a Tag with a Tag Write, the Tag Read performed for verification returns a value of 0.
    Using the Tag Monitor to analyze the problem, I found that immediately following the write command the value of the Tag in the Tag Monitor reads zero. If the value written is different from the previous value, the Tag Monitor will then read the expected value after a minimal delay. If the value written is the same value, the zero will remain. I compared this behavior to the other testers and the Tag Monitor does not show a value of 0 at any point.
    I have ruled out a problem with the equipment because we can connect the equipment to another tester PC and there is no problem. At this point, I think the reason the Tag Read returns the 0 is due to the value not being updated because writing the same value would not exceed the deadband. I am now trying to determine why the 0 appears from the Tag Write.
    I am using the Industrial Automation OPC Server 5.1.
    Any thoughts or ideas about how to remedy this problem would be much appreciated.
    Thanks,
    -Dave

    Hi Dave,
    Are you using Datasocket to read and write to your tags? If so, than setting the mode to BufferedReadWrite might solve the problem. Is it possible for you to attach a simple VI that illustrates the problem?
    Regards,
    Stanley Hu
    National Instruments
    Applications Engineering
    http://www.ni.com/support

  • Datasocket server seems to fail after continuous use.

    The Datasocket server seems to fail after continuous use.  (Labview 7.1 on XP)
    I have a data acquistion system that collects data and presents it to the operator.  Then I have from 1-3 remote units that can connect via DS to the acquistion unit to view the data.  As a general rule things work dandy!  I have the data published from the front panel of one VI and subscribed to by the remote VI(s).  However it seems that after some indeterminent time the DS just stops publishing data and my remote units go into alarm indicating that they can no longer get data.  If I shutdown and then restart the DS server then things seem to clear up and work again.
    Anyone seen this type of problem?  Unfortunately my app is pretty large and it acquires data from 26 field units so its not real practical to post the code!
    I wonder if using the DS VI's would change performance as opposed to the front panel publishing/subscribing that I currently do?  Or can DS just not handle the load, should I change to a TCP/IP handshaking?
    Thanks!
    ~Gold

    Here's the basic piece of code. The outer case structure was used because that program already had some DS related stuff and I wanted to wait before I start checking to avoid disturbing it. I added the array at the bottom for some logging so I could check when it happened, but I haven't been called for it since, so that array has proved unnecessary.
    Try to take over the world!
    Attachments:
    DSerror.JPG ‏56 KB

  • Datasocket localhost faster than network name

    When I set my datasocket urls to dstp://localhost/var instead of dstp://machine_name/var the various connections are made MUCH faster. When using localhost, all variables seem to connect instantly, while if I use machine_name instead, it seems to make about 1 connection per second (I'm just watching the led indicator change to green) and so if I have a bunch of variables connecting, it can take quite awhile. I can use localhost on the server machine, however I need to be able to make fast connections on the client machine, and so I have to use machine_name. Is this some inherrent flaw in datasocket? Is there a workaround, or could I have a poor network driver?

    Greetings!
    "Localhost" does not require any name resolution...it is a "builtin" name in a windows environment. A "real" machine name requires name resolution,which always requires some time. You might try assigning your own machine as the name resolver. (YOu might need to poke around to see what machine on your network is really performing the name resolution.)
    Alternatively, use the IP address instead of the machine name.
    Just a few suggestions...
    Eric
    Eric P. Nichols
    P.O. Box 56235
    North Pole, AK 99705

  • Why are my Datasocket OPC reads and writes so slow?

    I am creating an application (in LabView 6.1) that has to interface with 15-30 OPC tags (about half and half read and write) on a KepWare OPC server. It seems like the DSC Module would be overkill, but the datasocket write VIs seem to slow the system to a halt at about 6 tags. I saw something about using the legacy datasocket connect VIs, but would I really see a large performance boost from switching?
    In the existing code we have, I have seen that even the legacy VIs (our old code uses the older VIs) sometimes grind the system to a halt or lock it up completely if it loses sight of the OPC server. Has anyone else had problems with this?

    Hi IYUS,
    What OPC Server are you using?  What methods are you using to communicate?  If you are using IAOPC, have you installed the latest patch?
    Also, this post is nearly 2 years old.  You will probably get more visibility (and more help) if you post your questions in a new thread.
    Cheers,
    Spex
    National Instruments
    To the pessimist, the glass is half empty; to the optimist, the glass is half full; to the engineer, the glass is twice as big as it needs to be...

  • Using datasocket or remote panel?

    Hi,Friends,
    I am developing a fault inspection system in a production line. The manager and other leaders want to watch the inspection process remotely (at their office)when my system is running in test room. I have tried remote panel so that they can monitor the process with IE Browser, but the refresh and data transfering in remote site are very slow. I noticed someone could use DataSocket the implement this function. But I have no idea about the difference of DataSocket and remote panel. Are there anyone who has this kind of experience tell me some skills to improve the performance of remote monitoring?
    Other questions are:
    1. In order to carry out remote display, which one is better, DataSocket or remote panel?
    2. What the
    purpose of remote panel and DataSocket in LabView? What are the difference and connection between them?
    Any suggestions are warmly appreciated.
    Red

    The benefit of remote front panels is that a user can view the front panel of your application with only a runtime engine. When using datasockets you will need the full development environment whether it is LV or another programming language like VB. Datasockets are a mechanism to transfer data across a network but still the underlying protocol is TCP/IP. Data sockets will require you to use the datasocket server and will require code to utilize them. In other words you will still have to write a vi to display your data. Where as in remote front panels you can utilize the front panel on the source machine. Because of the TCP/IP protocol it is more of a network speed issue in your case. You still are restricted to the capabilites of your network. Once sug
    gestion is to isolate your network from your corporate network if that is the case. This will reduce traffic on your network and allow your data to be transferred at the highest speed possible. Hope this helps.
    BJD1613
    Lead Test Tools Development Engineer
    Philips Respironics
    Certified LV Architect / Instructor

  • Datasocket event trigger

    Hi,
    I am using datasockets to comunicate between PCs/VIs.
    One VI has an event structure, which is in a 10ms timed loop. I have followed one example on this forum, which uses the timeout event to trigger the appropriate event with a property node (Value Signal) - but this causes events when I donot want them to occur.
    I have also put a datasocket read in the 10ms loop to write to the Value Signal property node, which slows things down a lot and skips triggers/signals, which entirely defeats the purpose of events in the first place. 
    Are there any (better) ways around this? 
    Thanks,
    Michael
    BTW I'm using Labview 7.1.1 

    One VI has an event structure, which is in a 10ms timed loop. I have followed one example on this forum, which uses the timeout event to trigger the appropriate event with a property node (Value Signal) - but this causes events when I donot want them to occur.
    You have an event structure with a 10ms timeout, and within your timeout you perform a property value (signal) write !? This will generate 100 events a second! No wonder you get events when you don't want them. 
    Sometime posting your code helps us to understand what it is you're struggling with.
    Thoric (CLA, CLED, CTD and LabVIEW Champion)

  • Datasocket 4.0 server crashes when launched on win95

    HELP!
    When launched from the "start" menu, the datasocket
    server crashes:
    "cwdss has performed an illegal operation ...
    ... contact program vendor"
    "cwdss caused an invalid page fault at xxx:xxxxx"
    Labview itself runs OK, upgrading from 6.0 to 6.0.2
    did not help.
    I've disabled virus protection.
    I've tried the upgrade dated 10/31/2001 referred to
    in a knowledge-base article
    Thanks!
    --- PC Info ---
    Windows 95B
    Pentium 120MHz, 48MB ram

    Hi,
    The problem could be that you don't have the TCP/IP protocol installed on your PC. Add the TCP/IP protocol by going into the network properties, click Add select protocol, click Add select Microsoft - TCP/IP protocol, Then click OK and probably reboot your PC. More information is in Knowledgebase 217AHFK3 "Datasocket server crashes during launch".
    Good luck.

  • Evénement déclenché par une variable connectée par Datasocket à un serveur OPC

    Bonjour,
    J'utilise un serveur OPC pour lire et écrire des variables sur un automate. J'ai essayé de connecter les variables directement avec un connexion Datasocket et d'utiliser les VI en exemple. Dans les deux cas, les ressources de mon PC augmentent et les temps de réponse sont assez longs.
    Dans mon application, j'ai besoin d'"attendre" une valeur particulière d'une variable automate. Je voudrais donc dans un premier temps, vérifier que la variable n'est pas à la valeur souhaitée et si ce n'est pas le cas, avoir un événement qui se déclenche au changement de valeur de cette variable. Cette méthode de programmation fonctionne lorsque la connexion de la variable locale n'est pas activée, mais pas avec la connexion Datasocket.
    Est-ce normal? Y-at-il un moyen pour que ce soit le serveur qui informe le client Labview que la variable a changé d'état?
    Cécile

    Bonjour Cécile !
    Et bienvenue sur ce Forum ...francais
    Je ne vous apporterai pas d'élément complet de réponse car je n'ai jamais utilisé de process DATASOCKET .
    Cependant je pense pouvoir vous aider lorsque , je vous cite :
    "Dans les deux cas, les ressources de mon PC augmentent et les temps de réponse sont assez longs. "
    Je pense que vous utilisez des boucles contenant des tableaux ou des variables locales et pire encore ,pour l'espace mémoire, des fonctions concaténation, des fonctions de modification de tableau etc...
    En effet contrairement à certains languages de programmation utilisant des boucles (presque tous maintenant) Labview génére à chaque itération de boucle une allocation mémoire (différente si ce n'est pas le premier appel ) lors d'une lecture ou écriture de variable locale (imaginez alors si c'est un tableau de clusteur par ex...) l'utilisation mémoire augmente alors à chaque lecture ecriture des variables...
    Utilisez un registre à décalage (click droit sur la boucle for ou while) pour que votre variable soit transmise à la prochaine itération (même en arretant Labview, vous pouvez utiliser les valeurs précédents l'arret !) et ne soit plus réallouer à chaque itération
    vous pouvez avoir plus de détails en lisant l'Application note suivante...
    Labview Performance and Memory Management
    et un sujet (en anglais) qui définit bien la différence et le fonctionnement des variables
    locales et noeuds de propriété
    que vous pourrez retrouver dans le répertoire manuals de LAbview...n'oubliez pas de préciser à chaque sujet votre config et des infos précises sur votre problème , le monde des sytèmes electronique - informatique et vaste et varié...
    CordialemntMessage Edité par Ecosmose_CNRS le 05-26-2005 06:13 PM
    Julien
    Conception Informatique et électronique
    CNRS LCSR Web
    Orléans la Source FRANCE

Maybe you are looking for

  • Internet Explorer 8 have to reinstall Flash Player after each restart.

    Everytime I reboot the computer the latest flash player is no longer installed in Internet Explorer 8. I have tried everything under the sun and can not fix this problem. Any ideas?

  • Text in FBL3N

    Dear all in FBL3N, the column text say "VENDOR LOCAL" or "VENDOR IMPORT" if the document type = WE, I want the column text say like short text of Item Purchase Order can anyone help me..? thanks imron

  • Captivate 8 not importing PowerPoint slides in correct order

    I am using Captivate 8, and PowerPoint 2007. I have a PPT  presentation with 24 slides.  The original PPT presentation had only 14 slides, and I imported that into C8 with no problems - even when I made updates to those slides in PPT, the update in C

  • Récupérer l'adresse de stockage d'un tableau sous LabVIEW

    Bonjour à tous, Je viens à vous pour résoudre le problème suivant: J'utilise une DLL en LabVIEW. Cette DLL possède une fonction qui passe (notamment) un pointeur de tableau en argument. J'ai remarqué que l'assistant "Importation d'une bibliothèque pa

  • Can you back up ALL the settings on the iPhone?

    I was reading here from another post http://www.apple.com/support/iphone/service/battery/ about the battery replacement process and noticed that it said "It is important to sync your iPhone with iTunes to back up your contacts, photos, email account