![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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 – длина рабочего участка;
На рисунке 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; просмотров: 144; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.184.207 (0.01 с.) |