|
@@ -1,17 +1,17 @@
|
|
|
-unit CORE; {Ÿ¤à® ¬®¤¥«¨ á¨áâ¥¬ë ¬ áᮢ®£® ®¡á«ã¦¨¢ ¨ï}
|
|
|
|
|
|
|
+unit CORE; {Ядро модели �и�темы ма��ового об�луживани�}
|
|
|
INTERFACE
|
|
INTERFACE
|
|
|
type
|
|
type
|
|
|
- PSource = ^CSource; {“ª § â¥«ì ¨áâ®ç¨ª}
|
|
|
|
|
- PDevice = ^CDevice; {“ª § ⥫ì á¨á⥬㠮¡à ¡®âª¨ (ãáâனá⢮) }
|
|
|
|
|
- PBuffer = ^CBuffer; {“ª § â¥«ì ¡ãä¥à § ¯à®á®¢}
|
|
|
|
|
|
|
+ PSource = ^CSource; {Указатель на и�точник}
|
|
|
|
|
+ PDevice = ^CDevice; {Указатель на �и�тему обработки (у�трой�тво) }
|
|
|
|
|
+ PBuffer = ^CBuffer; {Указатель на буфер запро�ов}
|
|
|
|
|
|
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
|
|
|
|
|
|
-TReq = record {‡ ¯à®á ®¡á«ã¦¨¢ ¨¥}
|
|
|
|
|
- Birth : real; {‚à¥¬ï ¯®ï¢«¥¨ï § ¯à®á }
|
|
|
|
|
- Death : real; {‚६ï ᬥà⨠§ ¯à®á (®¡à ¡®â , «¨¡® ®âª«®¥)}
|
|
|
|
|
- FromSource : PSource; {Šâ® ¯à®á¨«-â® ?}
|
|
|
|
|
- ToDevice : PDevice; {€ ᮡá⢥® ªã¤ ?}
|
|
|
|
|
|
|
+TReq = record {Запро� на об�луживание}
|
|
|
|
|
+ Birth : real; {Врем� по�влени� запро�а}
|
|
|
|
|
+ Death : real; {Врем� �мерти запро�а (обработан, либо отклонен)}
|
|
|
|
|
+ FromSource : PSource; {Кто про�ил-то ?}
|
|
|
|
|
+ ToDevice : PDevice; {� �об�твенно куда ?}
|
|
|
end;
|
|
end;
|
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
|
|
|
|
|
@@ -25,109 +25,109 @@ PReq = ^TReq;
|
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
|
|
|
|
|
|
|
|
|
|
|
-ESOURCES = (SOURCE_DUMMY,SOURCE_EASIEST,SOURCE_ERLANG); {’¨¯ë ¨áâ®ç¨ª®¢}
|
|
|
|
|
|
|
+ESOURCES = (SOURCE_DUMMY,SOURCE_EASIEST,SOURCE_ERLANG); {Типы и�точников}
|
|
|
|
|
|
|
|
-CSource = object {Ž¡ê¥ªâ - ¯à®á⥩訩 ¨áâ®ç¨ª}
|
|
|
|
|
- SType : ESOURCES; {Š ª®¢ è ¨áâ®ç¨ª? }
|
|
|
|
|
- Name : integer; {€ ª ª ¥£® §®¢ãâ ?}
|
|
|
|
|
|
|
+CSource = object {Объект - про�тейший и�точник}
|
|
|
|
|
+ SType : ESOURCES; {Каков наш и�точник? }
|
|
|
|
|
+ Name : integer; {� как его зовут ?}
|
|
|
|
|
|
|
|
- LastTime : real; {‚à¥¬ï £¥¥à 樨 ¯®á«¥¤¥£® § ¯à®á }
|
|
|
|
|
- LastReq : TReq; {�®á«¥¤¨© ᣥ¥à¨à®¢ ë© § ¯à®á}
|
|
|
|
|
|
|
+ LastTime : real; {Врем� генерации по�леднего запро�а}
|
|
|
|
|
+ LastReq : TReq; {По�ледний �генерированный запро�}
|
|
|
|
|
|
|
|
- NewTime : real; {Œ®¬¥â £¥¥à 樨 ®¢®£® § ¯à®á }
|
|
|
|
|
|
|
+ NewTime : real; {Момент генерации нового запро�а}
|
|
|
Lambda : real;
|
|
Lambda : real;
|
|
|
|
|
|
|
|
- TotalReq : longInt; {ޡ饥 ç¨á«® § ª ®â ¨áâ®ç¨ª }
|
|
|
|
|
- DoneReq : longInt; {ç¨á«® ®¡à ¡®â ëå § ª ®â ¨áâ®ç¨ª }
|
|
|
|
|
- RefusedReq:LongInt; {—¨á«® ®âª«®¥ëå § ª}
|
|
|
|
|
- WaitTime : real; {ޡ饥 ¢à¥¬ï ¯à¥¡ë¢ ¨ï ¢ á¨á⥬¥}
|
|
|
|
|
- ProbRefuse:real; {‚¥à®ïâ®áâì ®âª § }
|
|
|
|
|
- MatWait : real; {Œ ⥬ â¨ç¥áª®¥ ®¦¨¤ ¨¥ ¢ ¡ãä¥à¥}
|
|
|
|
|
|
|
+ TotalReq : longInt; {Общее чи�ло за�вок от и�точника}
|
|
|
|
|
+ DoneReq : longInt; {чи�ло обработанных за�вок от и�точника}
|
|
|
|
|
+ RefusedReq:LongInt; {Чи�ло отклоненных за�вок}
|
|
|
|
|
+ WaitTime : real; {Общее врем� пребывани� в �и�теме}
|
|
|
|
|
+ ProbRefuse:real; {Веро�тно�ть отказа}
|
|
|
|
|
+ MatWait : real; {Математиче�кое ожидание в буфере}
|
|
|
|
|
|
|
|
- Constructor Init(aName : Integer;aLambda:real); {Š®áâàãªâ®à á ¨¬¥¥¬}
|
|
|
|
|
- Procedure Reset; {‘¡à®á ¢á¥å áç¥â稪®¢}
|
|
|
|
|
- Procedure GenNewReq; {ƒ¥¥à æ¨ï ®¢®£® § ¯à®á }
|
|
|
|
|
|
|
+ Constructor Init(aName : Integer;aLambda:real); {Кон�труктор � именем}
|
|
|
|
|
+ Procedure Reset; {Сбро� в�ех �четчиков}
|
|
|
|
|
+ Procedure GenNewReq; {Генераци� нового запро�а}
|
|
|
Destructor Done;virtual;
|
|
Destructor Done;virtual;
|
|
|
end;{CSource}
|
|
end;{CSource}
|
|
|
|
|
|
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
|
|
|
|
|
|
-CDevice = object {Ž¡ê¥ªâ - ¯à®á⥩襥 ãá⮩á⢮ ¬ áᮢ®£® ®¡á«ã¦¨¢ ¨ï}
|
|
|
|
|
- LastTime : real; {‚à¥¬ï ¯®á«¥¤¥£® § ¢¥àè¥¨ï ®¡á«ã¦¨¢ ¨ï}
|
|
|
|
|
|
|
+CDevice = object {Объект - про�тейшее у�той�тво ма��ового об�луживани�}
|
|
|
|
|
+ LastTime : real; {Врем� по�леднего завершени� об�луживани�}
|
|
|
|
|
|
|
|
- BegTime : real; {‚६ï ç « ®¡á«ã¦¨¢ ¨ï}
|
|
|
|
|
- DoneTime : real; {‚६ï, ¢ ª®â®à®¥ § ª®ç¨âáï ®¡à ¡®âª }
|
|
|
|
|
|
|
+ BegTime : real; {Врем� начала об�луживани�}
|
|
|
|
|
+ DoneTime : real; {Врем�, в которое закончит�� обработка}
|
|
|
|
|
|
|
|
- Stoppage : real; {ޡ饥 ¢à¥¬ï ¯à®áâ®ï ¯à¨¡®à }
|
|
|
|
|
|
|
+ Stoppage : real; {Общее врем� про�то� прибора}
|
|
|
|
|
|
|
|
- IsWorking : boolean; {Žáãé¥á⢫ï¥âáï «¨ ®¡á«ã¦¨¢ ¨¥ ?}
|
|
|
|
|
- CurWorking : TReq; {’¥ªã騩 ®¡à ¡ âë¢ ¥¬ë© § ¯à®á}
|
|
|
|
|
|
|
+ IsWorking : boolean; {О�уще�твл�ет�� ли об�луживание ?}
|
|
|
|
|
+ CurWorking : TReq; {Текущий обрабатываемый запро�}
|
|
|
Lambda : real;
|
|
Lambda : real;
|
|
|
|
|
|
|
|
Constructor Init(aLambda:real); {}
|
|
Constructor Init(aLambda:real); {}
|
|
|
- Function AddReq(aCurReq : PReq;aCurTime:real):boolean; {� ç «® ®¡à ¡®âª § ¯à®á }
|
|
|
|
|
- Procedure Reset; {‘¡à®á ãáâà-¢ }
|
|
|
|
|
- Function DoneWork:PReq; {‡ ¢¥à襨¥ ®¡à ¡®âª¨ ⥪ã饣® § ¯à®á , á ¥£® ¢®§¢à ⮬}
|
|
|
|
|
|
|
+ Function AddReq(aCurReq : PReq;aCurTime:real):boolean; {�ачало обработка запро�а}
|
|
|
|
|
+ Procedure Reset; {Сбро� у�тр-ва}
|
|
|
|
|
+ Function DoneWork:PReq; {Завершение обработки текущего запро�а, � его возвратом}
|
|
|
Destructor Done;
|
|
Destructor Done;
|
|
|
end; {CDevice}
|
|
end; {CDevice}
|
|
|
|
|
|
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
|
EBuffers = (BUFFER_DUMMY, BUFFER_FIFO, BUFFER_LIFO);
|
|
EBuffers = (BUFFER_DUMMY, BUFFER_FIFO, BUFFER_LIFO);
|
|
|
|
|
|
|
|
-CBuffer = object {�ãää¥à § ¯à®á®¢}
|
|
|
|
|
- BufType : EBuffers; {’¨¯ ¡ãä¥à }
|
|
|
|
|
- BufferLength : integer; {„«¨ ¡ãä¥à }
|
|
|
|
|
- CellCount : integer; {ˆ¤¥ªá ⥪ã饩 ᢮¡®¤®© ï祩ª¨}
|
|
|
|
|
- Data : PReqArray; {‘®¡á⢥® á ¬ ¡ãä¥à}
|
|
|
|
|
- Constructor Init(aBufLen:integer); {ˆ¨æ¨ «¨§ æ¨ï ¡ãä¥à }
|
|
|
|
|
- Destructor Done;virtual;{„¥áâàãªâ®à, ® ¨ ¥áâì}
|
|
|
|
|
- Function SetBufferSize(aNewSize:integer):boolean;{ˆ§¬¥¥¨¥ à §¬¥à ¡ãä¥à }
|
|
|
|
|
- Procedure FreeBuffer; {Žá¢®¡®¦¤¥¨¥ ¢á¥£® ¡ãä¥à áà §ã}
|
|
|
|
|
- Function AddReq(var aNew, rKicked:TReq):boolean; {„®¡ ¢«ï¥âáï § ¯à®á ¢ ¡ãä¥à.
|
|
|
|
|
- …᫨ ¨§ ¡ãä¥à ª ª®©-â® § ¯à®á 㤠«¥, â® ä-æ¨ï ¢®§¢à. false, ¨ ¢ rKicked -
|
|
|
|
|
- § ¯à®á, ª®â®àë© ®âª«®¥}
|
|
|
|
|
- Function GetReq(var rReq:TReq):boolean;virtual; {‚ëâ é¨âì ¨§ ¡ãä¥à § ¯à®á,
|
|
|
|
|
- ¥á«¨ ãá¯¥è® - true}
|
|
|
|
|
|
|
+CBuffer = object {Буффер запро�ов}
|
|
|
|
|
+ BufType : EBuffers; {Тип буфера}
|
|
|
|
|
+ BufferLength : integer; {Длина буфера}
|
|
|
|
|
+ CellCount : integer; {Индек� текущей �вободной �чейки}
|
|
|
|
|
+ Data : PReqArray; {Соб�твенно �ам буфер}
|
|
|
|
|
+ Constructor Init(aBufLen:integer); {Инициализаци� буфера}
|
|
|
|
|
+ Destructor Done;virtual;{Де�труктор, он и е�ть}
|
|
|
|
|
+ Function SetBufferSize(aNewSize:integer):boolean;{Изменение размера буфера}
|
|
|
|
|
+ Procedure FreeBuffer; {О�вобождение в�его буфера �разу}
|
|
|
|
|
+ Function AddReq(var aNew, rKicked:TReq):boolean; {Добавл�ет�� запро� в буфер.
|
|
|
|
|
+ Е�ли из буфера какой-то запро� удален, то ф-ци� возвр. false, и в rKicked -
|
|
|
|
|
+ запро�, который отклонен}
|
|
|
|
|
+ Function GetReq(var rReq:TReq):boolean;virtual; {Вытащить из буфера запро�,
|
|
|
|
|
+ е�ли у�пешно - true}
|
|
|
end; {CBuffer}
|
|
end; {CBuffer}
|
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
{-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
|
|
|
|
|
|
-CModel = object {� è ¬®¤¥«ì ‘ŒŽ}
|
|
|
|
|
- Sources : PSourceArr; {ˆáâ®ç¨ª¨}
|
|
|
|
|
- SourceCnt: integer; {—¨á«® ¨áâ®ç¨ª®¢}
|
|
|
|
|
- MaxSrc : integer; {� §¬¥à®áâì ¬ áᨢ ¨áâ®ç¨ª®¢}
|
|
|
|
|
|
|
+CModel = object {�аша модель СМО}
|
|
|
|
|
+ Sources : PSourceArr; {И�точники}
|
|
|
|
|
+ SourceCnt: integer; {Чи�ло и�точников}
|
|
|
|
|
+ MaxSrc : integer; {Размерно�ть ма��ива и�точников}
|
|
|
|
|
|
|
|
- Buffer : PBuffer; {�ãä¥à}
|
|
|
|
|
- Device : PDevice; {“áâனá⢮}
|
|
|
|
|
|
|
+ Buffer : PBuffer; {Буфер}
|
|
|
|
|
+ Device : PDevice; {У�трой�тво}
|
|
|
|
|
|
|
|
- CurTime : real; {’¥ªã騩 ¬®¬¥â ¢à¥¬¥¨}
|
|
|
|
|
|
|
+ CurTime : real; {Текущий момент времени}
|
|
|
Delta : real;
|
|
Delta : real;
|
|
|
DovInt : real;
|
|
DovInt : real;
|
|
|
|
|
|
|
|
- NextSource:integer; {Š ª®© ¨§ ¨áâ®ç¨ª®¢ - ¡ëáâ॥}
|
|
|
|
|
- RealizSteps:LongInt; {�¥®¡å. ç¨á«® ॠ«¨§ 権}
|
|
|
|
|
- CurStep : LongInt; {’¥ªã騩 è £}
|
|
|
|
|
|
|
+ NextSource:integer; {Какой из и�точников - бы�трее}
|
|
|
|
|
+ RealizSteps:LongInt; {�еобх. чи�ло реализаций}
|
|
|
|
|
+ CurStep : LongInt; {Текущий шаг}
|
|
|
{}
|
|
{}
|
|
|
- DoneCount, {—¨á«® ®¡à ¡®â ëå § ª}
|
|
|
|
|
- RefusedCount, {—¨á«® ®âª«®¥ëå § ª}
|
|
|
|
|
- TotalCount : integer; {ޡ饥 ç¨á«® § ª}
|
|
|
|
|
|
|
+ DoneCount, {Чи�ло обработанных за�вок}
|
|
|
|
|
+ RefusedCount, {Чи�ло отклоненных за�вок}
|
|
|
|
|
+ TotalCount : integer; {Общее чи�ло за�вок}
|
|
|
|
|
|
|
|
- Working : boolean; {� ¡®â ¥â «¨ ¬®¤¥«ì ?}
|
|
|
|
|
|
|
+ Working : boolean; {Работает ли модель ?}
|
|
|
WorkReq : TReq;
|
|
WorkReq : TReq;
|
|
|
|
|
|
|
|
- CalcVer : boolean; {�㦮 «¨ ¯®¤áç¨âë¢ âì KMIN ¢ § ¢. ®â ¢¥à ?}
|
|
|
|
|
|
|
+ CalcVer : boolean; {�ужно ли под�читывать KMIN в зав. от вер ?}
|
|
|
|
|
|
|
|
Constructor Init(aBegSrcCnt:integer;aDev:PDevice;aBuf:PBuffer;
|
|
Constructor Init(aBegSrcCnt:integer;aDev:PDevice;aBuf:PBuffer;
|
|
|
aDel,aDov:Real);
|
|
aDel,aDov:Real);
|
|
|
- Function SetSourceCount(aNewCnt:integer):boolean; {“áâ ®¢ª ®¢®£® ç¨á«
|
|
|
|
|
- ¨áâ®ç¨ª®¢, á á®åà ¥¨¥¬ áâ àëå}
|
|
|
|
|
- Function AddNewSource(aNewSrc:PSource):boolean; {„®¡ ¢«¥¨¥ ®¢®£® ¨áâ®ç¨ª }
|
|
|
|
|
- Procedure SetNextSource; {� 室¨â NextSource}
|
|
|
|
|
|
|
+ Function SetSourceCount(aNewCnt:integer):boolean; {У�тановка нового чи�ла
|
|
|
|
|
+ и�точников, � �охранением �тарых}
|
|
|
|
|
+ Function AddNewSource(aNewSrc:PSource):boolean; {Добавление нового и�точника}
|
|
|
|
|
+ Procedure SetNextSource; {�аходит NextSource}
|
|
|
Function TestVer:boolean; {}
|
|
Function TestVer:boolean; {}
|
|
|
- Function RemoveSource(aName:integer):boolean; {“¤ «¥¨¥ ¨áâ®ç¨ª ¨§ ¬®¤¥«¨}
|
|
|
|
|
- Procedure Reset; {‘¡à®á ¢á¥å áç¥â稪®¢}
|
|
|
|
|
|
|
+ Function RemoveSource(aName:integer):boolean; {Удаление и�точника из модели}
|
|
|
|
|
+ Procedure Reset; {Сбро� в�ех �четчиков}
|
|
|
Procedure Start;
|
|
Procedure Start;
|
|
|
Procedure PrintValues(var F:TEXT);
|
|
Procedure PrintValues(var F:TEXT);
|
|
|
- Function Step:boolean; {Œ®¤¥«¨àã¥â á«¥¤ãî騩 è £, ¥á«¨ ¢ }
|
|
|
|
|
|
|
+ Function Step:boolean; {Моделирует �ледующий шаг, е�ли в }
|
|
|
Destructor Done;
|
|
Destructor Done;
|
|
|
end;
|
|
end;
|
|
|
{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
{-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
|
|
@@ -181,7 +181,7 @@ begin
|
|
|
IsWorking := false;
|
|
IsWorking := false;
|
|
|
end;{CDevice.Reset}
|
|
end;{CDevice.Reset}
|
|
|
{---------------------------}
|
|
{---------------------------}
|
|
|
-Function CDevice.AddReq(aCurReq : PReq;aCurTime:real):boolean; {� ç «® ®¡à ¡®âª § ¯à®á }
|
|
|
|
|
|
|
+Function CDevice.AddReq(aCurReq : PReq;aCurTime:real):boolean; {�ачало обработка запро�а}
|
|
|
begin
|
|
begin
|
|
|
AddReq := false;
|
|
AddReq := false;
|
|
|
if not isWorking then
|
|
if not isWorking then
|
|
@@ -248,12 +248,12 @@ end;{CBuffer.SetBufferSize}
|
|
|
{-----------------------}
|
|
{-----------------------}
|
|
|
Function CBuffer.AddReq(var aNew, rKicked:TReq):boolean;
|
|
Function CBuffer.AddReq(var aNew, rKicked:TReq):boolean;
|
|
|
begin
|
|
begin
|
|
|
- if CellCount=BufferLength then {� á ¬®¬ ¤¥«¥, â.ª á 0, â® ¡®«ìè¥}
|
|
|
|
|
|
|
+ if CellCount=BufferLength then {�а �амом деле, т.к � 0, то больше}
|
|
|
begin
|
|
begin
|
|
|
AddReq := false;
|
|
AddReq := false;
|
|
|
rKicked := Data^[0];
|
|
rKicked := Data^[0];
|
|
|
- rKicked.Death := aNew.Birth; {‡ ¯à®á ®âª«®¥, ¢ ¬®¬¥â, ª®£¤ ®¢ë© ¯à¨¡ë«,
|
|
|
|
|
- â.¥. ª®£¤ â®â ¡ë« á®§¤ }
|
|
|
|
|
|
|
+ rKicked.Death := aNew.Birth; {Запро� отклонен, в момент, когда новый прибыл,
|
|
|
|
|
+ т.е. когда тот был �оздан}
|
|
|
Move(Data^[1],Data^[0], SizeOf(TReq) * (BufferLength-1));
|
|
Move(Data^[1],Data^[0], SizeOf(TReq) * (BufferLength-1));
|
|
|
Data^[CellCount-1] := aNew;
|
|
Data^[CellCount-1] := aNew;
|
|
|
end
|
|
end
|
|
@@ -349,7 +349,7 @@ Begin
|
|
|
Dec(SourceCnt);
|
|
Dec(SourceCnt);
|
|
|
end;{CModel.RemoveSource}
|
|
end;{CModel.RemoveSource}
|
|
|
{------------------------------------------------------------------}
|
|
{------------------------------------------------------------------}
|
|
|
-Procedure CModel.SetNextSource; {� 室¨â NextSource}
|
|
|
|
|
|
|
+Procedure CModel.SetNextSource; {�аходит NextSource}
|
|
|
var
|
|
var
|
|
|
c : integer;
|
|
c : integer;
|
|
|
begin
|
|
begin
|
|
@@ -415,7 +415,7 @@ var
|
|
|
Begin
|
|
Begin
|
|
|
Step := false;
|
|
Step := false;
|
|
|
if Not Working then exit;
|
|
if Not Working then exit;
|
|
|
- ret := false; {‘ç¨â ¥¬, çâ® ¯à®¤®«¦ âì ¥ ¡ã¤¥¬}
|
|
|
|
|
|
|
+ ret := false; {Считаем, что продолжать не будем}
|
|
|
|
|
|
|
|
if (not CalcVer) AND (CurStep > RealizSteps) then exit;
|
|
if (not CalcVer) AND (CurStep > RealizSteps) then exit;
|
|
|
|
|
|
|
@@ -435,7 +435,7 @@ Begin
|
|
|
WorkReq.Death - WorkReq.Birth;
|
|
WorkReq.Death - WorkReq.Birth;
|
|
|
|
|
|
|
|
if Buffer^.GetReq(WorkReq) then
|
|
if Buffer^.GetReq(WorkReq) then
|
|
|
- begin {‚ ¡ãä¥à¥ 室¨« áì §  }
|
|
|
|
|
|
|
+ begin {В буфере находила�ь за�вка}
|
|
|
WorkReq.FromSource^.MatWait := WorkReq.FromSource^.MatWait +
|
|
WorkReq.FromSource^.MatWait := WorkReq.FromSource^.MatWait +
|
|
|
CurTime-WorkReq.Birth;
|
|
CurTime-WorkReq.Birth;
|
|
|
Device^.AddReq(@WorkReq,CurTime);
|
|
Device^.AddReq(@WorkReq,CurTime);
|
|
@@ -447,7 +447,7 @@ Begin
|
|
|
SetNextSource;
|
|
SetNextSource;
|
|
|
end;
|
|
end;
|
|
|
end
|
|
end
|
|
|
- else {�«¨¦ ©è¥¥ ᮡë⨥ - £¥¥à æ¨ï § ¯à®á }
|
|
|
|
|
|
|
+ else {Ближайшее �обытие - генераци� запро�а}
|
|
|
begin
|
|
begin
|
|
|
CurTime := Sources^[NextSource]^.NewTime;
|
|
CurTime := Sources^[NextSource]^.NewTime;
|
|
|
if not Buffer^.AddReq(Sources^[NextSource]^.LastReq,Kicked) then
|
|
if not Buffer^.AddReq(Sources^[NextSource]^.LastReq,Kicked) then
|
|
@@ -471,16 +471,16 @@ Procedure CModel.PrintValues(var F:Text);
|
|
|
var
|
|
var
|
|
|
i : integer;
|
|
i : integer;
|
|
|
begin
|
|
begin
|
|
|
- WriteLn(F,'Žâ. â®ç®áâì - ',Delta*100:0:0,'%, ¤®¢. ¨â ¢ ª¢. - ',DovInt:0:2);
|
|
|
|
|
- WriteLn(F,'• à-ª ¯®â®ª ¯à¨¡®à - ', Device^.Lambda:0:2);
|
|
|
|
|
- WriteLn(F,'ˆáâ.|‚ᣠ§ ï¢.|Žâª § ï¢.|‚ë¯ § ï¢.|P ®âª. |Œ â. ®¦ | Ž¡é. ¢à.');
|
|
|
|
|
|
|
+ WriteLn(F,'Отн. точно�ть - ',Delta*100:0:0,'%, дов. инт в кв. - ',DovInt:0:2);
|
|
|
|
|
+ WriteLn(F,'Хар-ка потока прибора - ', Device^.Lambda:0:2);
|
|
|
|
|
+ WriteLn(F,'И�т.|В�г за�в.|Отк за�в.|Вып за�в.|P отк. |Мат. ож | Общ. вр.');
|
|
|
for i := 0 to SourceCnt-1 do with Sources^[i]^ do
|
|
for i := 0 to SourceCnt-1 do with Sources^[i]^ do
|
|
|
begin
|
|
begin
|
|
|
write(F,Name:4,' ',TotalReq:9,' ',RefusedReq:9,' ',DoneReq:9,' ',100.0*RefusedReq/TotalReq:6:2,'% ');
|
|
write(F,Name:4,' ',TotalReq:9,' ',RefusedReq:9,' ',DoneReq:9,' ',100.0*RefusedReq/TotalReq:6:2,'% ');
|
|
|
if DoneReq <> 0 then Write(F,MatWait/DoneReq:8:3,' ') else Write(F,' --- ');
|
|
if DoneReq <> 0 then Write(F,MatWait/DoneReq:8:3,' ') else Write(F,' --- ');
|
|
|
WriteLN(F,WaitTime:0:2);
|
|
WriteLN(F,WaitTime:0:2);
|
|
|
end;
|
|
end;
|
|
|
- WriteLn(F,'Š®íä䍿¨¥â ¯à®áâ®ï ¯à¨¡®à - ',100*Device^.Stoppage/CurTime:0:2,'%');
|
|
|
|
|
|
|
+ WriteLn(F,'Ко�ффициент про�то� прибора - ',100*Device^.Stoppage/CurTime:0:2,'%');
|
|
|
WriteLN(F,'---')
|
|
WriteLN(F,'---')
|
|
|
end;{CModel.PrintValues}
|
|
end;{CModel.PrintValues}
|
|
|
{------------------------------------------------------------------}
|
|
{------------------------------------------------------------------}
|