# Siemens S7

Данные ПЛК Siemens S7 прямо в чате

ПЛК S7-300/400 по адресам STEP 7 через назначенный шлюз, только чтение; S7-1200/1500 через OPC UA

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

Данные читает шлюз: программа, которая ставится службой на компьютер или сервер в сети объекта и ходит к ПЛК по ISO-on-TCP, порт 102. В подключении указываются адрес ПЛК, стойка и слот ЦП (по умолчанию 0 и 2, как у S7-300) и карта тегов: по строке на тег путь, абсолютный адрес STEP 7 и тип. Наружу шлюз отправляет данные только исходящим соединением.

Размер PDU ПЛК называет сам при каждом подключении: 240 байт у S7-300, 480 или 960 у S7-400 и S7-1500. Драйвер упаковывает запросы под этот размер: теги одной области, стоящие не дальше 5 байт друг от друга, читаются одним диапазоном, в запросе до 20 элементов, а длинная строка режется на части. Числа S7 хранит в порядке big endian, поэтому порядок байт выбирать не нужно.

Драйвер только читает: он устанавливает связь и посылает чтение переменных (Read Var), записи, загрузки блоков, остановки и запуска ЦП в нём нет. Тег, который ПЛК отказался читать (адрес вне диапазона, нет блока данных, оптимизированный блок), помечается плохим со своим кодом, остальные читаются дальше. Отказ всего запроса на S7-1200/1500 значит, что в защите ЦП не разрешён PUT/GET.

Шлюз отправляет изменения значений и раз в 1800 секунд повторяет тег, который не менялся; мёртвая зона задаётся числом или процентом диапазона. Если связь с облаком рвётся, данные копятся на диске шлюза и приходят после восстановления. Таймеры и счётчики S7-300/400 читаются как элементы T5 и C3, а у S7-1200/1500 таймеры живут в блоке данных.

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

### Что сейчас на линии
Агент найдёт теги по пути, например line1/tank, и покажет текущие значения из блоков данных и меркеров со временем отсчёта и пометкой, свежие ли они.

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

### Время работы насоса
Агент заберёт сырые отсчёты флага работы, например DB1.DBX0.3, за неделю и посчитает, сколько часов насос работал и сколько раз запускался.

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

### Теги, которые ПЛК не читает
Агент назовёт теги с отказом ПЛК и его кодом: адрес вне диапазона, нет такого блока данных, нет доступа, и подскажет, что поправить в карте тегов.

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

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

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

- ПЛК S7-300/400, S7-1200/1500, S7-200 или LOGO! с доступом по сети
- Порт 102 открыт между ПЛК и компьютером шлюза
- На S7-1200/1500: разрешён PUT/GET в защите ЦП
- На S7-1200/1500: выключен оптимизированный доступ у читаемых блоков данных
- Компьютер в сети объекта для службы шлюза
- Абсолютные адреса тегов из проекта STEP 7 или TIA Portal

### Разрешите PUT/GET на S7-1200/1500
В защите ЦП в TIA Portal включите «Permit access with PUT/GET». Без этого ПЛК отклоняет чтение целиком, и подключение получает отказ доступа.

### Выключите оптимизированный доступ к DB
На S7-1200/1500 у каждого читаемого блока данных снимите «Optimized block access». Оптимизированный блок ПЛК читать по абсолютному адресу не даёт.

### Найдите стойку и слот ЦП
S7-300 стоит в слоте 2, S7-1200/1500 в слоте 1, S7-400 в слоте из конфигурации оборудования. Для LOGO! и S7-200 вместо них задаются TSAP, у LOGO! 0BA7/0BA8 это 20.00.

### Пропустите порт 102 до шлюза
Шлюз ходит к ПЛК по ISO-on-TCP на порт 102. Сеть между компьютером шлюза и ПЛК должна пропускать это соединение.

### Выпишите абсолютные адреса тегов
По строке на тег: путь, адрес STEP 7 и тип, например DB1.DBD8 real или M10.1 bool. Адрес пишется без пробела, который показывает TIA: DB1.DBX5.2.

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

### Как подключить Siemens S7?
Заведите шлюз во вкладке «Шлюзы» и поставьте его службой на компьютер в сети объекта. В подключении укажите адрес ПЛК, например tcp://10.0.12.5:102, стойку и слот ЦП и карту тегов: по строке путь, адрес STEP 7 и тип, например line1/tank/level DB1.DBD8 real. Подключение назначается шлюзу, и он начинает опрос.

### Что агент видит в Siemens S7?
Теги из карты: блоки данных, меркеры, входы и выходы образа процесса, периферийные входы, таймеры и счётчики S7-300/400, V-память S7-200 и LOGO!. Для каждого тега агент читает текущее значение со временем отсчёта, историю интервалами и сырые отсчёты.

### Меняет ли агент значения в ПЛК?
Нет. Драйвер посылает ПЛК только установку связи и чтение переменных. Записи, загрузки блоков и команд остановки или запуска ЦП в нём нет.

### S7-1200 отвечает отказом доступа. Что проверить?
Отказ всего запроса значит, что в защите ЦП не включён «Permit access with PUT/GET». Если отказывают отдельные теги, проверьте, что у их блока данных выключен оптимизированный доступ и адрес не выходит за его конец. Символьные теги S7-1200/1500 удобнее читать через их встроенный сервер OPC UA.
