Professional OPC
Development Tools

logos

Online Forums

Technical support is provided through Support Forums below. Anybody can view them; you need to Register/Login to our site (see links in upper right corner) in order to Post questions. You do not have to be a licensed user of our product.

Please read Rules for forum posts before reporting your issue or asking a question. OPC Labs team is actively monitoring the forums, and replies as soon as possible. Various technical information can also be found in our Knowledge Base. For your convenience, we have also assembled a Frequently Asked Questions page.

Do not use the Contact page for technical issues.

Race condition in OPC client, OPC server or OPC device

More
06 Oct 2022 17:57 #11137 by support
Hello.

neither EasyDAClient, nor OPC DA specification, assign semantics to the order of arguments, if multiple items are written at once. EasyDAClient does not guarantee that it will use the same order you specified. So case #1 is true. I do not know whether the other cases are true or false.

If you need things to happen sequentially, you need to call one operation, and only after it is completed, make the subsequent one.

See: kb.opclabs.com/Non-guarantees

Best regards

Please Log in or Create an account to join the conversation.

More
06 Oct 2022 16:04 #11136 by aris
I am new to the OPC world.

I'm using EasyDAClient to communicate with KEPServerEX (which is an OPC server) that communicates with a Fanuc robot controller (OPC-compatible device). I use WriteMultipleItemValues to send DAItemValueArguments[] array.
Now, I have a bug and the only way it can happen is if one of the registers in the robot controller gets updated before the other.
So,
  1. either EasyDAClient doesn't send the commands from DAItemValueArguments array in the same order they were added or
  2. KEPServerEX updates the robot registers not in the order it received from EasyDAClient or
  3. KEPServerEX sends commands to the robot in the same order, but because the commands process different registers, the robot controller executes these commands in parallel, so there is no guarantee which command will be executed first.

I think that what happens is case #3. Can anyone advise, please?

Please Log in or Create an account to join the conversation.

Moderators: support
Time to create page: 0.044 seconds