Разработка цифрового автомата, управляющего работой микроволновой печи

Автор работы: Пользователь скрыл имя, 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

Прикрепленные файлы: 1 файл

Курсовая_Теория автоматов.doc

— 817.50 Кб (Скачать документ)

#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_E8EE_4783_932C_E2B1D809223A__INCLUDED_)

#define AFX_A3_H__8396887B_E8EE_4783_932C_E2B1D809223A__INCLUDED_

 

#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_E8EE_4783_932C_E2B1D809223A__INCLUDED_)

 

Листинг файла «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_169A_439E_BA0B_93BD7B6231F5__INCLUDED_)

#define AFX_A4_H__76090D0F_169A_439E_BA0B_93BD7B6231F5__INCLUDED_

 

#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_169A_439E_BA0B_93BD7B6231F5__INCLUDED_)

 

 

Листинг файла «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() == 0)) {

dispatcher->z27();

} else if ((e == 13) && (dispatcher->A[1]->get_state() == 0)) {

dispatcher->z27();

dispatcher->z26(1);

}

break;

}

}


Информация о работе Разработка цифрового автомата, управляющего работой микроволновой печи