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.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- Connections, Reconnections, COM/DCOM
- can't connect unless Opc Test Client is run
can't connect unless Opc Test Client is run
thank you for letting us know.
Best regards
Please Log in or Create an account to join the conversation.
Thanks for everyone's help here!
Please Log in or Create an account to join the conversation.
I would not hesitate increasing the hold periods significantly more. There is almost no harm making them very long, in your case. Something like
client.HoldPeriods.TopicRead = 60000;
client.HoldPeriods.TopicWrite = 60000;
Best regards
Please Log in or Create an account to join the conversation.
I increased the OPC timeouts and hold periods,
client.Timeouts.WriteItem =12000; // ms, was 2500
client.Timeouts.ReadItem = 12000; // was 2500
client.HoldPeriods.TopicRead = 200; // was 100
client.HoldPeriods.TopicWrite = 200; // was 100
The OPC server is Automationworx OPC Server (from Phoenix Contact) and seems to start when first used. So I may be able to pre-start it. I'm not sure how I can do #3 ("Consider adding a subscription to some item ... keeping the server always connected," because not connecting is the issue.
Thanks again for all your help on this!
Please Log in or Create an account to join the conversation.
All your replies considered together, I think this points to the following possibility:
The problem is not really that you "can't connect". The connection, as such, is working fine. The problem is that you do not get the data from the server that you need.
The server may need relatively long time (much longer than normally) to provide the real, valid data when it is just started, or when the connection to it has just been made.
QuickOPC controls the connections and disconnections from the server as needed. I.e. if you just do some Read, it connects, does the Read, and then it stays connected for some time ("hold period"), and then it disconnects - *unless* the connection is needed for some other operation at that time.
This would explain why having another client helps.
The problem might be either with with any new connection to the server (even if the server has already been started), or just when the the server starting from ground up (when *no* client was connected before).
Things to do:
1. Increase the timeouts.
2. Increase the "hold periods"
3. Consider adding a subscription to some item in the server (can even be anon-existent item) that last for the whole duration of your program, keeping the server always connected. (and, add some delay after making the subscription, if that is acceptable).
4. Consult the serer documentation to check whether it can be pre-started. Some servers are started with the first client connected ("Local Server", COM/DCOM does that), but some can run e.g. as a Windows Service, in which case they can start with the system.
Best regards
Please Log in or Create an account to join the conversation.
I do have that, and catch the exception.support wrote: Thank you very much. Some additional questions:
7. Do you have any try/catch(OpcException) around the ReadItemValue call?
Stepping through with the debugger, I do see it catches the exception.support wrote: 8. Is it ever invoked/does it ever get there?
9. Is the exception handler written in such a way that the exception cannot be confused with reading of value 0?
Best regards
The exception I see (when it fails) is:
"Topic not updated with quality that is not bad (timeout)."
This looks like: www.opclabs.com/forum/com-connections/1848-topic-not-updated...uality-that-is-not-bad-timeout
So I will now try to to use ReadItem instead of ReadItemValue and see what additional information that gives me.
Thank you for your help!
Please Log in or Create an account to join the conversation.
7. Do you have any try/catch(OpcException) around the ReadItemValue call?
8. Is it ever invoked/does it ever get there?
9. Is the exception handler written in such a way that the exception cannot be confused with reading of value 0?
Best regards
Please Log in or Create an account to join the conversation.
Not sure how to check this. In my C# programs I am using OpcLabs.EasyOpc.DataAccesssupport wrote: Hello.
I have some additional questions.
1. Please confirm that we are dealing with OPC DA "Classic" (COM/DCOM based), and not OPC UA.
The OPC Test Client is supplied by Phoenix Contact.support wrote: 2. The OpcClient.exe - where does it come from? E.g. MAtrikonOPC?
I am using subscriptions.support wrote: 3. Do you just "read" the values, or do you also use subscriptions?
ReadItemValuesupport wrote: 4. Which API method do you use for the reading? E.g. Readitem, ReadItemValue, ReadMultipleItems, ReadMultipleItemValues, and so on?
object retVal = client.ReadItemValue(COMPUTER_NAME, SERVER_NAME, item_id); // the readsupport wrote: 5. Can you post here the piece of code that does the read, and shows how the result is processed? I want to check how handling of errors and "bad" qualities is done.
As for the results there, I will need to run that in the debugger to see what I get.
At the application level, yes, that is what I see.support wrote: 6. What do you man when you write "OPC doesn't connect." - my understanding is that, because you are not getting any errors, that by saying "OPC doesn't connect." you simply mean that you get the zero values that should not be there - but no other symptoms?
Thank you
I was hoping that someone would recognize similar symptoms (often need to use OPC Test Client first, to make application correctly connect to OPC).
It will take some time to tease it apart into a simple, stand alone diagnostic program.
Thanks for your help.
Please Log in or Create an account to join the conversation.
I have some additional questions.
1. Please confirm that we are dealing with OPC DA "Classic" (COM/DCOM based), and not OPC UA.
2. The OpcClient.exe - where does it come from? E.g. MAtrikonOPC?
3. Do you just "read" the values, or do you also use subscriptions?
4. Which API method do you use for the reading? E.g. Readitem, ReadItemValue, ReadMultipleItems, ReadMultipleItemValues, and so on?
5. Can you post here the piece of code that does the read, and shows how the result is processed? I want to check how handling of errors and "bad" qualities is done.
6. What do you man when you write "OPC doesn't connect." - my understanding is that, because you are not getting any errors, that by saying "OPC doesn't connect." you simply mean that you get the zero values that should not be there - but no other symptoms?
Thank you
Thank you
Please Log in or Create an account to join the conversation.
Sometimes (very often!) my OPC application needs to be restarted if OPC doesn't connect. (It re-tries multiple times internally, now.) And often after restarting, it won't connect either.
The way it fails is weird, also. It seems to connect, but when I try to read back values they are all 0. My connection sequence tests the connection by trying to read back a an OPC value that should not be 0.
Odd remedy:
Connecting with the OPC Test Client (OpcClient.exe) will somehow fix the connection. That is, if I leave the OPC Test Client connected, and THEN start my application (R5_Control.exe), it usually works - i.e., my application connects to OPC.
Has anyone seen anything like this before? I can make my application connect to OPC, but it is flaky. OpcClient.exe somehow makes it possible for my application to use OPC. Neither the error code (from attempting to read a value) nor an OPC event log shows anything obviously wrong.
Please Log in or Create an account to join the conversation.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- Connections, Reconnections, COM/DCOM
- can't connect unless Opc Test Client is run