Для успешной работы с представленной программой "Моделирование работы цеха" необходим персональный компьютер на базе микропроцессора 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.5. Контрольный пример.
Для времени моделирования, равному поступлению 500 заявок, состояние системы (все параметры – по умолчанию):
- общее количество заявок – 500;
- количество деталей, возвращённых на повторную обработку – 31;
- количество бракованных деталей – 3.
Инструкция пользователю.
Работа с программой не представляет особой сложности даже для пользователя, не имеющего большого опыта работы с персональным компьютером. После запуска программы на экране появляется главное окно программы.
Данная программа представляет собой модель процесса обработки 500 деталей в цехе с использованием четырех станков, два из которых ведут первичную обработку деталей, остальные два – вторичную.
Программа запускается с помощью вызова исполняемого файла Kurs_project.exe в операционной системе Windows 98 или выше. На экране появится окно с изображением модели цеха.
Для того, чтобы запустить программу, необходимо выполнить команду Запуск меню Выполнение. Для остановки работы программы следует выполнить команду Стоп меню Выполнение. В этом же меню находится команда Параметры, которая позволяет установить вывод в окне статистики выполнения программы и текущего времени, а также команды Сброс и Выход, позволяющие, соответственно, "сбросить" данные и выйти из программы. При выходе из программы с помощью команды Выход меню Выполнение появляется окно с вопросом о подтверждении выхода из программы. Из программы можно выйти также с помощью нажатия соответствующей кнопки в правом верхнем углу окна программы.
Для того, чтобы просмотреть информацию о программе, необходимо выполнить команду О программе меню Справка. В этом же меню можно просмотреть задание, выбрав соответствующую команду.
В меню Схемы находятся команды, позволяющие выводить на экран соответственно Q-схему и A-схему программы.
ТЕКСТ ПРОГРАММЫ.
Модуль 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;
Дата: 2019-05-28, просмотров: 184.