Sprawozdanie z podstaw symulacji Konrad Czupryn

background image

Konrad Czupryn, Gr: I8C1S1 Warszawa, dn. 29.01.2011r.

Wojskowa Akademia Techniczna

Im. Jarosława Dąbrowskiego

w Warszawie

Laboratorium z przedmiotu

Podstawy symulacji

TEMAT: Napisać program symulujący działanie sieci SMO.

Słuchacz: Konrad Czupryn

Grupa: I8C1S1

Rok akademicki: 2010/2011

Semestr: V

Zestaw: 1

Prowadzący: dr inż. Jarosław Rulka

background image

1. Treść zadania

Napisać program symulujący działanie sieci SMO jak na rysunku:


Przy realizacji zadania należy przyjąć następujące dane z listy przedstawionej
poniżej:
a) rozkład zmiennych Tj: (nrDz + i) mod 6 + 1;

b) rozkład zmiennych Oi: (nrDz + i + 1) mod 6 + 1;

c) Li: (nrDz + i) mod 2 + 1;
d) ALi: (nrDz + i + 2) mod 3 + 1;
e) Rj = (nrDz + i + 5) mod 3 + 1;
f) Mi = (nrDz + i + 2) mod 4 + 1;
g) Blokowanie zgłoszeń 1. SMO;
h) Klienci niecierpliwi w SMOi : Ni = (nrDz + i) mod 4 (ograniczony czas oczekiwania
na rozpoczęcie obsługi);
gdzie:

i

– numer SMO;

j

– numer strumienia;

Tj

– zmienna losowa oznaczająca czas pomiędzy kolejnymi napływami zgłoszeń do

systemu;

Oi

– zmienna losowa oznaczająca czas obsługi pojedynczego zgłoszenia

wgnieździe;

Ni

– zmienna losowa oznaczająca czas niecierpliwości zgłoszenia (gdy i = 0 =>

zgłoszenia cierpliwe);

Rj

– zmienna losowa oznaczająca wielkość paczki zgłoszeń (wchodzących w tej

samej chwili) j-tego strumienia;

pk

– prawdopodobieństwa przemieszczenia się zgłoszenia po danym łuku;

Li

– długość kolejki i-tego SMO;

background image

AL.i

– algorytmy kolejek (w przypadku istnienia kolejki z priorytetami należyprzyjąć,

że zgłoszenia posiadają priorytety);

1. Rozkłady zmiennych losowych:
1.1. Wykładniczy
1.2. Erlanga
1.3. Normalny
1.4. Jednostajny
1.5. Trókątny
1.6. Weibulla

2. Długości kolejek pojedynczych SMO

2.1. ograniczone (możliwe straty)

2.2. nieograniczone

3. Algorytm kolejek:
3.1. FIFO
3.2. LIFO
3.3. Z priorytetami

4. Liczba stanowisk obsługi w gniazdach (1-M)

5. Ilość zgłoszeń jednocześnie napływających do systemu (1-R) Pozostałe dane

należy określać na początku symulacji.

2. Dane do zadania:
1. Numer z dziennika - 4.

2. Zmienna losowa oznaczająca czas pomiędzy kolejnymi napływami zgłoszeń do

systemu Tj: (nrDz + i) mod 6 + 1
• T1=6 Rozkład Weibulla
• T2=1 Rozkład wykładniczy
3. Zmienna losowa oznaczająca czas obsługi pojedynczego zgłoszenia w gnieździe
Oi: (nrDz + i + 1) mod 6 + 1
• O1=1 Rozkład wykładniczy
• O2=2 Rozkład Erlanga

• O3=3 Rozkład normalny

4. Długość kolejki i-tego SMO Li: (nrDz + i) mod 2 + 1

• L1=2 nieograniczona

• L2=1 ograniczona

• L3=2 nieograniczona

5. Algorytmy kolejek (w przypadku istnienia kolejki z priorytetami należy przyjąć, że
zgłoszenia posiadają priorytety ALi: (nrDz + i + 2) mod 3 + 1
• AL1=2 LIFO
• AL2=3 Z priorytetem
• AL3=1 FIFO
6. Zmienna losowa oznaczająca wielkość paczki zgłoszeń (wchodzących w tej samej
chwili) j-tego strumienia Rj = (nrDz + i + 5) mod 3 + 1

background image

• R1=2 Rozkład Erlanga
• R2=3 Rozkład normalny
7. Liczba

stanowisk obsługi w gniazdach Mi = (nrDz + i + 2) mod 4 + 1

• M1=4
• M2=1
• M3=2
8. Zmienna losowa oznaczająca czas niecierpliwości zgłoszenia (gdy i = 0 =>
zgłoszenia cierpliwe) Ni = (nrDz + i) mod 4
• N1=1 Rozkład wykładniczy
• N2=2 Rozkład Erlanga
• N3=3 Rozkład normalny
3. Rozwiązanie: Obiekty potrzebne do zasymulowania zadanego obiektu zostały
zaimplementowane i nazwane:
KliOb j-klienta,
GniOb j-

gniazda obsługi,

MonObj -obiekt do monitorowania systemu,
Kolejka[numer]Obj - kolejka d

o stanowisk obsługi,

GeneratorObj

– generator klientów.

Wykorzystane wzory, których użyto do monitorowania systemu:

Średnia z próby n-elementowej:

Odchylenie standardowe z próby n-elementowej:

Estymator wartości średniej ważony czasem:

Estymator odchylenia standardowego ważony czasem:

background image

MAIN MODULE konradC;

FROM RandMod IMPORT RandomObj;

FROM SimMod IMPORT StartSimulation, SimTime,ResetSimTime, StopSimulation;

FROM GrpMod IMPORT QueueObj, StackObj,RankedObj,BasicGroupObj;

FROM StatMod IMPORT
RStatObj,SREAL,ITimedStatObj,IStatObj,TSINTEGER,SINTEGER,TSREAL;

FROM SimMod IMPORT Interrupt,TriggerObj;

FROM IOMod IMPORT
StreamObj,FileUseType(Input),FileUseType(Output),ReadKey;

TYPE

KliObj = OBJECT;

FORWARD;

GniObj = OBJECT;

FORWARD;

MonObj = OBJECT;

FORWARD;

kol1Obj = OBJECT;

FORWARD;

kol2Obj = OBJECT;

FORWARD;

kol3Obj = OBJECT;

FORWARD;

GenObj = OBJECT;

FORWARD;

VAR

background image

w: INTEGER;

monn: MonObj;

kol1: kol1Obj;

kol2: kol2Obj;

kol3: kol3Obj;

GenT: ARRAY INTEGER OF GenObj;

GniT: ARRAY INTEGER OF GniObj;

TYPE

MonObj = OBJECT

nr: INTEGER;

obsluzeni: INTEGER;

wejsznieci: INTEGER;

wejs1: REAL;

obs1: REAL;

srCzas: SREAL; {czas przebywania}

srCzas1: SREAL;

srCzas2: SREAL;

srCzas3: SREAL;

licz: TSINTEGER; {liczi zgloszen smo}

licz1: TSINTEGER;

licz2: TSINTEGER;

licz3: TSINTEGER;

liczKli: TSINTEGER;

srKan: TSINTEGER;

srKan1: TSINTEGER;

background image

srKan2: TSINTEGER;

srKan3: TSINTEGER;

klKol: TSINTEGER;

{liczi zgloszen kolejki}

klKol1: TSINTEGER;

klKol2: TSINTEGER;

klKol3: TSINTEGER;

pstwo: REAL;

pstwo1: REAL;

pstwo2: REAL;

pstwo3: REAL;

KlWe: INTEGER;{ile wchodzi}

KlWe1: INTEGER;

KlWe2: INTEGER;

KlWe3: INTEGER;

KlWy: INTEGER;{ile wychodzi}

KlWy1: INTEGER;

KlWy2: INTEGER;

KlWy3: INTEGER;

uzyCzas: SREAL;{srend czas przebywania}

uzyCzas1: SREAL;

uzyCzas2: SREAL;

uzyCzas3: SREAL;

uzyCzasDev: SREAL;

uzyCzasDev1: SREAL;

uzyCzasDev2: SREAL;

uzyCzasDev3: SREAL;

uzylicz: SREAL;{srednia liczba zgloszen}

background image

uzylicz1: SREAL;

uzylicz2: SREAL;

uzylicz3: SREAL;

uzyliczDev: SREAL;

uzyliczDev1: SREAL;

uzyliczDev2: SREAL;

uzyliczDev3: SREAL;

uzyKan: SREAL; {srednia liczba zajetych Kanw}

uzyKan1: SREAL;

uzyKan2: SREAL;

uzyKan3: SREAL;

uzyKanDev: SREAL;

uzyKanDev1: SREAL;

uzyKanDev2: SREAL;

uzyKanDev3: SREAL;

uzyklKol: SREAL; {srednia liczba zgloszen w kolejkach}

uzyklKol1: SREAL;

uzyklKol2: SREAL;

uzyklKol3: SREAL;

uzyklKolDev: SREAL;

uzyklKolDev1: SREAL;

uzyklKolDev2: SREAL;

uzyklKolDev3: SREAL;

uzyPstwo: SREAL;{srednie prawdopodobienstwo obsluzenia zgloszenia}

uzyPstwo1: SREAL;

uzyPstwo2: SREAL;

uzyPstwo3: SREAL;

background image

ASK METHOD liczkli(IN nrSmo: INTEGER; IN licz: REAL);

ASK METHOD odchkli(IN nrSmo: INTEGER; IN licz: REAL);

ASK METHOD srCzasKli(IN nrSmo: INTEGER; IN licz: REAL);

ASK METHOD sreCzasOdch(IN nrSmo: INTEGER; IN licz: REAL);

ASK METHOD sreZajKan(IN nrSmo: INTEGER; IN licz: REAL);

ASK METHOD sreZajKanOdch(IN nrSmo: INTEGER; IN licz: REAL);

ASK METHOD sreLiczKliKol(IN nrSmo: INTEGER; IN licz: REAL);

ASK METHOD sreLiczKliKolOdch(IN nrSmo: INTEGER; IN licz: REAL);

ASK METHOD prawdopodobienstwoObs(IN nrSmo:INTEGER;IN licz:REAL);

ASK METHOD licznikStart(IN nrSmo: INTEGER);

ASK METHOD licznikStop(IN nrSmo:INTEGER);

ASK METHOD licznikPraw(IN nrSmo: INTEGER);

ASK METHOD liczKliMinus(IN nrSmo: INTEGER);

ASK METHOD liczKliPlus(IN nrSmo: INTEGER);

ASK METHOD liczKanMinus(IN nrSmo: INTEGER);

ASK METHOD liczKanPlus(IN nrSmo: INTEGER);

ASK METHOD czasPrzebyKli(IN numer:INTEGER; IN czas:REAL);

ASK METHOD liczKliKolPlus(IN nrSmo: INTEGER);

ASK METHOD liczKliKolMinus(IN nrSmo: INTEGER);

ASK METHOD MonPocz();

ASK METHOD licznikZero(IN nrSmo:INTEGER);

ASK METHOD SredniCzasZero(IN nrSmo:INTEGER);

ASK METHOD LiczZajKanZero(IN nrSmo:INTEGER);

ASK METHOD liczKliKolZero(IN nrSmo: INTEGER);

background image

END OBJECT;

GenObj = OBJECT(RandomObj);{generator}

ParametrRozkladuGeneratora1: REAL;

ParametrRozkladuGeneratora2: REAL;

Czas:REAL;

ParametrRozkladuPaczki1: REAL;

ParametrRozkladuPaczki2: REAL;

Monitor: MonObj;

Kli: KliObj;

NrGeneratora: INTEGER;

LiczbaKliowDoWygenerowania: INTEGER;

TELL METHOD Generowanie();

ASK METHOD Init(IN prg1: REAL; IN prg2: REAL; IN lk: INTEGER; IN prp1:REAL;
IN prp2:REAL; IN m: MonObj; IN nrgen: INTEGER);

END OBJECT;

GniObj = OBJECT(RandomObj);{gniazdo}

NrGniT: INTEGER;

ParametrRozkladuGniT1: REAL;

ParametrRozkladuGniT2: REAL;

ParametrRozkladuGniT3: REAL;

Kany: INTEGER;

Aktywne: INTEGER;

CzasWyjscia: REAL;

background image

CzasWyjsciaMaksymalny: SREAL;

p: REAL;

Trigger: TriggerObj;

Monitor: MonObj;

obs1: INTEGER;

TELL METHOD Obsluga(IN kol: BasicGroupObj);

ASK METHOD Init(IN prg1: REAL; IN prg2: REAL; IN prg3: REAL; IN kan:
INTEGER; IN akt: INTEGER; IN pstwo: REAL; IN trig: TriggerObj; IN m: MonObj; IN
nrg: INTEGER);

END OBJECT;

kol1Obj = OBJECT(StackObj); {kolejak 1 LIFO}

NrKolejki: INTEGER;

Pojemnosc: INTEGER;

licz: TSINTEGER;

LiczbaKliow:TSINTEGER;

Random: RandomObj;

Trigger: TriggerObj;

Monitor: MonObj;

CzasWejscia:REAL;

CzasWejsciaMax:SREAL;

ASK METHOD Wstaw(INOUT elem: KliObj);

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m:
MonObj; IN nrk: INTEGER);

OVERRIDE

background image

ASK METHOD ObjTerminate();

ASK METHOD Remove():ANYOBJ;

ASK METHOD RemoveThis(IN kto: ANYOBJ);

END OBJECT;

kol2Obj = OBJECT(RankedObj); {kolejka 2 priorytety}

NrKolejki: INTEGER;

Pojemnosc: INTEGER;

licz: TSINTEGER;

LiczbaKliow:TSINTEGER;

Random: RandomObj;

Trigger: TriggerObj;

Monitor: MonObj;

CzasWejscia:REAL;

CzasWejsciaMax:SREAL;

ASK METHOD Wstaw(INOUT elem: KliObj);

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m:
MonObj; IN nrk: INTEGER);

OVERRIDE

ASK METHOD Rank(IN a:ANYOBJ;IN b:ANYOBJ):INTEGER;

ASK METHOD ObjTerminate();

ASK METHOD Remove():ANYOBJ;

ASK METHOD RemoveThis(IN kto: ANYOBJ);

END OBJECT;

background image

kol3Obj = OBJECT(QueueObj);{kolejka 3 fifo}

NrKolejki: INTEGER;

Pojemnosc: INTEGER;

licz: TSINTEGER;

LiczbaKliow:TSINTEGER;

Random: RandomObj;

Trigger: TriggerObj;

Monitor: MonObj;

CzasWejscia:REAL;

CzasWejsciaMax:SREAL;

ASK METHOD Wstaw(INOUT elem: KliObj);

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m:
MonObj; IN nrk: INTEGER);

OVERRIDE

ASK METHOD ObjTerminate();

ASK METHOD Remove():ANYOBJ;

ASK METHOD RemoveThis(IN kto: ANYOBJ);

END OBJECT;

KliObj = OBJECT{Kli}

Priorytet: INTEGER;

czasWe: REAL;

czasWe1: REAL;

czasWe2: REAL;

czasWe3: REAL;

background image

nr: INTEGER;

Monitor: MonObj;

ASK METHOD Init(IN m: MonObj);

ASK METHOD NadajPriorytet(IN priorytet: INTEGER);

TELL METHOD Niecierpliwosc(IN nrSMO: INTEGER; IN czas: REAL; IN kol:
BasicGroupObj);

ASK METHOD zapiszCzas(IN nrSMO: INTEGER; IN taj: REAL);

END OBJECT;

OBJECT MonObj;

ASK METHOD licznikStart(IN nrSmo: INTEGER); {do zliczania Klientow
wchodzoncych do systemu}

BEGIN

nr:=nrSmo;

IF nr = 0

KlWe:=KlWe+1;

ELSIF nr = 1

KlWe1:=KlWe1+1;

ELSIF nr = 2

KlWe2:=KlWe2+1;

ELSIF nr = 3

KlWe3:=KlWe3+1;

END IF;

END METHOD;

ASK METHOD licznikStop(IN nrSmo: INTEGER); {do zliczania Klientow
wychodzoncych z systemu}

BEGIN

background image

nr:=nrSmo;

IF nr = 0

KlWy:=KlWy+1;

ELSIF nr = 1

KlWy1:=KlWy1+1;

ELSIF nr = 2

KlWy2:=KlWy2+1;

ELSIF nr = 3

KlWy3:=KlWy3+1;

END IF;

END METHOD;

ASK METHOD licznikPraw(IN nrSmo: INTEGER);

BEGIN

nr:=nrSmo;

IF nr = 0

pstwo:=FLOAT(KlWy)/FLOAT(KlWe);

ELSIF nr = 1

pstwo1:=FLOAT(KlWy1)/FLOAT(KlWe1);

ELSIF nr = 2

pstwo2:=FLOAT(KlWy2)/FLOAT(KlWe2);

ELSIF nr = 3

pstwo3:=FLOAT(KlWy3)/FLOAT(KlWe3);

END IF;

END METHOD;

background image

ASK METHOD liczKliMinus(IN nrSmo: INTEGER);{zmniejsza licznikow Klientow}

BEGIN

nr:=nrSmo;

IF nr = 0

licz:=licz-1;

ELSIF nr = 1

licz1:=licz1-1;

ELSIF nr = 2

licz2:=licz2-1;

ELSIF nr = 3

licz3:=licz3-1;

END IF;

END METHOD;

ASK METHOD liczKliPlus(IN nrSmo: INTEGER); {zwieksza licz Klientow}

BEGIN

nr:=nrSmo;

IF nr = 0

licz:=licz+1;

ELSIF nr = 1

licz1:=licz1+1;

ELSIF nr = 2

licz2:=licz2+1;

ELSIF nr = 3

licz3:=licz3+1;

END IF;

END METHOD;

background image

ASK METHOD liczKliKolPlus(IN nrSmo: INTEGER); {zwiekszenie licza Klientow z
kolejki}

BEGIN

nr:=nrSmo;

IF nr = 0

klKol:=klKol+1;

ELSIF nr = 1

klKol1:=klKol1+1;

ELSIF nr = 2

klKol2:=klKol2+1;

ELSIF nr = 3

klKol3:=klKol3+1;

END IF;

END METHOD;

ASK METHOD liczKliKolMinus(IN nrSmo: INTEGER); {zmniejszenie licznika Klientow
z kolejki}

BEGIN

nr:=nrSmo;

IF nr = 0

klKol:=klKol-1;

ELSIF nr = 1

klKol1:=klKol1-1;

ELSIF nr = 2

klKol2:=klKol2-1;

ELSIF nr = 3

background image

klKol3:=klKol3-1;

END IF;

END METHOD;

ASK METHOD liczKanMinus(IN nrSmo: INTEGER); {zmniejszenie licznika zajetych
Kanalow}

BEGIN

nr:=nrSmo;

IF nr = 0

srKan:=srKan-1;

ELSIF nr = 1

srKan1:=srKan1-1;

ELSIF nr = 2

srKan2:=srKan2-1;

ELSIF nr = 3

srKan3:=srKan3-1;

END IF;

END METHOD;

ASK METHOD liczKanPlus(IN nrSmo: INTEGER); {zwiekszenie licznika zajetych
Kanalow}

BEGIN

nr:=nrSmo;

IF nr = 0

srKan:=srKan+1;

ELSIF nr = 1

srKan1:=srKan1+1;

background image

ELSIF nr = 2

srKan2:=srKan2+1;

ELSIF nr = 3

srKan3:=srKan3+1;

END IF;

END METHOD;

ASK METHOD MonPocz(); {inicjalizacja monitora}

BEGIN

licz:=0;

licz1:=0;

licz2:=0;

licz3:=0;

END METHOD;

ASK METHOD czasPrzebyKli(IN nrSmo: INTEGER; IN czas:REAL); {zliczanie czasu
przebywania kienta w semo}

BEGIN

nr := nrSmo;

IF (nr = 0)

srCzas:= czas;

ELSIF (nr = 1)

srCzas1:= czas;

ELSIF (nr = 2)

srCzas2:= czas;

ELSIF nr = 3

srCzas3:= czas;

background image

END IF;

END METHOD;

ASK METHOD liczkli(IN nrSmo: INTEGER; IN licz: REAL);

BEGIN

nr:=nrSmo;

IF (nr = 0)

uzylicz:=licz;

ELSIF nr = 1

uzylicz1:=licz;

ELSIF nr = 2

uzylicz2:=licz;

ELSIF nr = 3

uzylicz3:=licz;

END IF;

END METHOD;

ASK METHOD odchkli(IN nrSmo: INTEGER; IN licz: REAL);

BEGIN

nr:=nrSmo;

IF (nr = 0)

uzyliczDev:=licz;

ELSIF nr = 1

uzyliczDev1:=licz;

ELSIF nr = 2

uzyliczDev2:=licz;

ELSIF nr = 3

background image

uzyliczDev3:=licz;

END IF;

END METHOD;

ASK METHOD srCzasKli(IN nrSmo: INTEGER; IN licz: REAL);

BEGIN

nr:=nrSmo;

IF nr = 0

uzyCzas:=licz;

ELSIF nr = 1

uzyCzas1:=licz;

ELSIF nr = 2

uzyCzas2:=licz;

ELSIF nr = 3

uzyCzas3:=licz;

END IF;

END METHOD;

ASK METHOD sreCzasOdch(IN nrSmo: INTEGER; IN licz: REAL);

BEGIN

nr:=nrSmo;

IF nr = 0

uzyCzasDev:=licz;

ELSIF nr = 1

uzyCzasDev1:=licz;

ELSIF nr = 2

uzyCzasDev2:=licz;

background image

ELSIF nr = 3

uzyCzasDev3:=licz;

END IF;

END METHOD;

ASK METHOD sreZajKan(IN nrSmo: INTEGER; IN licz: REAL);

BEGIN

nr:=nrSmo;

IF nr = 0

uzyKan:=licz;

ELSIF nr = 1

uzyKan1:=licz;

ELSIF nr = 2

uzyKan2:=licz;

ELSIF nr = 3

uzyKan3:=licz;

END IF;

END METHOD;

ASK METHOD sreZajKanOdch(IN nrSmo: INTEGER; IN licz: REAL);

BEGIN

nr:=nrSmo;

IF nr = 0

uzyKanDev:=licz;

ELSIF nr = 1

uzyKanDev1:=licz;

ELSIF nr = 2

uzyKanDev2:=licz;

background image

ELSIF nr = 3

uzyKanDev3:=licz;

END IF;

END METHOD;

ASK METHOD sreLiczKliKol(IN nrSmo: INTEGER; IN licz: REAL);

BEGIN

nr:=nrSmo;

IF nr = 0

uzyklKol:=licz;

ELSIF nr = 1

uzyklKol1:=licz;

ELSIF nr = 2

uzyklKol2:=licz;

ELSIF nr = 3

uzyklKol3:=licz;

END IF;

END METHOD;

ASK METHOD sreLiczKliKolOdch(IN nrSmo: INTEGER; IN licz: REAL);

BEGIN

nr:=nrSmo;

IF nr = 0

uzyklKolDev:=licz;

ELSIF nr = 1

uzyklKolDev1:=licz;

ELSIF nr = 2

background image

uzyklKolDev2:=licz;

ELSIF nr = 3

uzyklKolDev3:=licz;

END IF;

END METHOD;

ASK METHOD prawdopodobienstwoObs(IN nrSmo:INTEGER;IN licz:REAL);

BEGIN

nr:=nrSmo;

IF nr = 0

uzyPstwo:=licz;

ELSIF nr = 1

uzyPstwo1:=licz;

ELSIF nr = 2

uzyPstwo2:=licz;

ELSIF nr = 3

uzyPstwo3:=licz;

END IF;

END METHOD;

ASK METHOD licznikZero(IN nrSmo:INTEGER); {zerowanie licza}

BEGIN

nr:=nrSmo;

IF nr = 0

licz:=0;

ELSIF nr = 1

licz1:=0;

background image

ELSIF nr = 2

licz2:=0;

ELSIF nr = 3

licz3:=0;

END IF;

END METHOD;

ASK METHOD SredniCzasZero(IN nrSmo:INTEGER); {zerowanie czasu
przebywania w smo}

BEGIN

nr:=nrSmo;

IF nr = 0

srCzas:=0.0;

ELSIF nr = 1

srCzas1:=0.0;

ELSIF nr = 2

srCzas2:=0.0;

ELSIF nr = 3

srCzas3:=0.0;

END IF;

END METHOD;

ASK METHOD LiczZajKanZero(IN nrSmo:INTEGER); {zerowanie licznika zajetych
kanalow}

BEGIN

nr:=nrSmo;

IF nr = 0

srKan:=0;

background image

ELSIF nr = 1

srKan1:=0;

ELSIF nr = 2

srKan2:=0;

ELSIF nr = 3

srKan3:=0;

END IF;

END METHOD;

ASK METHOD liczKliKolZero(IN nrSmo: INTEGER); {zerowanie licznika klienta w
kolejkach}

BEGIN

nr:=nrSmo;

IF nr = 0

klKol:=0;

ELSIF nr = 1

klKol1:=0;

ELSIF nr = 2

klKol2:=0;

ELSIF nr = 3

klKol3:=0;

END IF;

END METHOD;

END OBJECT;

background image

OBJECT KliObj;{Kli}

ASK METHOD Init(IN m: MonObj);

BEGIN

Monitor:= m;

END METHOD;

ASK METHOD NadajPriorytet(IN priorytet: INTEGER);

BEGIN

Priorytet:=priorytet;

END METHOD;

TELL METHOD Niecierpliwosc(IN nrSMO: INTEGER; IN czas: REAL; IN kol:
BasicGroupObj);

BEGIN

nr:=nrSMO;

WAIT DURATION czas;

ASK kol TO RemoveThis(SELF);

ASK Monitor TO liczKliMinus(nrSMO);

ASK Monitor TO liczKliKolMinus(nrSMO);

ASK Monitor TO liczKliMinus(0);

ASK Monitor TO liczKliKolMinus(0);

IF (w = 1)

OUTPUT("Gniazdo ",nrSMO,"->Kli zniecierpliwiony opuscil. Czas= ", SimTime);

END IF;

DISPOSE(SELF);

background image

ON INTERRUPT;

END WAIT;

END METHOD;

ASK METHOD zapiszCzas(IN nrSMO: INTEGER; IN czas: REAL);

BEGIN

nr:=nrSMO;

IF (nr = 0)

czasWe:=czas;

ELSIF nr=1

czasWe1:=czas;

ELSIF nr=2

czasWe2:=czas;

ELSIF nr=3

czasWe3:=czas;

END IF;

END METHOD;

END OBJECT;

OBJECT GniObj;{gniazdo}

TELL METHOD Obsluga(IN kol: BasicGroupObj);

VAR

t: REAL;

Kli: KliObj;

BEGIN

background image

WHILE ASK kol TO numberIn > 0

Kli:= ASK kol TO Remove;

ASK Monitor TO liczKliKolMinus(0);

ASK Monitor TO liczKliKolMinus(NrGniT);

Aktywne:=Aktywne+1;

ASK Monitor TO liczKanPlus(NrGniT);

ASK Monitor TO liczKanPlus(0);

IF NrGniT=1

t:=Exponential(ParametrRozkladuGniT1);

t:=ABS(t);

WAIT DURATION t;

ON INTERRUPT

END WAIT;

IF (UniformReal(0.0, 1.0)>p);

ASK Monitor TO liczKliMinus(0);

ASK Monitor TO liczKliMinus(1);

ASK kol1 TO Wstaw(Kli);

Aktywne:=Aktywne-1;

ASK Monitor TO liczKanMinus(1);

ASK Monitor TO liczKanMinus(0);

ELSE

ASK Monitor TO licznikStop(1);

ASK Monitor TO czasPrzebyKli(1,SimTime-ASK Kli TO czasWe1);

ASK Monitor TO liczKliMinus(1);

background image

Aktywne:=Aktywne-1;

ASK Monitor TO liczKanMinus(1);

ASK Monitor TO liczKanMinus(0);

IF w=1

OUTPUT("Gniazdo ",NrGniT,"->obsluzylo Klia Czas= ",

SimTime);

END IF;

ASK kol3 TO Wstaw(Kli);

END IF;

ELSIF NrGniT=2

Interrupt(Kli,"Niecierpliwosc");

t:=Erlang(ParametrRozkladuGniT1, TRUNC(ParametrRozkladuGniT2));

t:=ABS(t);

WAIT DURATION t;

ON INTERRUPT

END WAIT;

ASK Monitor TO licznikStop(2);

ASK Monitor TO czasPrzebyKli(2,SimTime-ASK Kli TO czasWe1);

ASK Monitor TO liczKliMinus(2);

Aktywne:=Aktywne-1;

ASK Monitor TO liczKanMinus(2);

ASK Monitor TO liczKanMinus(0);

background image

IF w=1

OUTPUT("Gniazdo ",NrGniT,"->obsluzylo Klia Czas= ", SimTime);

END IF;

ASK kol3 TO Wstaw(Kli);

ELSIF NrGniT=3

Interrupt(Kli,"Niecierpliwosc");

t:=Normal(ParametrRozkladuGniT1, ParametrRozkladuGniT2);

t:=ABS(t);

WAIT DURATION t;

ON INTERRUPT

END WAIT;

IF (UniformReal(0.0, 1.0)>p);

ASK Monitor TO liczKliMinus(0);

ASK Monitor TO liczKliMinus(3);

Aktywne:=Aktywne-1;

ASK Monitor TO liczKanMinus(3);

ASK Monitor TO liczKanMinus(0);

ASK kol2 TO Wstaw(Kli);

ELSE

ASK Monitor TO licznikStop(3);

ASK Monitor TO licznikStop(0);

ASK Monitor TO czasPrzebyKli(3,SimTime-ASK Kli TO czasWe1);

ASK Monitor TO czasPrzebyKli(0,SimTime-ASK Kli TO czasWe);

background image

DISPOSE(Kli);

ASK Monitor TO liczKliMinus(3);

Aktywne:=Aktywne-1;

ASK Monitor TO liczKanMinus(3);

ASK Monitor TO liczKanMinus(0);

IF w=1

OUTPUT("Gniazdo ",NrGniT,"->obsluzylo Klia Czas= ", SimTime);

END IF;

END IF;

END IF;

END WHILE;

END METHOD;

ASK METHOD Init(IN prg1: REAL; IN prg2: REAL; IN prg3: REAL; IN kan: INTEGER;
IN akt: INTEGER; IN pstwo: REAL; IN trig: TriggerObj; IN m: MonObj;IN nrg:
INTEGER);

BEGIN

ParametrRozkladuGniT1:=prg1;

ParametrRozkladuGniT2:=prg2;

ParametrRozkladuGniT3:=prg3;

Kany:= kan;

Aktywne:= akt;

Trigger := trig;

Monitor:=m;

p:=pstwo;

background image

NrGniT:=nrg;

END METHOD;

END OBJECT;

OBJECT GenObj; {generator}

ASK METHOD Init(IN prg1: REAL; IN prg2: REAL; IN lk: INTEGER; IN prp1:REAL;
IN prp2:REAL; IN m: MonObj; IN nrgen: INTEGER);

BEGIN

ParametrRozkladuPaczki1:= prp1;

ParametrRozkladuPaczki2:=prp2;

Monitor:=m;

ParametrRozkladuGeneratora1:= prg1;

ParametrRozkladuGeneratora2:= prg2;

LiczbaKliowDoWygenerowania:= lk;

NrGeneratora:=nrgen;

END METHOD;

TELL METHOD Generowanie;

VAR

Kli: KliObj;

paczkaInt1: INTEGER;

background image

ileDoKonca1: INTEGER;

paczkaReal1: REAL;

i: INTEGER;

j: INTEGER;

sumaWygenerowanych: INTEGER;

czas1: REAL;

BEGIN

sumaWygenerowanych:=0;

WHILE (sumaWygenerowanych<LiczbaKliowDoWygenerowania)

IF (NrGeneratora=1)

paczkaReal1:=Erlang(ParametrRozkladuPaczki1,

TRUNC(ParametrRozkladuPaczki2));

paczkaReal1:=ABS(paczkaReal1);

ELSIF (NrGeneratora=2)

paczkaReal1:=Normal(ParametrRozkladuPaczki1,

ParametrRozkladuPaczki2);

paczkaReal1:=ABS(paczkaReal1);

END IF;

paczkaInt1:=TRUNC(paczkaReal1);

sumaWygenerowanych:=sumaWygenerowanych+paczkaInt1;

ileDoKonca1:=LiczbaKliowDoWygenerowania-sumaWygenerowanych;

IF ileDoKonca1<0

paczkaInt1:=paczkaInt1+ileDoKonca1;

END IF;

background image

IF (NrGeneratora=1)


czas1:=Weibull(ParametrRozkladuGeneratora1,ParametrRozkladuGeneratora

2);

czas1:=ABS(czas1);

ELSIF (NrGeneratora=2)

czas1:=Exponential(ParametrRozkladuPaczki1);

czas1:=ABS(czas1);

END IF;

WAIT DURATION czas1

ON INTERRUPT

END WAIT;

FOR j:=1 TO paczkaInt1

NEW (Kli);

ASK Monitor TO licznikStart(0);

ASK Kli TO NadajPriorytet(UniformInt(0,10));

ASK Kli TO Init(monn);

Czas:=SimTime;

ASK Kli TO zapiszCzas(0,Czas);

IF w=1

OUTPUT("Generator ",NrGeneratora,"->wygenerowal Klia

Czas= ", SimTime);

END IF;

IF NrGeneratora=1

ASK kol1 TO Wstaw(Kli);

ELSIF NrGeneratora=2

ASK kol2 TO Wstaw(Kli);

background image

END IF;

END FOR;

END WHILE;

END METHOD;

END OBJECT;

OBJECT kol1Obj;{kolejka 1}

ASK METHOD Wstaw(INOUT elem: KliObj);

VAR

czasNiecierpliwosci:REAL;

BEGIN

Add(elem);

ASK Monitor TO licznikStart(1);

ASK Monitor TO liczKliKolPlus(0);

ASK Monitor TO liczKliKolPlus(1);

ASK elem TO zapiszCzas(1,SimTime);

ASK Monitor TO liczKliPlus(0);

ASK Monitor TO liczKliPlus(1);

licz:=licz+1;

czasNiecierpliwosci:= ASK Random TO Exponential(1.0/50.5);

czasNiecierpliwosci:=ABS(czasNiecierpliwosci);

IF ASK GniT[NrKolejki] TO Aktywne < ASK GniT[NrKolejki] TO Kany

TELL GniT[NrKolejki] TO Obsluga(SELF);

END IF;

END METHOD;

background image

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m:
MonObj; IN nrk: INTEGER);

BEGIN

Pojemnosc:=poj;

Random := ra;

Monitor:=m;

licz:= 0;

Trigger:=trig;

NrKolejki:=nrk;

END METHOD;

ASK METHOD ObjTerminate();

VAR

elem:ANYOBJ;

BEGIN

FOREACH elem IN SELF

RemoveThis(elem);

DISPOSE(elem);

END FOREACH;

INHERITED ObjTerminate();

END METHOD;

ASK METHOD RemoveThis(IN kto: ANYOBJ);

BEGIN

INHERITED RemoveThis(kto);

background image

END METHOD;

ASK METHOD Remove():ANYOBJ;

BEGIN

ASK Trigger TO Release;

RETURN INHERITED Remove();

END METHOD;

END OBJECT;

OBJECT kol2Obj;{kolejka 2}

ASK METHOD Wstaw(INOUT elem: KliObj);

VAR

czasNiecierpliwosci:REAL;

BEGIN

IF numberIn < Pojemnosc

Add(elem);

ASK Monitor TO licznikStart(2);

ASK Monitor TO liczKliKolPlus(0);

ASK Monitor TO liczKliKolPlus(2);

ASK elem TO zapiszCzas(2,SimTime);

ASK Monitor TO liczKliPlus(0);

ASK Monitor TO liczKliPlus(2);

licz:=licz+1;

czasNiecierpliwosci:=ASK Random TO Erlang(20.0,TRUNC(1.0));

background image

czasNiecierpliwosci:=ABS(czasNiecierpliwosci);

IF ASK GniT[NrKolejki] TO Aktywne < ASK GniT[NrKolejki] TO Kany

TELL GniT[NrKolejki] TO Obsluga(SELF);

END IF;

ELSE

DISPOSE(elem);

END IF;

END METHOD;

ASK METHOD Rank(IN a:ANYOBJ;IN b:ANYOBJ):INTEGER;

VAR

Kli1:KliObj;

Kli2:KliObj;

BEGIN

Kli1:=a;

Kli2:=b;

IF ASK Kli1 TO Priorytet < ASK Kli2 TO Priorytet

RETURN -1;

END IF;

IF ASK Kli1 TO Priorytet > ASK Kli2 TO Priorytet

RETURN 1;

END IF;

RETURN 0;

background image

END METHOD;

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m:
MonObj; IN nrk: INTEGER);

BEGIN

Pojemnosc:=poj;

Random := ra;

Monitor:=m;

Trigger:=trig;

licz:= 0;

NrKolejki:=nrk;

END METHOD;

ASK METHOD ObjTerminate();

VAR

elem:ANYOBJ;

BEGIN

FOREACH elem IN SELF

RemoveThis(elem);

DISPOSE(elem);

END FOREACH;

INHERITED ObjTerminate();

END METHOD;

ASK METHOD RemoveThis(IN kto: ANYOBJ);

BEGIN

INHERITED RemoveThis(kto);

background image

END METHOD;

ASK METHOD Remove():ANYOBJ;

BEGIN

ASK Trigger TO Release;

RETURN INHERITED Remove();

END METHOD;

END OBJECT;

OBJECT kol3Obj;{kolejka 3}

ASK METHOD Wstaw(INOUT elem: KliObj);

VAR

czasNiecierpliwosci:REAL;

BEGIN

Add(elem);

ASK Monitor TO licznikStart(3);

ASK Monitor TO liczKliKolPlus(0);

ASK Monitor TO liczKliKolPlus(3);

ASK elem TO zapiszCzas(3,SimTime);

ASK Monitor TO liczKliPlus(0);

ASK Monitor TO liczKliPlus(3);

licz:=licz+1;

czasNiecierpliwosci:= ASK Random TO Normal(1.0,50.0);

czasNiecierpliwosci:=ABS(czasNiecierpliwosci);

background image

IF ASK GniT[NrKolejki] TO Aktywne < ASK GniT[NrKolejki] TO Kany

TELL GniT[NrKolejki] TO Obsluga(SELF);

END IF;

END METHOD;

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m:
MonObj; IN nrk: INTEGER);

BEGIN

Pojemnosc:=poj;

Random := ra;

Trigger:=trig;

Monitor:=m;

licz:= 0;

NrKolejki:=nrk;

END METHOD;

ASK METHOD ObjTerminate();

VAR

elem:ANYOBJ;

BEGIN

FOREACH elem IN SELF

RemoveThis(elem);

DISPOSE(elem);

END FOREACH;

background image

INHERITED ObjTerminate();

END METHOD;

ASK METHOD RemoveThis(IN kto: ANYOBJ);

BEGIN

INHERITED RemoveThis(kto);

END METHOD;

ASK METHOD Remove():ANYOBJ;

BEGIN

ASK Trigger TO Release;

RETURN INHERITED Remove();

END METHOD;

END OBJECT;

VAR

ran: RandomObj;

trigg:TriggerObj;

io: StreamObj;

znak:CHAR;

textLine:STRING;

daneWej:INTEGER;

ile:INTEGER;

background image

a: INTEGER;

i: INTEGER;

p1rg1:REAL;{ Generator 1}

p2rg1:REAL;

lkg1:INTEGER;

p1rp1:REAL;

p2rp1:REAL;

p1rg2:REAL;{ Generator 2}

p2rg2:REAL;

lkg2:INTEGER;

p1rp2:REAL;

p2rp2:REAL;

p1rgn1: REAL;{ Gniazdo 1}

p2rgn1: REAL;

p3rgn1: REAL;

p1rgn2: REAL;{ Gniazdo 2}

p2rgn2: REAL;

p3rgn2: REAL;

p1rgn3: REAL;{ Gniazdo 3}

p2rgn3: REAL;

p3rgn3: REAL;

pojemnosck2:INTEGER;{Kolejka 2}

BEGIN

NEW(trigg);

NEW(monn);

NEW(ran);

background image

NEW(GenT, 1..2);

NEW(GenT[1]);

NEW(GenT[2]);

NEW(GniT, 1..3);

NEW(GniT[1]);

NEW(GniT[2]);

NEW(GniT[3]);

NEW(kol1);

NEW(kol2);

NEW(kol3);

NEW(io);

ASK io TO Open("data.txt",Input);

WHILE NOT (ASK io eof)

ASK io TO ReadLine(textLine);

p1rg1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rg1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p1rp1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rp1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

background image

lkg1:=STRTOINT(textLine);

ASK io TO ReadLine(textLine);

p1rg2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rg2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p1rp2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rp2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

lkg2:=STRTOINT(textLine);

ASK io TO ReadLine(textLine);

p1rgn1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rgn1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p3rgn1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p1rgn2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rgn2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

background image

p3rgn2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p1rgn3:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rgn3:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p3rgn3:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

pojemnosck2:=STRTOINT(textLine);

ASK io TO ReadLine(textLine);

ile:=STRTOINT(textLine);

ASK io TO ReadLine(textLine);

w:=STRTOINT(textLine);

END WHILE;

ASK io TO Close;

DISPOSE(io);

background image

OUTPUT("");

ASK monn TO MonPocz();

ASK GenT[1] TO Init(p1rg1, p2rg1, lkg1, p1rp1, p2rp1, monn,1);

ASK GenT[2] TO Init(p1rg2, p2rg2, lkg2, p1rp2, p2rp2, monn,2);

ASK GniT[1] TO Init(p1rgn1,p2rgn1,p3rgn1,4,0,0.5,trigg, monn,1);

ASK GniT[2] TO Init(p1rgn2,p2rgn2,p3rgn2,1,0,1.0,trigg, monn,2);

ASK GniT[3] TO Init(p1rgn3,p2rgn3,p3rgn3,2,0,0.5,trigg, monn,3);

ASK kol1 TO Init(ran, 0, trigg, monn,1);

ASK kol2 TO Init(ran, pojemnosck2, trigg, monn,2);

ASK kol3 TO Init(ran, 0, trigg, monn,3);

FOR i:=0 TO ile

TELL GenT[1] TO Generowanie();

TELL GenT[2] TO Generowanie();

StartSimulation();

ResetSimTime(0.0);

ASK monn TO liczkli(0,ASK GETMONITOR(ASK monn TO licz,ITimedStatObj)

TO Mean());

ASK monn TO odchkli(0,ASK GETMONITOR(ASK monn TO

licz,ITimedStatObj) TO StdDev());

background image

ASK monn TO liczkli(1,ASK GETMONITOR(ASK monn TO

licz1,ITimedStatObj) TO Mean());

ASK monn TO odchkli(1,ASK GETMONITOR(ASK monn TO

licz1,ITimedStatObj) TO StdDev());

ASK monn TO liczkli(2,ASK GETMONITOR(ASK monn TO

licz2,ITimedStatObj) TO Mean());

ASK monn TO odchkli(2,ASK GETMONITOR(ASK monn TO

licz2,ITimedStatObj) TO StdDev());

ASK monn TO liczkli(3,ASK GETMONITOR(ASK monn TO

licz3,ITimedStatObj) TO Mean());

ASK monn TO odchkli(3,ASK GETMONITOR(ASK monn TO

licz3,ITimedStatObj) TO StdDev());

ASK monn TO srCzasKli(0,ASK GETMONITOR(ASK monn TO

srCzas,RStatObj) TO Mean());

ASK monn TO sreCzasOdch(0,ASK GETMONITOR(ASK monn TO

srCzas,RStatObj) TO StdDev());

ASK monn TO srCzasKli(1,ASK GETMONITOR(ASK monn TO

srCzas1,RStatObj) TO Mean());

ASK monn TO sreCzasOdch(1,ASK GETMONITOR(ASK monn TO

srCzas1,RStatObj) TO StdDev());

ASK monn TO srCzasKli(2,ASK GETMONITOR(ASK monn TO

srCzas2,RStatObj) TO Mean());

ASK monn TO sreCzasOdch(2,ASK GETMONITOR(ASK monn TO

srCzas2,RStatObj) TO StdDev());

ASK monn TO srCzasKli(3,ASK GETMONITOR(ASK monn TO

srCzas3,RStatObj) TO Mean());

ASK monn TO sreCzasOdch(3,ASK GETMONITOR(ASK monn TO

srCzas3,RStatObj) TO StdDev());

ASK monn TO sreZajKan(0,ASK GETMONITOR(ASK monn TO

srKan,ITimedStatObj) TO Mean());

ASK monn TO sreZajKanOdch(0,ASK GETMONITOR(ASK monn TO

srKan,ITimedStatObj) TO StdDev());

ASK monn TO sreZajKan(1,ASK GETMONITOR(ASK monn TO

srKan1,ITimedStatObj) TO Mean());

background image

ASK monn TO sreZajKanOdch(1,ASK GETMONITOR(ASK monn TO

srKan1,ITimedStatObj) TO StdDev());

ASK monn TO sreZajKan(2,ASK GETMONITOR(ASK monn TO

srKan2,ITimedStatObj) TO Mean());

ASK monn TO sreZajKanOdch(2,ASK GETMONITOR(ASK monn TO

srKan2,ITimedStatObj) TO StdDev());

ASK monn TO sreZajKan(3,ASK GETMONITOR(ASK monn TO

srKan3,ITimedStatObj) TO Mean());

ASK monn TO sreZajKanOdch(3,ASK GETMONITOR(ASK monn TO

srKan3,ITimedStatObj) TO StdDev());

ASK monn TO sreLiczKliKol(0,ASK GETMONITOR(ASK monn TO

klKol,ITimedStatObj) TO Mean());

ASK monn TO sreLiczKliKolOdch(0,ASK GETMONITOR(ASK monn TO

klKol,ITimedStatObj) TO StdDev());

ASK monn TO sreLiczKliKol(1,ASK GETMONITOR(ASK monn TO

klKol1,ITimedStatObj) TO Mean());

ASK monn TO sreLiczKliKolOdch(1,ASK GETMONITOR(ASK monn TO

klKol1,ITimedStatObj) TO StdDev());

ASK monn TO sreLiczKliKol(2,ASK GETMONITOR(ASK monn TO

klKol2,ITimedStatObj) TO Mean());

ASK monn TO sreLiczKliKolOdch(2,ASK GETMONITOR(ASK monn TO

klKol2,ITimedStatObj) TO StdDev());

ASK monn TO sreLiczKliKol(3,ASK GETMONITOR(ASK monn TO

klKol3,ITimedStatObj) TO Mean());

ASK monn TO sreLiczKliKolOdch(3,ASK GETMONITOR(ASK monn TO

klKol3,ITimedStatObj) TO StdDev());

ASK monn TO licznikPraw(1);

ASK monn TO prawdopodobienstwoObs(1,ASK monn TO pstwo1);

ASK monn TO licznikPraw(2);

ASK monn TO prawdopodobienstwoObs(2,ASK monn TO pstwo2);

ASK monn TO licznikPraw(0);

ASK monn TO licznikPraw(3);

background image

ASK monn TO prawdopodobienstwoObs(0,ASK monn TO pstwo);

ASK monn TO prawdopodobienstwoObs(3,ASK monn TO pstwo3);

ASK (GETMONITOR(ASK monn TO licz,ITimedStatObj)) TO Reset();

ASK monn TO licznikZero(0);

ASK (GETMONITOR(ASK monn TO licz1,ITimedStatObj)) TO Reset();

ASK monn TO licznikZero(1);

ASK (GETMONITOR(ASK monn TO licz2,ITimedStatObj)) TO Reset();

ASK monn TO licznikZero(2);

ASK (GETMONITOR(ASK monn TO licz3,ITimedStatObj)) TO Reset();

ASK monn TO licznikZero(3);

ASK (GETMONITOR(ASK monn TO srCzas,RStatObj)) TO Reset();

ASK monn TO SredniCzasZero(0);

ASK (GETMONITOR(ASK monn TO srCzas1,RStatObj)) TO Reset();

ASK monn TO SredniCzasZero(1);

ASK (GETMONITOR(ASK monn TO srCzas2,RStatObj)) TO Reset();

ASK monn TO SredniCzasZero(2);

ASK (GETMONITOR(ASK monn TO srCzas3,RStatObj)) TO Reset();

ASK monn TO SredniCzasZero(3);

ASK (GETMONITOR(ASK monn TO srKan,ITimedStatObj)) TO Reset();

ASK monn TO LiczZajKanZero(0);

ASK (GETMONITOR(ASK monn TO srKan1,ITimedStatObj)) TO Reset();

ASK monn TO LiczZajKanZero(1);

ASK (GETMONITOR(ASK monn TO srKan2,ITimedStatObj)) TO Reset();

background image

ASK monn TO LiczZajKanZero(2);

ASK (GETMONITOR(ASK monn TO srKan3,ITimedStatObj)) TO Reset();

ASK monn TO LiczZajKanZero(3);

ASK (GETMONITOR(ASK monn TO klKol,ITimedStatObj)) TO Reset();

ASK monn TO liczKliKolZero(0);

ASK (GETMONITOR(ASK monn TO klKol1,ITimedStatObj)) TO Reset();

ASK monn TO liczKliKolZero(1);

ASK (GETMONITOR(ASK monn TO klKol2,ITimedStatObj)) TO Reset();

ASK monn TO liczKliKolZero(2);

ASK (GETMONITOR(ASK monn TO klKol3,ITimedStatObj)) TO Reset();

ASK monn TO liczKliKolZero(3);

END FOR;

znak:= ReadKey();

END MODULE.


Wyszukiwarka

Podobne podstrony:
PSy - Sprawozdanie, WAT, SEMESTR V, podstawy symulacji, 17 moj
I9G2S1 Wegrecki sprawozdanie, WAT, SEMESTR V, podstawy symulacji
Sprawozdanie 1 Podstawowe pomiary elektryczne
egzamin 00, WAT, SEMESTR V, podstawy symulacji, psy, symulacja, symulacja egzamin
hyraulika, sprawozdanie1, Podstawy teoretyczne
Podstawy Symulacji sprawko
Podstawy Symulacji 1
bank-program, WAT, SEMESTR V, podstawy symulacji, projekty, PS, PSym
Ćw.2.Cyfrowy regulator PID, Elektrotechnika - notatki, sprawozdania, podstawy automatyki i regulacji
Wykład 2, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, sprawozdania, Sprawozdania,
sprawozdanie automaty nr 3(2), Uczelnia, Semestr 5, Automatyka, Sprawozdanie 3 Podstawy Automatyki L
zadania przyklady, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, sprawozdania, Spra
#1 Sprawozdanie.Podstawy.Elektroniki(zukikiziu)
2008-Laboratorium-zadania, WAT, SEMESTR V, podstawy symulacji, projekty, PS, PSym
Podstawy Symulacji sprawko
ROPRM - Sprawozdanie ćw1 Symulator Manipulatora Kartezjańskiego, Automatyka i robotyka, Inzynierka,

więcej podobnych podstron