# EtherNet/IP

Теги контроллеров Logix и Omron по EtherNet/IP прямо в чате

Теги ПЛК Rockwell Logix, Micro800, Omron NJ/NX, PLC-5/SLC через назначенный шлюз, только чтение

## Как агент работает с EtherNet/IP

Данные читает шлюз: программа, которая ставится службой на компьютер или сервер в сети объекта и ходит к контроллеру по EtherNet/IP, TCP порт 44818. В подключении указываются адрес контроллера или его Ethernet-модуля, тип контроллера и маршрут к ЦП, например 1,0. Наружу шлюз отправляет данные только исходящим соединением.

ControlLogix, CompactLogix и Micro800 отдают список своих символов, поэтому карту тегов можно не писать: шлюз читает теги контроллера и его программ, разбирает шаблоны структур и читает каждое значение до элементарных типов, по умолчанию не больше 10 000 тегов. Соседние элементы одного массива читаются одним запросом, до 120 элементов по умолчанию. Перед опросом шлюз спрашивает у устройства, кто оно, и при несовпадении типа называет, кто ответил.

Протокол ведёт встроенная в шлюз библиотека libplctag, и из неё объявлены только функции чтения: записи в контроллер у драйвера нет. Тег, который контроллер не знает или читать не даёт, помечается плохим со своим кодом и запрашивается заново на следующем опросе, остальные читаются дальше. Обрыв сессии завершает круг опроса, и следующий подключается заново.

Omron NJ/NX, PLC-5, SLC 500 и MicroLogix список тегов не отдают, поэтому для них карта тегов обязательна: имя переменной или адрес таблицы данных, например N7:0, и тип. Шлюз отправляет изменения значений и раз в 1800 секунд повторяет тег, который не менялся. Если связь с облаком рвётся, данные копятся на диске шлюза и приходят после восстановления.

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

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

### Сводка по массиву
Агент возьмёт историю элементов массива, например счётчиков Counts[0]…Counts[9], и покажет по часам минимум, максимум, среднее и последнее значение.

### Простои за неделю
Агент заберёт сырые отсчёты статуса работы за неделю и посчитает число остановок, их длительность и общее время простоя.

### Задача на выход за порог
Агент заведёт задачу, которая запустится, когда значение тега выйдет за порог и продержится заданное время, а не на каждый отсчёт за порогом.

### Теги, которые не читаются
Агент назовёт теги с отказом контроллера и причиной: тега нет, тип в карте не совпал, индекс за концом массива, чтение запрещено.

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

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

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

- Контроллер ControlLogix, CompactLogix, Micro800, Omron NJ/NX или PLC-5/SLC
- Порт 44818 открыт между контроллером и компьютером шлюза
- Маршрут к ЦП (порт и слот) за Ethernet-модулем
- Для Omron NJ/NX, PLC-5, SLC 500 и MicroLogix: список тегов с типами
- Компьютер в сети объекта для службы шлюза

### Узнайте тип контроллера
controllogix подходит и для CompactLogix; ещё micro800, omron-njnx, plc5, slc500, micrologix. Шлюз сверяет тип с ответом устройства и называет, кто ответил.

### Запишите маршрут к ЦП
Порт и слот ЦП через запятую: 1,0 это объединительная плата, слот 0. ControlLogix обычно доступен через Ethernet-модуль в шасси. У Micro800 маршрута нет.

### Пропустите порт 44818 до шлюза
EtherNet/IP работает по TCP на порту 44818. Сеть между компьютером шлюза и контроллером или его Ethernet-модулем должна пропускать это соединение.

### Для Omron и PCCC выпишите теги
Omron NJ/NX, PLC-5, SLC 500 и MicroLogix список тегов не отдают. По строке на тег: путь, имя или адрес таблицы данных (N7:0) и тип.

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

### Как подключить EtherNet/IP?
Заведите шлюз во вкладке «Шлюзы» и поставьте его службой на компьютер в сети объекта. В подключении укажите адрес, например tcp://10.0.12.5:44818, тип контроллера и маршрут к ЦП. Для Logix и Micro800 карту тегов можно оставить пустой, для остальных перечислите теги. Подключение назначается шлюзу, и он начинает опрос.

### Что агент видит в EtherNet/IP?
У Logix и Micro800 все пользовательские теги контроллера и программ, включая члены структур и элементы массивов; служебные теги модулей ввода-вывода не входят. У Omron NJ/NX и PCCC теги из карты. Для каждого тега агент читает текущее значение, историю интервалами и сырые отсчёты.

### Меняет ли агент значения в ПЛК?
Нет. Из библиотеки протокола в шлюз подключены только функции чтения, функции записи в нём не объявлены. Агент ничего не пишет в контроллер.

### Теги не читаются, а контроллер на связи. Что проверить?
Сначала тип контроллера: Micro800, выбранный как controllogix, отвечает отказами и таймаутами, и шлюз называет, кто ответил на самом деле. Затем маршрут к ЦП: у ControlLogix это порт и слот за Ethernet-модулем, у Micro800 поле пустое. Отказ отдельного тега с кодом значит, что имя или тип в карте не совпали с контроллером.
