главная/ условия/ контакты/ статьи/
Присылайте Ваши статьи и мы опубликуем их
Москва. №3, 2004./ ISSN – 1811 – 5721
Сборник статей аспирантов, соискателей, докторантов и научных работников
Региональный вестник молодых ученых
Трусов Виталий
Сергеевич –
аспирант Самарского государственного аэрокосмического
университета.
E-mail: vitalyt@bee-s.com
Современные летательные аппараты являются достаточно сложными техническими системами, состоящими из большого числа приборов и агрегатов. Управление такой технической системой немыслимо без применения современной вычислительной техники. В частности управление летательным аппаратом осуществляет бортовой вычислительный комплекс, основной задачей которого является координация всех систем аппарата.
На бортовом вычислительном комплексе исполняются управляющие программы, реализующие тот или иной управляющий алгоритм. Исполнение управляющих программ происходит в реальном времени, при этом организуется прием/передача данных от приборов и датчиков, выдача на них управляющих сигналов, контроль работоспособности, тестирование.
Все функционирование летательного аппарата на отрезке активного существования сводится к последовательности крупноблочных операций (отделение, инициирование, решение целевых задач, завершение функционирования). Эта последовательность определяется физическими условиями существования и работы аппарата. Управление этой последовательностью, естественно, возложено на соответствующий управляющий алгоритм
Основным применяемым средством описания управляющего алгоритма является временная диаграмма. Это специальное графическое представление, отражающее временные и логические связи в алгоритме, в чем-то похожее на блок-схему.
Временная диаграмма состоит из множества входов, каждый из которых представляет собой отдельную программу со своим временем запуска. В свою очередь программа состоит из функциональных задач, операторов ветвления, выходных элементов и уставок временных интервалов. Пример временной диаграммы приведен на рисунке 1.
Рис.
1. Пример временной диаграммы управляющего алгоритма.
Для построения системы визуального конструирования временных диаграмм управляющих алгоритмов была поставлена задача, создать математическую модель и на основании ее структуру данных, описывающую временную диаграмму.
Рассмотрим подробнее временную диаграмму. Она представляет собой множество программ, которые могут быть связаны между собой временными уставками. То есть модель временной диаграммы представима в виде структуры:
ВД = <ВХ, У>,
где ВХ = { ВХ1, ВХ2,..., ВХn } – множество входов (программ) временной диаграммы; У = { (ВХi, ВХj) } – бинарное отношение на ВХ, включающее все пары входов, связанные временными уставками, то есть если пара (ВХi, ВХj) Î У, то во временной диаграмме существует уставка временного интервала ведущая из программы со входом ВХi на программу со входом ВХj.
Рассмотрим свойства отношения У. Во-первых, оно антирефлексивно, так как не существует такого входа, который связан уставкой временного интервала с самим собой, так как это приводит к цикличности алгоритма. Иными слова " ВХj: (ВХj, ВХj)ÏУ. Во-вторых данное отношение асимметрично, потому что не должно существовать двух входов каждый из которых связан с другим временной уставкой, что также формирует цикл алгоритма. То есть, " ВХi, ВХj: (ВХi, ВХj)ÎУ ® (ВХj, ВХi)ÏУ. Также введенное отношение У не является транзитивным, потому что наличие уставок между двумя парами входов отнюдь не означает, что существует уставка между первым и третьим входом (хотя третий вход и будет однозначно запускаться через фиксированное время после первого).
В свою очередь каждый вход временной диаграммы представляет собой дерево элементов, на котором можно выделить элементы нескольких типов. Функциональными задачами назовем элементы, выполнение которых не приводит к проверке логических условий либо к передаче управления другим элементам. Характерными примерами функциональных задач являются выдача команды, управляющий сигнал, занесение запроса на выполнение и т.д. Примеры элементов, являющихся функциональными задачами, приведены на рис. 2.
Операторами ветвления будем называть элементы, после выполнения, которых могут быть выполнены различные множества элементов в зависимости от значения условия. Под условием здесь понимается либо состояние того или иного датчика, либо определенное значение логической переменной. После проверки условия выполнение управляющего алгоритма может идти двумя разными путями в зависимости от значения опрашиваемого датчика или переменной.
При этом можно выделить три типа операторов ветвления. Первый тип – оператор с двумя выходами, в зависимости от его условия выполняются совершенно разные части управляющего алгоритма вплоть до его окончания. Иными словами в данном случае в управляющем алгоритме нельзя указать элемент, который будет выполнен при любом значении условия оператора ветвления с двумя выходами. Второй тип – оператор ветвления с одним выходом.
Рис. 2. Примеры функциональных задач
После проверки его условия также выполняются разные части управляющего алгоритма, но в дальнейшем можно указать элемент или несколько элементов, которые выполняются при любом значении условия оператора ветвления. То есть, ветви такого оператора ветвления сходятся в определенном месте, называемом закрывающим элементом, и заканчиваются одним выходом. Третий тип - передачи управления являются элементами, после выполнения которых в зависимости от значения логической переменной могут либо выполняться следующие элементы, либо управление может передаваться другим элементам. Элемент «передача управления» во многом схож с оператором ветвления с той лишь разницей, что в одном случае (при определенном значении условия) управление передается на уже существующую ветвь алгоритма. Примеры операторов ветвления приведены на рисунке 3.
Рис. 3.
Примеры операторов ветвления
На множестве элементов одной программы можно выделить линейные участки. Линейным участком будем называть множество элементов, которые выполняются последовательно при одних и тех же условиях всех логических переменных, и при этом управление не принимается и не передается другим элементам. Иными словами линейный участок - это множество последовательно выполняемых элементов таких, что оператор ветвления, передача управления, закрывающий элемент или выходной элемент могут выполняться только последним элементом линейного участка. То есть, линейный участок – это последовательность поочередно выполняемых функциональных задач, заканчивающаяся оператором ветвления, передачей управления, закрывающим элементом или выходом из алгоритма.
Из введенного определения линейного участка следует, что операторы ветвления, передачи управления и закрывающие элементы делят всю программы на линейные участки состоящие исключительно из функциональных задач. Причем можно выделить следующие типы линейных участков:
1. Линейный участок, заканчивающийся оператором ветвления. То есть линейный участок, по окончании которого происходит проверка логической переменной и в зависимости от ее значения выполняются разные части алгоритма.
2. Линейный участок, заканчивающийся закрывающим элементом. В конце такого линейного участка сходятся две ветви алгоритма и последующие элементы выполняются при любом значении логической переменной повлекшей ветвление алгоритма.
3. Линейный участок, завершающийся выходом из алгоритма. Такие линейные участки завершают выполнение алгоритма, будем называть их конечными линейными участками. В каждой программе должен быть по крайней мере один конечный линейный участок. Количество конечных линейных участков в одной программе зависит от числа операторов ветвления с двумя выходами.
Линейный участок, который заканчивается передачей управления. Причем, можно выделить два вида таких участков:
1. Линейный участок, в конце которого находится проверка логического условия, которая влечет передачу управления, то есть осуществляет ветвление процесса. На рисунке 6 таким линейным участком является второй линейный участок.
2. Линейный участок, в конце которого принимается управление, переданное в ходе проверки логического условия. Иными словами, в конце такого линейного участка принимается управление от другой ветви алгоритма, то есть происходит слияние ветвей алгоритма. Если проанализировать введенные типы линейных участков по смысловой нагрузке, то можно увидеть, что линейные участки первого типа идентичны линейным участкам типа 4.а. Действительно, в конце таких линейных участков осуществляется проверка логического условия (или опрос физического датчика) и программа разделяется на две ветви в зависимости от его значения. Также очевидно, что линейные участки второго типа идентичны участкам типа 4.b, так как в конце таких линейных участков принимается управление, то есть сходятся две ветви алгоритма. Таким образом, объединяя идентичные типы линейных участков, можно выделить три основных типа: линейные участки заканчивающиеся ветвлением алгоритма, заканчивающиеся схождением ветвей и конечные линейные участки.
Исходя из введенного определения линейного участка, любую программу (вход) временной диаграммы можно представить в виде:
ВХ = < ЛУ, С >,
Где ЛУ = { ЛУ1, ЛУ2,..., ЛУm} – множество линейных участков; С = { (ЛУi, ЛУj) } – бинарное отношение на ЛУ, содержащие пары линейных участков, первый из которых передает управление второму.
В свою очередь каждый линейный участок представим в виде:
ЛУ = { Ф1, Ф2,..., Фk, А },
где Фi – функциональная задача линейного участка. Причем каждая Фi выполняется строго после Фi-1.
А – оператор ветвления, передача управления, закрывающий элемент или выход из алгоритма для конечных линейных участков входа.
Таким образом, построенная математическая модель полностью и однозначно описывает временную диаграмму управляющего алгоритма. На основании построенной модели была разработана система визуального конструирования управляющих алгоритмов, позволяющая пользователю строить временную диаграмму из отдельных элементов. Система визуального конструирования обеспечивает простое и наглядное представление управляющего алгоритма уже на этапе построения, что позволяет конструктору оценить сложность той или иной программы и разместить ее должным образом на чертежных листах. Пример работы системы приведен на рисунке 4.
Рис.
4. Пример работы визуального конструктора.
Построенная система получила высокую оценку инженеров-конструкторов ЦСКБ «Прогресс» во время проведения тестовых испытаний. Было установлено, что разработанная система позволяет примерно вдвое сократить время построения управляющего алгоритма и существенно облегчить труд инженера-конструктора. В данный момент система находится в эксплуатации в ЦСКБ «Прогресс».