Современная электроника №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