# MTConnect

Состояние станков и аварии из агента MTConnect прямо в чате

Модель и значения агента MTConnect через назначенный шлюз, только чтение

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

Агент MTConnect обычно стоит в сети объекта рядом со станками, поэтому к нему ходит шлюз: программа, установленная на компьютер в той же сети. Шлюз добавляется на вкладке «Шлюзы» и назначается подключению. В подключении указывается адрес агента, например http://10.0.12.5:5000, и при необходимости имя устройства. Пока связи наружу нет, шлюз копит данные на диске.

Шлюз читает агента так, как его читают клиенты стандарта: /probe даёт модель устройств, и каждый DataItem становится тегом, /current даёт настоящее, дальше /sample страницами от nextSequence. Каждое наблюдение читается ровно один раз и с временем агента. Если отсчёты ушли из кольцевого буфера агента, шлюз берёт /current заново: промежуточные значения теряются, текущие нет. Перезапуск агента с новым instanceId перечитывает модель.

Шлюз задаёт агенту только три GET-запроса: probe, current и sample. PUT и POST, которыми адаптер пишет в агента, в драйвере не используются, поэтому агент ничего не получает от шлюза и станок им не управляется. Элементы CONDITION становятся авариями с уровнем Warning или Fault; квитирования в MTConnect нет, и шлюз его не изображает.

Опрос идёт с паузой «Опрос, мс» (по умолчанию 1000), а пока у агента есть непрочитанные отсчёты, без паузы. Запрос, не уложившийся в «Ожидание ответа», обрывает раунд, и шлюз начинает заново с запомненной позиции, в том числе после своего перезапуска. Слово состояния станка шлюз выводит из EXECUTION по тем же правилам, что для стоек FANUC по FOCAS, так что одна стойка читается одинаково обоими путями.

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

### Что со станками сейчас
Агент покажет каждый станок агента со словом состояния (работает, прерван, остановлен, готов) и числом активных аварий.

### Аварии и предупреждения
Агент соберёт Warning и Fault из элементов CONDITION за смену с кодами, текстами и временем появления и снятия.

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

### Работа и простои
Агент возьмёт отсчёты EXECUTION за период и посчитает, сколько времени станок работал, стоял с остановленной подачей или ждал.

### Шпиндель и коррекции
Агент соберёт историю оборотов шпинделя и коррекций подачи и шпинделя интервалами: минимум, максимум и среднее.

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

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

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

- Агент MTConnect с доступными /probe, /current и /sample
- Сетевой доступ к агенту с компьютера шлюза без прокси
- Компьютер в сети объекта для программы шлюза
- Для https:// сертификат агента, которому доверяет шлюз

### Проверьте ответ агента
С компьютера шлюза откройте адрес агента с /probe и /current: агент должен отдать XML. Шлюз ходит к агенту без прокси и не следует перенаправлениям.

### Выберите устройство агента
Если агент обслуживает несколько станков, а нужен один, впишите имя или UUID устройства из /probe. Пусто: шлюз читает все устройства агента.

### Для https добавьте сертификат агента
Если адрес агента https:// с самоподписанным сертификатом, положите сертификат на компьютер шлюза в папку данных pki/mtconnect/trusted/.

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

### Как подключить MTConnect?
Установите шлюз на компьютер в сети объекта и добавьте его на вкладке «Шлюзы». В подключении MTConnect укажите адрес агента, например http://10.0.12.5:5000, и при необходимости имя или UUID устройства. Пусто значит все устройства агента.

### Что агент видит в MTConnect?
Модель устройств агента как теги: значения SAMPLE и EVENT с историей, аварии из CONDITION, производителя, модель и серийный номер, а также выведенное слово состояния каждого станка, программу и счётчик деталей, если агент их объявляет.

### Отправляет ли агент команды станку?
Нет. Шлюз делает только GET-запросы probe, current и sample. Запросов PUT и POST к агенту в драйвере нет, и станком через MTConnect управлять нельзя.

### Агент отвечает JSON. Это проблема?
Нет. Шлюз в каждом запросе просит XML (Accept: application/xml), и агенты 2.x отдают его, даже если по умолчанию настроены на JSON. Драйвер читает XML-документы всех версий.
