2015-12-18 4 views
0

Мой клиент C# OPC использует OpcNetApi и OpcNetApi.Com и установлен на том же компьютере как RSLinx Classic Single Node.Подключение к локальному одиночному узлу RSLinx Classic с использованием OpcNetApi

У моего клиента не было проблем с подключением к RSLinx Classic Gateway, когда эта версия использовалась на той же машине.

Но теперь, когда мы заменили шлюз с одного узла, я получаю следующее сообщение об ошибке получены из OpcNetApi:

E_NETWORK_ERROR Не удалось подключиться к серверу. Внутреннее исключение: CoCReateInstanceEx: Класс не лицензирован для использования.

Я проверил все DCOM конфигурации, и я использую стандартный код подключения:

fact = new OpcCom.Factory(); 
server = new Opc.Da.Server(fact, null); 
url = new Opc.URL("opcda://localhost/RSLinx OPC Server"); 
server.Url = url; 
server.Connect(); 

Я также попытался:

server.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential())); 

Но оба дают мне ту же ошибку ,

Итак, вопрос: Как подключиться к локальному одиночному узлу RSLinx Classic с клиента, работающего на том же компьютере, с помощью OpcNetApi/OpcNetApi.Com?

Мы думали, что Single Node означает, что связь OPC ограничена одним устройством, что мы и делаем. , ,

Пожалуйста, помогите!

ответ

1

Если вы находитесь на 64-битной машине, решение может заключаться в том, чтобы ваш .NET-код запускался в 32-разрядном процессе (например, путем переключения цели проекта с AnyCPU на x86 или с помощью CORFLAGS утилита).

Если я хорошо помню, серверы RSLinx OPC реализованы в (32-разрядной) DLL-библиотеке. Когда они вызывается локально, эта DLL ожидает выполнения внутри процесса OPC-клиента. Когда он обнаруживает иное, он считает, что он используется удаленно (в процессе обертки, предоставляемом DCOM), и когда он не лицензирован для удаленного использования, дает эту ошибку.

Когда OPC-клиент является локальным 64-разрядным процессом, он не может, однако, загружать 32-разрядную DLL, а DCOM также создает процесс-оболочку. Бедный RSLinx тогда думает, что он работает удаленно ...

+0

Это прекрасно работает. Спасибо за эту важную информацию! – carrytiger