10-20-2008 08:41 AM
After pushing the investigation, we found out the design of Datasocket is flawed. Every datasocket calls operate in the UI threading layer of LabVIEW and the flaw comes from the fact that all Datasocket calls are synchronus calls (with the opc server). Therefore, if there is a problem with the OPC server, i.e. server not giving control back to the datasocket api call, datasocket can freeze the whole UI threading layer of LabVIEW till it gets out of that waiting state (can be several seconds).
Now, apparently, the specific problem we are seeing was only reported to happen with RS Linx. On a certain conference call with one of NI's product support engineer, using a different OPC server such as Kepware came up. Our problem is that even with a different opc server, it is theoretically possible to see that same problem, using datasocket, since those calls are synchronus.
We have Rockwell Softwares and NI involved into this untill this case is resolved. We want to press this issue to the limit before we change to a different technology.
10-20-2008 03:32 PM
Thanks for pushing for a solution to this.
My problem is that the datasocket write takes a long time to return even under normal (successful) write operation. The long timeouts you have on a failed read/write may be specific to RSlinx, but I would be surprised if the same problem wasn't causing the slow write times I see as well. I look forward to the fix.
Cheers,
Steve
10-19-2009 11:18 AM
Hi there,
from the discussion in this thread, it seems something similar to what I was looking for.
In my application, I have several datasocket registers on a server. There are multiple client applications pointing to these registers on one particular datasocket server.
There are multiple clients reading and writing data from and on one or more of these registers, simultaneously. For now, during the initial phases I would have up to 7-8 such clients accessing some 10 registers.
Will it be a problem to write to the same datasocket register in two separate simultaneous loops? If one DataSocket Write node is writing data, the others will wait (to write on the same register)? And as soon as the write operation is finished this register will be released?
Asking this rather "conceptual" question in this thread since it seems that the discussion is somewhat in this line.
Thanks ahead!
06-12-2019 02:54 AM
very very old thread.
we come with same problem.
wonder how did you find this reason and whether the problem is solved!
"After pushing the investigation, we found out the design of Datasocket is flawed. Every datasocket calls operate in the UI threading layer of LabVIEW and the flaw comes from the fact that all Datasocket calls are synchronus calls (with the opc server). Therefore, if there is a problem with the OPC server, i.e. server not giving control back to the datasocket api call, datasocket can freeze the whole UI threading layer of LabVIEW till it gets out of that waiting state (can be several seconds)."
many thanks!!