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

Для успешной работы с представленной программой "Моделирование работы цеха" необходим персональный компьютер на базе микропроцессора Intel 80586 и выше, VGA совместимая видеокарта, накопитель на жестком или гибком магнитном диске. Требования к операционной системе ограничены требованиями компилятора языка Delphi версии 6.0, то есть Windows 98 и выше.

Исходный текст программы находится в файлах под именами Progr1.pas, Progr2.pas, Progr3.pas, Progr4.pas, которые занимают соответственно 10 938, 622, 788, 2 383 байт, а исполняемый модуль под именем Kurs_project.exe – 1 067 088 байт.

Для запуска программы необходимо загрузить Windows и запустить указанный исполняемый файл Kurs_project.exe.

2.4. Входные и выходные данные.

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

К выходным данным следует отнести информацию, выводимую в процессе функционирования процесса моделирования:

- общее количество заявок;

- количество заявок, возвращённых на повторную обработку(первичный брак);

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

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

2.5. Контрольный пример.

Для времени моделирования, равному поступлению 500 заявок, состояние системы (все параметры – по умолчанию):

- общее количество заявок – 500;

- количество деталей, возвращённых на повторную обработку – 31;

- количество бракованных деталей – 3.


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

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

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

Программа запускается с помощью вызова исполняемого файла Kurs_project.exe в операционной системе Windows 98 или выше. На экране появится окно с изображением модели цеха.

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

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

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


3. ТЕКСТ ПРОГРАММЫ.   3.1. Модуль 1. unit Progr1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, StdCtrls, Spin, Menus; type TForm1 = class(TForm) P1_4: TPanel; P2_4: TPanel; P2_3: TPanel; P1_3: TPanel; P1_1: TPanel; pb1: TProgressBar; pb2: TProgressBar; Panel8: TPanel; Panel9: TPanel; Panel10: TPanel; Panel11: TPanel; pb3: TProgressBar; Panel14: TPanel; pb4: TProgressBar; Panel15: TPanel; Panel16: TPanel; Panel17: TPanel; Panel18: TPanel; Memo2: TMemo; Memo3: TMemo; Memo4: TMemo; Memo5: TMemo; Timer1: TTimer; pb_start: TProgressBar; Timer2: TTimer; P1_2: TPanel; P2_1: TPanel; P2_2: TPanel; Panel5: TPanel; Panel21: TPanel; Panel24: TPanel; Panel25: TPanel; Panel26: TPanel; Panel27: TPanel; Panel28: TPanel; Panel31: TPanel; Label1: TLabel; Label3: TLabel; Label2: TLabel; Label4: TLabel; p1: TPanel; p2: TPanel; Panel34: TPanel; Panel35: TPanel; Panel36: TPanel; Panel38: TPanel; Panel40: TPanel; Panel41: TPanel; Panel42: TPanel; Panel44: TPanel; Panel45: TPanel; Panel12: TPanel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; indicator1: TProgressBar; indicator2: TProgressBar; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; Q1: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Bevel1: TBevel; Panel1: TPanel; procedure Timer2Timer(Sender: TObject); procedure add_new(ad:byte); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure Q1Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N8Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; t1,t2:byte; ustanov,zapusk,ripit, zanyat1,zanyat2,zanyat3,zanyat4:boolean; have1,have2,have_povtor:boolean; TotalTime,TotalMessages, LostMessages,RepeatMessages:longint; brak1,brak2,time1,time2,time3,time4,zadergka:byte; implementation uses Progr2, progr3, Progr4; {$R *.DFM} function where_go(w:byte):boolean; var x:integer; begin if (w=1)then begin x:=trunc(random(100)); if (x>brak1)and(RepeatMessages<(5*(brak1+brak2))) then where_go:=true;end; if (w=2)then begin x:=trunc(random(100));if (x>brak2)and(RepeatMessages<(5*(brak1+brak2))) then where_go:=true;end; end; procedure prov_nak; {процедура проверки пустоты накопителей} begin have1:=false;have2:=false;have_povtor:=FALSE; if strtoint(form1.label6.caption)>=1 then have1:=true; if strtoint(form1.label8.caption)>=1 then have2:=true; if strtoint(form1.label10.caption)>=1 then have_povtor:=true; end; procedure Tform1.add_new(ad:byte); begin if ad=1 then begin label6.caption:=inttostr(strtoint(label6.caption)+1); indicator1.Position:=strtoint(label6.caption)*10; end else begin label8.Caption:=inttostr(strtoint(label8.Caption)+1); indicator2.Position:=strtoint(label8.Caption)+2; end; end; procedure run; {переводит заявки из приборов в накопители и наоборот} begin if have1 then if not(zanyat1) then begin form1.pb1.Max:=time1+round(random(80));{время обработки задания} form1.pb1.Position:=2; form1.label6.Caption:=inttostr(strtoint(form1.label6.Caption)-1); form1.indicator1.Position:=strtoint(form1.label6.Caption)*10; zanyat1:=true;prov_nak;end; if have_povtor then if not(zanyat2) then begin form1.pb2.Max:=time2+round(random(80)); form1.pb2.Position:=2; form1.label10.Caption:=inttostr(strtoint(form1.label10.Caption)-1); zanyat2:=true;ripit:=true;prov_nak;end; if have1 then if not(zanyat2) then begin form1.pb2.Max:=time2+round(random(80)); form1.pb2.Position:=2; form1.label6.Caption:=inttostr(strtoint(form1.label6.Caption)-1); form1.indicator1.Position:=strtoint(form1.label6.Caption)*10; zanyat2:=true; prov_nak; end; if (have2) and(not(zanyat3)) then begin form1.pb3.Max:=time3+round(random(80)); form1.pb3.Position:=2; form1.label8.Caption:=inttostr(strtoint(form1.label8.Caption)-1); form1.indicator2.Position:=form1.indicator2.Position-2; zanyat3:=true;prov_nak;end; if (strtoint(form1.label8.caption)>3) and( not(zanyat4)) then begin form1.pb4.Max:=time4+round(random(80)); form1.pb4.Position:=2; form1.label8.Caption:=inttostr(strtoint(form1.label8.Caption)-1); form1.indicator2.Position:=form1.indicator2.Position-2; zanyat4:=true; prov_nak; end; end; procedure TForm1.Timer2Timer(Sender: TObject); var t:real; i:integer; begin if (zapusk)and(TotalMessages<500) then begin if not(ustanov)then begin t1:=5+trunc(random(10)); ustanov:=true; zapusk:=ustanov; t2:=0; end else if t2=t1 then begin t:=0; for i:=1 to 1000 do begin pb_start.Position:=(pb_start.Position+trunc(t)); t:=t+0.01; end; add_new(1); inc(TotalMessages);{количество всех сообщений пришедших в систему} pb_start.Position:=0; t2:=0; ustanov:=false; end else inc(t2); prov_nak; end; end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; label1.Caption:='Ждёт';label2.Caption:='Ждёт'; label3.Caption:='Ждёт';label4.Caption:='Ждёт'; zanyat1:=false;zanyat2:=false;zanyat3:=false; zanyat4:=false; brak1:=4;brak2:=8;time1:=40;time2:=60; time3:=100;time4:=100; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if zapusk then begin if pb1.Position=pb1.max then begin pb1.Position:=0;zanyat1:=false; label1.Caption:='Ждёт'; if where_go(1)then add_new(2) else if RepeatMessages<((brak1+brak2)*5) then begin label10.Caption:=inttostr(strtoint(label10.Caption)+1); inc(RepeatMessages); end else add_new(2); end; if pb2.Position=pb2.max then begin pb2.Position:=0;zanyat2:=false;label2.Caption:='Ждёт'; if where_go(2)then add_new(2) else if (ripit)and(LostMessages<trunc(RepeatMessages*brak2)/100) then begin p1.Color:=clred;p2.Color:=clred; p1.Color:=$00400040;p2.Color:=$00400040; ripit:=false; inc(LostMessages); end else if RepeatMessages<((brak1+brak2)*5) then begin label10.Caption:=inttostr(strtoint(label10.Caption)+1); inc(RepeatMessages); end else add_new(2); end; if pb3.Position=pb3.max then begin pb3.Position:=0;zanyat3:=false;label3.Caption:='Ждёт';end; if pb4.Position=pb4.max then begin pb4.Position:=0;zanyat4:=false;label4.Caption:='Ждёт';end; if pb1.Position>0 then begin pb1.Position:=pb1.Position+7;label1.Caption:='Выполняет';end; if pb2.Position>0 then begin pb2.Position:=pb2.Position+7;label2.Caption:='Выполняет';end; if pb3.Position>0 then begin pb3.Position:=pb3.Position+7;label3.Caption:='Выполняет';end; if pb4.Position>0 then begin pb4.Position:=pb4.Position+7;label4.Caption:='Выполняет';end; run; label12.Caption:=inttostr(TotalMessages); label14.Caption:=inttostr(RepeatMessages); label16.Caption:=inttostr(LostMessages); end; label17.Caption:=timetostr(time); end; procedure TForm1.N2Click(Sender: TObject); begin zapusk:=true; n2.enabled:=false; n3.enabled:=true; end; procedure TForm1.N3Click(Sender: TObject); begin zapusk:=false; n2.enabled:=true; n3.enabled:=false; end; procedure TForm1.N11Click(Sender: TObject); begin n2.Enabled:=true; TotalMessages:=0; LostMessages:=0; RepeatMessages:=0; label6.Caption:='0'; label8.Caption:='0'; label10.Caption:='0'; indicator1.Position:=0; indicator2.Position:=0; pb1.Position:=0;pb2.Position:=0; pb3.Position:=0;pb4.Position:=0; have1:=false;have2:=false;ripit:=false; zanyat1:=false;zanyat2:=false; zanyat3:=false;zanyat4:=false; TotalTime:=0;TotalMessages:=0; randomize; end; procedure TForm1.N9Click(Sender: TObject); var c:integer; begin c:=application.MessageBox(pchar('Вы уверены в том что хотите завершить работу ???'),pchar('Предупреждение'),4); if c=6 then halt; end; procedure TForm1.Q1Click(Sender: TObject); begin form2.PageControl1.ActivePage:=form2.PageControl1.Pages[0] ; form2.ShowModal; end; procedure TForm1.N5Click(Sender: TObject); begin form2.PageControl1.ActivePage:=form2.PageControl1.Pages[1] ; form2.ShowModal; end; procedure TForm1.N7Click(Sender: TObject); begin form3.PageControl1.ActivePage:=form3.PageControl1.Pages[0]; form3.showmodal; end; procedure TForm1.N10Click(Sender: TObject); begin form4.showmodal; end; procedure TForm1.N8Click(Sender: TObject); begin form3.PageControl1.ActivePage:=form3.PageControl1.Pages[1]; form3.showmodal; end; end.
3.2. Модуль 2. unit Progr2; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls, ComCtrls; type TForm2 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; Image1: TImage; Image2: TImage; Button1: TButton; procedure Button1Click(Sender: TObject); private public end; var Form2: TForm2; implementation {$R *.DFM} procedure TForm2.Button1Click(Sender: TObject); begin form2.Close; end; end.
3.3. Модуль 3.

unit Progr3;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;

type

TForm3 = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

Memo1: TMemo;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

public

end;

var Form3: TForm3;

implementation

{$R *.DFM}

procedure TForm3.Button1Click(Sender: TObject);

begin form3.Close;

end; end.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.

1. Курс лекций по дисциплине "Основы теории систем и системного анализа" /Преподаватель – В.О.Костин/: ХГТУ: сентябрь – декабрь 2004 г.

2. Костін В.О. Методичні вказівки до виконання курсового проекту з дисципліни "Основи системного аналізу об’єктів і процесів комп’ютеризації". – Херсон: ХДТУ, 2004. – 26 с.

3. Костин В.О., Ходаков В.Е. Учебный терминологический русско-украинско-английский словарь. – Херсон: ХГТУ, 2002.

4. Советов В.Я., Яковлев С.А. Моделирование систем. - М.:Высшая школа, 1988.

5. Советов В.Я., Яковлев С.А. Моделирование систем: Курсовое проектирование. - М.:Высшая школа, 1988.

6. Советов В.Я., Яковлев С.А. Моделирование систем: Лабораторный практикум. - М.:Высшая школа, 1988.

7. Ивахненко А. Г., Лапа В.Г. Предсказание случайных процессов. К.: "Наукова думка", 1971.

8. Мамиконов А.Г. Основы построения АСУ: Учебник для вузов. – М.: Высш. школа, 1981.

9. Рубенкинг Нейл Дж. Программирование в Delphi для "чайников". 2-е издание — К.: "Диалектика", 1996. — 368с.


Приложение А.

Экранная форма программы.


Приложение Б.

Блок-схема программы.


Да

 

Нет

 

Да

 

Да

 

Нет

 
 

Да

 

Нет

 

Рисунок Б.1.

Приложение В.

Q-схема программы.

Рисунок В.1.


Приложение Г.

А-схема программы.


Информация о работе «Моделирование работы цеха»
Раздел: Информатика, программирование
Количество знаков с пробелами: 43921
Количество таблиц: 0
Количество изображений: 4

Похожие работы

Скачать
22564
1
2

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

Скачать
55270
0
34

... ПИ- и ПИД-регуляторов при использовании метода Циглера - Николса, а на рис. 51 показан график регулируемой величины в режиме автоколебаний. Рис.2 Применение ПИД-регулятора на примере моделирования автоклава При стерилизации (пастеризации) должен строго соблюдаться установленный технологической инструкцией режим (температура, продолжительность и давление при стерилизации, пастеризации) с ...

Скачать
35105
8
6

... при коэффициенте переналадки технологического оборудования в течение смены, равном 1.00), выбранной по результатам предпроектного экономического обоснования целесообразности инвестиций. 4.1 Моделирование двух модификаций организационных условий производства в механическом цехе Средний коэффициент загрузки технологического оборудования при реализации 1-й модификации организационных условий ...

Скачать
22455
1
9

... Программа разработана на языке программирования Visual Basic 6. Программа запускается с Kursovoy proekt(3-y variant).exe.   6.2 Описание функций программы Программа реализует моделирование работы регулировочного участка цеха. Программа позволяет вводить начальные переменные. Это позволяет сделать сравнительный анализ работы системы. В программе используется 2 процедуры между которыми можно ...

0 комментариев


Наверх