Professional OPC
Development Tools

logos

Complete Application Hangup

More
04 Jul 2016 13:12 #4184 by support
Replied by support on topic Complete Application Hangup
Thank you for update. With regard to NodeId-s, QuickOPC version 5.40 *should* behave the same as 5.35, but I cannot rule out some unexpected difference. If you send me more info, such as the NodeId itself, (+ possibly which server you are targeting), plus the exact error message/details, I will have a look at it.

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

More
29 Jun 2016 07:38 - 29 Jun 2016 07:39 #4180 by Erik
Replied by Erik on topic Complete Application Hangup
Hello,

Thank you for your answer! I tried updating to version 5.40, but could net get it to work. Something goes wrong with the nodeid, says its unkown. Even though no code has changed on our end.

So I uninstalled 5.40 and took 5.35.1173.1. This one works and fixes the issue, I no longer get the crash and after a small hangup the OPC connection is lost and then restored after 3 seconds. Wich is acceptable.

I am aware I can get rid of the hangup issue by putting the UAClient in its own thread, however I dont think this issues is going to get priority and as such I can't implement this (yet).

Best regards,

Erik
Last edit: 29 Jun 2016 07:39 by Erik.

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

More
28 Jun 2016 09:34 #4178 by support
Replied by support on topic Complete Application Hangup
OK, there are approx. 3 issues in this:

1. The LockRecursionException (I think it is a different issue from the hangup, below). This is a real mystery. I could not reproduce it, and an inspection of the code has not revealed a possibility for it to happen.

2. The inability to recover. I could not reproduce it either, with latest builds of versions 5.35 or 5.40. It should be said, however, that you are running 5.35.442.1, and there has been a fix for very similar issue in 5.35.1173.1. Therefore I strongly suggest to update to this build or version 5.40, before making conclusions about this one.

3. The fact that the UI of the application freezes temporarily while the Write operation is in progress (and that may take a while, especially in case of network issues). This is because the operation is perform on the UI thread of your app, and therefore the UI cannot respond while the operation is in progress. This is by design. With some little coding, you can have the operation execute on a different thread, and then this issue will go away.

Best regards

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

More
27 Jun 2016 10:43 - 27 Jun 2016 10:44 #4169 by Erik
Hello,

I have come across a situation in your EasyOpcUADemo application under QuickOPC 5.3\ExamplesNet that causes a complete freeze of the application. See the attached file for steps to reproduce.

File Attachment:

File Name: ApplicationHungUp.pdf
File Size:311 KB


An issue similar to the one discribed above also happens on our HMI. When OPC Logging is disabled it never recovers. When I enable the OPC logging I get the following crash:
System.Threading.LockRecursionException: Recursive read lock acquisitions not allowed in this mode.
   at System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore(TimeoutTracker timeout)
   at System.Threading.ReaderWriterLockSlim.TryEnterReadLock(TimeoutTracker timeout)
   at OpcLabs.EasyOpc.UA.EasyUAClient.DisposeGuard[TResult](Func`1 func)
   at OpcLabs.EasyOpc.UA.EasyUAClient.DisposeGuardNotNull[TResult](Func`1 func)
   at OpcLabs.EasyOpc.UA.EasyUAClient.WriteMultiple(UAWriteArguments[] writeArgumentsArray)
   at OpcLabs.EasyOpc.UA.IEasyUAClientExtension.WriteMultipleValues(IEasyUAClient easyUAClient, UAWriteValueArguments[] writeValueArgumentsArray)
   at OpcLabs.EasyOpc.UA.IEasyUAClientExtension.WriteValue(IEasyUAClient easyUAClient, UAWriteValueArguments writeValueArguments)
   at OpcLabs.EasyOpc.UA.IEasyUAClientExtension.WriteValue(IEasyUAClient easyUAClient, UAEndpointDescriptor endpointDescriptor, UANodeDescriptor nodeDescriptor, Object value, Type valueType)
   at OpcLabs.EasyOpc.UA.IEasyUAClientExtension.WriteValue(IEasyUAClient easyUAClient, UAEndpointDescriptor endpointDescriptor, UANodeDescriptor nodeDescriptor, Object value)
   at DGpS.OPC.UAClient.Write(String serverUri, String nodeId, Object value)
   at DGpS.OPC.UAClient.Write(Int32 handle, Object value)
   at GenericUserControls.UserControls.OpcImageButton.MinPulsDeltatime()
   at GenericUserControls.UserControls.OpcImageButton.OnMouseUp(MouseEventArgs e)
   at GenericUserControls.UserControls.OpcImageButton.OnLostFocus(EventArgs e)
   at System.Windows.Forms.Control.WmKillFocus(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

With the following logs:

File Attachment:

File Name: HMI.txt
File Size:672 KB


File Attachment:

File Name: HMI-OPCTrace.txt
File Size:823 KB


What is happening is that we have a button writing a boolean value of true and then starts a timer, after 100ms it writes false. Just before we press this button we disconnect the network cable to "fake" a connection loss.

We obviously cant have the OPC logger running at all times as it does not use a ring buffer and would just overflow the system with huge logs. (Can I Feature request that?)

Best regards

Erik
Attachments:
Last edit: 27 Jun 2016 10:44 by Erik.

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

Moderators: support
Time to create page: 0.185 seconds

      

 Recommend this on Google