Скачать .docx  

Курсовая работа: Расчет и анализ системы обслуживания робототехнического комплекса производства деталей ЭВА

ФЕДЕРАЛЬНЫЙ КОМИТЕТ ПО НАУКЕ И ОБРАЗОВАНИЮ

КУРСОВАЯ РАБОТА

ПО ДИСЦИПЛИНЕ «ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ ПРОЕКТИРОВАНИЯЭВС»

"Расчет и анализ системы обслуживания робототехнического комплекса производства деталей ЭВА"

2004

Содержание

Введение

1. Условие и исходные данные

2. Расчет и анализ системы обслуживания робототехнического комплекса производства деталей ЭВА

2.1 Расчет при бесприоритетном обслуживании

2.2 Расчет при оптимальных относительных приоритетах

2.3 Расчет при оптимальных абсолютных приоритетах

2.4 Расчет при смешанных приоритетах

3. Разработка экранных форм

4. Спецификация на программу

Заключение

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

Приложени е


Введение

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

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

В курсовой работе анализируется СМО робототехнического комплекса производства деталей РЭА.


1. Условие и исходные данные

Заявки на ремонт и наладку четырех компонентов комплекса (станков с программным управлением, промышленных роботов, программных транспортных устройств, управляющих ЭВМ) образуют i (i=1,4) входных потоков однородных событий. Поскольку функционирование системы связано как с регулярными (плановыми) ремонтами , так и ремонтами при внезапных отказах технических средств, то в общем случае входные потоки следует рассматривать как потоки Эрланга с параметрами l i , n i (i=1,4) . В случае упрощенных расчетов можно исследовать предельный случай. Когда n i =0, и рассматривать пуассоновские входные потоки с параметрами l i (i =1,4 ). Необходимо рассмотреть два случая функционирования канала обслуживания. Длительность выполнения заявки для каждого компонента робототехнического комплекса является случайной величиной t i ( i =1.4). подчиняющейся экспоненциальному закону распределения с параметрами mi (i=1,4) , либо постоянной величиной b. При ожидании обслуживания возникают стоимостные потери, связанные с простоями технических средств. Величина потерь в единицу времени Сi (i=1,4) . Проанализировать эффективность СМО при различных дисциплинах очереди: в порядке поступления заявок (бесприоритетное обслуживание), с относительными, абсолютными и смешанными приоритетами.

Исходные данные даны в таблице 1 и таблице 2.

Таблица 1 - Исходные данные для анализа СМО

Номер варианта

λi , (i= ), с=0,1

ci (i= ), c=1

8

0,5 – 1,0

0,55

5 – 8

В таблице 1:

λi – интенсивность поступления заявок в систему;

μi – параметр экспоненциального распределения [2];

сi – потери при ожидании обслуживания в относительных единицах

Таблица 2 - Некоторые параметры РТК

i

li

bi

ci

ri

mi

ci /bi

1

0,2

0,5

2

0,1

0,1

4

2

0,3

1,0

2

0,3

0,4

2

3

0,1

1,0

1

0,1

0,5

1

4

0,1

2,0

1

0,2

0,7

0,5

2. Расчет и анализ системы обслуживания робототехнического комплекса производства деталей ЭВА

2.1 Расчет при бесприоритетном обслуживании

Таблица 3 - Исходные данные

i

li

ci

const

1

0,9

8

0,55

2

0,8

7

3

0,7

6

4

0,6

5

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

.(2.1.1)

Длительность обслуживания характеризуется вторым средневзвешенным моментом, который находится по формуле:

,(2.1.2)

где bi (2) – это дисперсия экспоненциального распределения, которая зависит от параметра распределения µ через соотношение:

.(2.1.3)

По условию, задано отношение , которое мы обозначили, как Const_, тогда:


,(2.1.4)

где bi – математическое ожидание экспоненциального распределения.

, .

.(2.1.5)

Тогда с учетом (2.1.2), (2.1.3) и (2.3.4) формул получим окончательное выражение суммарной дисперсии:

,(2.1.6)

где λ – интенсивность суммарного потока заявок в систему

,(2.1.7)

,

.

Длительность обслуживания характеризуется также средневзвешенными потерями:

,(2.1.8)

.

Тогда среднее время ожидания:

,(2.1.9)

.

Суммарные потери вычисляются по формуле:

,(2.1.10)

.

2.2 Расчет при оптимальных относительных приоритетах

При относительных приоритетах среднее время ожидания заявок типа равно:

,(2.2.1)

где Ri 1 —коэффициент загрузки системы всеми заявками от 1-го до i1 -го типа включительно.

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

,(2.2.2)


.

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

,(2.2.3)

.

С учетом выше приведенных формул выражение можно переписать в виде:

.(2.2.4)

Введя временную переменную Vremper = , получим следующее выражение:

, (2.2.5)

.

Расчет среднего времени ожидания заявок:

,

,

,

.

Суммарные потери:

.

2.3 Расчет при оптимальных абсолютных приоритетах

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

,(2.3.1)

,

,

,

.

Суммарные потери:

.

2.4 Расчет параметров системы при смешанных приоритетах

Рассмотрим касс смешанных приоритетов. Условимся, что среди заявок в очереди, обслуживание которых не началось, заявки i-го типа имеют преимущество перед заявками i1 -го типа, если i>i1 . Далее определим интервалы времени ti , i 1 таким образом что , если i<i1 и, если i³i1 , Кроме того, Тогда заявка i1 –го типа, до окончания обслуживания которого осталось время (причем), имеет преимущество перед заявкой i-го типа, обслуживание которой не началось. Если же, то перед ней имеет преимущество любая заявка i-го типа.

Среднее время ожидания рассчитывается по рекуррентному алгоритму:

,(3.4.1)

,(3.4.2)

.(3.4.3)

Выберем ti в соответствии с вышеприведенным условием, причем приоритетной будет 1 заявка.

Тогда первое время выбирается из интервала 0<t1 <0,611, t1 =0,3.

Второе время выбирается из интервала 0<t2 <0,688, t2 =0,35.

Третье время будет выбираться из интервала 0<t3 <0,786, t3 =0,4

Четвертое время выбирается из интервала 0<t4 <0,917, t4 =0,45

,

,

,

,

,

,

,

.

Параметров Ti :


,

,

,

,

,

,

,

.

Теперь рассчитываем среднее время ожидания поступающей заявки на обработку при смешанных приоритетах.

Обозначим:

,(3.4.4)

.

Среднее время ожидания заявки при смешанных приоритетах:

,

,

,

,

,

,

,

.

Суммарные потери:

.

Таблица 4 – Результаты расчета параметров СМО при различных дисциплинах очереди

Тип приоритета

L

Обслуживание без приоритетов

-0,935

-

-

-

–4,621

Относительные приоритеты

0,597

0,171

-0,038

0,086

5,357

Абсолютные приоритеты

0,242

0,118

-0,033

0,086

2,519

Смешанные приоритеты

3,95·10-5

7,983·10-5

-0,0004

0,002

0,0018

Вывод:

Из полученных результатов следует, что условию оптимизации:

,

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

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


3. Разработка экранных форм

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

ГОСТом под стандартным интерфейсом понимается совокупность унифицированных аппаратурных, программных и конструктивных средств, необходимых для реализации взаимодействия различных функциональных элементов в автоматических системах сбора и обработки информации и направленных на обеспечение информационной, электрической и конструктивной совместимости указанных элементов. Имеются ГОСТы с классификационными признаками интерфейса, включающие: способы соединения компонентов, способы передачи информации, принципы обмена информации (двусторонний, односторонний и т.д.).

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

Под графическим пользовательским интерфейсом GUI(Graphical User Interface) понимается некоторая система (среда), служащая для организации взаимодействия прикладных программ с пользователем на основе графического многооконного представления данных.

К числу других графических сред можно также отнести:

• Presentation Manager (OS/2);

• OpenLook, Motif (Unix – станции);

• NextStep (Next).

Укажем несколько принципов, лежащих в основе перечисленных выше систем. К числу таковых относятся:

• графический режим работы;

• представление ряда объектов пиктограммами;

• многооконность;

• использование указующего устройства – мыши;

• адекватность изображения на экране изображаемому объекту (принцип WYSIWYG – What You See Is What You Get);

• наглядность;

• стандартизация основных действий и элементов (все программы для данной графической среды выглядят и ведут себя совершенно одинаково, используют одинаковые принципы функционирования, так что если пользователь освоил работу с одной из программ, то он может легко освоить и остальные программы для данной среды);

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

• использование clipboard (pasteboard) – некоторого общего места (хранилища), с помощью которого программы могут обмениваться данными: в одной программе пользователь выделяет объект (фрагмент текста, изображение) и помещает в clipboard, а в другой может взять этот объект и вставить его в текущий документ (изображение);

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

В основе любой системы GUI лежит достаточно мощный графический пакет: QuickDraw в Macintosh, GDI в Microsoft Windows, Display Post Script в NextStep. Этот пакет должен поддерживать работу со всеми областями сложной формы и отсечения изображения по таким областям.

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

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

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

а)

б)


в) г)

д) е)

ж) з)


и) к)

Рисунок 3.1 – Структура интерфейса: а) Вид окна при загрузке программы; б) Меню «Файл»; в) Меню «Расчет»; г) Меню «Справка»; д) Вид окна ввода исходных данных для расчета; е) Вид окна вывода результатов расчета СМО при бесприоритетном обслуживании; ж) Вид окна вывода результатов расчета СМО при оптимальных относительных приоритетах; з) Вид окна вывода результатов расчета СМО при оптимальных абсолютных приоритетах; и) Вид окна вывода результатов расчета СМО при смешанных приоритетах; и) Вид окна «О программе»

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

Принято различать следующие модели пользовательских интерфейсов:

• модель на основе командного языка;

• модель, основанная на сети переходов. Этой модели соответствует жесткая логика диалога;

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

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

Модель пользовательского интерфейса, основанная на рекурсивно-транзитивной сети переходов, реализуется в диалоге типа вопрос-ответ. Это наиболее известная структура диалога; первоначально её называли диалоговым режимом. В каждой точке диалога система выводит в качестве подсказки один вопрос, на который пользователь дает один ответ. В зависимости от полученного ответа система может решать, какой следующий вопрос необходимо задать. Структура вопрос-ответ предоставляет естественный механизм ввода, как управляющих сообщений (команд), так и данных. Существуют системы, ответы в которых даются на естественном языке, но чаще используются предложения из одного слова с ограниченной грамматикой. Естественность диалога в значительной степени зависит от характера задаваемых вопросов.

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

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

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

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

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

В соответствии с упомянутой концепцией пользовательский интерфейс должен обеспечить:

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

¨ отыскание их отображения в БД и в диалоговом режиме формирование общей графической структуры системы управления;

¨ в диалоговом режиме отыскание отображения в БД математических моделей соответствующей задачи-функции формирование и запоминание их композиции;

¨ отыскание в БД имитационных моделей, адекватных выбранным математическим моделям;

¨ формирование в диалоговом режиме имитационной модели ТС, адекватной заданным задачам - функциям, и ее отображение на экране монитора;

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


4. Спецификация на программу

Имя процедуры в программе

Выполняемая функция

Примечание

MainMenu1: TMainMenu;

описание компонентов

N1: TMenuItem

описание компонентов

N2: TMenuItem

описание компонентов

N3: TMenuItem

описание компонентов

N4: TMenuItem

описание компонентов

N5: TMenuItem

описание компонентов

N6: TMenuItem

описание компонентов

N7: TMenuItem

описание компонентов

N8 TMenuItem

описание компонентов

N9 TMenuItem

описание компонентов

N10TMenuItem

описание компонентов

N11TMenuItem

описание компонентов

N12TMenuItem

описание компонентов

N13TMenuItem

описание компонентов

N14TMenuItem

описание компонентов

N15MenuItem

описание компонентов

N16MenuItem

описание компонентов

N17MenuItem

описание компонентов

N18MenuItem

описание компонентов

N19enuItem

описание компонентов

GroupBox1: TGroupBox;

описание компонентов

GroupBox2: TGroupBox;

описание компонентов

Button1: TButton;

описание компонентов

Button2: TButton;

описание компонентов

Button3: TButton;

описание компонентов

Button4: TButton;

описание компонентов

Button5: TButton;

описание компонентов

Button6: TButton;

описание компонентов

procedure Button1Click(Sender: TObject);

кнопка для вызова формы ввода исходных данных

procedure Button2Click(Sender: TObject);

кнопка для вызова формы расчета

без приоритетов

procedure Button3Click(Sender: TObject);

кнопка для вызова формы расчета

с относительными приоритетами

procedure Button4Click(Sender: TObject);

кнопка для вызова формы расчета

с абсолютными приоритетами

procedure Button5Click(Sender: TObject);

кнопка для вызова формы расчета

со смешанными приоритетами

procedure Button6Click(Sender: TObject);

выход

выход из программы

procedure N1Click(Sender: TObject);

Меню «Файл»

procedure N2Click(Sender: TObject);

Меню «Расчет»

procedure N3Click(Sender: TObject);

выход

выход из программы

procedure N4Click(Sender: TObject);

вызова формы ввода исходных данных

procedure N5Click(Sender: TObject);

Меню «Справка»

procedure N6Click(Sender: TObject);

вызова формы «О программе»

procedure N7Click(Sender: TObject);

вызова формы «Помощь»

procedure N8Click(Sender: TOject);

Меню «при бесприоритетном обслуживании»

procedure N9Click(Sender: TObject);

Меню «при оптимальных относительных приоритетах»

procedure N10Click(Sender: TObject);

Меню «при оптимальных абсолютных приоритетах»

procedure N11Click(Sender: TObject);

Меню «при смешанных приоритетах»

procedure N12Click(Sender: TObject);

сохранить результаты

без приоритетов

procedure N13Click(Sender: TObject);

сохранить результаты

с относительными приоритетами

procedure N14Click(Sender: TObject);

сохранить результаты

с абсолютными приоритетами

procedure N15Click(Sender: TObject);

сохранить результаты

со смешанными приоритетами

procedure N16Click(Sender: TObject);

результаты расчета

без приоритетов

procedure N17Click(Sender: TObject);

результаты расчета

с относительными приоритетами

procedure N18Click(Sender: TObject);

результаты расчета

с абсолютными приоритетами

procedure N19Click(Sender: TObject);

результаты расчета

со смешанными приоритетами

procedure TForm3.FormActivate(Sender: TObject);

перевод результатов в строку и вывод на экран

без приоритетов

procedure TForm6.FormActivate(Sender: TObject);

перевод результатов в строку и вывод на экран

с относительными приоритетами

procedure Tform7.FormActivate(Sender: TObject);

перевод результатов в строку и вывод на экран

с абсолютными приоритетами

procedure Tform8.FormActivate(Sender: TObject);

перевод результатов в строку и вывод на экран

со смешанными приоритетами

procedure TForm2.Button1Click(Sender: TObject);

закрытие формы

исходные данные

procedure Tform3.Button1Click(Sender: TObject);

закрытие формы

расчета без приоритетов

procedure Tform4.Button1Click(Sender: TObject);

закрытие формы

о программе

procedure Tform5.Button1Click(Sender: TObject);

закрытие формы

помощь

procedure Tform6.Button1Click(Sender: TObject);

закрытие формы

расчета с относительными приоритетами

procedure Tform7.Button1Click(Sender: TObject);

закрытие формы

расчета с абсолютными приоритетами

procedure Tform8.Button1Click(Sender: TObject);

закрытие формы

расчета со смешанными приоритетами


Заключение

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

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

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

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


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

1 Черняев В.Н. Технология производства интегральных микросхем и микропроцессоров: учебник для вузов -2-е изд.-М.Радио и связь, 1987.-464с.,ил.

2 Нишельский АЯ. Технология спецматериалов электронной техники. М. "Металлургия", 1993. 368с., ил.

3 Ушаков НЛ. Технология производства ЭВМ: учебник для вузов, М.Высшая школа, 1987 г.

4 Вейцман Э.В., Венбрин В.Д. Технологическая подготовка производства радиоэлектронной аппаратуры. - М. Радио и связь, 1989.

5 Готра З.Ю. Технология микроэлектронных устройств: Справочник.- М.: Радио и связь, 1991.-528с.:ИЛ.

6 Мокеев О.К Романов А.С. Химическая обработка и фотолитография в производстве полупроводниковых приборов и микросхем.2-е изд.-М.Высшая школа,1985.-312с.

7 Корячко В.П., Курейчик В.М., Норенков И.П. Теоретические основы САПР. Москва, Энергоиздат, 1987г

8 Курейчик В.М. Математическое обеспечение конструкторского и технологического проектирования с применением САПР. Москва, Радио и связь, 1990 г

9 А.П.Гордиенко Разработка графического пользовательского интерфейса методами чисто функционального программирования. //Материалы научной конференции. Пользовательский интерфейс в современных компьютерных системах. – Орел: ОрелГТУ. 1999. – С. 98-103


Приложение

Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

GroupBox1: TGroupBox;

Button1: TButton;

GroupBox2: TGroupBox;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

N14: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

N18: TMenuItem;

N19: TMenuItem;

Button6: TButton;

procedure Button1Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

l, c, b, p, R, svo2,svo3,B4,t,N,T4,X,svo4: array [1..4] of real;

constS, ls1, svp1,b21,svo1, Vrem1, sp1, Vrem2,ssvo2,sp2,Vrem3:real;

ssvo3,sp3,q,sum,ssvo4,sp4 :real;

i: integer;

implementation

uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

Form2.ShowModal;

{Включение кнопок}

Button2.Enabled:=true;

Button3.Enabled:=true;

Button4.Enabled:=true;

Button5.Enabled:=true;

N12.Enabled:=true;

N13.Enabled:=true;

N14.Enabled:=true;

N15.Enabled:=true;

N16.Enabled:=true;

N17.Enabled:=true;

N18.Enabled:=true;

N19.Enabled:=true;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

ls1:=0;

Vrem3:=0;

ssvo3:=0;

svp1:=0;

b21:=0;

sp3:=0;

For i:=1 to 4 do

begin

ls1:=ls1+l[i];

b[i]:=constS/l[i];

p[i]:=l[i]*b[i]*b[i];

end;

For i:=1 to 4 do

begin

Vrem3:= Vrem3+l[i]*l[i]*l[i]/constS*constS;

if i=1 then R[i]:=p[i] else R[i]:=R[i-1]+p[i];

if i=1 then svo3[i]:= Vrem3/2*(1-R[i])

else svo3[i]:= Vrem3/2*(1-R[i-1])*(1-R[i]);

svp1:= svp1+l[i]*c[i]/ls1;

b21:=b21+l[i]*l[i]*l[i]/(ls1*constS*constS);

end;

For i:=1 to 4 do sp3:=sp3+l[i]*c[i]*svo3[i];

Form7.ShowModal;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

ls1:=0;

svp1:=0;

b21:=0;

Vrem1:=0;

svo1:=0;

sp1:=0;

For i:=1 to 4 do ls1:=ls1+l[i];

For i:=1 to 4 do

begin

svp1:= svp1+l[i]*c[i]/ls1;

b21:=b21+l[i]*l[i]*l[i]/(ls1*constS*constS);

Vrem1:=Vrem1+l[i]*l[i]/constS;

end;

For i:=1 to 4 do svo1:= ls1*b21/(2*(1-Vrem1));

sp1:= ls1*svp1*svo1;

Form3.ShowModal;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

Form4.ShowModal;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

Form5.ShowModal;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

Form2.ShowModal;

{Включение кнопок}

Button2.Enabled:=true;

Button3.Enabled:=true;

Button4.Enabled:=true;

Button5.Enabled:=true;

N12.Enabled:=true;

N13.Enabled:=true;

N14.Enabled:=true;

N15.Enabled:=true;

N16.Enabled:=true;

N17.Enabled:=true;

N18.Enabled:=true;

N19.Enabled:=true;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

ls1:=0;

Vrem2:=0;

ssvo2:=0;

svp1:=0;

b21:=0;

sp2:=0;

For i:=1 to 4 do

begin

ls1:=ls1+l[i];

b[i]:=constS/l[i];

p[i]:=l[i]*b[i]*b[i];

Vrem2:= Vrem2+l[i]*l[i]*l[i]/constS*constS;

end;

For i:=1 to 4 do

begin

if i=1 then R[i]:=p[i] else R[i]:=R[i-1]+p[i];

if i=1 then svo2[i]:= Vrem2/2*(1-R[i])

else svo2[i]:= Vrem2/2*(1-R[i-1])*(1-R[i]);

svp1:= svp1+l[i]*c[i]/ls1;

b21:=b21+l[i]*l[i]*l[i]/(ls1*constS*constS);

end;

For i:=1 to 4 do sp2:=sp2+l[i]*c[i]*svo2[i];

Form6.ShowModal;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

B4[1]:=0;

B4[2]:=0;

B4[3]:=0;

B4[4]:=0;

sum:=0;

ssvo4:=0;

ls1:=0;

Vrem3:=0;

svp1:=0;

For i:=1 to 4 do

begin

b[i]:=constS/l[i];

t[i]:=b[i]/2;

p[i]:=l[i]*b[i]*b[i];

if i=1 then R[i]:=p[i] else R[i]:=R[i-1]+p[i];

end;

For i:=1 to 4 do B4[1]:=B4[1]+p[i]*t[i]*t[i]/(2*b[i]);

For i:=2 to 4 do B4[2]:=B4[2]+(p[1]*p[i]/(1-R[1]))*

((t[i]*t[i]-t[1]*t[1])/(2*b[i]));

For i:=3 to 4 do

begin

if i=3 then B4[3]:=(p[1]*p[i]/(1-R[1]))*

Продолжение приложения А

((t[i]*t[i]-t[1]*t[1])/(2*b[i]))

else

begin

B4[3]:=(p[1]*p[i]/(1-R[1]))*

((t[i]*t[i]-t[1]*t[1])/(2*b[i]));

q:=B4[3]/(1-R[2]);

B4[3]:=B4[3]+B4[3]/(1-R[2]);

end;

end;

B4[4]:=(p[1]*p[4]/(1-R[1]))*

((t[4]*t[4]-t[1]*t[1])/(2*b[4]));

B4[4]:=B4[4]+q;

B4[4]:=B4[4]+(p[1]*p[3]/(1-R[3]))*

((t[4]*t[4]-t[3]*t[3])/(2*b[4]))/(1-R[4]);

For i:=1 to 4 do N[i]:=R[i]*(t[i+1]-t[i])/(1-R[i]);

T4[1]:=N[1];

For i:=2 to 4 do T4[i]:=T4[i-1]+N[i];

For i:=1 to 4 do sum:=sum+p[i]*t[i]*t[i]/(2*b[i]);

{--------------------------------------------3расч}

For i:=1 to 4 do

begin

ls1:=ls1+l[i];

Vrem3:= Vrem3+l[i]*l[i]*l[i]/constS*constS;

if i=1 then R[i]:=p[i] else R[i]:=R[i-1]+p[i];

if i=1 then svo3[i]:= Vrem3/2*(1-R[i])

else svo3[i]:= Vrem3/2*(1-R[i-1])*(1-R[i]);

end;

{--------------------------------------------}

{расчет СВО}

X[1]:=svo3[1]*p[1];

For i:=2 to 4 do X[i]:=X[i-1]+svo3[i]*p[i];

For i:=1 to 4 do

begin

svo4[i]:=X[i]*sum*B4[i]*T4[i];

Продолжение приложения А

sp4:=sp4+svo4[i];

end;

Form8.ShowModal;

end;

end.

unit Unit2;

interface

uses

Unit1, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm2 = class(TForm)

Edit9: TEdit;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

Label1: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

c[1]:=StrToFloat(Edit1.Text);

c[2]:=StrToFloat(Edit2.Text);

c[3]:=StrToFloat(Edit3.Text);

c[4]:=StrToFloat(Edit4.Text);

l[1]:=StrToFloat(Edit5.Text);

l[2]:=StrToFloat(Edit6.Text);

l[3]:=StrToFloat(Edit7.Text);

l[4]:=StrToFloat(Edit8.Text);

constS:=StrToFloat(Edit9.Text);

close;

end;

end.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm3 = class(TForm)

Button1: TButton;

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

procedure Button1Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

begin

Close;

end;

procedure TForm3.FormActivate(Sender: TObject);

begin

Edit1.Text:=FloatToStr(svp1);

Edit2.Text:=FloatToStr(svo1);

Edit3.Text:=FloatToStr(sp1);

end;

end.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls;

type

TForm4 = class(TForm)

GroupBox1: TGroupBox;

Label1: TLabel;

StaticText2: TStaticText;

Button1: TButton;

Panel1: TPanel;

Image1: TImage;

StaticText1: TStaticText;

GroupBox2: TGroupBox;

StaticText3: TStaticText;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);

begin

close;

end;

end.

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls;

type

TForm5 = class(TForm)

Button1: TButton;

Panel1: TPanel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);

begin

close;

end;

end.

unit Unit6;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm6 = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Edit5: TEdit;

GroupBox3: TGroupBox;

Label5: TLabel;

Label6: TLabel;

procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm6.FormActivate(Sender: TObject);

begin

Edit1.Text:=FloatToStr(svo2[1]);

Edit2.Text:=FloatToStr(svo2[2]);

Edit3.Text:=FloatToStr(svo2[3]);

Edit4.Text:=FloatToStr(svo2[4]);

Edit5.Text:=FloatToStr(sp2);

end;

procedure TForm6.Button1Click(Sender: TObject);

begin

close

end;

end.

unit Unit7;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm7 = class(TForm)

Button1: TButton;

GroupBox1: TGroupBox;

GroupBox3: TGroupBox;

Label5: TLabel;

Label6: TLabel;

GroupBox2: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form7: TForm7;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm7.FormActivate(Sender: TObject);

begin

Edit1.Text:=FloatToStr(svo3[1]);

Edit2.Text:=FloatToStr(svo3[2]);

Edit3.Text:=FloatToStr(svo3[3]);

Edit4.Text:=FloatToStr(svo3[4]);

Edit5.Text:=FloatToStr(sp3);

end;

procedure TForm7.Button1Click(Sender: TObject);

begin

close;

end;

end.

unit Unit8;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm8 = class(TForm)

Button2: TButton;

GroupBox1: TGroupBox;

GroupBox3: TGroupBox;

Label5: TLabel;

Label6: TLabel;

GroupBox2: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

procedure Button1Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm8.Button1Click(Sender: TObject);

begin

close;

end;

procedure TForm8.FormActivate(Sender: TObject);

begin

Edit1.Text:=FloatToStr(svo4[1]);

Edit2.Text:=FloatToStr(svo4[2]);

Edit3.Text:=FloatToStr(svo4[3]);

Edit4.Text:=FloatToStr(svo4[4]);

Edit5.Text:=FloatToStr(sp4);

end;

end.