Разработка автоматизированной системы для исследования устойчивости и автоколебаний в электромеханической следящей системе

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 30.04.2011
Размер файла 568,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

WH (a)=q(a)=jq'(a),

где для релейной характеристики с гистерезисной петлей рис. 1.11 мы получаем следующее:

Годограф нелинейного звена -Z(a), построенный по выражению, имеющему вид:

WH(a) ,

изображен на рис. 1.13.

Рис. 1.13

На этом же рисунке построена амплитудно-фазовая характеристика линейной части системы , которая полностью совпадает с построенной на рис. 1.11.

Точка пересечения этих двух кривых определяет периодическое решение в системе:

,

где . Согласно рис. 1.13, найденное периодическое решение является устойчивым, т.е. А и ? являются амплитудой и частотой автоколебаний.

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

3. Разработка требований к интерфейсу пользователя диалоговой

системы

Проектируемая система состоит из двух практически самостоятельных частей.

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

Программа-оболочка предназначена для связи в единое целое вычислительных задач (методы исследования САУ), текстовых файлов (справочные материалы), графических файлов (иллюстрации).

Она должна обеспечивать доступ к этим компонентам системы. Очевидно, что программа-оболочка по своей сути диалоговая.

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

Понятие диалоговую по отношению к программной системе подразумевает тесное взаимодействие человека-пользователя с ЭВМ.

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

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

пользователь, как человек;

пользователь в процессе общения с системой.

Такой подход приводит к выделению ряда важных факторов.

А. Пользователь, как человек. Потребности.

Навыки.

Свойства личности.

Б. Диалоговая подготовка пользователя. Обучение диалогу.

Опыт работы с диалоговыми системами.

В. Подготовка пользователя в прикладной области.

Г. Отношение пользователя к системе.

Причины пользования системой.

Отношение и ожидания.

Цели пользователя.

Д. Аспекты, связанные с задачей.

Структура задачи. Ограничения по времени.

Эти факторы могут быть описаны подробнее.

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

Навыки пользователя состоят из физических и моторных навыков, лингвистических навыков, навыков общения.

Свойства личности это, например, подверженность ошибкам, терпеливость, неустойчивое внимание.

Диалоговая подготовка - здесь приходится делать различие между программистом и не программистом, и во второй группе оказываются параметрические пользователи и пользователи языков запросов.

Выделим три класса пользователей:

оперирующие языком программирования и знающие организацию базы данных;

оперирующие языком запросов и использующие модели данных;

оперирующие параметрическим вводом с почти «естественным видом» данных.

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

Причина пользования системой может быть :

обязательной, как неотъемлемая часть работы;

необязательной, как часть работы;

* обязательной в частной жизни (пользование библиотекой).

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

Оно может быть:

нейтральным (пользователь воспринимает компьютер, как рабочий инструмент);

положительным;

негативным (пользователь предпочел бы не пользоваться компьютером).

Целями пользователя могут быть: решить определенную задачу с помощью компьютера или как научиться работать с системой.

По своей структуре задача может быть отнесена в зависимости от природы проблемы к одному из классов, а именно:

хорошо структурированные задачи, где данные и методы известны;

плохо структурированные задачи, где решение может быть получено лишь приближенно.

Кроме того, можно выделить пять различных категорий:

простой запрос;

принятие решения после системного запроса;

систематический сбор данных;

непрерывное построение и перестройка на основе правил ограничений;

* обнаружение взаимосвязей.

Ограничения по времени.

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

На основе анализа этих факторов можно определить требования к диалоговой системе:

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

Должна существовать процедура отказа от услуг системы.

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

Поведение системы и его результаты должны быть ясны пользователю.

В любой момент времени терминал находится в некотором конкретном состоянии, которое характеризуется набором возможных входных сообщений и интерпретаций.

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

Должно складываться впечатление, что управление всеми аспектами системы принадлежит пользователю.

Взаимодействие человека с машиной должно напоминать, по возможности, человеческое общение.

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

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

Подготовленность людей.

Для пользователя системой не должны требоваться специальные навыки. Система должна подстраиваться к возможностям пользователя.

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

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

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

Взаимодействие пользователя с ЭВМ осуществляется через систему экранных окон (независимость от операционной системы DOS или WINDOWS), связанных через меню.

Управление может осуществляться с помощью клавиатуры или манипулятором «мышь». Один и тот же результат может быть достигнут различным путем:

использование меню;

использование функциональных или «горячих клавиш»;

указание и запуск с помощью «мыши».

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

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

В стандарте определено, что основой интерфейса является «панель» - информация, сгруппированная и расположенная на экране определенным способом.

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

Меню действий представляет доступ к основным функциям приложения и отображается вверху экрана. При выборе действия на экране появляется расширенное меню действий - выпадающее меню.

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

Краткое описание типов панели.

Панель меню.

Содержит один и более список объектов, из которых пользователь выбирает один или несколько. Для этой цели есть поля выбора.

Панель ввода.

Она отображает поля, в которые пользователь вводит информацию и из которых выбирает объекты. Имеется три типа панелей ввода:

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

Панель ввода с заголовками представляет форму документов на бумаге и на каждой строке, и на каждой строке может содержать несколько панелей;

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

Информационная панель.

Отображает защищенную информацию: данные, сообщения, справки.

Списковая панель.

Отображает список объектов, из которых пользователь выбирает один или несколько и запрашивает одно или несколько действий над ними. Для каждого объекта одновременно запрашивается только одно действие, но для различных объектов - различные действия.

Панель идентификации приложения.

Отображает информацию, идентифицирующую приложение и авторские права разработчиков. Панели имеют различные рабочие области. К ним относятся:

разделители областей;

идентификатор панели;

заголовок панели;

инструкция;

заголовок столбца и группы;

заголовок поля;

указатель протяжки;

область сообщений;

область команд.

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

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

Из изложенного видно, что круг задач, который должен решить программист при разработке диалоговых программ, весьма обширен. Поэтому для эффективной работы необходимо пользоваться современными инструментальными средствами. В качестве такого может быть выбран язык программирования BORLAND PASCAL в комплекте с библиотекой TURBO VISION.

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

Разрабатываемая программа-оболочка должна обеспечивать следующее:

отображения в окне текстовых файлов, содержащих справочную информацию;

отображение в окне графических файлов в формате PCX, содержащих иллюстрации;

запуск на выполнение исследовательских программ и отображение результатов в окне.

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

Главное меню имеет следующий вид:

Справки

Демонстрация

Исследование

Выход

Выбор пункта меню «справки» приводит к появлению выпадающего меню второго уровня, которое имеет вид:

Методы исследования

Нелинейные элементы

Инструкция программисту

Инструкция пользователю

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

Выбор пункта меню «Исследование» вызывает запуск программ, реализующих методы исследования САУ, и имеет вид:

Метод 1

Метод 2

Метод 3

Метод 4

Метод N

Где «Метод» - конкретное название метода анализа САУ. Выбор пункта меню «Выход» приводит к завершению работы.

4. Разработка программного обеспечения АИС

Библиотека TURBO VISION основана на объектно-ориентированном подходе к программированию, который базируется на трех основных понятиях: инкапсуляция, наследование, полинорфаза.

Инкапсуляция - объединение данных с процедурами и функциями, которые манипулируют этими данными. Примером может служить перемещаемый по экрану отрезок, определяемый координатами своих концов (данные), и процедурой, обеспечивающей это перемещение (метод).

Наследование - возможность использования уже определенных объектов для построения иерархии объектов, начиная с некоторого простого первоначального (предка) и кончая более сложными, но включающими свойства предшествующих элементов (потомки). В качестве такой иерархии можно рассмотреть точку на экране дисплея, задаваемую своими координатами (предок), отрезок, задаваемый координатами двух точек - его концов (потомок точки), перемещаемый отрезок, задаваемый координатами своих концов и процедурой, обеспечивающей его перемещение (потомок неперемещаемого отрезка).

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

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

Разработка системы меню с использованием TURBO VISION, базируется на применении объектов TMenu Bar и Tmenu Box, которые отличаются от абстрактного типа Tmenu View.

Объекты TMenu Bar представляют полосы горизонтального меню, пункт которого может быть выбран через:

прямую отметку;

клавишу F10;

выбор (подсветку) и нажатие ENTER;

горячие клавиши.

Объект TMenu Bar обычно принадлежит TApplication. Перекрывая Tapplication Tnit Menu Bar соответствующим набором вложенных видов New, NewSubMenu, Newltem и NewLine, можно сформировать объект меню.

Объекты MenuBox представляют вертикальные прямоугольники меню. Они могут содержать произвольный характер выполняемых действий.

Функция NewSubMenu распределяет и возвращает указатель на новую запись TMenuItem, которая представляет собой подменю. Функция Newltem распределяет и возвращает указатель на новую запись THenaltem, которая представляет собой меню. Реализация системы меню диалоговой программы осуществлена в процедуре TMyAPP.InitMenu Bar.

Функция, которая будет выполнена диалоговой программой; определяется выбором пункта меню. В TURBO VISION для обработки событий меню предназначен метод HandleEvent (процедура) объекта TmenuView. Он определяет, какой элемент меню был выбран «мышью» или клавиатурой, и генерирует соответствующее командное событие. Реализация обработки событий осуществлена в процедуре Тту Арр. HandleEvent.

Кроме описанных процедур в состав диалоговой программы входят также:

TmyApp. TnitStatusLine - привязка функциональных клавиш к пунктам меню.

TmyApp. PrintFile - вывод текста в окно без возможности прокрутки;

TmyApp. PrintFileScr - вывод текста в окно с возможностью прокрутки

TmyApp. ShowFile - вывод графического файла в формате PCV в окно;

TmyApp. RunMetod I, TmyApp. RimMetod2,..., TmyApp. RunMetod N - запуск программы исследования САУ.

На следующих страницах приведены рисунки, иллюстрирующие вышеизложенное.

5. Результаты испытания АИС

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

Результаты показали адекватность разработанной АИС. Результаты испытаний АИС приведены на рисунках.

Заключение

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

Разработана диалоговая программа, позволяющая объединить в рамках одной системы различные методы исследования САУ.

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

Приложение

Program Diplom; uses

Forms,

Main in 'Main.pas' {MainForm},

Unitl in'Unitl.pas' {Forml},

Unit2 in 'Unit2.pas' {AboutBox}; ($R *.RES begin

Application. CrateForm (TmainForm, MainForm);

Application. CrateForm (TForml, Forml);

Application. CrateForm (TAboutBox, AboutBox);

Forml.Show;

Application.Run; end.

unit Main;

interface

uses

SysUtils, Windows, Messages, Classes, Graphics, Controls, Fornis, Dialogs,

StdCtris, Buttons, ExtQik, Menus, Grids, Unitl; type

TMainForm=dass (TForm); StringGridl:TStringGrid;

procedure FormCreate (Sender TObject);

procedure SttingGridlClick (Sender TObject); ant

TMass=aiay[l J6,136]ofByte; var

MainForm TMainForm; MassTMass В1:Всх*щ

implementation fSR *DFM)

procedure TMainFomiFomCreate (Sender TObject); var

I, J, К : Integer; begin

Bl: =False; For i:=l to 36 do For j=l to 36 do

Mass [i, j] :=4; with StringGridl do begin K:=0;

forl:=l to 31 do begin

К :=К+1;

Cells [I,0]:=IntToStr(K); end; К -0;

for I :=lto31do begin

К :=К+1;

Cells [0,1] :=IntToStr(K); end;

k:=0;

for I :=lto31do forJ =1 to 31 do

Cells P,J]-IntToStr(K);

k:=l;

Cells [7,2] : =IntToStr (K);

Cells [13,4]: =IntToStr (K);

Cells [21,4] : = IntToStr (K);

Cells[3,6]: = IntToStr (K);

Cells [15,6] : = IntToStr(K);

Cells [14,8] : = InfToStr(K);

Cells [9,10]: = InfToSlr(K);

Cells [29,10] : = IntToStr(K);

Cells [17,9] : = IntToStr(K);

Cells [16,9] : = IntToStr(K);

Cells [15,10] : = lntToStr(K);

Cells [16,10] : = IntToStr(K);

Cells [17,10] : =IntToSlr(K);

Cells [18,10] : =lntToStr(K);

Cells [14,11] : = JntToStr(K);

Cells [15,11] : = IntToStr(K);

Cells [16,11] : = IntToStr(K);

Cells [17,11] : = IntToStr(K);

Cells [18,11] : =IntToStr (K);

Cells [19,11]: = IntToStr(K);

Cells [7,12] := InrToStr (К);

Cells[13,12]: = InrToStr(K);

Cells [15,12]: = InrToStr (K);

Cells [16,12] : = IntToStr (K);

Cells [17,12] : = IntToSlr(K);

Cells [18,12] : = IntToStr(K);

Cells [19,12] : = IntToStr (K);

Cells [20,12] : = IntToStr(K);

Cells [21,12]: = IntToStr (K);

Cells [12,13] : = IntToStr(K);

Cells [13,13] : = IntToSlr(K);

Cells [14,13] : = IntToStr(K);

Cells [15,13]: = IntToStr (K);

Cells [16.13] : = lnfToSlr(K);

Ceils [17,13] : = lntToStr(K),

Cells [18,13] :=IntToStr(K);

Cells [19,13] : = IntToStr (K);

Cells [11,14] : = IntToSlr(K);

Cells [12,14] : = IntToStr(K);

Cells [13,14] : = IntToStr(K);

Cells [14,14] : = IntToSlr(K);

Cells [15,14] : = IntToStr(K);

Cells [16,14]: = IntToStr (K);

Cells [17,14] : = IntToSlr(K);

Cells [18,14] : = IntToStr (K);

Cells [9,15]: = IntToStr (K);

Cells [10,15]: = IntToStr (K);

Cells [11,15]: = IntToStr (K);

Cells [12,15]: = IntToStr (K);

Cells [13,15]: = IntToStr (K);

Cells [14,15]: = IntToStr (K);

Cells [15,15]: = IntToStr (K);

Cells [16,15]: = IntToStr (K);

Cells [17,15]: = IntToStr (K);

Cells [23,15] : = brfToStr(K);

Cells [10,16] : = IntToStr (K);

Cells [11,16] : = IntToStr (K);

Cells [12,16] : = IntToStr (K);

Cells [13,16] : = IntToStr(K);

Cells [14,16]: = IntToStr (K);

Cells [15,16]: = IntToStr (K);

Cells [16,16]: = IntToStr (K);

Cells [9,17] : = InrToStr (K);

Cells [12,17]: = IntToStr (K);

Cells [13,17]: = IntToStr (K);

Cells [14,17]: = IntToStr (K);

Cells [15,17]: = IntToStr (K);

Cells [10,18] : = IntToStr(K);

Cells [H,18]: = IntToSlr(K);

Celk [12,18]: = IntToStr (K);

Cells [13,18]: = IntToStr (K);

Cells [14,18]: = IntToStr (K);

Cells [8,19] : = IntToStr(K);

Celk [11,19]:=IntToStr (K);

Cells[12,19]: = InfToSlr(K);

Cells [13,19]: = IntToStr (K);

Cells [14,19]: = IntToStr (K);

Cells [12,20]: = IntToStr (K);

Cells [22,20]: = IntToStr (K);

Cells [27,20] : = IntToStr (K);

Cells [5,2З]: = IntToStr (K);

Cells [18,23]: = IntToStr (K);

Cells [24,23] : = IntToSlr(K),

Cells [13,25]: = IntToStr (K);

Cells [29,26]: = IntToStr (K),

Cells [14,27]: = IntToSlr(K);

Cells [16,27]: = IntToSlr(K);

Cells [27,27]: = IntToStr(K);

Cells [2,29] : = IntToSlr(K);

Cells [8,29] : = IntToStr(K);

Cells [10,30] : = IntToStr(K);

Cells [30,30] : = IntToStr (K);

end;

For i:=l to 31 do For j=l to 31 do

Mass [i, j]:=0; end;

procedure TMainForm.StringGridl Click (Sender:TObject);

Procedure Show Mass: Varij:byte; begin

Application. ProcessMessages; Fori:=lto36do Forj:=lto36do begin

If (Mass [L j] = 3) then StringGridl. Cells [i, j] := 'X' else If (Mass [i, j] = 4) then StringGridl.Cells [i, j] :=?'

else StringGridl.Cells [i, j] := IntToStr (Mass [i, j]); end; end;

procedure Stepl; Var Lj: Byte; begin

Fori:=lto31 do For j: = 1 to 31 do

Mass[I,j]:=0; Mass [16,9]:=1;

Mass [17,9]:=1;

Mass [15,10]:=1;

Mass [16,10]:=1;

Mass [17,10]:=1;

Mass [18,10]:=1;

Mass [14,11]:=1;

Mass [15,11]:=1;

Mass [16,11]:=1;

Mass [17,11]:=1;

Mass [18,11]:=1;

Mass [19,11]:=1;

Mass [12,12]:=1;

Mass [13,12]:=1;

Mass [14,12]:=1;

Mass [15,12]:=1;

Mass [16,12]:=1;

Mass [17,12]:=1;

Mass [18,12]:=1;

Mass [19,12]:=1;

Mass [20,12]:=1;

Mass [11,13]:=1;

Mass [12,13]:=1;

Mass [13,13]:=1;

Mass [14,13]:=1;

Mass [15,13]:=1;

Mass [16,13]:=1;

Mass [17,13]:=1;

Mass [18,13]:=1;

Mass [19,13]:=1;

Mass [11,14]:=1;

Mass [12,14]:=1;

Mass [13,14]:=1;

Mass 14,14]:=1;

Mass [15,14]:=1;

Mass [16,14]:=1;

Mass [17,14]:=1;

Mass [18,14]:=1;

Mass [10,15]:=1;

Mass [11,15]:=1;

Mass [12,15]:=1;

Mass [13,15]:=1;

Mass [14,15]:=1;

Mass [15,15]:=1;

Mass [16,15]:=1;

Mass [17,15]:=1;

Mass [9,16]:=1;

Mass [10,16]:=1;

Mass [11,16]:=1;

Mass [12,16]:=1;

Mass [13,16]:=1;

Mass [14,16]:=1;

Mass [15,16] :=1;

Mass [16,16]:=1;

Mass [9,17]:=1;

Mass [10,17]:=1;

Mass [11,17]:=1;

Mass [12,17]:=1;

Mass [13,17] :=1;

Mass [14,17]:=1;

Mass [15,17]:=1;

Mass [10,18]:=1;

Mass [11,18]:=1;

Mass [12,18]:=1;

Mass [13,18]:=1;

Mass [14,18]:=1;

Mass [11,19]:=1;

Mass [12,19]:=1;

Mass [13,19]:=1;

Mass [12,20]:=1; ShowMass;

end;

procedure StepX; Var i,j:Byte;

begin

For i:=l to 31 do

For j:=l to 31do

If Mass [i, j]=3 then StringGridl.Cells [i, 0]:= 'X'; ShowMass;

end;

procedure Step2; begin

Mass[16,9]:=3;

Mass[16,10]:=3;

Mass[16,ll]:=3;

Mass[16,12]:=3;

Mass[16,13]:=3;

Mass[15,14]:=3;

Mass[14,15]:=3;

Mass[13.16]:=3;

Mass[12,17]:=3;

Mass[12,18]:=3;

Mass[12,19]:=3;

Mass[12.20]:=3;

StepX;

end;

procedure Step31;

Var i,j,k,l,:Byte;

Begin

For i:=l to31do

For j :=33 to 36 do

For i:=33 to 36 do For j:=1 to 31 do

Mass[i,j]:=0; For i:=l to31 do

For j :=1 to 31 do

If Mass [I,j]>0 then begin

Mass[i,33]:=l; Mass[i,34]:=l;

end;

For i:=l to31do

For j:=l to31 do

If Mass [i,j]>0 then begin

Mass[33,j]:=l;

Mass[34,j]:=l;

end;

end;

procedureStep32; Var i, j, k, l: Byte; begin

For i:=l to 31 do

if Mass [33, i]=1 then begin

Mass[34,i]:=0;

Break;

end;

For i:=15 to31do

if Mass [i, 33] =0 then

begin

Mass[i-l,34]:=0;

Break;

end;

K:=0;

l:=0;

For i:=1 to31do

if Mass[34,i]=l then

begin

inc(k);

l:=I;

end;

k:=Round (k/2); l:=l-k+l;

Mass [1,35]:=l;

K:=0;

l:=0;

For i:=1 to31do

if Mass [i, 34] =1 then begin

inc(k);

l:=i;

end;

k:=Round(k/2);

l:=l-k+l;

Mass [1,35] :=1;

ShowMass ;

end;

Procedure Step4; Var i,j :Byte; begin

Forml.ListBoxl.Items.Add(`Начинаем расчёт')

For i:=l to31do

For j:=1 to31 do

Mass[i,j]:=0;

For i:=14 to 18 do

For j:=11 to 21 do

Mass[i,j] :=1; For i:=11 to 21 do

Mass[16,i] :=3;

Form1. ListBox1. Items. Add ('Очистка от помех");

Form1. ListBox1. Items. Add ('Построение проекции");

Form1. ListBox1. Items. Add ('Нахождение центра проекции');

Form1. ListBox1. Items. Add ('Расчет окончен');

Step31;

StepX;

Mass [16,35 ]:=1;

Mass [35,16] :=1;

ShowMass;

end;

begin

If Bl then

begin

Step4;

Bl:=False;

Exit;

end

else Bl:=True;

Form1.ListBox1.Items. Add ('Начинаем расчет'); Step1;

Form1.ListBox1.Items. Add ('Очистка от помех'); Step2;

Form1.ListBox1.Items.Add ('Построение проекции'); Step31;

Step32;

Form1.ListBox1.Items.Add ('Нахождение центра проекции"); Form1.ListBox1.Items.Add ('Расчет окончен');

end;

end.

Unit Until;

interface uses

Windows, Messages, SysLftils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Buttons;

type

TForml = class (TForm)

ListBox1:TlistBox;

BitBtn1:TBitBtn;

procedure BitBtn1Click (Sende: TObject); private

{Private declarations}

public

{Public declarations}

end;

var

Form1:TForm1; implementation uses Unit2;

{$R*.DFM}

Procedure TForm1.BitBtn1Click (Sender: TObject); begin

AboutBox.ShowModal;

end;

end.

unit Unit2; interface uses

Windows, SysUtils, Classes, Graphics, Forms, Controls,

StdCtrls, Buttons, ExtCtrls;

type

TAboutBox = class (TForm)

Pane1: TPanel;

ProgramIcon: TImage;

ProductName: TLabel;

Version: TLabel;

Copyright: TLabel;

Comments: TLabel;

OKButton: TButton; private

{Private declarations} public

{Public declarations}

end;

var

AboutBox: TAboutBox; implementation

{$R*.DFM}

end.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.