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.
0 комментариев