УНИВЕРСИТЕТ ИТМО
Кафедра «Технологии программирования»



Главная

Новости
 Новости науки
 Важное
 Почетные доктора
 Инновации
 Культура
 Люди
 Разное
 Скартел-Yota
 Стрим
 Смольный
Учебный процесс
 Образование
 Дипломы
 Курсовые проекты
 Лабораторные работы
 Учебные курсы
 Визуализаторы
 Unimod-проекты
 Семинары
 Стипендии
Наука
 События и факты
 Госконтракты
 Статьи
 Диссертации
 Книги
 Презентации
 Свидетельства
 Сотрудничество
Исследования
 Автоматы
 Верификация
 Биоинформатика
 Искусственный интеллект
 Генетические алгоритмы
 Движение
 UniMod
 Роботы и агенты
 Нейронные сети
 ФЦП ИТМО-Аалто
 Разное

О нас
 Премии
 Сертификаты и дипломы
 Соревнования по программированию
 Прорыв
 Автографы
 Рецензии

Беллетристика
 Мотивация
 Мысли
Медиа
 Видео
 Фотографии
 Аудио
 Интервью

English
 Home

 Articles
 Posters
 Automata-Based Programming
 Initiatives
 Projects
 Presentations
 UniMod
 UniMod Projects
 Visualizers


Поиск по сайту

Яndex



   Главная / Статьи / Программная реализация управляющих автоматов (версия для печати)


Программная реализация управляющих автоматов



Первая публикация по автоматному программированию. Журнал «Судостроительная промышленность. Серия «Автоматика и телемеханика». 1991. Вып.13, с. 41-42.

А.А. Шалыто

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

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

Технология предполагает пять стадий разработки автоматных программ, каждая из которых состоит из ряда этапов: системное проектирование (1-7); проектирование формальной спецификации автомата или системы взаимосвязанных автоматов (8-13); логическое проектирование автоматов (14-20); программирование (21,22); проверка правильности программ (23-27), применимая для задач небольшой размерности. Перечислим этапы разработки.

I. Системное проектирование.
1. Описание объекта управления с выделением источников и приемников информации и указанием его свойств.
2. Описание «алгоритма» управления, заданного заказчиком.
3. Дополнение «алгоритма», учитывающее опыт разработки.
4. Выбор органов управления и средств представления информации.
5. Построение схемы связей «органы управления — управляющий автомат — органы управления — средства представления информации».
6. Представление в случае необходимости управляющего автомата в виде взаимосвязанной системы управляющих автоматов.
7. Декомпозиция каждого управляющего автомата на автомат и функциональные элементы задержки.

II. Проектирование формальной спецификации автомата или композиции автоматов.
8. Выбор языка спецификаций, позволяющего в доступной форме согласовать с заказчиком поведение автомата и легко перейти к программе. Выполнено сравнение функциональных схем, схем алгоритмов и графов переходов и обоснован выбор последних в качестве языка спецификации.
9. Построение исходного графа переходов для каждого автомата с учетом взаимодействия автоматов.
10. Обеспечение полноты и непротиворечивости графа переходов для каждого автомата.
11. Согласование системы взаимосвязанных автоматов (формальной спецификации) с заказчиком.
12. Построение формальной спецификации для функциональных элементов задержки.
13. Построение формальной спецификации для модели объектов управления.

III. Логическое проектирование автоматов.
14. Выбор структурной модели каждого автомата (автомат без выходного преобразователя, автомат Мура и т.д.) и разновидности, зависящей от расположения технологических элементов задержки в модели.
15. Выбор вида кодирования состояний каждого автомата (принудительное, логарифмическое, многозначное и т.д.). Обоснован выбор многозначного кодирования.
16. Выбор алгоритмической модели программной реализации каждого автомата (система булевых формул, таблица переходов, схема алгоритма, конструкция switch). Обоснован выбор конструкция switch.
17. Построение алгоритмической модели каждого автомата.
18. Оптимизация булевых формул, помечающих дуги графов переходов (раздельная или совместная).
19. Выбор и построение алгоритмической модели функциональных элементов задержки.
20. Выбор и построение алгоритмической модели объектов управления.

IV. Программирование
21. Выбор языка программирования.
22. Программирование взаимосвязанной системы автоматов, функциональных элементов задержки и моделей объектов управления.

V. Проверка правильности программ, применимая для задач небольшой размерности.
23. Построение единого графа проверки.
24. Построение графа функционирования.
25. Корректировка спецификаций и моделей в случае отсутствия изоморфизма графов функционирования и проверки.
26. Программирование графа проверки.
27. Замена программы, реализующей композицию автоматов, программой, реализующей граф проверки, что обеспечивает использование полностью проверенной программы, что практически недостижимо при других подходах.

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

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

Изоморфизм графа переходов и конструкции switch обеспечивает управляемость (изменяемость) программной реализации.

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

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




© 2002—2024 По техническим вопросам сайта: alexvatyan@gmail.com