Автор работы: Пользователь скрыл имя, 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
#include "Dispatcher.h"
#include "A2.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////
// Construction/Destruction
//////////////////////////////
A2::A2(Dispatcher *d) : Automata(d)
{
number = 2;
}
A2::~A2()
{
}
void A2::handle_state(const int e)
{
switch(state) {
case 0:
if(e == 6) {
state = 1;
}
break;
case 1:
if(e == 6) {
state = 2;
} else if((e == 3) || (e == 4)) {
state = 3;
} else if(e == 8) {
state = 0;
}
break;
case 2:
if(e == 6) {
state = 1;
} else if((e == 3) || (e == 4)) {
state = 3;
} else if(e == 8) {
state = 0;
}
break;
case 3:
if(e == 6) {
state = 0;
dispatcher->z22();
dispatcher->A[4]->wake(14);
} else if(e == 3) {
dispatcher->z20();
dispatcher->z19();
} else if(e == 4) {
dispatcher->z21();
dispatcher->z19();
} else if(e == 8) {
state = 0;
}
break;
}
}
void A2::state_changed()
{
switch(state) {
case 0:
break;
case 1:
dispatcher->z16(1);
dispatcher->z17(1);
break;
case 2:
dispatcher->z16(0);
dispatcher->z17(0);
break;
case 3:
dispatcher->z18();
dispatcher->z19();
}
}
Листинг файла «A3.h»
// A3.h: interface for the A3 class.
//
//////////////////////////////
#if !defined(AFX_A3_H__8396887B_
#define AFX_A3_H__8396887B_E8EE_4783_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Automata.h"
class A3 : public Automata
{
protected:
void handle_state(const int e);
void nested_automatas(const int e) {};
void state_changed();
public:
A3(Dispatcher *d);
virtual ~A3();
};
#endif // !defined(AFX_A3_H__8396887B_
Листинг файла «A3.cpp»
// A3.cpp: implementation of the A3 class.
//
//////////////////////////////
#include "stdafx.h"
#include "Dispatcher.h"
#include "A3.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////
// Construction/Destruction
//////////////////////////////
A3::A3(Dispatcher *d) : Automata(d)
{
number = 3;
}
A3::~A3()
{
}
void A3::handle_state(const int e)
{
bool _x1, _x2;
switch(state) {
case 0:
if(e == 1) {
state = 1;
dispatcher->z11();
} else if(e == 7) {
state = 2;
dispatcher->z1();
dispatcher->z5();
} else if((e == 9) && dispatcher->x3()) {
dispatcher->z1();
dispatcher->z5();
dispatcher->z8();
dispatcher->z8();
dispatcher->z8();
dispatcher->z9();
}
break;
case 1:
_x2 = dispatcher->x2();
if(e == 2) {
dispatcher->z13();
dispatcher->z14();
dispatcher->z12();
} else if ((e == 7) && _x2) {
state = 2;
dispatcher->z1();
dispatcher->z5();
} else if ((e == 7) && !_x2) {
state = 2;
dispatcher->z9();
dispatcher->z1();
dispatcher->z5();
} else if (e == 8) {
state = 0;
dispatcher->z10();
} else if ((e == 9) && !_x2 && dispatcher->x3()) {
state = 0;
dispatcher->z9();
}
break;
case 2:
if(e == 3) {
state = 3;
dispatcher->z6();
} else if(e == 4) {
state = 3;
dispatcher->z7();
} else if(e == 5) {
state = 3;
dispatcher->z8();
} else if(e == 7) {
dispatcher->z2();
dispatcher->z3();
dispatcher->z15(true);
} else if(e == 8) {
state = 0;
dispatcher->z10();
} else if(e == 11) {
state = 3;
}
break;
case 3:
_x1 = dispatcher->x1();
if(e == 3) {
dispatcher->z6();
dispatcher->z4();
} else if (e == 4) {
dispatcher->z7();
dispatcher->z4();
} else if (e == 5) {
dispatcher->z8();
dispatcher->z4();
} else if ((e == 7) && _x1) {
state = 2;
} else if ((e == 7) && !_x1) {
state = 4;
dispatcher->z9();
dispatcher->z1();
dispatcher->z5();
} else if (e == 8) {
state = 0;
dispatcher->z10();
} else if ((e == 9) && !_x1 && dispatcher->x3()) {
state = 0;
dispatcher->z9();
}
break;
case 4:
if(e == 3) {
state = 5;
dispatcher->z6();
} else if(e == 4) {
state = 5;
dispatcher->z7();
} else if(e == 5) {
state = 5;
dispatcher->z8();
} else if(e == 7) {
dispatcher->z2();
dispatcher->z3();
dispatcher->z15(true);
} else if(e == 8) {
state = 0;
dispatcher->z10();
} else if(e == 11) {
state = 5 ;
}
break;
case 5:
_x1 = dispatcher->x1();
if(e == 3) {
dispatcher->z6();
dispatcher->z4();
} else if (e == 4) {
dispatcher->z7();
dispatcher->z4();
} else if (e == 5) {
dispatcher->z8();
dispatcher->z4();
} else if ((e == 7) && _x1) {
state = 4;
} else if (e == 8) {
state = 0;
dispatcher->z10();
} else if ((e == 9) && !_x1 && dispatcher->x3()) {
state = 0;
dispatcher->z9();
}
break;
}
}
void A3::state_changed()
{
switch(state) {
case 0:
break;
case 1:
dispatcher->z12();
break;
case 2:
dispatcher->z3();
dispatcher->z15(true);
break;
case 3:
dispatcher->z4();
dispatcher->z15(false);
break;
case 4:
dispatcher->z3();
dispatcher->z15(true);
break;
case 5:
dispatcher->z4();
dispatcher->z15(false);
break;
}
}
Листинг файла «A4.h»
// A4.h: interface for the A4 class.
//
//////////////////////////////
#if !defined(AFX_A4_H__76090D0F_
#define AFX_A4_H__76090D0F_169A_439E_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Automata.h"
class A4 : public Automata
{
protected:
void handle_state(const int e);
void nested_automatas(const int e) {};
void state_changed() {};
public:
A4(Dispatcher *d);
virtual ~A4();
};
#endif // !defined(AFX_A4_H__76090D0F_
Листинг файла «A4.cpp»
// A4.cpp: implementation of the A4 class.
//
//////////////////////////////
#include "stdafx.h"
#include "Dispatcher.h"
#include "A4.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////
// Construction/Destruction
//////////////////////////////
A4::A4(Dispatcher *d) : Automata(d)
{
number = 4;
}
A4::~A4()
{
}
void A4::handle_state (const int e) {
switch(state) {
case 0:
if (e == 15) {
dispatcher->z26(0);
} else if (e == 14) {
state = 1;
dispatcher->z25();
}
break;
case 1:
if (e == 15) {
dispatcher->z26(1);
} else if ((e == 13) && !(dispatcher->A[1]->get_state(
dispatcher->z27();
} else if ((e == 13) && (dispatcher->A[1]->get_state() == 0)) {
dispatcher->z27();
dispatcher->z26(1);
}
break;
}
}
Информация о работе Разработка цифрового автомата, управляющего работой микроволновой печи