Введение
Характеристики температуры и влажности воздуха играют огромную роль в жизни человека, животного и растительного мира. Эти параметры должны поддерживаться и контролироваться, например, в теплицах, вивариях, складских помещениях для хранения лекарственных препаратов. В специальных помещениях для сборки космических спутников также необходимо соблюдение особых требований и отслеживание граничных значений для температуры и параметров воздуха. Поэтому в мире создаются и совершенствуются устройства для мониторинга этих параметров и предупреждения персонала при их отклонении от нормы.
Проект
Рассмотрим вариант создания системы контроля температуры и влажности на базе панели оператора и цифрового датчика параметров воздуха.
В качестве панели оператора применена современная панель MT8071iE с сенсорным цветным графическим экраном от компании Weintek [1]. Описание среды разработки программ для таких панелей приведено в статье [2]. Поскольку панель оператора использует для связи с внешними устройствами последовательный интерфейс RS-485, целесообразно применение датчика температуры и влажности воздуха с таким же интерфейсом. В настоящее время выбор подобных датчиков достаточно широк. Например, можно применить датчики: XY-MD02, XY-MD03, XY-MD04, THM-D20E и др. Рассмотрим первый из этого списка датчиков.
Конструктивно датчик XY-MD02 выполнен в малогабаритном пластиковом решётчатом корпусе с размерами: 46×66×29 мм. Его внешний вид приведён на рис. 1.
Этот датчик можно крепить на DIN-рейку или на плоскую поверхность через два отверстия, предусмотренные в корпусе. Краткие технические характеристики датчика:
- питание: от 5 до 30 В постоянного тока;
- потребляемая мощность: не более 0,2 Вт;
- точность измерения температуры: ±0,5°C;
- точность измерения влажности: ±3,0%;
- интерфейс: RS-485 с протоколом Modbus RTU;
- адрес на шине: устанавливается программой от 1 до 247, по умолчанию 1;
- скорость передачи данных: настраивается программой, по умолчанию 9600 бит/с;
- формат данных: 8-бит, 1 стоп-бит, без контроля чётности.
Датчик имеет два INPUT-регистра для чтения значений температуры и влажности воздуха и четыре HOLDING-регистра для изменения его параметров. Назначение регистров датчика приведено в табл. 1.
Из таблицы видно, что значения температуры и влажности хранятся в регистрах INPUT по адресам: 0х0001 и 0х0002, соответственно. Значения этих параметров увеличены в 10 раз с целью использования целочисленной арифметики для чисел с десятичными долями. Например, температура 21,5°С будет храниться в регистре датчика в виде целого числа 215. Это необходимо учитывать при разработке программы.
Схема подключения всех устройств системы мониторинга показана на рис. 2.
Широкий допустимый диапазон питающего напряжения датчика XY-MD02 позволяет подключить его к источнику питания панели оператора с напряжением +24 В, не применяя дополнительного источника питания.
Программа
Программа панели оператора для системы мониторинга микроклимата должна отображать на своём экране значения температуры и влажности. Полезным будет отображение на экране календаря и текущего времени. Желательно, чтобы программа автоматически контролировала значения температуры и влажности, сравнивая их с максимальными и минимальными граничными величинами. При выходе значений измеряемых параметров за пределы установленных границ панель должна формировать предупреждающий звуковой сигнал и отображать на экране тревожное сообщение о выходе измеряемого параметра за пределы разрешённого диапазона.
С помощью среды разработки Easy Builder Pro необходимо разместить на главном экране панели оператора следующие элементы: сигнальную панель для тревожных сообщений, календарь с часами, числовые индикаторы для температуры и влажности с текстовыми обозначениями их величин, функциональную клавишу для перехода на экран настроек и битовый тумблер отключения звука. Внешний вид среды разработки для главного окна показан на рис. 3.
Числовые индикаторы данного экрана привязаны к ячейкам памяти LW1 и LW2 с помощью редактирования атрибутов самих числовых индикаторов. Эти ячейки будут ежесекундно обновляться данными от датчика, опрашиваемого программой макроса панели оператора.
Дополнительно, для создания красочного и привлекательного интерфейса, на экране размещены битовые индикаторы с изображением термометра и капли воды, а также элемент движущейся фигуры с изображением времени суток. В зависимости от текущего времени программа будет записывать в ячейку памяти LW0 число от 0 до 3, назначая тем самым для этого элемента одно из четырёх изображений, хранимых в библиотеке проекта. Таким образом, картинки будут автоматически сменять друг друга утром, днём, вечером и ночью. Аналогично для индикатора с термометром будут меняться изображения в зависимости от того, какая температура получена от датчика – положительная или отрицательная. Эти дополнения сделают интерфейс динамично изменяющимся и нескучным.
Последними размещёнными на экране элементами являются битовые индикаторы, которые отображают предупреждающий восклицательный знак при выходе значений температуры и влажности за пределы установленных границ. Управление всеми элементами осуществляет программа макроса, которая будет рассмотрена далее.
Второй экран создаётся для размещения на нём цифровых индикаторов с функцией ввода, позволяющих задать пользовательские границы температуры и влажности. Окно этого экрана показано на рис. 4.
Цифровые индикаторы данного экрана привязаны с помощью изменения их атрибутов к ячейкам энергонезависимой памяти RW1–RW4. Это позволяет сохранять введённые значения границ параметров даже при выключении панели оператора.
Также на этот экран помещена функциональная клавиша для возврата на главный экран. И наконец, для придания окну настроек красочного и привлекательного вида на него помещён элемент изображения с анимационным рисунком Солнца.
Макрос
Для завершения разработки программы необходимо создать макрос, который будет ежесекундно производить чтение значений температуры и влажности с датчика XY-MD02 и выполнять операции сравнения этих значений с заданными границами. Код программы макроса приведён в листинге 1.
Листинг 1. Код программы макроса
// Главный макрос
macro_command main()
short td, hd // Переменные значений температуры и влажности датчика
short hs, th, tl, hh, hl // Час суток и пороги температуры и влажности
unsigned short vs // Время суток 0–утро, 1–день, 2– вечер, 3–ночь
bool a // Битовая переменная, для сравнения порогов температуры и влажности
GetData(hs, "Local HMI", LW, 9019, 1) // Читать час суток
// Определить время суток
if hs>=7 then // Если утро
vs=0
end if
if hs>=11 then // Если день
vs=1
end if
if hs>=15 then // Если вечер
vs=2
end if
if hs>=23 or hs<7 then // Если ночь
vs=3
end if
SetData(vs, "Local HMI", LW, 0, 1) // Сохранить время суток в ячейке LW0 памяти панели
GetDataEx(td, "MODBUS RTU", 3x, 1, 1) // Запросить значение температуры от датчика
SetData(td, "Local HMI", LW, 1, 1) // Сохранить значение температуры в памяти панели
GetDataEx(hd, "MODBUS RTU", 3x, 2, 1) // Запросить значение влажности от датчика
SetData(hd, "Local HMI", LW, 2, 1) // Сохранить значение влажности в памяти панели
// Оценить значение температуры
if td>0 then // Если температура выше нуля
a=1 // Установить бит
else
a=0 // Иначе ниже нуля
end if
SetData(a, "Local HMI", LB, 0, 1) // Сохранить бит контроля границ температуры
// Проверить границы температуры
GetData(th, "Local HMI", RW, 1, 1) // Читать верхнюю границу температуры
th=th*10 // Нормировать значение
GetData(tl, "Local HMI", RW, 2, 1) // Читать нижнюю границу температуры
tl=tl*10 // Нормировать значение
if td>th or td<tl then // Если температура выше или ниже границы
a=1 // Установить бит контроля границ температуры
else
a=0 // Иначе норма
end if
SetData(a, "Local HMI", LB, 1, 1) // Сохранить бит контроля границ температуры
// Проверить границы влажности
GetData(hh, "Local HMI", RW, 3, 1) // Читать верхнюю границу влажности
hh=hh*10 // Нормировать значение
GetData(hl, "Local HMI", RW, 4, 1) // Читать нижнюю границу влажности
hl=hl*10 // Нормировать значение
if hd>hh or hd<hl then // Если влажности выше или ниже границы
a=1 // Установить бит контроля границ влажности
else
a=0 // Иначе норма
end if
SetData(a, "Local HMI", LB, 2, 1) // Сохранить бит контроля границ влажности
end macro_command
Код программы снабжён подробными комментариями, которые позволяют легко понять назначение всех её строк.
Номер ячейки памяти LW 9019 для внутренних часов времени панели оператора находится в библиотеке адресных меток через меню: Библиотека→Адрес. После копирования данного кода в макрос необходимо выполнить его сохранение и компиляцию соответствующей кнопкой редактора. Кроме того, требуется задать регулярную, ежесекундную периодичность выполнения макроса в виде записи 10×100 мс.
Загрузка
Теперь программа полностью готова к работе, и её можно загрузить в панель оператора. Загрузку можно осуществить с помощью USB-флеш-накопителя или через порт Ethernet. При загрузке программы в панель оператора можно задать отображение пользовательского стартового экрана, как показано на рис. 5.
В качестве стартового экрана используется предварительно подготовленный файл картинки в формате «bmp» с размерами рисунка 800×480 пикселей. Содержимое картинки может быть произвольным. После загрузки пользовательского экрана панель оператора будет отображать его как заставку программы в течение нескольких секунд при каждом включении.
Отладка
Первичную проверку работы программы можно проверить путём её запуска с помощью меню: Инструменты→Офлайн-симуляция или клавишами Ctrl+T. При этом на экране монитора появится главное окно программы и появятся предупреждающие сообщения в связи с нулевыми значениями отсутствующих данных от датчика.
Отладку проекта можно выполнить без датчика, предварительно загрузив программу в панель оператора. Для отладки используется компьютер, который подключается к панели оператора вместо датчика температуры и влажности через USB-порт и конвертер USB-RS-485. На компьютере устанавливается и запускается программа Modbus Poll или аналогичная ей. Окно этой программы показано на рис. 6.
В окне программы устанавливается адрес Modbus Slave ID = 1, поддержка функций чтения INPUT-регистров, адрес первого регистра и количество регистров. В полях значений регистров вводятся произвольные данные для температуры и влажности. Панель оператора будет считывать эти значения и отображать на главном экране.
Диспетчеризация
Наличие Ethernet-порта в панели оператора и поддержка встроенного протокола Modbus TCP позволяют подключить её к системе диспетчеризации. Для этого назначается IP-адрес для панели оператора через её системное меню.
Кроме того, для удалённого доступа к панели оператора по сети Ethernet можно использовать встроенную в неё функцию Virtual Network Computing (VNC). Данная функция активируется в системном меню панели оператора. На удалённый компьютер устанавливается и запускается программа поддержки VNC, например, Ultra VNC Viewer. Пароль для подключения к панели оператора по умолчанию: 111111. После ввода пароля на компьютере появится окно панели оператора, и можно будет вести наблюдение и управлять системой мониторинга микроклимата дистанционно. На рис. 7 показано окно удалённого управления системой мониторинга.
С целью продления рабочего ресурса экрана панели оператора в среде разработки Easy Builder Pro предусмотрена системная настройка времени до отключения подсветки в закладке «Общие».
Спустя заданное в этих настройках время панель оператора автоматически переключится на заставку, а затем, спустя заданное для заставки время, совсем погасит экран. Активация экрана осуществляется касанием в любом месте. При необходимости режим энергосбережения можно полностью отключить.
Архив
Файл проекта размёщен на сайте журнала [3] и может быть использован для дальнейшего развития. Данный проект можно развивать, например, с помощью добавления новых окон с графиками параметров, журналом событий и т.п.
Литература
- URL: https://www.weintek.com/globalw/.
- Вальпа О. Интеллектуальное освещение // Современная электроника. 2025. № 1.
- URL: https://www.cta.ru.
© СТА-ПРЕСС, 2025
Если вам понравился материал, кликните значок - вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал - не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!