Современная электроника №3/2025

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 43 WWW.CTA.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 3 / 2025 Рис. 3. Внешний вид среды разработки Рис. 4. Окно экрана настроек для тревожных сообщений, календарь с часами, числовые индикаторы для температуры и влажности с текстовы­ ми обозначениями их величин, функ­ циональную клавишу для перехода на экран настроек и битовый тумблер отключения звука. Внешний вид сре­ ды разработки для главного окна пока­ зан на рис. 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) // Читать нижнюю границу температуры

RkJQdWJsaXNoZXIy MTQ4NjUy