# OPC DA

Теги серверов OPC DA старых SCADA прямо в чате

Теги сервера OPC DA (Classic) старых SCADA через шлюз на Windows, только чтение

## Как агент работает с OPC DA

Шлюз ставится службой на компьютер с Windows, лучше всего на ту же машину, где работает сервер OPC DA: локальному COM не нужны права DCOM и правила брандмауэра. В подключении указывается адрес вида opcda://localhost/Kepware.KEPServerEX.V6, где после хоста стоит ProgID или CLSID сервера. Подключение назначается шлюзу на вкладке «Шлюзы».

OPC DA работает поверх COM, у которого нет таймаута вызова, поэтому шлюз держит COM в отдельном вспомогательном процессе и снимает его, если сервер не ответил вовремя. Шлюз создаёт одну активную группу и читает кэш сервера, а не устройство: ПЛК не получает лишних запросов, как бы часто ни шёл опрос. Перед каждым чтением шлюз спрашивает статус сервера.

Теги берутся из обзора адресного пространства сервера (DA 3, а если сервер его не поддерживает, DA 2) или из вашего списка строк «путь, ItemID, тип». Служебные ветки вроде _System у Kepware пропускаются, если вы их не назвали. Подписку с обратным вызовом шлюз не использует: она требует входящего канала DCOM к компьютеру шлюза.

Шлюз только читает: записи в OPC DA в коде драйвера нет. У самого OPC DA истории нет, поэтому история тега копится из опросов шлюза с учётом мёртвой зоны и повтора молчащего тега. Пока облако недоступно, значения ждут на диске шлюза и приходят после восстановления связи.

## Сценарии интеграции

### Что сейчас на линии
Агент найдёт теги по ветке или ItemID и покажет текущие значения со временем сервера и качеством.

### История за смену
Агент прочитает накопленную историю тега за смену или сутки и посчитает минимум, максимум и среднее.

### Теги с плохим качеством
Агент найдёт теги, которые сервер отдаёт с качеством bad или uncertain, и покажет, с какого момента.

### Сравнение линий
Агент сравнит одинаковые теги разных линий или станций за период и покажет, где значения расходятся.

### Сообщение о пороге
В задаче «По событию» агент сообщит, когда значение тега выйдет за порог и продержится заданное время, и когда вернётся в норму.

### Связь с объектом
Агент скажет, когда шлюз пропал со связи и когда вернулся, чтобы пропуск в истории был виден сразу.

## Как подключить

**Перед подключением**

- Компьютер с Windows под шлюз, лучше машина самого сервера OPC DA
- Пакет OPC Core Components от OPC Foundation на компьютере шлюза
- Для удалённого сервера: открытые TCP 135 и динамические порты DCOM
- Учётка Windows с правами запуска и доступа к серверу

### Поставьте шлюз рядом с сервером OPC DA
Шлюз работает на Windows. На машине самого сервера COM вызывается локально: правила DCOM и брандмауэра не нужны, обычно хватает учётки службы шлюза.

### Установите OPC Core Components
Прокси интерфейсов OPC ставятся пакетом OPC Core Components от OPC Foundation. Без него на компьютере шлюза вызовы к серверу не проходят.

### Для удалённого сервера откройте DCOM
Откройте TCP 135 и динамический диапазон портов DCOM, дайте учётке права запуска и доступа к серверу. ProgID удалённо разрешает служба OpcEnum.

### Укажите учётку Windows
В поле пользователя впишите ДОМЕН\пользователь, которому сервер разрешает чтение. Пустое поле: шлюз ходит от учётки своей службы.

## Частые вопросы

### Как подключить OPC DA?
Поставьте шлюз на компьютер с Windows, лучше на машину сервера, и заведите его на вкладке «Шлюзы». В подключении укажите адрес opcda://localhost/ с ProgID сервера, например Kepware.KEPServerEX.V6. Логин можно не указывать: локальному серверу обычно хватает учётки службы шлюза.

### Что агент видит в OPC DA?
Теги, которые показывает обзор сервера, или те, что вы перечислили строками, с текущим значением, временем сервера и качеством, и историю, которую шлюз накопил опросами. Ветка, под которой найден тег, служит подписью, а сам тег определяется своим ItemID.

### Меняет ли агент значения?
Нет. Шлюз читает только кэш своей активной группы на сервере, записи в коде драйвера нет. Обратных вызовов от сервера к шлюзу тоже нет, поэтому входящий канал DCOM на компьютер шлюза не открывается.

### Ошибка REGDB_E_IIDNOTREG или E_NOINTERFACE. Что это?
На компьютере шлюза нет прокси интерфейсов OPC, без которых вызов между процессами не проходит. Установите пакет OPC Core Components от OPC Foundation на компьютер, где работает шлюз.
