Уважаемые коллеги, всем доброго времени суток. Мы продолжаем серию уроков по работе с Web-ориентированной SCADA системой ПУЛЬТ.ОНЛАЙН. Для демонстрации мы сделаем небольшой проект для трех приточных вентустановок. Данный урок разобьем на 2 части: в первой части мы покажем, как получить данные с одной вентустановки, создадим переменные, разберемся с прототипами и узлами, посмотрим тренды, а также разберемся с аварийными событиями. Во второй части визуализируем эти данные на мнемосхеме и масштабируем нашу систему до трех вентустановок. Завершенный оригинал проекта доступен на демо-сервере под названием “Приточная вентиляция”. Ссылку приложу в описании к видео. https://webscada.ru/#interface/project?path=/projects/%D0%9F%D1%80%D0%B8%D1%82%D0%BE%D1%87%D0%BD%D0%B0%D1%8F%20%D0%B2%D0%B5%D0%BD%D1%82%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F.project Итак, зайдем на ранее установленный сервер (не забываем поставить галочку запомнить.) Зайдем в редактор, нажмем “Пустой проект” Вот открылось окно с проектом, по умолчанию название проекта назначается по нумерации, в данном случае “Проект 1”. Обратите внимание на панель навигации: Вся проектная информация хранится в виде дерева. Вот у нас главная папка проекты, далее наш созданный проект и у каждого проекта будет свой набор разделов, который будет состоять из групп, журнала, мнемосхем, переменных и т.д. Т.е. у нас есть дерево проектов, в каждом проекте есть разделы, а в разделах объекты. Щелкнем на проект1, в правой части экрана появляется основная форма. Вот появилась вкладка разделы. Щелкнем(Показать это все, что совпадает со структурой дерева разделов) Для примера нажмем на узлы: как мы видим, в правой стороне у нес появилась вкладка объекты. Т.к. проект еще пустой, то и узлов еще никаких нет. Прошу обратить внимание - слева снизу есть окно свойств. При помощи этого окна мы будем задавать какие-то свойства, как разделам, так и объектам. Итак…Зайдем в проект 1. Нажмем главный экран. Вот у нас информация по проекту. Вот это все - это то, что будет видеть пользователь, когда зайдет на страницу проекта в интерфейсе. Весь этот вид – он настраиваемый. Вот здесь можно изменять его настройки.(Показать на окно слева). Для примера можем поменять формат. Как мы видим, раскладка изменилась...Сюда же в будущем можно выложить мнемосхему, с которой начинается навигация по проекту и прочее. Пока углубляться в это не будем, чтоб не затягивать видео. Выйдем от сюда. Сохранять ничего пока не будем. Давайте зайдем в прототипы. И начнем потихонечку заполнять наш демонстрационный проект… Простыми словами – прототипы – это шаблоны будущих узлов, в которых будут находится переменные, опрашиваемые определенным драйвером и по определенным правилам. Нажмем добавить, появился список шаблонов драйверов. Добавим прототип “Стандартный узел Modbus-tcp”. Теперь зайдем в него. Так как мы добавили прототип из шаблона, то он уже настроен на работу с узлом Modbus-tcp и здесь уже добавлены служебные переменные-метрики для мониторинга качества и состояния связи. Для демонстрации, давайте еще создадим пустой прототип. И вот, как мы видим, все вкладки пустые. Самое главное здесь – это вкладки драйверов, в которых мы будем перечислять переменные, которые в дальнейшем появятся в узле, а также не менее важная вкладка(перейдем обратно в прототип для модбаса) – это параметры. Параметры будут служить нам в качестве макросов, значения которых можно подставлять в свойства переменных. Т.е. допустим у нас есть modbus tcp, и чтоб нам для каждой переменной, к примеру, не вводить порт 502, мы можем в настройках вбивать макрос %port%(там будем писать порт и знаки процента с двух сторон). Также эти же макросы будут в узлах. И когда прототип будем привязывать к узлу, там будет возможность определить значения данных макросов и переменные узла примут эти значения. Пока что не зацикливаемся на этом. Это я на будущее просто говорю. Итак…Переменные для modbus-tcp будут записываться в вкладке MBTCP. Вот эти все переменные – они служебные. Нужны для того, чтоб мы могли наблюдать за состоянием сети modbus tcp(перечислить немного). Добавим свои переменные. Нажимаем плюсик. Ну и заполним карту переменных нашей вентустановки. (В данном видео я выйду за рамки бесплатной лицензии на 10 шт. переменных, так что имейте это ввиду, если захотите повторить действия из видео. ) Добавим переменную и далее, стараемся пользоваться не таблицей, а окном свойств, о которых я говорил в ранее. temp_setpoint HR 1 (уставка температуры) °С INT16 temp_outdoor IR 1 (уличная температура) °С INT16 temp_room IR 2 (температура в помещении) °С INT16 temp_supply IR 3 (температура в притоке) °С INT16 В тренды damp_open IR 4 (процент открытия заслонки) % fan_no_pressure CL 1 (индикатор отсутствия перепада давления на вентиляторе) heater_no_current CL 2 (индикатор отсутствия тока в цепи нагревателя) filter_dirty CL 3 (индикатор загрязнения фильтра) system_on CL 4 (включение системы) heater_on DI 1 (индикатор включения нагрева) fan_on DI 2 (индикатор включения вентилятора)
Переменные мы забили. Теперь давайте перейдем к узлам…. Добавим узел. Нажмем на плюсик. Привяжем сразу к нему прототип. Вот, появились наши переменные из прототипа модбаса. Смотрите, здесь также появились глобальные имена. Что такое P1, что такое N1… - это префиксы с ID проекта и ID узла, они позволят нам при необходимости обращаться к переменной из других узлов или проектов. Данные глобальные имена будут транслировать себя на весь сервер. Эти переменные можно будет подставлять в различные математические формулы, скрипты и так далее… Давайте зададим имя узлу. Пусть это будет “Вентустановка 1”. Теперь зададим параметры подключения.
Смотрите, тут еще кнопочка есть такая, она показывает только те параметры, которые были явно заданы. Это иногда очень полезно, чтоб не запутаться во всем этом разнообразии свойств.
Все, сохраняем. Собираем. Переходим в интерфейс-> переменные. И вот, как мы уже можем видеть – данные подтягиваются с демо сервера. Обратите внимание, температура у нас с виртуальной точкой на сервере. Давайте это исправим и представим эти данные в удобоваримом для нас виде. Вернемся в прототип. Выделим сразу 4 наши переменные, которые хотим изменить с одинаковым свойством. Выставим множитель 0.01 Сохраняем. Собираем. Переходим обратно в интерфейс. И вот у нас уже данные в удобном для нас виде. Отлично. Далее….Давайте заведем аварийную переменную и смоделируем разрыв связи с узлом. Возвращаемся в редактор. Заходим в наш прототип. Вкладочка Alarm. И создадим переменную alarm_offline. Добавим описание “Разрыв связи с узлом” Теперь нужно задать сигнал, по которому отработает наш alarm. Условие тревоги . Скопируем из MBTCP metric_down и вставляем ее сюда: $metric_down (значок доллара не забываем ставить). Вообще, здесь можно указывать целое математическое выражение с несколькими переменными (вот для чего могут пригодиться глобальные имена перменных), но сейчас нам это не требуется. Условие !=0. Т.е. когда переменная metric_down станет не равна 0 – сработает алярм. Здесь есть еще полезный параметр – это задержка в секундах. Своеобразный подавитель дребезга контактов. Например поставим мы 5 секунд. И если переменная станет равна 1, отработает секунду и вернется в 0 – алярм не появится. Как только она будет дольше 5 секунд – алярм отработает. Давайте еще выберем параметр тревоги. Сделаем класс “неисправность”. Больше мы ничего трогать пока не будем. Все. Сохраняем. Собираем. Давайте проверим, отработает ли данный алярм. Заморачиваться не буду – просто выдерну шнур из роутера на время. Все, алярм заработал. Снизу выскочила авария. Справа можем раскрыть подробнее. Звук можем включать/выключать. Давайте квитируем эту аварию. Ну и возвращаем все а место. Авария ушла. Опрос идет. Давайте еще заведем тревоги для нештатных состояний нашей вентустановки: Возвращаемся в редактор. Заходим в наш прототип. Вкладочка Alarm.
Ну что ж…На этом первая часть видео закончена. Подведем итог: Переменные мы завели, узел создали, аварии привязали, тренды завели. Это тот минимум, который по части сбора данных присутствует по сути в любом другом проекте. В следующем видео мы займемся визуализацией всех этих данных на мнемосхеме, а также масштабируем нашу систему диспетчеризации до 3 вентустановок.