Закрыть OPC DA-соединения

Я использую OPC Foundation's OpcNetApi.dll связаться с сервером OPC DA.

Мне любопытно, если есть программный способ убить определенные соединения, которые в настоящее время активны на сервере, используя эту библиотеку или подобную библиотеку.

1 ответ

Я не уверен, но я не думаю, что вы просите всегда возможно (без отладчика). OPC основан на Microsoft COM. Существует два способа реализации COM: in-proc и out-of-proc. Выбор зависит от поставщика сервера OPC.

В реализации in-proc, если вы запускаете OPC-клиент на той же машине, что и OPC-сервер, то OPC-сервер - это просто dll, которая загружается непосредственно в область памяти OPC-клиента. Эта dll предоставляет доступ к интерфейсам OPC, таким как CreateGroup, ReadAllItems и т. Д. Теперь она, вероятно, получает реальные данные через какой-то другой механизм (именованный канал, TCP/IP и т. Д.), Но это снова зависит от реализации сервера OPC. Единственный способ действительно принудительно остановить этот сервер OPC - завершить работу клиента OPC или получить программу клиента OPC. Конечно, клиент OPC или сервер OPC, возможно, уже реализовали механизм завершения, но это не гарантируется.

Если это реализация OPC вне процесса, тогда сервер OPC будет работать в отдельном исполняемом файле, чтобы вы могли найти имя этого исполняемого файла и завершить его. (Вы можете найти в regedit имя сервера OPC, чтобы найти соответствующее имя исполняемого файла). Если я правильно помню, сервер OPC может быть спроектирован таким образом, чтобы все клиенты совместно использовали один исполняемый файл или каждый клиент OPC получал свой собственный экземпляр исполняемого файла.

Если вы запускаете OPC-сервер удаленно, то, вероятно, он будет загружен в программу-заглушку, если это реализация in-proc, а затем привязан к RPC. Если вы заблокируете порты, через которые RPC связывается, я думаю, что большинство клиентов решат отключиться через некоторое время, хотя нет никакой гарантии, что они не попытаются подключиться позже.

Вот еще немного информации: https://www.opcsupport.com/link/portal/4164/4590/Article/711/May-I-get-a-In-Proc-and-Out-Of-Proc-explanation

Другие вопросы по тегам