Автор работы: Пользователь скрыл имя, 15 Мая 2014 в 08:59, курсовая работа
Для алгоритмизации и программирования задач логического управления применяются различные подходы и технологии. В данной работе для задачи такого рода была использована SWITCH-технология, предложенная А. А. Шалыто [1] и развитая им совместно с Н. И. Туккелем [2].
В данной работе совместно применяются объектно-ориентированное и автоматное программирование, что названо “объектно-ориентированным программированием с явным выделением состояний” [2]. Целью работы является разработка имитатора микроволновой печи на основе SWITCH-технологии.
Введение....................................................................................................................................3
1. Постановка задачи................................................................................................................4
2. Диаграмма классов ...............................................................................................................5
3. Класс CMicroWaveDlg.......................................................................................................9
3.1. Словесное описание.......................................................................................................9
3.2. Краткое описание методов ............................................................................................9
4. Класс Dispatcher..............................................................................................................10
4.1. Словесное описание......................................................................................................10
4.2 Краткое описание методов ............................................................................................10
5. Класс Automata..................................................................................................................11
5.1. Словесное описание.......................................................................................................11
5.2. Краткое описание методов ............................................................................................11
6. Автоматный класс A0...........................................................................................................11
6.1. Словесное описание.......................................................................................................11
6.2. Автомат «Менеджер заданий» (А0) ............................................................................12
6.2.1. Словесное описание..............................................................................................12
6.2.2. Схема связей..........................................................................................................12
6.2.3. Граф переходов......................................................................................................13
7. Автоматный класс A1.........................................................................................................13
7.1. Словесное описание.....................................................................................................13
7.2. Автомат «Обработка нажатий клавиш» (A1)..............................................................13
7.2.1. Словесное описание..............................................................................................13
7.2.2. Схема связей..........................................................................................................14
7.2.3. Граф переходов......................................................................................................15
8. Автоматный класс А2.........................................................................................................15
8.1. Словесное описание.....................................................................................................15
8.2. Автомат «Установка часов» (A2)................................................................................15
8.2.1. Словесное описание..............................................................................................15
8.2.2. Схема связей автомата..........................................................................................16
8.3.3. Граф переходов......................................................................................................17
9. Автоматный класс A3.........................................................................................................17
9.1. Словесное описание.....................................................................................................17
9.2. Автомат «Программирование заданий» (A3) .............................................................17
9.2.1. Словесное описание..............................................................................................17
9.2.2. Схема связей..........................................................................................................18
9.2.3. Граф переходов......................................................................................................19
10. Автоматный класс A4.......................................................................................................20
10.1. Словесное описание...................................................................................................20
10.2. Автомат «Часы» (A4).................................................................................................20
10.2.1. Словесное описание............................................................................................20
10.2.2. Схема связей........................................................................................................20
11.2.3.Граф переходов...................................................................................................21
Выводы....................................................................................................................................22
Литература..............................................................................................................................23
Приложение 1. Пример протокола работы программы.........................................................24
Приложение 2. Листинг программы......................................................................................30
реализует входные переменные и выходные воздействия;
• Automata, от которого наследуются другие классы автоматов;
• A0, A1, A2, A3, A4 представляют собой реализации конкретных классов
автоматов.
Помимо основных классов, программа содержит вспомогательный класс
СMicroWaveApp, который унаследован от класс CWinApp библиотеки классов
MFC. Он подготавливает
приложение к работе и
приложения.
Диаграмма классов приведена на рис. 2.
Рис. 2. Диаграмма классов
3. Класс CMicroWaveDlg
3.1. Словесное описание
Класс CMicroWaveDlg является наследником класса СDialog. Он обеспечивает
интерфейс с пользователем и первичную обработку различных событий, поступающих от
операционной системы. Он также взаимодействует с автоматами, используя диспетчер.
3.2. Краткое описание методов
• CMircoWaveDlg() – конструктор класса;
• DoDataExchange() – метод библиотеки классов MFC, предназначенный для
взаимодействия с элементами пользовательского интерфейса;
• OnInitDialog() – метод, выполняющий инициализацию диалогового окна;
• OnClose() – метод обработки закрытия диалогового окна;
• OnDestroy() – метод обработки уничтожения диалогового окна;
• OnAuto() – метод обработки нажатия клавиши «Авторазморозка»;
• OnCancel() – метод обработки нажатия клавиши «Отмена»;
• OnDoor() – метод обработки нажатия клавиши «Открытие/закрытие дверцы»;
• OnEmulation() – метод обработки нажатия клавиши «Начать/закончить
эмуляцию»;
• OnMass() – метод обработки нажатия клавиши «+100 гр.»;
• OnOK() – метод обработки нажатия клавиши «OK/30 сек.»;
• OnOnemin() – метод обработки нажатия клавиши «1 мин./минуты»;
• OnSaveLog() – метод обработки нажатия клавиши «Сохранить в файл»;
• OnSetclock() – метод обработки нажатия клавиши «Часы»;
• OnSetpower() – метод обработки нажатия клавиши «Мощ.»;
• OnTenmin() – метод обработки нажатия клавиши «10 мин./часы»;
• OnTensec() – метод обработки нажатия клавиши «1 сек.»;
• OnTimer() – метод обработки событий различных таймеров.
4. Класс Dispatcher
4.1. Словесное описание
Класс Dispatcher является слоем взаимодействия автоматов со средой, которая в
данном случае является диалоговым окном. Этот класс служит сразу нескольким целям:
• создает и хранит экземпляры классов автоматов;
• хранит параметры состояния микроволновой печи, которые представляется не
удобным кодировать в состояниях автоматов (например, текущее время);
• реализует входные переменные и выходные воздействия и хранит информацию,
которая необходима для их работы (например, указатель на экземпляр класса
диалогового окна);
• реализует функции протоколирования.
Это делает реализацию автоматов системонезависимой.
4.2 Краткое описание методов
• Dispatcher() – конструктор класса;
• ~Dispatcher() – деструктор класса;
• log_enter() – протоколирование запуска автомата;
• log_exit() – протоколирование завершения обработки автоматом события;
• log_trans() – протоколирование изменения состояния автомата;
• log_input() – протоколирование проверки входных переменных;
• log_output() – протоколирование выходных воздействий;
• x1()-x5() – реализация входных переменных;
• z1()-z32() – реализация выходных воздействий.
5. Класс Automata
5.1. Словесное описание
Класс Automata реализует общие для всех автоматов функции и описывает
интерфейс, который должен предоставлять каждый автомат. Класс Automata –
абстрактный класс и предназначен только для того, чтобы от него наследовались
реализации конкретных автоматов.
5.2. Краткое описание методов
• Automata() – конструктор класса;
• ~Automata() – деструктор класса;
• wake() – метод, реализующий вызов автомата согласно алгоритму реализации графов
перехода [2];
• get_state() – вспомогательная функция получения состояния автомата;
• nested_automatas() – метод, вызываемый из wake() и реализующий вызов
вложенных автоматов. Этот метод класса Automata является виртуальным и должен
быть переопределен в наследниках;
• hande_state() – метод, вызываемый из wake() и реализующий проверку условий
на дугах и производящего переход по ним в другое состояние. В классе Automata он
чисто виртуальный и должен быть переопределен в наследниках;
• state_changed() – метод, вызываемый из wake() и реализующий действия при
изменении состояния автомата. Этот метод класса Automata является виртуальным и
должен быть переопределен в наследниках.
6. Автоматный класс A0
6.1. Словесное описание
Класс A0 является автоматным классом, порожденным от класса Automata.
Описание автомата «Менеджер заданий» (А0), который реализует данный класс,
приводится ниже.
6.2. Автомат «Менеджер заданий» (А0)
6.2.1. Словесное описание
Автомат реализует выполнение заданий микроволновой печью. Он обеспечивает
начало работы, отсчет времени до конца задания и последовательное выполнение этапов.
Схема связей автомата приведена на рис. 3, а граф переходов – на рис. 4.
6.2.2. Схема связей
Рис. 3. Схема связей автомата A0
6.2.3. Граф переходов
7. Автоматный класс A1
7.1. Словесное описание
Класс A1 является автоматным классом, порожденным от класса Automata.
Описание автомата «Обработка нажатий клавиш» (А1), который реализует данный класс,
приводится ниже.
7.2. Автомат «Обработка нажатий клавиш» (A1)
7.2.1. Словесное описание
Данный автомат реализует обработку нажатий клавиш на приборной панели
микроволновой печи. Схема связей автомата приведена на рис. 5, а граф переходов - на
7.2.2. Схема связей
7.2.3. Граф переходов
8. Автоматный класс А2
8.1. Словесное описание
Класс A2 является автоматным классом, порожденным от класса Automata.
Описание автомата «Установка часов» (А2), который реализует этот класс, приводится
ниже.
8.2. Автомат «Установка часов» (A2)
8.2.1. Словесное описание
Данный автомат описывает обработку нажатий клавиш на приборной панели
микроволновой печи во время установки часов. Схема связей автомата приведена на
рис. 7, а граф переходов – на рис. 8.
8.2.2. Схема связей автомата
8.3.3. Граф переходов
9. Автоматный класс A3
9.1. Словесное описание
Класс A3 является автоматным классом, порожденным от класса Automata.
Описание автомата «Программирование заданий» (А3), который реализует этот класс,
приводится ниже.
9.2. Автомат «Программирование заданий» (A3)
9.2.1. Словесное описание
Данный автомат описывает обработку нажатий клавиш на приборной панели
микроволновой печи во время программирования заданий. Он обеспечивает добавление
заданий в очередь на выполнение и программирование нескольких этапов приготовления.
Схема связей автомата приведена на рис. 9, а граф переходов – на рис. 10.
9.2.2. Схема связей
9.2.3. Граф переходов
10. Автоматный класс A4
10.1. Словесное описание
Класс A4 является автоматным классом, порожденным от класса Automata.
Описание автомата «Часы» (А4), который реализует данный класс, приводится ниже.
10.2. Автомат «Часы» (A4)
10.2.1. Словесное описание
Данный автомат описывает обработку событий, связанных с изменением времени, и
действия, связанные с отображением часов. Схема связей автомата приведена на рис. 11, а
граф переходов – на рис. 12.
10.2.2. Схема связей
11.2.3. Граф переходов
Выводы
Выполненная работа показала высокую эффективность применения SWITCH-
технологии для решения задач управления техническими объектами. Несомненным
достоинством технологии является разделение этапа проектирования и
программирования, а также возможность написания кода изоморфного графам переходов,
что значительно упрощает процесс отладки.
Работа, по мнению авторов, применительно к рассматриваемому примеру
опровергает утверждение Б. Страуструпа [3] о том, что «проектирование и
программирование – итеративные процессы».
В приложении 1 приведен пример протокола в терминах автоматов, описывающего
работу программы в одном из режимов, а приложение 2 содержит листинги программы
имитации микроволновой печи.
Литература
1. Шалыто А. А. SWITCH-технология. Алгоритмизация и программирование задач
логического управления. СПб: Наука, 1998.
2. Шалыто А. А., Туккель
Н. И. SWITCH-технология –
созданию программного обеспечения «реактивных» систем. //Программирование.
2001. №5. http://is.ifmo.ru раздел «Статьи».
3. Страуструп Б. Язык программирования С++. Специальное издание. СПб: Невский
диалект, 2002.
Приложение 1. Пример протокола работы программы
Ниже приводится протокол работы микроволновой печи при разогреве пищи в
течение 10 секунд на мощности 750 Вт.
18:27:44 { A0: в состоянии 0 запущен с событием e0
18:27:44 { A1: в состоянии 0 запущен с событием e0
18:27:44 { A2: в состоянии 0 запущен с событием e0
18:27:44 } A2: завершил обработку события e0 в состоянии 0
18:27:44 { A3: в состоянии 0 запущен с событием e0
18:27:44 } A3: завершил обработку события e0 в состоянии 0
18:27:44 > x4: - есть еще задания в очереди? - вернул 0
18:27:44 } A1: завершил обработку события e0 в состоянии 0
18:27:44 { A4: в состоянии 0 запущен с событием e15
18:27:44 * z26_0. Показать, что часы не установлены.
18:27:44 } A4: завершил обработку события e15 в состоянии 0
18:27:44 } A0: завершил обработку события e0 в состоянии 0
18:28:12 { A0: в состоянии 0 запущен с событием e7
18:28:12 { A1: в состоянии 0 запущен с событием e7
18:28:12 { A2: в состоянии 0 запущен с событием e7
18:28:12 } A2: завершил обработку события e7 в состоянии 0
18:28:12 { A3: в состоянии 0 запущен с событием e7
18:28:12 * z1. Установить максимальную мощность (750W).
18:28:12 * z5. Установить время выполнения задания в 0.
18:28:12 T A3: перешел из состояния 0 в состояние 2
18:28:12 * z3. Показать текущую мощность.
18:28:12 * z15_1. Установить таймаут выбора мощности.
18:28:12 } A3: завершил обработку события e7 в состоянии 2
18:28:12 T A1: перешел из состояния 0 в состояние 2
18:28:12 { A3: в состоянии 2 запущен с событием e0
18:28:12 } A3: завершил обработку события e0 в состоянии 2
Информация о работе Разработка цифрового автомата, управляющего работой микроволновой печи