Данные ПЛК Siemens S7 прямо в чате
Подключите ПЛК Siemens S7-300/400 к ИИ-агенту по адресам STEP 7: блоки данных и меркеры через шлюз. Агент сведёт смену по часам и посчитает время работы насоса.
Как агент работает с 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, за неделю и посчитает, сколько часов насос работал и сколько раз запускался.
Задача на выход за порог
Агент заведёт задачу, которая запустится, когда значение тега выйдет за порог и продержится заданное время, а не на каждый отсчёт за порогом.
Теги, которые ПЛК не читает
Агент назовёт теги с отказом ПЛК и его кодом: адрес вне диапазона, нет такого блока данных, нет доступа, и подскажет, что поправить в карте тегов.
Пропуски в данных
Агент покажет промежутки истории без отсчётов и скажет, на связи ли шлюз объекта сейчас.
Примеры: Siemens S7
52 часа работы и 37 пусков.
- Дольше всего без остановки: 9 ч в субботу
- В среду 11 пусков за смену, это больше обычного
Считаю по сырым отсчётам флага 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
- Сервер пускает только известные адреса? Разрешите подключения с 158.160.205.91 и 87.228.27.163.
- 1
Разрешите PUT/GET на S7-1200/1500
В защите ЦП в TIA Portal включите «Permit access with PUT/GET». Без этого ПЛК отклоняет чтение целиком, и подключение получает отказ доступа.
- 2
Выключите оптимизированный доступ к DB
На S7-1200/1500 у каждого читаемого блока данных снимите «Optimized block access». Оптимизированный блок ПЛК читать по абсолютному адресу не даёт.
- 3
Найдите стойку и слот ЦП
S7-300 стоит в слоте 2, S7-1200/1500 в слоте 1, S7-400 в слоте из конфигурации оборудования. Для LOGO! и S7-200 вместо них задаются TSAP, у LOGO! 0BA7/0BA8 это 20.00.
- 4
Пропустите порт 102 до шлюза
Шлюз ходит к ПЛК по ISO-on-TCP на порт 102. Сеть между компьютером шлюза и ПЛК должна пропускать это соединение.
- 5
Выпишите абсолютные адреса тегов
По строке на тег: путь, адрес STEP 7 и тип, например DB1.DBD8 real или M10.1 bool. Адрес пишется без пробела, который показывает TIA: DB1.DBX5.2.
Частые вопросы
Заведите шлюз во вкладке «Шлюзы» и поставьте его службой на компьютер в сети объекта. В подключении укажите адрес ПЛК, например tcp://10.0.12.5:102, стойку и слот ЦП и карту тегов: по строке путь, адрес STEP 7 и тип, например line1/tank/level DB1.DBD8 real. Подключение назначается шлюзу, и он начинает опрос.
Теги из карты: блоки данных, меркеры, входы и выходы образа процесса, периферийные входы, таймеры и счётчики S7-300/400, V-память S7-200 и LOGO!. Для каждого тега агент читает текущее значение со временем отсчёта, историю интервалами и сырые отсчёты.
Нет. Драйвер посылает ПЛК только установку связи и чтение переменных. Записи, загрузки блоков и команд остановки или запуска ЦП в нём нет.
Отказ всего запроса значит, что в защите ЦП не включён «Permit access with PUT/GET». Если отказывают отдельные теги, проверьте, что у их блока данных выключен оптимизированный доступ и адрес не выходит за его конец. Символьные теги S7-1200/1500 удобнее читать через их встроенный сервер OPC UA.