Чемпионат ИТ-сферы Ульяновской области по программированию среди школьников

О задачах проекта "Управление теплицей"

Что дают задачи проекта

Во-первых, задачи проекта показывают, каким образом сигналы с датчиков в виде значений напряжений или токов превращаются в значения параметров микроклимата: температуры, освещенности, влажности и других. Знание только этих аспектов управления в совокупности со знанием довольно простых механизмов регулирования (это задачи 9 и 10) позволяет начинающему программисту на коммерческой основе участвовать в проектах создания средств управления микроклиматом хоть в теплице, хоть в умном доме, хоть в офисе компании среднего достатка. В настоящее время разработка именно таких средств управления не зависит от наличия поблизости крупных предприятий. В крупных предприятиях изобилуют процессы управления, однако начинающих программистов к их автоматизации никто не подпустит.

Во-вторых, проект позволяет потренировать способность связывать процессы обработки данных с графиками функциональных зависимостей. Представление зависимостей с помощью графиков широко распространено не только в задачах управления, но и самых различных задачах обработки информации.

В-третьих, задачи проекта являются простым способом освоения школьниками широко распространенной в ИТ-сфере практики последовательного изменения функциональности программ. Например, развитие функциональности по мере перехода от одних версий к другим. В наборе задач имеется несколько случаев, когда следующая задача достаточно легко реализуется через модификацию кода предыдущей.

В-четвертых, набор задач развивает чутье на погрешности вычислений. В задачах управления сами датчики зачастую имеют относительно невысокую точность, например, температура и влажность часто измеряется с точностью до целых значений. Однако в обработке используется усреднение, результаты которого целесообразно представлять с точностью до десятых и даже сотых.

В-пятых, проект является достаточно наглядным примером осуществления широко распространенной технологии проектирования программ – Model-View-Control (MVC). Эта технология предполагает отделение представления (View) объектов на экране и в распечатках от модели обработки данных (Model) и управления этой обработкой (Control).

В проекте "Управление теплицей" компоненты Model – это алгоритмы и программы выработки выходных данных в зависимости от входных. Их разрабатывают участники тренировочного турнира – именно они программируют всю требуемую обработку данных. Компоненты View предоставляются участникам в готовом виде – это изображение диаграмм функциональных зависимостей и процессов трансформации данных.

Только благодаря применению технологии MVC созданы условия для того, чтобы компоненты Model можно было создавать на различных языках программирования, как это делается в программистских турнирах.

В-шестых, решение задач проекта предоставляет участникам возможность легко отвечать на вопросы близких типа: "А что интересного умеют делать твои программы?". Показывать входные и выходные данные консольных программ обычных турнирных задач непосвященным бесполезно. А показать процесс, содержание которого определяется результатом своей программы – это обычно впечатляет. Особенно это касается 10-й задачи, на основе решения которой с позиции "гуру" легко объяснить своим близким, как работают программы внутри контроллеров кондиционеров, электрических плит, холодильников, водонагревателей.

В-седьмых, сам факт решения задач проекта переводит того, кто это сделал, в более высокую категорию. Вокруг нас много людей, говорящих про цифровую экономику и автоматизацию процессов с надеждой на светлое будущее. И вот среди этих людей появляется школьник, который умеет решать практические и зачастую прозаические для него задачи автоматизации. Для окружающих его мечтателей такой школьник становится реальным творцом этого самого светлого будущего.

Технологические аспекты автоматизируемых процессов

В настоящее время существует довольно много несложных и недорогих датчиков температуры, влажности, освещенности. Для реализации задач управления микроклиматом достаточно даже самых дешевых микрокотроллеров. Если кто-то захочет реализовать управление микроклиматом в домашних условиях, пусть даже это будет овощной ящик на неотапливаемом балконе, то это достаточно легко сделать с помощью ресурсов Интернет и умения программированть часть задач, рассматриваемых в проекте управления теплицей. Поначалу можно даже обойтись без использования паяльника. Сейчас имеются достаточно надежные клеммники и макетные платы для межсоединений. По мере роста аппетита в решении задач домашней автоматизации проблема освоения паяльника перестанет быть какой-то трудно решаемой.

Задача 1.

Эта задача дает великолепный пример упрощения алгоритма. В интернет можно найти несколько рецептов, где на основе таблицы из технического описания рассматриваемого датчика предписывается для положительного кода (старший разряд равен 0) и для отрицательного (код равен 1) действовать по разному. Для положительного рекомендуется умножить код с датчика на вещественную константу. Для отрицательного – сначала инвертировать каждый разряд кода с датчика, затем прибавить 1 и полученый результат умножить на ту же самую константу, что используется для положительного числа.

На самом деле достаточно просто иметь знакопеременный результат с датчика (для его получения достаточно использовать соответствующий тип данных, однако в задаче 1 он на входе сразу именно такой) и либо разделить этот код на константу, либо умножить на обратную ей виличину. Это очевидно из понятия линейности зависимости темературы от кода или из всего лишь одного взгляда на график, который рисуется при запуске имитатора процесса по адресу http://ulivt.ru/DigitalControl/hothouse/.

Задача 2. Измерение влажности воздуха

Здесь также, как и в первой задаче, линейная зависимость, но график проходит не через центр координатной сетки. Более того, в начале и конце графика возможны горизонтальные линии ограничения, связанные с тем, что влажность не может быть меньше 0 и больше 100. Это хорошо видно из примера № 2 и в графике, рисуемом для второй задачи имитатором процесса по адресу http://ulivt.ru/DigitalControl/hothouse/. При этом до запуска имитации процесса нужно выбрать тест № 2.

Задача 3. Измерение температуры почвы

Благодаря этой задаче можно научиться от очень дешевого датчика с большой погрешностью, например в 3 градуса, получать точность, характерную для датчика в несколько раз дороже. Для этого достаточно где-то на время достатать достаточно точный эталонный датчик и выполнить калибровочные измерения при разных температурах, для каждой из которых фиксируется пара значений \"ток, температура\". При этом ток берется с калибруемого датчика, а температура с эталонного. В результате получается график, который разбивается на несколько приямых линий. В математике это называется кусочно-линейной аппроксимацией, однако легко получить нужный алгоритм преобразования тока в градусы температуры, никак не используя это математическое понятие. А тот, кто столкнется с этим понятием в вузе, много быстрее его осмыслит, чем те, кто не решал задачу № 3.

Задача 4. Фильтрация результатов измерения

Наличие помех в канале передачи сигнала с датчика температуры легко обнаруживается, если в часто выполняемых измерениях значения сигнала заметно отличаются. Для температуры это нехарактерно, поскольку температурные процессы довольно инерционны. Очевидно, что частые изменения возникают в связи с помехами. Фильтация результатов измерения довольно распространена в задачах управления.

Задача 5. Оценка дефицита освещеннсти

В отличие от предыдущей задачи, где усреднение применяется для фильтрации помех, при оценке освещенности получение среднего значения нужно по иным причинам. Если бы компенсация дефицита освещенности строилась на основе однократных измерений, то искусственное досвечивание включалось бы в случаях пролета бабочки, падения листика рядом с датчиком освещения, либо в связи с загораживанием солнца маленькой тучкой. Чтобы досвечивание занималось компенсацией дефицита, накопившегося за длительный отрезок времени, как раз и используется усреднение, фигурирующее в задаче № 5.

Задача 6. Измерение скорости ветра

В этой задаче также используется усреднение, однако при этом среднее берется в так называемом "окне скользящего среднего". Это пример универсальной функциональности. Когда трейдер на фондовой бирже принимает решение о том, какие ценные бумаги покупать, а какие продавать, то смотрит прежде всего на скользящие средние цен. Когда спасатели принимают решение, эвакуировать ли население поселка в зоне землетрясения, то смотрят прежде всего на результаты вычисления скользящих средних показателей сейсмографов. Поскольку данная задача очень близка по сложности к задачам профессионального программирования, в постановке задачи фигурируют алгоритмические подсказки. Такие подсказки неуместны в задачах отборочного или финального турнира, однако для тренировочного вполне допустимы, если важно приподнять алгоритмическую подготовку участников до способности справляться с достаточно сложными задачами.

Задача 7. Использование расписания параметров регулирования

Задача дает пример очень простого механизма изменения параметров регулирования во времени. Изначально обычно имеется расписание с двумя моментами времени: момент начала действия параметра и момент завершения. После преобразования такого расписания в то, что фигурирует в задаче 7, задача использования расписания сильно упрощается. Не нужно искать вхождение текущего момента времени в диапазон моментов одной из записей. Нужно просто сравнивать текущий момент с моментом в первой паре упорядоченного расписания.

Задача 8. Модификация расписания параметров регулирования

Эта задача дает пример редактирования расписания не через редактор текста, как это широко распространено в автоматизированных системах организационного управления, а через команды редактирования, которые могут быть продуктом каких-то программ управления или программ ведения диалога с оператором системы управления.

Задача 9. Регулирование температуры почвы

В этой задаче описан самый распространенный алгоритм регулирования, для реализации которого достаточно только включать или выключать какой-то агрегат. В холодильнике включается и выключается компрессор. В водонагревателе включается или выключается трубчатый электронагреватель (ТЭН). При подогреве почвы теплицы в качестве нагревателя чаще всего используются элементы теплого пола или циркуляция теплой воды по трубам. Независимо от этого, контроллер должен генерировать сигналы включания или выключения согласно алгоритму, изложенному в постановке задачи № 9.

Задача 10. Имитация процесса регулирования температуры

Имитация процесса используется чаще всего в четырех случаях. Во-первых, это функциональность подсистемы моделирования, входящей в автоматизированную систему проектирования (САПР) систем управления. Во-вторых, это бывает частью прототипа системы управления, который используют разработчики для уточнения требований заказчика на этапе формирования технического задания. В-третьих, это может быть средством тестирования системы управления. В-четвертых, это средство обучения алгоритмам управления, как это имеет место в задаче 10. Решение задачи леко получается, если к решению предыдущей задачи добавить несложные манипуляции с массивами, хотя можно обойтись и без использования массива, если построить традиционный цикл управления "ввод – обработка – вывод". Именно такой цикл доминирует в реальных программах управления.