Визуальный язык ДРАКОН и его применение в ракетно-космической отрасли, медицине и других областяхВ.Д. Паронджанов
ФГУП НПЦ АП им. акад. Н.А. Пилюгина, Москва
vdp2007@bk.ruВведениеДРАКОН (Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность) — визуальный алгоритмический язык программирования и моделирования. Был разработан в рамках космической программы «Буран».
Разработка языка велась с 1986 года при участии НПЦ АП и Института прикладной математики РАН им. М. В. Келдыша.
Язык построен путём формализации, эргономизации и неклассической структуризации блок-схем алгоритмов и программ, описанных в ГОСТ 19.701-90 и ISO 5807-85, а также для разработки программ реального времени [1].
Основной задачей разработчиков было создание единого универсального языка программирования и моделирования, который своей доступностью и мощностью способен заменить специализированные языки: ПРОЛ2 [2] (для разработки бортовых комплексных программ Бурана), ДИПОЛЬ [2] (для создания наземных программ Бурана) и ЛАКС (для моделирования).
Работы по созданию языка ДРАКОН были в основном закончены в 1996 году (спустя 3 года после закрытия программы «Буран»), когда была разработана автоматизированная система проектирования программных систем (CASE-технология) ГРАФИТ-ФЛОКС.
Язык ДРАКОН используется начиная с 1996 года во многих крупных космических программах: «Морской старт», «Фрегат», «Протон-М» и др.
В документальном видеофильме «Жирограф и ДРАКОН Пилюгина», снятом на Телерадиостудии Роскосмоса, говорится:
«Во время работы над «Бураном» был придуман язык технических символов — ДРАКОН: «Дружелюбный русский алгоритмический, который обеспечивает наглядность».
Он и стал своеобразным инструментом взаимопонимания в Пилюгинском коллективе инженеров и конструкторов.
Разработки академика Пилюгина и сегодня применяются в современной ракетной технике.
Тяжелые «Протоны» уходят в небо с его системой управления, а грозные ракетные комплексы “Тополь-М” обеспечивают оборону страны» [3].
ДРАКОН можно определить как общедоступный визуальный язык, предназначенный:
— для систематизации, структуризации, наглядного представления и формализации процедурных (императивных) знаний;
— для описания структуры человеческой деятельности;
— а также для проектирования, программирования, моделирования и обучения [4].
Правила языка ДРАКОН по созданию дракон-схем (drakon-charts) оптимизированы для восприятия и понимания алгоритмов человеком.
Таким образом, язык предлагается в качестве инструмента усиления человеческого интеллекта.
1. ПРИМЕНЕНИЕ ЯЗЫКА ДРАКОН
В РАКЕТНО-КОСМИЧЕСКОЙ ТЕХНИКЕЯзык ДРАКОН (и основанная на нем технология разработки алгоритмов и программ ГРАФИТ-ФЛОКС [5]) эксплуатируются в НПЦ АП уже более 16 лет (1996–2013). Они используются в следующих космических программах:
— разгонный блок космических аппаратов ДМ-SL (международный проект «Морской старт»);
— модернизированная ракета-носитель тяжелого класса «Протон-М»;
— разгонный блок космических аппаратов «Фрегат»;
— разгонный блок космических аппаратов «Фрегат-СБ» (со сбрасываемыми баками);
— разгонный блок космических аппаратов «Фрегат УТТХ» (с улучшенными тактико-техническими характеристиками);
— разгонный блок космических аппаратов «Фрегат-МТ» (предназначен для запусков с космодрома «Kuru» в Южной Америке);
Вложение:
Скриншот 1. Пилюгин в Германии.png [ 201.2 КБ | Просмотров: 14664 ]
Скриншот 1. Германия, 1945 год. Майор Черток и полковник Пилюгин прибыли в командировку в побежденную Германию, чтобы изучить секретное оружие вермахта — баллистическую ракету ФАУ-2, созданную Вернером фон Брауном. Кадр из документального видеофильма «Жирограф и ДРАКОН Пилюгина» [3]
— разгонный блок космических аппаратов «Фрегат» СУМ (с модернизированной системой управления);
— разгонный блок космических аппаратов ДМ-SLБ (проект «Наземный старт»);
— разгонный блок космических аппаратов ДМ-03;
— первая ступень южнокорейской ракеты-носителя легкого класса KSLV-1 (Korean Space Launch Vehicle #1);
— ракета-носитель легкого класса Ангара 1.2 первого пуска;
— ракета-носитель легкого класса Ангара 1.2 с агрегатным модулем;
— ракета-носитель тяжелого класса Ангара-А5;
— разгонный блок космических аппаратов КВТК (кислородно-водородный тяжелого класса) (планируемая работа) [6, с. 515, 7].
Пуски ракет-носителей и разгонных блоков космических аппаратов, при создании которых использовался язык ДРАКОН, за истекший период (1999–2013 годы) производились с пяти космодромов мира, расположенных на трех континентах (Европа, Азия, Америка) и в океане. Вот список космодромов:
— международный плавучий космодром, производящий пуски с экватора в Тихом океане (экваториальная зона вблизи острова Рождества Республики Кирибати с координатами 154 градуса западной долготы и 0 градусов широты);
— Байконур (Казахстан, Азия);
— Плесецк (Россия, Европа);
— Европейский космический центр во Французской Гвиане «Kuru» (Южная Америка);
— Южнокорейский космодром «Naro» (Азия).
Поскольку результаты использования ДРАКОНа были стабильно высокими, руководство НПЦ АП приняло решение об использовании ДРАКОН-технологии во всех последующих проектах [8].
Вложение:
Скриншот 2 Язык ДРАКОН.png [ 220.12 КБ | Просмотров: 14711 ]
Скриншот 2. Кадр из документального видеофильма «Жирограф и ДРАКОН Пилюгина». Автор – Н. Бурцева Оператор – Е. Петров. Телерадиостудия Роскосмоса [3].
2. ГРАФИЧЕСКИЙ АЛФАВИТ ЯЗЫКА ДРАКОН.
ИКОНЫ И МАКРОИКОНЫ
2.1. ПРЕИМУЩЕСТВА ДРАКОН-СХЕМЧем отличаются дракон-схемы от блок-схем алгоритмов и программ по ГОСТ 19.701–90?
Хотя блок-схемы порою действительно улучшают понятность алгоритмов, однако это справедливо только для простых задач.
С ростом сложности алгоритмов блок-схемы стремительно теряют наглядность, становятся запутанными и трудными для понимания.
В отличие от них дракон-схемы отличаются безупречной ясностью, прозрачностью, четкостью, которая не зависит от сложности.
Более того, чем сложнее алгоритмы, тем больше выигрыш от языка ДРАКОН. Он обеспечивают быстроту и легкость понимания по принципу: «Посмотрел – и сразу понял!».
Благодаря использованию формальных и неформальных приемов дракон-схемы дают возможность изобразить любой, сколь угодно сложный алгоритм (и любую сложную алгоритмическую систему, состоящую из вложенных друг в друга и параллельных алгоритмов) в наглядной и доходчивой форме.
Это позволяет значительно сократить интеллектуальные усилия персонала, необходимые для разработки и проверки алгоритмов и иерархических алгоритмических систем, формализуемых методом декомпозиции.
Блок-схемы не обеспечивают автоматическое преобразование алгоритма в машинный код. Дракон-схемы, напротив, пригодны для автоматического получения исполняемого кода.
Главное преимущество состоит в том, что дракон-схемы (в отличие от блок-схем) формируются методом логического вывода с помощью разработанного мною визуального логического исчисления, которое я назвал «исчислением икон» [6, с. 427-435].
Дракон-конструктор осуществляет 100%-е автоматическое доказательство правильности дракон-схем, гарантируя принципиальную невозможность ошибок визуального синтаксиса.
Иными словами, дракон-конструктор полностью исключает ошибки графического синтаксиса [6, с. 11, 393-424].
Я предполагаю, что язык ДРАКОН снимет с повестки дня проблему сложности алгоритмов (при условии, что программа «дракон-конструктор» спроектирована правильно) [6, с. 393-424].
В данном случае сложность трактуется как трудность понимания алгоритмов человеческим мозгом с помощью человеческого зрительного восприятия и характеризуется (согласно ГОСТ 28806-90 (пункт 3.1 Приложения 2) как затраты усилий человека на понимание логической концепции алгоритма).
2.2. ИКОНЫЧтобы графический язык стал гибким и выразительным, нужно тщательно спроектировать графический алфавит языка, сделать его эргономичным.
Графоэлементы (графические буквы) языка ДРАКОН называются иконами (рис. 1). В языке ДРАКОН 26 икон.
Столь богатый алфавит обладает большой выразительной силой. Он позволяет изобразить алгоритмы и иерархические алгоритмические системы любой сложности, включая параллельные процессы и процессы реального времени. И обеспечить максимальную наглядность и понятность полученной «картинки», т.е. математически строгого комплекта эргономичных алгоритмических чертежей.
Вложение:
Комментарий к файлу: Рис. 1. Иконы языка ДРАКОН
Рис. 1 Иконы..png [ 417.39 КБ | Просмотров: 14824 ]
2.3. МАКРОИКОНЫПодобно тому, как буквы объединяются в слова, иконы объединяются в составные иконы – макроиконы (рис. 2). Макроиконы – это составные алгоритмические структуры.
Соединяя иконы и макроиконы по определенным правилам, можно строить разнообразные алгоритмы и иерархические алгоритмические системы.
Общее число икон и макроикон равно 46.
Вложение:
Комментарий к файлу: Рис. 2. Макроиконы языка ДРАКОН
Рис. 2 Макроиконы.png [ 499.49 КБ | Просмотров: 14823 ]
3. АЛГОРИТМЫ РЕАЛЬНОГО ВРЕМЕНИУпрощенный алгоритм управления светофором показан на рис. 3.
Вложение:
Комментарий к файлу: Рис. 3. Алгоритм "Управление светофором"
Рис. 3 УпрСветофор.png [ 324.1 КБ | Просмотров: 14823 ]
Шапка дракон-схемы представлена на рис. 4.
Вложение:
Комментарий к файлу: Рис. 4. Шапка алгоритма "Управление светофором"
Рис. 4 шапка .png [ 169.92 КБ | Просмотров: 14823 ]
Шапка дает ответ на три наиболее важных вопроса:
1. Как называется задача?
2. Из скольких частей она состоит?
3. Как называется каждая часть?
Вот ответы для рис. 4:
(1) Управление светофором.
(2) Из трех.
(3) Ответ записан в иконах «имя ветки»:
— Управление зеленым светом.
— Управление красным светом.
— Ночной режим.
В иконах «адрес» разрешается писать только те имена, которые указаны в иконах «имя ветки».
Икона адрес — это замаскированный оператор перехода (goto). Однако он передает управление не куда угодно, а только на начало выбранной ветки.
Черные треугольники обозначают так называемый «веточный цикл».
На рис. 3 первой начинает работу крайняя левая ветка. Сначала выполняется команда ВКЛЮЧИТЬ ЗЕЛЕНЫЙ. Затем команда ПАУЗА, которая отсчитывает время 2 минуты, после чего выполняется команда ВЫКЛЮЧИТЬ ЗЕЛЕНЫЙ и т. д.
3.1. СПИСОК ОПЕРАТОРОВ РЕАЛЬНОГО ВРЕМЕНИВ языке ДРАКОН имеется пять икон реального времени (рис. 1, иконы И16–И20):
— пауза;
— период;
— пуск таймера;
— синхронизатор (по таймеру);
— параллельный процесс.
Три из них (пауза, пуск таймера и параллельный процесс) – простые операторы.
Две другие иконы (период и синхронизатор) служат «кирпичиками» для построения составных операторов и вне последних не используются.
Икона «период» является принадлежностью цикла ЖДАТЬ (рис. 2, макроикона 7). Икона «синхронизатор» служит для образования тринадцати составных операторов (рис. 2, макроиконы 8–20).
3.2. ОПЕРАТОРЫ ВВОДА-ВЫВОДАВ языке ДРАКОН предусмотрены два визуальных оператора ввода-вывода: «вывод» (рис. 1, икона И14) и «ввод» (рис. 1, икона И15).
Оба оператора «двухэтажные». На верхнем этаже пишется ключевое слово или ключевая фраза.
На нижнем (в прямоугольнике) – содержательная информация, подлежащая вводу и выводу (рис. 5, 6).
На рис. 1 видно, что иконы ввода-вывода имеют мнемоническую форму. Икона И14 содержит полую стрелку, направленную наружу, что символизирует «вывод», а икона И15 – стрелку, направленную внутрь (ввод).
Вложение:
Комментарий к файлу: Рис. 5 и Рис. 6. Операторы "пауза", "пуск таймера" и " синхронизатор"
Рис. 5, 6. пауза таймер.png [ 313.99 КБ | Просмотров: 14819 ]
3.3. ОПЕРАТОР «ПАУЗА»Предположим, управляющий компьютер должен выдать серию электрических команд, которые по линиям связи передаются в исполнительные органы и вызывают срабатывание электромеханических реле.
В результате происходит открытие трубопровода, включение насоса и другие операции, необходимые для функционирования управляемого объекта.
Такая ситуация может встретиться во многих системах управления реального времени. Например, при заправке топливом космических ракет, на атомных электростанциях, нефтеперерабатывающих заводах и т. д.
Рассмотрим пример. Предположим, управляющий компьютер должен:
• выдать команду ОТКРЫТЬ.ТРУБОПРОВОД;
• подождать две минуты;
• выдать две команды: ВКЛЮЧИТЬ.НАСОС и ОТКРЫТЬ.ЗАСЛОНКУ;
• подождать 45 секунд;
• выдать команду ПОДАЧА.ТОПЛИВА;
• подождать три минуты;
• выдать команду ПУСК.АГРЕГАТА.
Соответствующий алгоритм представлен на рис. 5. Задержка выдачи команд реализуется с помощью иконы «пауза».
Внутри последней указывается время необходимой задержки. Например, 2мин (2 минуты), 45с (45 секунд) и т. д.
Верхний оператор «пауза» на рис. 5 работает так. После выдачи команды ОТКРЫТЬ.ТРУБОПРОВОД в управляющем компьютере запускается программный счетчик времени на 2 минуты.
По истечении этого времени компьютер выдает в линию связи команды ВКЛЮЧИТЬ.НАСОС и ОТКРЫТЬ.ЗАСЛОНКУ.
3.4. ОПЕРАТОРЫ «ПУСК ТАЙМЕРА» И «СИНХРОНИЗАТОР»Изменим задачу. Будем считать, что разработчик управляемого объекта хочет указать время выдачи команд не по принципу «задержка после предыдущей команды», а по принципу секундомера.
Это значит, что все времена отсчитываются от единого начального момента (совпадающего с пуском секундомера).
Исходя из этого, сформулируем задачу управляющего компьютера. Он должен:
• включить «секундомер», то есть обнулить и запустить таймер;
• выдать команду ОТКРЫТЬ.ТРУБОПРОВОД;
• когда таймер отсчитает две минуты, выдать пару команд ВКЛЮЧИТЬ.НАСОС и ОТКРЫТЬ.ЗАСЛОНКУ;
• когда таймер отсчитает 2 минуты 45 секунд, выдать команду ПОДАЧА.ТОПЛИВА;
• когда таймер отсчитает 5 минут 45 секунд, выдать команду ПУСК.АГРЕГАТА.
Описанный алгоритм изображен на рис. 6. В нем используются операторы «пуск таймера» и «синхронизатор», совместная работа которых обеспечивает нужный эффект.
Оператор «пуск таймера» порождает, обнуляет и запускает таймер и присваивает ему имя А.
Оператор «синхронизатор» задерживает выполнение размещенного справа от него визуального оператора до наступления момента, указанного в иконе «синхронизатор».
Например, синхронизатор А = 2мин45с на рис. 6 задерживает выдачу команды ПОДАЧА.ТОПЛИВА до момента, когда таймер А отсчитает 2 минуты 45 секунд.
Сравнивая алгоритмы на рис. 5 и 6, можно заметить, что они почти эквивалентны. Почему почти?
Чтобы разобраться, рассмотрим идеальный случай. Предположим, что время, необходимое для выдачи одной команды равно нулю. Имеется в виду, что перечисленные ниже команды выдаются за время, равное нулю:
• ОТКРЫТЬ.ТРУБОПРОВОД;
• ВКЛЮЧИТЬ.НАСОС;
• ОТКРЫТЬ.ЗАСЛОНКУ;
• ПОДАЧА.ТОПЛИВА;
• ПУСК.АГРЕГАТА.
В этом случае оба алгоритма будут выдавать команды синхронно.
Однако в действительности идеальные случаи встречаются далеко не всегда. Иногда бывает, что время выдачи одной команды больше нуля.
В таком случае алгоритмы работают по-разному. Практика показывает, что в некоторых ситуациях предпочтительным является принцип паузы (когда используется икона «пауза»).
А в других – принцип таймера (когда используются иконы «пуск таймера» и «синхронизатор»).
Оба инструмента оказываются в равной степени необходимыми и полезными.
3.5. ПРИМЕР АЛГОРИТМА РЕАЛЬНОГО ВРЕМЕНИНа рис. 7 представлен более сложный алгоритм, в котором применяются операторы «пауза», «пуск таймера» и «синхронизатор».
Вложение:
Комментарий к файлу: Рис. 7. Алгоритм реального времени "Проверка летающей тарелки"
Рис. 7 летТарелка.png [ 435.45 КБ | Просмотров: 14819 ]
В средней ветке изображена икона «пауза» с надписью 2мин48с. Это означает, что после завершения процедуры ВОЛШЕБНЫЙ РЕМОНТ ТАРЕЛКИ отсчитывается пауза длительностью 2 минуты 48 секунд. И только после этого производится снятие признака АВАРИЯ ТАРЕЛКИ.
Еще одна 4-секундная пауза предусмотрена в левой ветке.
В правой ветке есть икона «пуск таймера» с надписью А = 0. Данный оператор порождает, обнуляет и запускает таймер А.
В той же ветке установлены три иконы «синхронизатор по таймеру» с надписями А = 3мин, А = 5мин и А = 8мин. При этом вызов процедуры ВКЛЮЧИТЬ ТЕЛЕПОРТАЦИЮ произойдет не сразу, а только после того, как таймер А отсчитает 3 минуты.
Соответственно включение в работу процедур ОТКЛЮЧИТЬ ГРАВИТАЦИЮ и ВЫХОД ИЗ АСТРАЛЬНОГО ТЕЛА будет задержано до тех пор, пока таймер А не примет значения 5 и 8 минут соответственно.
На рис. 7 видно, что оператор «пуск таймера» можно применять двумя способами:
• во-первых, совместно с иконой «синхронизатор» (этот случай мы обсудили);
• во-вторых, совместно с иконой «вопрос».
Последний случай рассмотрен в следующем параграфе.
3.6. ЦИКЛ ЖДАТЬПредположим, нужно в течение 3 минут ждать появления хотя бы одного из двух признаков ЛЕВЫЙ ДВИГАТЕЛЬ В НОРМЕ и ПРАВЫЙ ДВИГАТЕЛЬ В НОРМЕ.
При наступлении этого события (появлении одного из признаков) необходимо включить плазменный реактор. Если же названные признаки отсутствуют, по истечении трех минут следует включить фотонный двигатель.
Для решения задачи на рис. 7 используются два оператора:
• пуск таймера Т, отсчитывающего три минуты;
• цикл ЖДАТЬ.
В состав последнего входит икона «период» и три иконы «вопрос».
В последних размещены надписи:
• ЛЕВЫЙ ДВИГАТЕЛЬ В НОРМЕ?
• ПРАВЫЙ ДВИГАТЕЛЬ В НОРМЕ?
• Т > 3мин.
Последний оператор проверяет: значение таймера Т больше трех минут?
Если оба признака отсутствуют, а значение таймера не превышает 3 минут, опрос условий периодически повторяется. При этом период опроса указывается в иконе «период». В данном примере он равен 4 секундам.
На рис. 7 видно,что цикл ЖДАТЬ закончится в момент обнаружения одного из ожидаемых признаков, а если они не появятся, – через 3 минуты.
• Задача ожидания нескольких признаков (когда система должна по-разному реагировать на каждый признак) является типичной при разработке систем реального времени.
• Цикл ЖДАТЬ – удобное средство для решения подобных задач.
3.7. ОПЕРАТОР «ПЕРИОД»Сравнивая макроиконы 4 и 7 на рис. 2 (обычный цикл и цикл ЖДАТЬ), мы видим, что они очень похожи. Поэтому во избежание путаницы нужно иметь различительный признак.
Эту функцию выполняет икона «период». Если она есть в петле цикла – перед нами цикл ЖДАТЬ. Если нет – обычный цикл.
3.8. ОПЕРАТОР «ПАРАЛЛЕЛЬНЫЙ ПРОЦЕСС»Пусть заданы два алгоритма А и В, причем А – основной алгоритм, а В – вспомогательный. Алгоритмы А и В могут работать последовательно (рис.
или параллельно (рис. 9).
Вложение:
Комментарий к файлу: Рис. 8 и Рис.9. Последовательная и параллельная работа алгоритмов
Рис. 8, 9 послПаралл.png [ 709.31 КБ | Просмотров: 14819 ]
Чтобы организовать последовательную работу, необходимо в дракон-схеме основного алгоритма А нарисовать икону-вставку с надписью В. В этом случае алгоритм В называется процедурой.
Например, на рис. 7 в основном алгоритме ПРОВЕРКА ЛЕТАЮЩЕЙ ТАРЕЛКИ имеется процедура ПРОВЕРКА ДВИГАТЕЛЕЙ. Эти алгоритмы действуют последовательно.
Основной алгоритм передает управление процедуре ПРОВЕРКА ДВИГАТЕЛЕЙ и прекращает работу.
Возобновление работы алгоритма ПРОВЕРКА ЛЕТАЮЩЕЙ ТАРЕЛКИ произойдет только тогда, когда процедура ПРОВЕРКА ДВИГАТЕЛЕЙ закончится. В общем виде ситуация показана на рис.8.
Отличие параллельного режима состоит в том, что после начала вспомогательного алгоритма В основной алгоритм А не прекращает работу и действует одновременно с алгоритмом В (рис. 9).
Как работает оператор «период»? Поясним на примере.
На рис. 7 цикл ЖДАТЬ «крутится» по своей петле с периодичностью 4 секунды, пока не выполнится одно из трех условий. После чего произойдет выход из цикла.
Таким образом, оператор «период» задает период повторения цикла ЖДАТЬ.
Чтобы организовать параллельную работу, нужно в дракон-схеме основного алгоритма А нарисовать икону «параллельный процесс» (рис. 1, икона И20).
Икона «параллельный процесс» двухэтажная. На верхнем этаже пишут ключевое слово, обозначающее команду, изменяющую состояние параллельного процесса, например, «Пуск», «Останов» и т. д. На нижнем этаже помещают идентификатор параллельного процесса.
Обратимся к примеру на рис. 7. В правой ветке находятся два оператора управления параллельными процессами.
После окончания процедуры ВЫХОД ИЗ АСТРАЛЬНОГО ТЕЛА производится останов параллельного процесса ШАБАШ ЗЛЫХ ДУХОВ и пуск процесса ШАБАШ ДОБРЫХ ДУХОВ.
При этом предполагается, что до начала алгоритма ПРОВЕРКА ЛЕТАЮЩЕЙ ТАРЕЛКИ некий третий алгоритм выдал команду «Пуск» и запустил параллельный процесс ШАБАШ ЗЛЫХ ДУХОВ.
Последний работает одновременно с алгоритмом ПРОВЕРКА ЛЕТАЮЩЕЙ ТАРЕЛКИ вплоть до момента выдачи команды «Останов» (см. последнюю ветку на рис. 7).
Указанная команда ликвидирует параллельный процесс ШАБАШ ЗЛЫХ ДУХОВ. В этот момент одновременная работа заканчивается.
Однако следующая команда «Пуск» запускает другой параллельный процесс – ШАБАШ ДОБРЫХ ДУХОВ, который начинает работать одновременно с алгоритмом ПРОВЕРКА ЛЕТАЮЩЕЙ ТАРЕЛКИ.
3.9. ОСОБЕННОСТИ ОПЕРАТОРОВ РЕАЛЬНОГО ВРЕМЕНИОператоры реального времени – это формальные операторы языка ДРАКОН. Однако их можно использовать и при неформальном изображении алгоритмов.
Например, для построения наглядных «картинок», позволяющих легко объяснить ту или иную идею, относящуюся к системам реального времени.
Примеры таких картинок представлены на рис. 3 и 10. При этом в цикле ЖДАТЬ икону «период» обычно опускают, чтобы не загромождать рисунок (см. последнюю ветку на рис. 3).
Однако если длительность периода нужна для понимания, икону «период» можно сохранить (рис. 10).
Вложение:
Комментарий к файлу: Рис. 10. Алгоритм "Часы"
Рис. 10 Часы.png [ 307.53 КБ | Просмотров: 14819 ]
3.10. ВЗАИМОДЕЙСТВИЕ ПРИКЛАДНОЙ ПРОГРАММЫ С ОПЕРАЦИОННОЙ СИСТЕМОЙ РЕАЛЬНОГО ВРЕМЕНИНа рис. 3, 5-7 показаны операторы реального времени: «пауза», «пуск таймера», «синхронизатор», «период», а также цикл ЖДАТЬ. Эти операторы нарисованы внутри алгоритмов.
Поэтому может создаться впечатление, что они реализуются этими алгоритмами (то есть прикладными программами реального времени). Но это не так.
На самом деле перечисленные операторы реализуются совместно:
• прикладной программой реального времени;
• дракон-диспетчером, входящим в состав операционной системы реального времени.
Когда в прикладной программе встречается оператор «пауза», происходят события, не показанные на дракон-схемах. А именно, выход из прикладной программы и передача управления в дракон-диспетчер (с одновременной передачей параметра, записанного в иконе «пауза»).
Получив параметр, диспетчер отсчитывает время, указанное в паузе. Когда время истечет, диспетчер возвращает управление в прикладную программу – в точку, расположенную после иконы «пауза».
Иными словами, всякий раз, когда на рисунке алгоритма изображена пауза происходят два события:
• выход из прикладной программы (в начале паузы);
• вход в прикладную программу (в конце паузы).
Рассмотрим еще один пример – оператор «период». Длительность периода отсчитывает не прикладная программа на рис. 7, а дракон-диспетчер, входящий в состав операционной системы реального времени.
Оператор «период» означает выход из прикладной программы.
Управление переходит к дракон-диспетчеру (с одновременной передачей параметра 4с). Через каждые 4 секунды дракон-диспетчер передает управление в начало цикла ЖДАТЬ (точка Z на рис. 7).
Если все три условия дают ответ «нет», оператор «период» возвращает управление в дракон-диспетчер.
Таким образом, функционирование цикла ЖДАТЬ обеспечивается совместными усилиями прикладной программы и дракон-диспетчера.
Этот вывод относится ко всем операторам реального времени.
На дракон-схемах показаны алгоритмы, которые имеют одно начало (один вход) и один конец (один выход). В действительности программы реального времени имеют много входов и много выходов.
Дополнительные входы и выходы появляются всякий раз, когда в алгоритм добавляется оператор пауза или период. Но эти дополнительные входы и выходы на рисунках не показаны. Они не показаны из эргономических соображений – чтобы не загромождать схему.
3.11. ВЫРАЗИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ЯЗЫКА ДРАКОННаличие визуальных операторов реального времени резко расширяет изобразительные возможности языка ДРАКОН и позволяет использовать его при проектировании и разработке не только информационных, но и управляющих систем. Это обстоятельство существенно увеличивает область применения языка.
Дополнительным преимуществом является лаконичность выразительных средств, их универсальность.
В языке всего пять икон реального времени, однако их алгоритмическая мощь – в сочетании с другими возможностями языка – позволяет охватить обширный спектр задач, связанных с созданием алгоритмов и программ для управляющих систем.
Важную роль играет эргономичность операторов реального времени. Как и другие операторы языка ДРАКОН, они имеют визуальный характер.
Это позволяет сделать операции реального времени более наглядными и легкими для понимания по сравнению с традиционной текстовой записью.
Четыре иконы (пауза, период, пуск таймера и синхронизатор) – «близкие родственники» в том смысле, что внутри каждой из них указывается значение времени.
Эта родственная связь находит свое эргономическое отражение в том, что перечисленные операторы имеют визуальное «фамильное сходство».
Все они построены (с вариациями) на основе одной и той же геометрической фигуры – перевернутой равнобедренной трапеции.
Продолжение доклада в следующем сообщении