ОВЕН ПЛК110[M02]-MS4, HMI, OPC и SCADA, или сколько человеку необходимо Ромашкового чая. Часть 1

Добрый день, дорогие читатели этой статьи. Пишу это в формате обзора

Небольшое предупреждениеХочу предупредить, что если вы сразу поняли о чём речь из заголовка, советую первый пункт(собственно, ПЛК-ядро) менять на что угодно из ценовой категории на ступень выше.
Никакая экономия денег не стоит такого количества нервов, субъективно.

Для тех, кого не пугает небольшая седина и амплитуда нервного тика, позже я опишу в подробностях как создавалось это технологическое чудо. В данной статье же краткий анализ проекта с определённой долей критицизма.

Зарождение. Постановка задачи

Собственно, работаю я в конструкторском бюро, и мы тестируем оборудование автоматизации для интеграции в наши заводы под ключ. Недавно на склад поступило оборудование ОВЕН и из него было решено собрать испытательный стенд:

  • ПЛК110[M02]-MS4 (исполнительная среда MasterSCADA 4D)
  • Панель оператора СП307
  • Модуль универсальный ввода аналоговых сигналов МВ110-224.2А
  • Модуль ввода сигналов тензодатчиков МВ110-4ТД
  • Модуль электроизмерительный МВ110-220.3М

Структура системы была выбрана с разграничением сетей по назначению:

  1. Modbus RTU на базе RS-485 — общение ПЛК с подчинёнными устройствами(модули, частотники, интеллектуальные датчики, HMI панель СП307), ПЛК-мастер сети.
  2. Modbus TCP на базе Ethernet — Общение разных ПЛК друг с другом и с OPC-сервером
  3. ПК-сервер OPC и SCADA-системы является одновременно шлюзом между двумя разными сетями(Корпоративная LAN предприятия и Modbus TCP сеть контроллеров(два сетевых адаптера с маршрутизацией данных стандартными средствами Windows)
  4. Корпоративный LAN имеет выход в интернет через прокси-сервер

Структура системы в общем виде представлена на изображении ниже:

ОВЕН ПЛК110[M02]-MS4, HMI, OPC и SCADA, или сколько человеку необходимо Ромашкового чая. Часть 1

Заложенный функционал

  • Сбор и перенаправление данных с ПЛК на OPC-сервер
  • Локальное управление и мониторинг посредством HMI-панели
  • Управление и мониторинг из SCADA через OPC-сервер
  • Управление с любого ПК из LAN предприятия и через интернет с помощью SCADA-клиента
  • Подключение мобильных OPC-мониторов через LAN и интернет
  • Разумеется, архивация и генерация отчётов

Вроде ничего не упустили. Общее описание системы есть, а теперь, собственно, по теме(способы устранения буду описывать в статьях с реализацией каждого узла):

Возникшие сложности

1. Документация к ПЛК

Beta-тестирование заявленного ПЛК на ядре MasterSCADA 4D было обозначено производителем в 2012 году. Несмотря на такой внушительный срок существования концепта, всё что имеет разработчик в 2019-м — это руководство по программированию в 28(!?) страниц, на которых полезной информации чуть менее чем нисколько, причём скриншоты в мануале из MasterSCADA 3D, что довольно забавно с учётом того, что интерфейс сменился.

Также активно поддерживается тремя адептами и менеджером по продажам ветка форума в 20 топиков.

2. Архитектура ПЛК-модули

Это отдельная тема для обсуждения. Кратко: ПЛК общается с модулями как с Modbus RTU slave устройствами, которые предварительно необходимо сконфигурировать утилитой отдельно подключив каждый к ПК через преобразователь RS-485.

Умные дяди, конечно, наверняка умеют делать это без преобразователя через ПЛК, последовательно подключая модули в сеть и записывая нужные регистры, но такое приходит с опытом и огромным количеством боли.

Для разработчика впервые увидевшего такую архитектуру совсем не юзер-френдли.
Также все аналоговые модули любят уходить в отказ по неизвестным причинам, забирая за собой всю RS-485 сеть в Терра Инкогнита, но об этом я также хочу рассказать отдельно, целая эпопея, конечно. Проблеме, к слову, лет 10, производитель отшучивается «Следует признать, шаблоны нам не удались», однако это единственный интерфейс общения с модулями, и люди, вполне серьёзно, давно прописывают свои реализации Modbus RTU.

Тем временем, ромашковый чай заканчивался… Солнце уходило на закат

3. IDE MasterSCADA

Про графические инструменты говорить не будем, сильно я не тестировал, но скажу сразу, что не понравилось.

Говорим про реализацию обмена данными и языки стандарта МЭК:

Физические вводы выводы контроллера не являются глобальными переменными и к ним нельзя обратиться из любой части программы, написав алиас, например «DI1». В каждую программу следует перетаскивать это ручками, там формируется локальная переменная, которая наследует или передаёт значение. Т.е. сама сущность ПЛК, в моём видении, немного утеряна: устройство должно упрощать программирование логики работы физических каналов до уровня «Если сработал вход DI1 — Включаем выход DO1», а выглядит это так «Вход DI1 — Переменная LI1 — Переменная LO1-Выход DO1», также по незнанию этого принципа IDE можно словить восхитительное предупреждение «Преобразование Boolean-Boolean невозможно»(вероятнее всего, что то из них указатель, но представляю в редакции создателей, так гармоничнее).

Библиотеки языков ST, FBD, SFC достаточно объемные и выбор для удобства программирования есть, однако эти компоненты являются не функциями, а классами, внутри которых зашиты методы, а во вторых на большинство отсутствует справка с описанием функционала и типов данных. Настырность привела меня в библиотеки ядра CodeSys, откуда все эти функции и были взяты, их справка помогла.

4. Обмен с панелью СП307

Довольно интересное мероприятие для тех, кому некуда потратить пару дней.

Стандартное тестирование GUI(HMI или SCADA) для меня это сделать 6 проб:

  1. Чтение дискретного сигнала
  2. Запись дискретного сигнала
  3. Чтение целочисленного значения
  4. Запись целочисленного значения
  5. Чтение вещественного значения
  6. Запись вещественного значения

Соответственно, я рисую на экран 6 компонентов-примитивов и каждый по порядку проверяю
Обмен абсолютно такой же как и с модулями, но с отдельного порта ПЛК RS-232/485, и, вроде как, более стабильный. Поскольку HMI-слэйв, то писал я в него по изменению, а читал поллингом 500мс, чтобы не упустить действия оператора.

Первые 4 пункта были выполнены на отлично, но 5 и 6 вызвали проблемы.

Отправляем данные типа Single Float, на экране их выводим и видим, что данные не те, хотя все настройки вывода(Float, размерность 1 регистр и прочее) стоят правильно. Будет неправдой сказать, что в документации прецедент не описан, однако, попробуйте найти в какой и где, это со стороны забавно.

После истеричного перебора всех настроек, касаемых самих данных и их отправки, пишем в техподдержку, ответ в среднем 5-6 календарных дней, работаем по стандартному скрипту техподдержки «Проверьте, что питание включено — проверьте версию ПО — ожидайте, пожалуйста еще неделю-Идём разбираться сами».

К слову, решилось установкой одной галочки в абсолютно неадекватном месте с абсолютно неадекватной подписью.

В функционал экрана не заложен ввод аналогового сигнала формата «Бегунок», можно вписать только в текстовое поле цифрами. Это просто восхитительно, либо пишем кнопки «±» и скрипт самостоятельно либо вводим цифру с клавиатуры, о мягком управлении каким-нибудь приводом забываем.

Не буду сильно перегружать статью, поэтому буду описывать проблемы с верхним уровнем в части 2.

Резюмируя, хочу отметить, что я имел достаточную свободу и много времени для решения этих проблем, которые на первый взгляд кажутся смешными, но вызывают много боли у пострадавшего. В условиях ограниченных сроков с такими проблемами сталкиваться критично.

P.S.: Все тезисы, изложенные здесь, субъективны, и являются лишь попыткой предупредить неподготовленных, а не дискриминировать производителей, прошу отнестись к этой статье именно с этой точки зрения.

Вторая часть уже тут: щелкаем

Источник: habr.com