[Системное администрирование, Умный дом, Инженерные системы] Управление наружным освещением

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
24-Мар-2021 07:31


Однажды передо мной встала задача модернизации системы управления наружным освещением: художественная подсветка фасадов, рекламные вывески, уличные столбы, подсветка адресных табличек и т. п. Необходимость модернизации была вызвана тем, что работа осветительных установок требовала частого участия человека. Для того чтобы управление работало как положено, приходилось вручную корректировать время включения и отключения. Модернизация предполагала максимальное использование существующей инженерной и IT инфраструктуры. Требовалось воздержаться от монтажа нового или замены старого оборудования, свести к минимуму перечень используемого ПО. Принципы, применяемые в системе управления, должны быть универсальными и пригодными для повторного использования. Должна быть обеспечена возможность легкого расширения системы. Осветительные установки, вводимые в эксплуатацию, могут быть смонтированы в разных районах города, в разных регионах или странах. Разбираемся с инфраструктурой На практике мне встречалось несколько подходов к управлению наружным освещением: регламентированное включение и отключение силами оперативного персонала, применение реле времени, сумеречных датчиков, фотореле и астрономических реле. Использование астрономических реле является, наверное, одним из самых интересных решений. Их работа основана на определении времени восходов и закатов в определенном географическом положении. Во время заката освещение включается, во время восхода - отключается. Как правило, при настройке таких реле имеется возможность установки временных корректировок для ускорения или замедления действия реле. Внесение таких корректировок позволяет включить (отключить) освещение на несколько минут позже заката или раньше рассвета. По похожей схеме работает и модернизируемая нами система. В роли астрономического реле выступает свободно программируемый логический контроллер (ПЛК). По линии RS485 ПЛК управляет проприетарными модулями ввода-вывода, которые установлены в разных зданиях. Управление и настройка системы осуществляется с использованием SCADA и OPC-сервера, установленного на одной из машин в сети Ethernet, к которой подключен ПЛК. Все используемое ПО является проприетарным.
Выявленные недостатки и их причиныВ ходе эксплуатации осветительных установок стало понятно, что система управления требует постоянного внимания персонала. По большому счету все сводилось к тому, что становилось очевидно: подсветка зданий включается слишком поздно, а отключается слишком рано. Эта проблема решалась корректировкой коэффициентов в системе диспетчеризации. Путем ручного подбора коэффициентов удавалось достигнуть времени включения и отключения, соответствующего городскому графику. Коэффициенты оставались неизменными до следующей подобной ситуации. А повторялись такие ситуации довольно часто.Было сделано предположение, что причина проблемы кроется в проекте, загруженном в ПЛК. Ознакомиться с исходниками проекта не представлялось возможным. Из текстового описания проекта стало понятно, что для определения времени включения/отключения освещения используется функциональный блок, доступный в проприетарной среде программирования. Используя триальную версию этой среды, удалось получить доступ к справке и более подробному описанию этого блока. Это внесло некоторую ясность: функциональный блок высчитывает время, когда угол (высота) Солнца над горизонтом для заданного географического положения станет равен 0. Коэффициенты корректируют этот угол. Например, при коэффициенте "-6" будет высчитано время, когда Солнце окажется ниже горизонта на 6°. Но в ходе проведенных экспериментов сложилось мнение, что функциональный блок производит расчеты не совсем так, как это предполагается. Дальнейшие работы в этом направлении были прекращены ввиду отсутствия универсальности такой реализации. Начинаем модернизациюПри рассмотрении существующих вариантов, я склонялся к варианту управления по расписанию. Не секрет, что существуют общедоступные графики отключения наружного освещения. Для Москвы и Санкт-Петербурга, например - МОССВЕТ и ЛЕНСВЕТ. Обладая этой информацией несложно написать скрипт, который следит за временем и по графику управляет освещением. Тем более, что в сети Ethernet, к которой подключен ПЛК, имеется Linux-машина.Для того чтобы такой скрипт мог управлять удаленными модулями ввода-вывода, потребовалось заново создать проект для ПЛК. По-сути ПЛК стал выступать в роли шлюза, что предоставило нам возможность управлять освещением по открытому протоколу Modbus TCP.
Для работы с Modbus будем использовать утилиту modpoll. Скачаем и распакуем ее на нашей Linux машине:
$ wget https://www.modbusdriver.com/downloads/modpoll.tgz
$ tar xzf modpoll.tgz
$ sudo cp modpoll/linux_x86-64/modpoll /usr/local/bin/
Теперь управлять освещением будем следующим образом:
#Включить освещение
$ modpoll -m tcp -r 2 -t 0 -a 1 -p 502 192.168.0.227 1 1 1 1 1 1 1 1
#Отключить освещение
$ modpoll -m tcp -r 2 -t 0 -a 1 -p 502 192.168.0.227 0 0 0 0 0 0 0 0
Дело осталось за малым - вызывать эти команды по заранее сформированному расписанию. Как было упомянуто выше, подобные графики доступны и мы можем ими воспользоваться. Но появилось желание найти более универсальный подход, поэтому давайте вспомним о таком явлении, как "сумерки". СумеркиВ сутках существуют периоды, называемые «сумерки». Это время перед восходом Солнца и после заката, когда небо частично освещено рассеянным солнечным светом. Выделяют три вида сумерек: гражданские, навигационные и астрономические. Гражданские сумерки определяются как период, когда угол нахождения Солнца под горизонтом составляет от 0°50′ до 6°, навигационные сумерки — от 6° до 12°, а астрономические сумерки — от 12° до 18°.Наибольший интерес для нас представляют навигационные сумерки. Именно в этот период освещение становится ближе к ночному, чем к вечернему, поэтому улицы городов нуждаются в искусственном освещении. Проще говоря, наружное освещение включается с началом навигационных сумерек (Солнце опускается ниже -6° ) и отключается с их окончанием (Солнце поднимается выше -6° ). Конечно стоит понимать, что в зависимости от погодных условий и в условиях городской застройки, включение может потребоваться раньше, чем Солнце опустится ниже -6° за горизонт.
Еще немного об астрономических реле.Когда мы обсуждали работу астрономических реле, то упоминали временные корректировки, ускоряющие или замедляющие действие реле. Такой подход с задержкой времени имеет недостатки. Как мы выяснили, освещенность на улицах в основном определяется углом Солнца относительно горизонта. В одном и том же географическом положении скорость, с которой Солнце опускается за горизонт, изменяется в течении года. Или, иначе говоря, в зависимости от времени года изменяется продолжительность сумерек и навигационные сумерки могут наступать позже или раньше. Из-за этого временные задержки в астрономических реле требуют периодических изменений. Если управлять освещением, опираясь именно на фактическое положение Солнца, то такая проблема отсутствует.Подробный и крайне наглядный рассказ о движении Солнца был найден на Youtube - Как солнце ходит по небу / How the sun moves across the sky (by daybit).Положение Солнца и наружное освещениеИтак, для решения нашей задачи мы будем синхронизировать работу наружного освещения с положением Солнца. При наступлении навигационных сумерек - включение освещения, в момент начала гражданских - отключение. Так как в нашем распоряжении имеется Linux машина и соответственно Perl, то для расчета положения Солнца воспользуемся им. Загрузим необходимый нам модуль:
$ sudo cpan install Astro::Coord::ECI
Создадим скрипт get_sun_elevation.pl, вычисляющий угол Солнца относительно горизонта.
#!/usr/bin/perl
# Вычисление высоты Солнца над горизонтом в градусах в текущий момент
# get_sun_elevation.pl 55.7558 37.6173 127
# 55.7558 - широта в градусах
# 37.6173 - долгота в градусах
# 127 - высота над уровнем моря в метрах
use Astro::Coord::ECI::Sun;
use Astro::Coord::ECI::Utils qw{:all};
my ($lat, $lon, $elev) = (deg2rad($ARGV[0]), deg2rad($ARGV[1]), $ARGV[2]/1000);
my $time = time ();
my $loc = Astro::Coord::ECI->geodetic ($lat, $lon, $elev);
my $sun = Astro::Coord::ECI::Sun->universal ($time);
my ($azimuth, $elevation, $range) = $loc->azel ($sun);
print rad2deg ($elevation), "\n";
Скрипт moscow_lights_ctrl.sh будет сравнивать заданное положение Солнца и его текущее положение в Москве. Если Солнце окажется ниже заданного угла, то отправим команду на включение, иначе - команду на отключение освещения:
#!/bin/sh
[ -z "$1" ] && angle=-6 || angle=$1
sun_angle=`./sun_pos.pl 55.751244 37.618423 124`
if [ $(echo "$sun_angle >= $angle" |bc -l) -eq "0" ]; then
  modpoll -m tcp -r 2 -t 0 -a 1 -p 502 192.168.0.227 1 1 1 1 1 1 1 1
  exit 0
fi
modpoll -m tcp -r 2 -t 0 -a 1 -p 502 192.168.0.227 0 0 0 0 0 0 0 0
Опытным путем было определено, что на модернизируемом объекте потребность в наружном освещении возникает, когда Солнце опускается ниже -1.5°. К слову, также было замечено, что городское освещение включается примерно в это же время. С помощью cron будем выполнять moscow_lights_ctrl.sh каждую минуту:
# Если Солнце ниже 1.5 градусов - включение освещения, иначе - отключение
* * * * * root /path/to/moscow_lights_ctrl.sh -1.5
Нам ничего не мешает создавать такие скрипты для любого географического положения. А когда возникнет необходимость расширения системы, мы сможем применить любое оборудование. Лично я склоняюсь к использованию модулей ввода-вывода, поддерживающих протокол Modbus TCP.
По большому счету все поставленные цели достигнуты. Модернизацию можно считать успешно завершенной. ZABBIXВ ходе работ появились некоторые планы на ближайшее будущее, а именно настройка мониторинга работы оборудования. Возможности такого мониторинга сильно зависят от степени готовности самих инженерных систем. Например, мы можем следить за положением силового контактора и контролировать включение освещения. Или получать значение силы тока и тем самым определять, сколько ламп вышло из строя и т.д. К сожалению, на текущий момент к полноценному мониторингу модернизируемая система не готова. Тем не менее, для задела на будущее было решено использовать уже существующую на предприятии систему мониторинга - ZABBIX. Все принципы работы остаются неизменными. Мы лишь перенесем всю описанную выше логику управления в ZABBIX. Шаблон для ZABBIXСоздадим шаблон astro_outdoor_lighting для Zabbix со следующими макросами:
  • {$CIVIL_DEGREES} - Окончание и начало гражданских сумерек в градусах. Включение и отключение наружного освещения,
  • {$ELEV} - Высота над уровнем моря в метрах,
  • {$LAT} - Широта в градусах,
  • {$LON} - Долгота в градусах.

Элементы данныхШаблон содержит только один элемент данных - elevation. Этот элемент следит за положением солнца в заданном географическом положении.
Чтобы получать текущее положение Солнца, элемент осуществляет внешнюю проверку через ранее созданный скрипт get_sun_elevation.pl./usr/lib/zabbix/externalscripts/get_sun_elevation.pl
#!/usr/bin/perl
# Вычисление высоты Солнца над горизонтом в градусах в текущий момент
# get_sun_elevation.pl 55.7558 37.6173 127
# 55.7558 - широта в градусах
# 37.6173 - долгота в градусах
# 127 - высота над уровнем моря в метрах
use Astro::Coord::ECI::Sun;
use Astro::Coord::ECI::Utils qw{:all};
my ($lat, $lon, $elev) = (deg2rad($ARGV[0]), deg2rad($ARGV[1]), $ARGV[2]/1000);
my $time = time ();
my $loc = Astro::Coord::ECI->geodetic ($lat, $lon, $elev);
my $sun = Astro::Coord::ECI::Sun->universal ($time);
my ($azimuth, $elevation, $range) = $loc->azel ($sun);
print rad2deg ($elevation), "\n";
Подробности настройки внешних проверок в ZABBIX смотрите в документации.ТриггерыЕдинственный триггер civil_twilight_dawn срабатывает по окончании гражданских сумерек, т. е. в момент, когда возникает необходимость в работе наружного освещения.
Шаблон созданного макроса доступен на github.Добавляем узел сетиПосле того как шаблон создан, нам необходимо создать узел сети для каждого географического положения, в котором находятся управляемые нами установки наружного освещения. Настройка узла сети заключается в задании актуальных координат и высоты Солнца.
Скрипты и действия ZABBIX В разделе [Администрирование]->[Скрипты] создадим глобальные скрипты с говорящими названиями facade light off и facade light on.
Когда триггер civil_twilight_dawn переходит в состояние "Проблема", нам необходимо включить наружное освещение, т.е. выполнить скрипт facade light on. После восстановления триггера освещение необходимо отключить, для чего потребуется вызвать скрипт facade light off. Поэтому в разделе [Настройки]->[Действия] мы создадим действие facade light, реализующее необходимое нам поведение системы.
Подобным же образом добавляем скрипты и действия для каждого узла сети.На этом настройку ZABBIX сервера для управления установками наружного освещения можно считать завершенной. ЗаключениеПосле модернизации прошло несколько месяцев. За это время работа наружного освещения не вызывала каких-либо нареканий.Как мне видится, даже в простейшем варианте (работа по cron) такой подход перекрывает потребности большинства подобных типовых задач в крупных коммерческих и административных зданиях. В плане экономической конкурентоспособности он тоже выглядит вполне достойно. Когда на объекте требуется более одного астрономического реле, реле времени и т. п., то их стоимость может быть вполне ощутимой. Кроме этого, чаще всего эти элементы управления разнесены по разным частям зданий и добиться их синхронной работы - не такая простая задача, как это может показаться.Вариант с применением системы мониторинга может решать еще более интересные задачи. Кроме управления, он дает возможность контролировать работу оборудования и оповещать персонал при выявлении неисправностей. В качестве примера можно привести синхронное включение рекламных вывесок на фасаде торгового центра. А в случае неисправности какой-либо вывески оперативный персонал получит сообщение.Конечно, все вышесказанное актуально при наличии какой-никакой IT инфраструктуры. Но, как правило, она имеется.На этом все. Спасибо за внимание!
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_sistemnoe_administrirovanie (Системное администрирование), #_umnyj_dom (Умный дом), #_inzhenernye_sistemy (Инженерные системы), #_modbus, #_modbustcp, #_zabbix, #_monitoring, #_monitoring (мониторинг), #_monitoring_oborudovanija (мониторинг оборудования), #_osveschenie (освещение), #_sistemnoe_administrirovanie (
Системное администрирование
)
, #_umnyj_dom (
Умный дом
)
, #_inzhenernye_sistemy (
Инженерные системы
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 04:13
Часовой пояс: UTC + 5