Моделирование системы управления технологическим процессом

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Постановка задачи

В вычислительную машину, работающую в системе управления технологическим процессом, через каждые 5 ± 2с поступает информация от датчиков и измерительных устройств. До обработки на ЭВМ информационные сообщения накапливаются в буферной памяти емкостью в 2 сообщения. Продолжительность обработки сообщений на ЭВМ 5 ± 4с. Динамика технологического процесса такова, что имеет смысл обрабатывать сообщения, ожидавшие в буферной памяти не более 12 с. Остальные сообщения считаются потерянными.

Смоделировать процесс поступления в ЭВМ 200 сообщений. Подсчитать число потерянных сообщений и определить коэффициент загрузки ЭВМ. Оптимизировать задачу, добиться нулевого количества потерянных сообщений.

Технологическая схема системы

На рисунке 1 представлена технологическая схема системы. От датчиков и измерительных приборов информация поступает в вычислительную машину, причем буферная память имеет емкость в 2 сообщения, соответственно, если буферная память занята, вновь пришедшие сообщения считаются потерянными. Далее сообщения выстраиваются в очередь на обработку в ЭВМ, причем на обработку попадают только те сообщения, которые ожидали в очереди не более 12 секунд. После обработки на ЭВМ сообщения попадают к пользователю.

Рисунок 1 — Технологическая схема системы

Q-схема

Для описания СМО, как непрерывно-стохастических процессов, используют Q-схемы, отражающие элементы и структуру СМО. На рисунке 2 изображена Q-схема системы, где И — источник, Н — накопитель.

Рисунок 2 — Q-схема системы

Структурно-функциональная схема системы

На рисунках 3а и 3б приведена структурно-функциональная схема системы. Модель реализована с помощью IDEF0.

Структурно-функциональная схема описываемой имитационной модели состоит из двух уровней:

1. Уровень А1. Непосредственное обслуживание сообщений. На входе — поток сообщений, поступающих на обслуживание. На управлении — занятость буфера сообщением и время нахождения в буфере. На выходе — поток обработанных сообщений и поток отброшенных сообщений.

2. Уровень А2. Описывает поток сообщений в общем виде. На вход блока «Тест1» поступает поток сообщений. Из блока, применяя правило отброса сообщений, сообщение поступает в блок «Буфер», далее сообщение попадает в блок «Тест2», где опять же применяется правило отброса сообщений, и после этого сообщение поступает на обработку в ЭВМ. Выходным потоком являются — «Обработанные сообщения».

Рисунок 3а — Структурно-функциональная модель обработки сообщений системой управления технологическим процессом (первый уровень).

Рисунок 3б — Структурно-функциональная модель обработки сообщений системой управления технологическим процессом (второй уровень).

Алгоритм имитационного моделирования

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

Начальные условия:

1. Рассматриваемая в задаче система представляет собой систему массового обслуживания с одноканальным обслуживанием.

2. Время поступления и обработки сообщений — это нормально распределенная случайная величина, заданная в определенных интервалах.

3. Функционирование рассматриваемой СМО: канал (ЭВМ) обрабатывает в каждый момент времени одно сообщение; если сообщения отсутствуют, то система простаивает; если канал в данный момент занят, то сообщение ждет своей очереди на обработку.

4. Дисциплиной очереди для данной системы является FIFO — первый пришел, первый обслуживается.

Описание блок-схемы алгоритма имитационного моделирования

1. Начало моделирования.

2. Ввод необходимых параметров моделирования: смотри выше пункт «Начальные условия».

3. Моделирование прихода информации: интервалы времени между наступлениями этого события являются случайными величинами и распределены равномерно на интервале 5±2 секунды.

4. Осуществление проверки на наличие свободной ячейки в буферной памяти. Емкость буферной памяти оговорена в задании и составляет 2 ячейки. Если все ячейки на момент поступления очередного сообщения заняты, то сообщение считается потерянным и переходит в блок 10.

5. Если имеется свободная ячейка, то сообщение её занимает, путем перехода в блок 5.

6. Сообщение ожидает своей очереди. Очередь в данной системе наблюдается при поступлении сообщений в буфер вычислительной машины, где они ожидают освобождения ЭВМ для последующей обработки. Дисциплиной очереди для данной системы является FIFO — первый пришел, первый обслуживается.

7. Осуществление проверки времени ожидания сообщения в очереди. Время ожидания сообщения в буферной памяти вычислительной машины ограничено и составляет 12 секунд, по истечении этого времени, сообщение считается потерянным и переходит в блок 10. Если время ожидания сообщения в очереди не превышает допустимый предел, сообщение опадает на обработку в ЭВМ, т. е. в блок 7.

8. Обработка сообщения на приборе обслуживания (в нашем случае ЭВМ). Прибор обслуживания характеризуется своим временем обслуживания, которое является случайной величиной, и эта величина равномерно распределена в интервале 5±4 секунды.

9. Проверка обслуживания необходимого количества сообщений. В нашей задаче необходимое количество обработанных сообщений для завершения моделирования равно 200. Если количество обработанных сообщений не достигло этого числа, то моделирование продолжается и переход осуществляется в блок 3. По достижении необходимого количества сообщений моделирование прекращается, и переход осуществляется в блок 9.

10. Вывод результатов моделирования.

11. Блок, в котором ведется учет отброшенных сообщений.

12. Конец моделирования.

Блок-схема алгоритма имитационного моделирования

обработка сообщение технологический моделирование

На рисунке 4 представлена блок-схема имитационного моделирования.

Рисунок 4 — Блок-схема имитационного моделирования

Моделирование в среде GPSS

Программный код в среде GPSS выглядит так:

SIMULATE; карта симуляции

GENERATE 5,2; поступление сообщений

TEST L Q$Och, 2, Met1; проверка очереди, если оба места

заняты, то сообщение теряем

MARK 1; заносим текущее время в переменную транзакта

QUEUE Och; вход в очередь (Och — имя очереди)

SEIZE Ustr; вход в ЭВМ (Ustr -имя устройства)

DEPART Och; выход из очереди

TEST L MP1,12,Met2; проверка времени ожидания, если более

12сек., то сообщение теряем

ADVANCE 5,4; обработка сообщения в ЭВМ

RELEASE Ustr; выход из ЭВМ

TERMINATE 1; выход из модели

Ocher QTABLE Och, 1,1,20; создаем таблицу времени ожидания в

очереди

Met2 RELEASE Ustr; выход из ЭВМ сообщения время ожидания

которого больше 12 сек

Met1 TERMINATE; потеря сообщений, не попавших в буфер

START 200; задает значение счетчика конца моделирования

(моделируем прохождение 200 сообщений)

Результаты моделирования

GPSS World Simulation Report — Untitled Model 1. 27. 1

Saturday, November 03, 2012 18: 14:35

START TIME END TIME BLOCKS FACILITIES STORAGES

0. 000 1081. 285 12 1 0

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 217 0 0

2 TEST 217 0 0

3 MARK 204 0 0

4 QUEUE 204 0 0

5 SEIZE 204 1 0

6 DEPART 203 0 0

7 TEST 203 0 0

8 ADVANCE 200 0 0

9 RELEASE 200 0 0

10 TERMINATE 200 0 0

MET2 11 RELEASE 3 0 0

MET1 12 TERMINATE 16 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

USTR 204 0. 849 5. 028 1 217 0 0 0 0

QUEUE MAX CONT. ENTRY ENTRY (0) AVE. CONT. AVE. TIME AVE. (-0) RETRY

OCH 2 1 204 29 0. 780 4. 136 4. 821 0

TABLE MEAN STD. DEV. RANGE RETRY FREQUENCY CUM. %

OCHER 4. 147 3. 426 0

_ - 1. 000 44 21. 67

1. 000 — 2. 000 27 34. 98

2. 000 — 3. 000 20 44. 83

3. 000 — 4. 000 22 55. 67

4. 000 — 5. 000 16 63. 55

5. 000 — 6. 000 14 70. 44

6. 000 — 7. 000 13 76. 85

7. 000 — 8. 000 15 84. 24

8. 000 — 9. 000 12 90. 15

9. 000 — 10. 000 5 92. 61

10. 000 — 11. 000 6 95. 57

11. 000 — 12. 000 6 98. 52

12. 000 — 13. 000 2 99. 51

13. 000 — 14. 000 1 100. 00

На рисунке 5 представлена диаграмма, которая показывает распределение количества сообщений в очереди по времени.

Рисунок 5 — Диаграмма «Время ожидания сообщений в очереди».

В результате моделирования в среде GPSS мы получили, что число потерянных сообщений равно 16, это отражено в блоке Met2 TERMINATE.

Причем 3 из этих сообщений (блок Met1 RELEASE), не попали в память ЭВМ, вследствие чего и были потеряны, остальные 13 сообщений были потеряны из-за того, что ожидали в очереди более 12 секунд. Коэффициент загрузки ЭВМ равен 0,849, это видно из результатов моделирования FACILITY USTR — UTIL. 0. 849.

Моделирование в среде C#

Главная форма программы показана на рисунке 6.

Рисунок 6 — Главная форма программы

На рисунках 7, 8, 9, 10 представлены результаты нажатия кнопок «Задание», «Решение», «График», «Об авторе» соответственно.

Рисунок 7 — Результат нажатия кнопки «Задание»

Рисунок 8 — Результат нажатия кнопки «Решение»

Рисунок 9 — Результат нажатия кнопки «График»

Рисунок 10 — Результат нажатия кнопки «Об авторе»

Листинг программы, написанной в среде C#, расположен в Приложении.

Анализ полученных результатов

Сведем результаты, полученные в средах GPSS и C# в одну итоговую таблицу (табл. 1), для наглядности.

Таблица 1 — Итоговая таблица результатов

GPSS

C#

Число потерянных сообщений

16

20

Коэффициент загрузки ЭВМ

0,849

0,8

Как видно из таблицы 1, результаты, полученные в средах GPSS и C#, различаются не слишком сильно, это значит, что погрешность, полученная в результате вычислений допустима.

Описание возможных улучшений в работе системы

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

Для этого изменим время обработки сообщения на ЭВМ с 5±4сек на 3±2сек и сделаем количество ячеек в буферной памяти 10. Результаты по изменениям начальной системы сведем в таблицу 2.

Таблица 2 — Сравнительная таблица исходной системы и улучшенной.

Время обработки сообщения на ЭВМ

Количество ячеек в буферной памяти

Число потерянных сообщений

Коэффициент загрузки ЭВМ

Исходный вариант

5±4сек

2

16

0,849

Улучшенный вариант

3±2сек

10

0

0,594

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

Листинг улучшенной программы на GPSS

SIMULATE; карта симуляции

GENERATE 5,2; поступление сообщений

TEST L Q$Och, 10, Met1; проверка очереди, если оба места заняты, то сообщение теряем

MARK 1; заносим текущее время в переменную транзакта

QUEUE Och; вход в очередь (Och — имя очереди)

SEIZE Ustr; вход в ЭВМ (Ustr -имя устройства)

DEPART Och; выход из очереди

TEST L MP1,12,Met2; проверка времени ожидания, если более 12сек., то сообщение теряем

ADVANCE 3,2; обработка сообщения в ЭВМ

RELEASE Ustr; выход из ЭВМ

TERMINATE 1; выход из модели

Ocher QTABLE Och, 1,1,20; создаем таблицу времени ожидания в очереди

Met2 RELEASE Ustr; выход из ЭВМ сообщения время ожидания которого больше 12 сек

Met1 TERMINATE; потеря сообщений, не попавших в буфер

START 200; задает значение счетчика конца моделирования (моделируем прохождение 200 сообщений)

Результаты моделирования

GPSS World Simulation Report — Untitled Model 1.1. 1

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 200 0 0

2 TEST 200 0 0

3 MARK 200 0 0

4 QUEUE 200 0 0

5 SEIZE 200 0 0

6 DEPART 200 0 0

7 TEST 200 0 0

8 ADVANCE 200 0 0

9 RELEASE 200 0 0

10 TERMINATE 200 0 0

MET2 11 RELEASE 0 0 0

MET1 12 TERMINATE 0 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

USTR 200 0. 594 2. 992 1 0 0 0 0 0

QUEUE MAX CONT. ENTRY ENTRY (0) AVE. CONT. AVE. TIME AVE. (-0) RETRY

OCH 1 0 200 171 0. 023 0. 116 0. 802 0

TABLE MEAN STD. DEV. RANGE RETRY FREQUENCY CUM. %

OCHER 0. 116 0. 358 0

_ - 1. 000 191 95. 50

1. 000 — 2. 000 8 99. 50

2. 000 — 3. 000 1 100. 00

На рисунке 11 представлена диаграмма, которая показывает распределение количества сообщений в очереди по времени.

Рисунок 11 — Диаграмма «Время ожидания сообщений в очереди»

Список литературы

1. Бахвалов Л. А. Имитационное моделирование Систем Массового Обслуживания. Электронное пособие по курсовому проектированию по дисциплине «Моделирование систем». -- М., Московский Государственный Горный Университет., 2003 г. 125 с.

2. Бахвалов JI.A. Моделирование систем. Методические указания по выполнению курсовых работ. -- М., Московский Государственный Горный Университет., 2004. 114с.

Приложение 1

Листинг программы, разработанной в среде C#.

using System;

using System. Collections. Generic;

using System. Linq;

using System. Text;

using System. Threading. Tasks;

namespace WpfApplication8

{

class GetResults

{

static public Random r = new Random ();

static public string GetText ()

{

string Re = null;

int time = 0, i = 0;

// Создаем объект вычислительной машины

Comp Computer = new Comp ();

while (Computer. GetN () < 200) // Условие окончания моделирования после

поступления 200 сообщений

{

int TimeWait = r. Next (3, 1); // Интервал поступления сообщений

time += TimeWait; // Подсчет времени, прошедшего с момента

поступления сообщения в буфер обмена.

if (Comp > (que. Peek (). TimeUsing + que) & & que. Count > 0);

// Расчет коэффициента загрузки

Computer. AddToQuere (new Message (time, (byte)r. Next (5, 2), i));

// Добавляем i-тое сообщение в очередь

Computer. DelFromQuere (time); // удаляем из очереди те сообщения, которые к моменту time были обработаны или потеряны,

i++; // добавляя их объекты в контейнер List

}

int k = 0;

class Comp // Класс, служащий для описания вычислительной машины.

{

private Queue< Message> que = new Queue< Message>(); // Контейнер- очередь для

сообщений

private List< Message> list = new List< Message>(); // Контейнер для хранения

результатов

public void AddToQuere (Message mes)

{

que. Enqueue (mes);

}

public void DelFromQuere (int Time) // Перемещение обслуженного или

потерянного сообщения из очереди que в

контейнер list

{

if (Time > (que. Peek (). TimeUsing + TIME) & & que. Count > 0) // для

полученного сообщения

{

TIME += que. Peek (). TimeUsing;

list. Add (que. Dequeue ());

}

if (que. Count > 10 & & Time > (que. ElementAt (1). TimeWait + 12)) // для сообщения, у которого истек срок ожидания

{

que. ElementAt (1). IsFailed = true;

list. Add (que. Dequeue ());

Message. NumOfFailed++;

}

}

}

class Message // Класс, служащий для описания сообщений

{

public readonly int TimeWait;

public readonly byte TimeUsing;

public readonly int ID; // Счетчик необработанных сообщений

static public byte NumOfFailed = 0; // Коэффициент загрузки

public bool IsFailed = false;

public Message (int TW, byte TU, int id)

{

TimeWait = TW;

TimeUsing = TU;

ID = id;

}

public Message () { }

}

}

Размещено на

ПоказатьСвернуть
Заполнить форму текущей работой