Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Проведем сравнительную оценку разработанных алгоритмов.Содержание книги
Поиск на нашем сайте
На рисунке 31 представлен алгоритм работы лабораторной установки для обнаружения «сгустка» неоднородности жидкости.
Рисунок 31 - Алгоритм функционирования лабораторной установки
На первом этапе устанавливается нуль, и настраиваются допустимые отклонения – это делается на панели «Настройки контроллера» с помощью параметра «Контроль сигнала» (см., например, рисунок 10). На втором этапе «Аварийная задержка (1 с)» задается время срабатывания аварии, в данном случае 1 с (100 выборок сигнала). На третьем этапе при k<100, например k=99, аварии не происходит, устройство работает без изменений (рабочий режим). При k>100 происходит авария (устройство реагирует на большие выбросы). На четвертом этапе «Сброс после аварии (0,5 с)» задается время, по истечении которого устройство автоматически переключается в рабочий режим, в данном случае 0,5 с (50 выборок сигнала), после чего происходит новый цикл (возвращаемся на первый этап). На рисунке 32 представлен вариант разработанного алгоритма автоматического устранения влияния аварийного выброса, описанный в предыдущем отчете.
Рисунок 32 – Вариант алгоритма автоматического устранения влияния аварийного выброса
Алгоритм состоит из трех частей: процесса инициализации, распознавания формы кривой и процесса аварии. Первый этап – это этап подготовки программы к работе. Второй этап – это распознавание формы сигнала оптической плотности. Он предполагает два пути решения: распознавание кривой по соотношению с эталонами аварии в виде форм сигналов оптической плотности, и распознавание с использованием относительного описания. Второе решение понадобится в дальнейшей работе над проектом, при рассмотрении более сложных форм кривых. Третий этап – это непосредственная работа уже над выявленным типом кривой. Таким образом, эти два алгоритма близки по ряду выполняемых функций. Во-первых, оба они начинаются с одинаковой настройки: установления нуля и вычисление допустимого отклонения (во втором алгоритме это блок «процесс инициализации»). Во-вторых, критерий начала аварии в обоих случаях - превышение значения оптической плотности. Однако заметим, что эти два алгоритма во многом и отличаются. Во-первых, в первом алгоритме рассматриваются только 2 критерия (время и плотность), а во втором алгоритме – 3 (время, плотность и площадь). Во-вторых, включение/выключение режима аварии происходит по-разному. В первом алгоритме включение происходит каждый раз, когда счетчик превышения становится равным 100, а выключение – каждый раз после истечения «сброса после аварии (0,5 с). А во втором алгоритме включение/выключение происходит единственный раз за всю аварию. В-третьих, во втором алгоритме предусмотрено распознавание формы кривой для более эффективной работы программы, а в первом его нет. По предложенному алгоритму была разработана программа для лабораторной установки контроля оптической плотности водных сред.
Описание типов данных Для программной реализации разработанного алгоритма введем понятие динамического списка: Определение. Динамическим списком называется структура данных, каждый элемент которой посредством указателя связывается со следующим элементом. Из определения следует, что каждый элемент списка содержит поле данных (Data) (оно может иметь сложную структуру) и поле ссылки на следующий элемент (Next). Поле ссылки последнего элемента должно содержать пустой указатель (Nil). Схематически это выглядит так (рисунок 33): Рисунок 33 - Схема динамического списка
В данной работе используем структуру «список списков»:
pelem=^elem; {список состояния} elem=record number:real; next:pelem; end; pmas=^mas; {список списков состояния} mas=record arr:pelem; nextmas:pmas; end;
Описание переменных Для разработки программы введем следующие переменные и константы: - положение равновесия естественных колебаний оптической плотности; - амплитуда естественных колебаний оптической плотности; - интервал времени, за который грязевое пятно доходит до заслонки; L0 – длина начального участка определенного периода времени (заведомо не может быть аварии); L – длина рабочего участка; - переменная, показывающая номер измерения отсчета сигнала; - текущее значение оптической плотности в момент времени, соответствующее измерению отсчета номер i; - текущее значение времени в момент времени, соответствующее измерению отсчета номер i; - минимальная величина времени, соответствующая длительности потока загрязняющего вещества, проходящего через трубу (для 1, 2, 3 случаев); - максимальная величина времени, соответствующая длительности потока загрязняющего вещества, проходящего через трубу (для 1, 2, 3 случаев); - длительность последнего (текущего) скачка оптической плотности; - длительность одного прошедшего скачка (для , где - число прошедших скачков); - минимальное значение длительности одного скачка для 2, 3 случаев соответственно. На рисунке 34 представлен алгоритм, составленный после проведения сравнительной характеристики двух алгоритмов.
Рисунок 34 - Общий алгоритм функционирования установки контроля оптической плотности водных сред
Выходные данные
Для удобства при работе с программой, а также для проверки ее результатов, введены следующие выходные данные: Notcrashlength – длина безаварийного промежутка; Crash – начало аварии; Open – открытие заслонки для сброса грязевого пятна; Crashlength – длина аварийного промежутка; Notcrash – окончание аварии; Close – закрытие заслонки. Все указанные данные выводятся на экран после отработки программы, измеряются в условных единицах i. Далее при усовершенствовании программы несложно будет связать данную переменную с параметром времени. Разработанная программа апробирована на тестовых задачах при проведении лабораторного эксперимента на установке. На рисунке 35 приведен пример изменения оптической плотности аварийной ситуации.
Рисунок 35 - График аварийной ситуации Программа, отработав полностью, выводит результат, представленный на рисунке 36.
Рисунок 36 - Результат обработки данных
Дословно он обозначает: длина безаварийного промежутка 229 измерений, на 230 измерении начинается авария и на 235 измерении открывается заслонка автоматического сброса. На 286 измерении авария заканчивается и начинается вновь безаварийный промежуток, заслонка закрывается на 291 измерении. Длина аварийного промежутка 56 измерений. Таким образом, разработанная программа позволяет обнаруживать аварийный сгусток для первого типа аварии, описанного в отчете по третьему этапу темы. Ниже приведен листинг программы.
uses crt; const P_0=0; delta_P=30; delta_T=5;
type pelem=^elem; elem=record number:real; next:pelem; end; pmas=^mas; mas=record arr:pelem; nextmas:pmas; end; var firstnotcrash,firstcrash:pmas; notcrash,crash:pmas; notcrash1,crash1:pelem; f:text; i,crashlength,notcrashlength:integer; P_i:real; fl:boolean;
procedure stackinitnotcrash; begin new(firstnotcrash); new(notcrash); new(notcrash1); firstnotcrash^.nextmas:=notcrash; notcrash^.nextmas:=notcrash; end;
procedure stackinitcrash; begin new(firstcrash); new(crash); new(crash1); firstcrash^.nextmas:=crash; crash^.nextmas:=crash; end;
procedure pushnotcrash(v:pelem); var t:pmas; begin new(t); t^.arr:=v; t^.nextmas:=firstnotcrash^.nextmas; firstnotcrash^.nextmas:=t; end;
procedure pushcrash(v:pelem); var t:pmas; begin new(t); t^.arr:=v; t^.nextmas:=firstcrash^.nextmas; firstcrash^.nextmas:=t; end;
procedure pushnotcrash1(v:real); var t:pelem; begin new(t); t^.number:=v; t^.next:=notcrash1^.next; notcrash1^.next:=t; end;
procedure pushcrash1(v:real); var t:pelem; begin new(t); t^.number:=v; t^.next:=crash1^.next; crash1^.next:=t; end; procedure start(var fl:boolean); begin if fl=false then begin fl:=true; writeln('notcrashlength=',notcrashlength); crashlength:=1; write('crash'); writeln(' i=',i); end else crashlength:=crashlength+1;
if crashlength=delta_T+1 then begin write('open'); writeln(' i=',i); end; end;
procedure finish(var fl:boolean); begin if fl=true then begin fl:=false; writeln('crashlength=',crashlength); notcrashlength:=1; write('notcrash'); writeln(' i=',i); end else notcrashlength:=notcrashlength+1;
if (notcrashlength=delta_T+1) and (i<>delta_T+1) then begin write('close'); writeln(' i=',i); end; end;
begin clrscr; fl:=false; i:=0; stackinitcrash; stackinitnotcrash; assign(f,'D:\p1.txt'); reset(f); while not eof(f) do begin read(f,P_i); i:=i+1; if P_i<(delta_P+P_0) then begin finish(fl); pushnotcrash1(P_i); pushnotcrash(notcrash1); end else begin start(fl); pushcrash1(P_i); pushcrash(crash1); end; end; close(f); readkey; end.
|
||||
Последнее изменение этой страницы: 2016-09-20; просмотров: 138; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.92.5 (0.009 с.) |