ISSN 1991-3087
Рейтинг@Mail.ru Rambler's Top100
Яндекс.Метрика

НА ГЛАВНУЮ

Разработка программной модели контроля дверей холодильника на основе теории автоматов

 

Баженов Руслан Иванович,

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

Афанасьева Мария Александровна,

студент направления «Информационные системы и технологии».

Приамурский государственный университет им. Шолом-Алейхема.

 

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

Системы с логическим управлением, являясь представителем широкого класса программно-аппаратных комплексов со сложным поведением, хорошо реализуются автоматным программированием. При традиционном подходе к решению таких задач возникает много трудностей [2]. Проблемами автоматного программирования занимаются российские [1, 3, 5, 7 и др.] и зарубежные [8, 9, 10] ученые. Концепция выбранного метода приведена в книге основателя методологии А.А.Шалыто [4].

В рамках исследования разрабатывалась программная модель контроля за дверьми холодильника. Сформулируем задачу.

Если дверь холодильника закрыта, то на «Панели информации» отображается: индикатор нахождения холодильника в нормальном режиме заморозки, индикатор положения двери в закрытом состоянии.

Если дверь открыта, то на «Панели информации» отображается: индикатор нахождения холодильника в нормальном режиме заморозки, индикатор открытой двери холодильника, индикатор включенного освещения в холодильнике.

Если после открытия прошло более 15 с., то включается звуковой сигнал и на «Панели информации» отображается: индикатор нахождения холодильника в нормальном режиме заморозки, индикатор обычного звукового сигнала, индикатор открытой двери холодильника, индикатор включенного освещения в холодильнике.

Если прошла минута, то включается громкий звуковой сигнал и на «Панели информации» гаснут индикатор нахождения холодильника в нормальном режиме заморозки, индикатор обычного звукового сигнала и отображаются: индикатор открытой двери холодильника, индикатор включенного освещения в холодильнике, индикатор предупреждения разморозки холодильника, индикатор громкого звукового сигнала, а так же выводится информация «ВНИМАНИЕ!!! Холодильник может разморозиться!».

Представим разработанную модель графа состояний [6] (рис. 1).

Перечень состояний:

Состояние 0. «Закрыта». Дверь, к которой относится автомат, закрыта.

Состояние 1. «Открыта». Дверь, к которой относится автомат, открыта.

Состояние 2. «Открыта более 15 секунд». Дверь, к которой относится автомат, открыта больше15 с.

Состояние 3. «Открыта более 60 секунд». Дверь, к которой относится автомат, открыта больше 60 с.

e1 – дверь открыта

e2 – дверь закрыта

e3 – дверь открыта более 15 секунд

e4 – дверь открыта более 60 секунд

Нумерация воздействий:

z1 – включить индикатор открытой двери

z2 – выключить индикатор открытой двери

z3 – включить звуковой сигнал

z4 – выключить звуковой сигнал

z5 – включить громкий звуковой сигнал

z6 – выключить громкий звуковой сигнал

z7 – включить лампу освещения

z8 – выключить лампу освещения

 

Рис. 1. Граф переходов.

 

На основе представленного графа была разработана программная модель на языке Delphi (рис. 2).

 

Рис. 2. Форма программной модели.

 

Конечный автомат был реализован следующим образом.

В описании процедуры определены переменные состояний, кода входного сигнала, кода выходной команды.

procedure TForm1.Automat(startState :integer; var endState:integer; signal:integer; var outputCommand:integer);

Реализация графа перехода прописана через конструкцию case.

case startState of

Фрагменты кода, иллюстрирующие автомат, представлены в табл. 1.

 

Таблица 1.

Реализация состояний в процедуре.

Состояние

Состояние

0: begin

 case signal of

  1: begin

   endState:=1;

   outputCommand:=1;

   Image7.Visible:=true;

  

  end;

 end;

end;

1: begin

 case signal of

  0: begin

   endState:=0;

   outputCommand:=2;

  end;

  1: begin

   endState:=2;

   outputCommand:=3;

   Image3.Visible:=true;

   …

  end;

 end;

end;

2: begin

 case signal of

  0: begin

   endState:=0;

   outputCommand:=4;

  end;

  1: begin

   endState:=3;

   outputCommand:=5;

   Image3.Visible:=true;

  …

  end;

 end;

end;

3: begin

 case signal of

  1: begin

   endState:=0;

   outputCommand:=6;

   Image7.Visible:=false;

  

  end;

 end;

 

 

Обработка событий на кнопках представлена через процедуры Avtomat и выполнения показа состояния ShowStatuses:

procedure TForm1.BtnD_openClick(Sender: TObject);

 var endSt: integer; stat: integer;

begin

 Automat(0,endSt,1,stat); // или для примера Automat(3,endSt,1,stat);

 ShowStatuses(stat);

end;

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

 

Литература

 

1.                  Бедный Ю. Д., Шалыто А. А. Создание системы управления танком для игры ROBOCODE с использованием генетических алгоритмов // Научно-технический вестник информационных технологий, механики и оптики. 2008. № 53. С. 88-99.

2.                  Вавилов В. К., Шалыто А. А. Что плохого в автоматном подходе к программированию контроллеров // Промышленные АСУ и контроллеры. 2007. №1. С. 49-51.

3.                  Мазин М. А. Автоматное программирование для среды языково-ориентированного программирования: автореферат диссертации на соискание ученой степени кандидата технических наук / Санкт-Петербургский государственный университет информационных технологий, механики и оптики. Санкт-Петербург, 2010.

4.                  Поликарпова Н. И., Шалыто А. А. Автоматное программирование. СПб.: Питер, 2009. 176 с.

5.                  Степанов О. Г. Автоматное программирование с использованием динамических языков программирования // Научно-технический вестник информационных технологий, механики и оптики. 2006. № 25. С. 37-43.

6.                  Хопкрофт Дж., Мотвани Р., Ульман Дж. Введение в теорию автоматов, языков и вычислений. М.: Вильямс, 2008. 528 с.

7.                  Янкин Ю. Ю., Шалыто А. А. Автоматное программирование плис в задачах управления электроприводом // Информационно-управляющие системы. 2011. № 1. С. 50-56.

8.                  Morales D.G., Almeida F., Rodrı́guez C., Roda J.L., Coloma I., Delgado A. Parallel dynamic programming and automata theory // Parallel Computing. 2000. 26 (1). P. 113-134.

9.                  Reddy U. S. Automata-Theoretic Semantics of Idealized Algol with Passive Expressions // Electronic Notes in Theoretical Computer Science. 2013. 298 (4). P. 325-348.

10.              Torkestani J. A., Meybodi M.R. A cellular learning automata-based algorithm for solving the vertex coloring problem // Expert Systems with Applications. 2011. 38 (8). P. 9237-9247.

 

Поступила в редакцию 31.03.2014 г.

2006-2019 © Журнал научных публикаций аспирантов и докторантов.
Все материалы, размещенные на данном сайте, охраняются авторским правом. При использовании материалов сайта активная ссылка на первоисточник обязательна.