We are trying to use a remote OPC server with Ignition via an OPC-DA COM Connection. The remote server is running RSLinx. I was originally able to connect to the remote server successfully, however we could not actually obtain data from any of the PLCs. After searching through the forum, i thought that it could be the CLSID needed curly braces around the number, and after editing this i was unable to connect to the remote server again - even after changing the settings back and re-adding the server to Ignition.
I have gone through and fixed the DCOM security settings, as per the MatriconOPC “Establishing OPC Communication on Windows XP SP2 and Windows 2003 SP1” guide from their site as was recommended in another thread. This is not been able to fix the issue either.
The error code we are getting is:
com.jniwrapper.win32.com.ComException: COM object method returns error code: 0x8007000E; E_OUTOFMEMORY (Not enough storage is available to complete this operation.)
So there are two issues (or maybe fixing one will fix both):
[ul][li]We can not connect to the remote server[/li]
[li]When we can connect, we can not obtain data from it[/li][/ul]
Thank you for any help with this issue.
EDIT: I forgot to mention that we are currently running version 7.0.4 (b4594).
James, there has been a lot of changes to the OPC COM module since your version. Please download and upgrade to 7.0.8 from https://www.inductiveautomation.com/downloads. If you are still running into the same problem post back.
I’ve updated to version 7.0.8, and we no longer have the issue of connecting to the remote server.
However, we still can’t get data from the PLCs through the remote server. The ‘last value’ is displayed as ‘null’ and the ‘quality’ is ‘Bad_NoDataAvailable’.
Do you have any idea what the issue is here?
We are still having issues with connecting to a remote RSLinx OPC server. It seems that the original problem has not been fixed either.
Here is a screenshot of the status page for OPC servers:
Help with this issue would be greatly appreciated.
Can you post what the Gateway is reporting as its memory usage? You can find this on both the main Status and Config pages of the Gateway web interface.
I highly suspect that the OUT_OF_MEMORY error is misleading, and is covering up a different problem, likely with DCOM security.
I’ve found at least one mention of this in a Microsoft KB article:
[quote]Q2 Why do I receive E_OUTOFMEMORY when trying to access a remote object?
A. DefaultAccessPermissions does not include the SID for the SYSTEM account. Use DCOMCNFG or the OLE/COM Object Viewer to add it.
E_OUTOFMEMORY is returned, instead of E_ACCESSDENIED, because of a bug in Windows NT 4.0. This will be fixed in future releases of DCOM.
This failure may occur both when trying to activate an object (through CoCreateInstanceEx, for example) and when receiving a pointer to a remote object (in the implementation of IConnectionPoint::Advise, for example). See the question that follows, “Why does IConnectionPoint::Advise not work?”[/quote]
I’ll admit that the mention of NT 4 is a little strange, but it otherwise seems to line up well with what you’re encountering.
Ignition, running as a service, is running under the SYSTEM account by default. On your RSLinx machine, you may need to go into dcomcnfg and add all of the appropriate rights for SYSTEM.
You can also try turning on dcom security logging as described in this thread on the Linx machine and see if that gives you some more hints.