function pm2
global hEd1 hEd2 hEd3 hEd4 hEd5 hEd6 hResult
global hTex2 hTex3 hTex4  hTex6  hTex8  hTex10 hTex12 
global hbp1 hbp2 hbp3 hbm1 hbm2 hbm3 hbp4 hbp5 hbp6 hbm4 hbm5 hbm6 hStop hStart
global flag
cla;
dx=1;
flag=0;
dev=str2num(get(hEd1,'String'));%кол-во устройств
o1=str2num(get(hEd2,'String'));%A
o2=str2num(get(hEd3,'String'));%S
E1=str2num(get(hEd4,'String'));%генератор А
E2=str2num(get(hEd5,'String'));%генератор S
E3=str2num(get(hEd6,'String'));%генератор приоритетов
%=============1==================
if gcbo==hbp1
    a1=str2num(get(hEd1,'String'));
    a1=a1+dx;
    dev=a1;
    a1=num2str(a1);
    set(hEd1,'String',a1);
end;

if gcbo==hbm1
    a1=str2num(get(hEd1,'String'));
    a1=a1-dx;
    dev=a1;
    a1=num2str(a1);
    set(hEd1,'String',a1);
end;
%=============2=================
if gcbo==hbp2
    a2=str2num(get(hEd2,'String'));
    a2=a2+10;
    o1=a2;
    a2=num2str(a2);
    set(hEd2,'String',a2);
end;

if gcbo==hbm2
    a2=str2num(get(hEd2,'String'));
    a2=a2-10;
    o1=a2;
    a2=num2str(a2);
    set(hEd2,'String',a2);
end;
%==============3================
if gcbo==hbp3
    a3=str2num(get(hEd3,'String'));
    a3=a3+10;
    o2=a3;
    a3=num2str(a3);
    set(hEd3,'String',a3);
end;

if gcbo==hbm3
    a3=str2num(get(hEd3,'String'));
    a3=a3-10;
    o2=a3;
    a3=num2str(a3);
    set(hEd3,'String',a3);
end;
%=================================

%==============4================
if gcbo==hbp4
    a4=str2num(get(hEd4,'String'));
    a4=a4+1;
    E1=a4;
    a4=num2str(a4);
    set(hEd4,'String',a4);
end;

if gcbo==hbm4
    a4=str2num(get(hEd4,'String'));
    a4=a4-1;
    E1=a4;
    a4=num2str(a4);
    set(hEd4,'String',a4);
end;
%=================================

%==============5================
if gcbo==hbp5
    a5=str2num(get(hEd5,'String'));
    a5=a5+1;
    E2=a5;
    a5=num2str(a5);
    set(hEd5,'String',a5);
end;

if gcbo==hbm5
    a5=str2num(get(hEd5,'String'));
    a5=a5-1;
    E2=a5;
    a5=num2str(a5);
    set(hEd5,'String',a5);
end;
%=================================

%==============6================
if gcbo==hbp6
    a6=str2num(get(hEd6,'String'));
    a6=a6+1;
    E3=a6;
    a6=num2str(a6);
    set(hEd6,'String',a6);
end;

if gcbo==hbm6
    a6=str2num(get(hEd6,'String'));
    a6=a6-1;
    E3=a6;
    a6=num2str(a6);
    set(hEd6,'String',a6);
end;
%=================================



if gcbo==hEd1
    dev=str2num(get(hEd1,'String'))
end;

if gcbo==hEd2
    o1=str2num(get(hEd2,'String'))
end;

if gcbo==hEd3
    o2=str2num(get(hEd3,'String'))
end;

if gcbo==hEd4
    E1=str2num(get(hEd4,'String'))
end;

if gcbo==hEd5
    E2=str2num(get(hEd5,'String'))
end;

if gcbo==hEd6
    E3=str2num(get(hEd6,'String'))
end;

% A=20;
% S=30;
c=1000;%кол-во измерений
tA=gen2(E1,o1);
t=0;%первоначальное системное время
t=0;  %системное время
B=0;  %очередь
Q=0;  %задержка
r=1;  %кол-во заявок в очереди
delay=0; %сумма xS
for i=1:c
    tB(i)=0;  %время в очереди
    nA(i)=0;  %номер заявки поступившей в очередь 
    tAB(i)=0; %время поступление заявки в очередь
    xS(i)=0;
    pri(i)=0;
end
for i=1:dev
    s(i)=0;  %устройства
    P(i)=0;  %время обработки
    tS(i)=0;  %время окончания обработки
    bwt(i)=0;  %время начала работы устройства
    dwt(i)=0;  %время работы устр. 
    ewd(i)=0; %общее время работы
end
m=1; %индекс для s
j=1;  %индекс для xS
k=1;  %индекс для xA
sw=-0.15;
qw=0;
ji=0;
a=0;

E1
E2
E3
%-------------------------------------------------------------------
while k~=c

%----определение минимального времени окончания обработки (minS)------
minS=0;
cond=0;%условие
for i=1:dev
    if tS(i)~=0
        cond=1;
        minS=tS(i);
        break;
    end;
end;
if (cond==1)
    for i=dev
        if (tS(i)~=0)&(minS~=0)&(tS(i)<minS)
            minS=tS(i);
        end;
    end;
end;
%minS=minS
AS=0;%случай когда tA=tS
if (minS==tA)
    AS=1;
end;

%-----вычисляем время обработки P(п.1)------------

if ((minS>tA)&(minS~=0))|(AS==1)
    for i=1:dev
        if (tS(i)~=0)
            P(i)=(tA-t)+P(i);
        else 
            P(i)=P(i);
        end;
    end;
else
    if (minS<tA)&(minS~=0)
    for i=1:dev
        if (tS(i)~=0)
            P(i)=(minS-t)+P(i);
        else 
            P(i)=P(i);
        end;
    end;
end;
end;

%------вычисление времени задержки Q(п.2)--------

if ((tA<minS)&(minS~=0))|(AS==1)
    Q=(tA-t)*B+Q;
else
    if (tA>minS)&(minS~=0)
        Q=(minS-t)*B+Q;
    end;
end;


%-----вычисляем системное время t(п.3)-----------
if (minS==0)
    t=tA;
else
    if ((tA<minS)&(minS~=0))|(AS==1)
        t=tA;
    else
        if (tA>minS)&(minS~=0)
            t=minS;
        end;
    end;
end;

%--------Формирование очереди B (п.4)--------------
cond=0;
for i=1:dev
    if (s(i)==1)
        cond=cond+1;
    end;
end;
 K=k;
 if ((tA<minS)&(cond==dev))|((AS==1)&(cond==dev))
     B=B+1;
     nA(B)=k;%номер заявки поступившей в очередь
     tAB(B)=t;%время поступления заявки
     E3=gen1(E3);
     pri(k)=gen4(E3);%ф-я "gen" раздаёт приоритеты
     E2=gen1(E2);
     xS(k)=gen3(E2,o2);
     delay=delay+xS(k);
 else
     if (B~=0) %не пустая очередь
         B=B;
         nA(B)=nA(B);
         tAB(B)=tAB(B);
         r=r; %кол-во заявок в очереди
     end;
 end;
 
%-------определение работающих устройств S (п.5)---------------
  for i=1:dev
      in(i)=0;%для определения работы устройства
  end;
  
  bn=0;
  if (minS==0)
      s(1)=1;
      bwt(1)=t;%время начала работы устройства
      in(1)=1;
  else
      if ((tA<minS)&(minS~=0))|(AS==1)
          for i=1:dev
              if (s(i)==0)&(bn~=1)
                  s(i)=1;
                  bwt(i)=t;
                  in(i)=1;
                  bn=1;
              end;
          end;
      end;
      for i=1:dev
          if (tS(i)==t)
              s(i)=0;
              bwt(i)=bwt(i);
              dwt(i)=t-bwt(i);%device work time(время работы устройства)
              ewd(i)=ewd(i)+dwt(i);%общее время работы устройства
              dwt(i)=0;
              bwt(i)=0;
              tS(i)=0;
          else
              s(i)=s(i);
          end;
      end;
  end;
  
%------вычисляем tS(п.6)-----------------------
if (B==0)
    for i=1:dev
        if (in(i)==1)
            E2=gen1(E2);
            xS=gen3(E2,o2);
            delay=delay+xS;
            tS(i)=t+xS;
        end;
    end;
else
    for j=1:dev
    mp=1;%высший приоритет
    if (B>1)
        m=1;
        num=pri(nA(1));
        for i=2:B
            if pri(nA(i))>num;
                num=pri(nA(i));
                m=i;
            end;
        end;
        mp=m;
    end;
    if (B~=0)&(s(j)==0)
        tS(j)=t+xS(nA(mp));
        tB(r)=t-tAB(mp);%время в очереди
        r=r+1;
        if (mp~=B)
            for i=mp:(B-1)
                nA(i)=nA(i+1);
                tAB(i)=tAB(i+1);
            end;
        end;
        tAB(B)=0;
        nA(B)=0;
        B=B-1;
        s(j)=1;
        bwt(j)=t;
    end;
end;
end;

%--------------Вычисляем tA(п.7)--------------------
if (minS==0)
    E1=gen1(E1);
    xA=gen2(E1,o1);
    tA=tA+xA;
    k=k+1;
else
    if ((tA<minS)&(minS~=0))|(AS==1)
        E1=gen1(E1);
        xA=gen2(E1,o1);
        tA=tA+xA;
        k=k+1;
    else
        tA=tA;
    end;
end;
%----------------------------------------------------------------------
end; % для while    

%===========================================================================
M=0;
M=Q/t %среднее число требований в очереди


ldev=0;%загрузка устройства
for i=1:dev
    ro(i)=P(i)/t; %коэффициент использования устройств
    ldev=ldev+ro(i);
end;
ldev=ldev/dev;

cus=0; %коэффициент использования системы
for i=1:dev
    cus=cus+ewd(i);
end;
cus=cus/(dev*t)

tib=0; %время в очереди
u=0;
for i=1:r-1
    tib=tib+tB(i);
    u=u+1;
end;

szvo=0; %средняя задержка в очереди
if (r~=1)
    szvo=tib/(r-1)
end;

sto=delay; %среднее время ожидания
for i=1:r
    sto=sto+tB(i);
end;
sto=sto/c;
L=(sto/o1)/t;

%----------------------------------------------------------------------


set(hTex4,'String',cus)
set(hTex6,'String',szvo)
set(hTex8,'String',sto)
set(hTex10,'String',M)
set(hTex12,'String',L)
% axis('off')
% pause(0.01)
% while flag
%     pause(1)
% end;
% end;

cla;
axis('off')  
subplot(1,1,1);
axes('Position',[0 0.2 0.5 0.1],'XLim',[0 0.9],'YLim',[0 0.25],'Visible','off');
for ji=1:dev
if (s(ji)==1)
    sw=sw+0.15;
    rectangle('Position',[sw 0.1 0.13 0.13],'Curvature',[0 0],'FaceColor','r');
else
    if (s(ji)==0)
        sw=sw+0.15;
rectangle('Position',[sw 0.1 0.13 0.13],'Curvature',[0 0],'FaceColor','b');
end;
end;
end;
 
%Очередь
if B~=0
      axes('Position',[0 0 0.5 0.2],'XLim',[0.02 0.6],'YLim',[0.05 0.2],'Visible','off') ;
      for qw=1:B
      a=a+0.03;
   rectangle('Position',[a 0.1 0.03 0.03],'Curvature',[1 1],'FaceColor','b');
      end;
else 
   axes('Position',[0 0 0.5 0.2],'XLim',[0.02 0.6],'YLim',[0.05 0.2],'Visible','off') ;
    if B==0
     rectangle('Position',[0.03 0.1 0.03 0.03],'Curvature',[1 1]);
    end;
 end;

 %end;%while




