modsim symulacja

background image

Metody symulacyjne

Zaawansowane metody symulacji

dyskretnej

background image

Elementy mechanizmu

symulacyjnego w MODSIM

II

Kluczowymi elementami mechanizmu
symulacji są:

procedura upływu czasu

Pending List

czas symulacyjny

metody i instrukcje umożliwiające upływ
czasu
symulacyjnego

background image

Procedura upływu czasu

Start symulacji

Wybierz obiekt

z najmniejszym

czasem planowanej

czynności tp

Ustaw ’ts’ na ’tp’

Zidentyfikuj

metodę

dla planowanej

czynności

Usuń czynność

z listy planowanych

aktywności obiektu

Wykonaj metodę

planowanej

czynności

Ko

ni

ec

sy

m

ul

ac

ji

Czy koniec?

NIE

TAK

background image

Pending List

rozszerzona lista planowanych czynności

zestawiona z obiektów uporządkowanych
rosnąco wg czasu najbliższej planowanej
czynności

z każdym obiektem skojarzona kolejka
uporządkowanych czynności (tzw. lista
aktywności)

background image

Pending List

reorganizowana każdorazowo:

po zaplanowaniu nowej czynności

po rozpoczęciu/wznowieniu wykonania
dowolnej czynności

po wstrzymaniu wykonywania dowolnej
czynności

po zakończeniu wykonywania dowolnej
czynności

po przerwaniu dowolnej czynności

na zakończenie symulacji

background image

Pending List

Ob. A

Ob. D

Ob. C

Ob. B

Akt. 1 - 5

Akt. 5 - 25

Akt. 3 - 120

Akt. 11 - 15

Akt. 4 - 45

Akt. 22 - 26

Akt. 30 - 35

Akt. 7 - 46

Akt. 40 - 100

L
i
s
t
a

a
k
t
y
w
n
o
ś
c
i

Przykład funkcjonowania

Akt. 1 - 5

Aktualny czas symulacji :

5

background image

Pending List

Ob. D

Ob. A

Ob. C

Ob. B

Akt. 5 - 25

Akt. 3 - 120

Akt. 11 - 15

Akt. 4 - 45

Akt. 22 - 26

Akt. 30 - 35

Akt. 7 - 46

Akt. 40 - 100

L
i
s
t
a

a
k
t
y
w
n
o
ś
c
i

Przykład funkcjonowania

Aktualny czas symulacji : 5

Akt. 11 - 15

Aktualny czas symulacji :

15

background image

Pending List

Ob. D

Akt. 4 - 45

Ob. A

Akt. 5 - 25

Akt. 3 - 120

Ob. C

Akt. 22 - 26

Akt. 30 - 35

Akt. 7 - 46

L
i
s
t
a

a
k
t
y
w
n
o
ś
c
i

Przykład funkcjonowania

Aktualny czas symulacji : 15

Aktualny czas symulacji :

25

Ob. B

Akt. 40 - 100

Akt. 5 - 25

background image

Czas symulacyjny

zazwyczaj różny od astronomicznego

wewnętrzne sterowanie zegarem

modyfikowanie wartości przez procedurę
upływu czasu

umowna (zależna od interpretacji) jednostka
czasu

możliwość realizacji wielu czynności w jednej
chwili

brak możliwości zmniejszania wartości czasu

symulacji

(nie ma powrotów do przeszłości)

background image

Procedury sterowania

symulacją

Uruchomienie upływu czasu (rozpoczęcie
symulacji):

StartSimulation;

Wymuszenie zakończenia symulacji:

StopSimulation;

Odczytanie aktualnej wartości czasu
symulacyjnego:

SimTime(): REAL;

Ustalenie wartości początkowej czasu:

ResetSimTime (IN newTime: REAL);

Odczytanie liczby zaplanowanych czynności:

NumActivities (IN object: ANYOBJ): INTEGER;

background image

Procedury sterowania

symulacją

Odczytanie liczby obiektów w Pending List:

NumObjPending() : INTEGER;

Odczytanie liczby wszystkich zaplanowanych
czynności w listach aktywności obiektów Pending List:

NumActPending() : INTEGER;

Odczytanie liczby aktywności związanych z
sekwencją WAIT FOR …:

NumWAITFOR() : INTEGER;

Odczytanie zawartości Pending List (opcjonalnie
także list aktywności obiektów):

PendingListDump(IN DoActList: BOOLEAN);

Zmienna

Timescale : REAL

(dostępna przez import)

określająca

liczbę rzeczywistych sekund / jednostkę

czasu symulacji

background image

Realizacja upływu czasu

Asynchroniczne uruchomienie metody

...
TELL obiekt TO metoda (lista argumentów ’IN’)

[IN czas]
kolejne instrukcje

...

W wyniku takiego wywołania następuje

wstawienie referencji do ’obiektu’ w Pending
List

wstawienie identyfikatora wywołanej metody
do listy aktywności ’obiektu’

bezzwłoczne przejście do kolejnych instrukcji
kodu programu

(bez rozpoczęcia wykonywania

metody)

background image

Realizacja upływu czasu

Wywołanie takie stosuje się:

we wszystkich metodach (ASK, TELL i
WAITFOR)

można podać tylko parametry wejściowe IN

Ciało metody TELL może zawierać sekwencję
upływu czasu:

WAIT DURATION czas

{stan aktywności, płynie

czas}

{po „odczekaniu” czasu}
sekwencja instrukcji

ON INTERRUPT

{po przerwaniu oczekiwania}
sekwencja instrukcji

END WAIT;

background image

Realizacja upływu czasu

Instrukcje sterujące upływem czasu:

WAIT DURATION czas

{stan aktywności, płynie

czas}

{po „odczekaniu” czasu}

sekwencja instrukcji

ON INTERRUPT

{po przerwaniu oczekiwania}

sekwencja instrukcji

END WAIT;

WAIT FOR obiekt TO metoda

{stan aktywności, płynie

czas}

{po „normalnym” zakończeniu procesu}

sekwencja instrukcji

ON INTERRUPT

{po wymuszeniu zakończenia procesu}

sekwencja instrukcji

END WAIT;

background image

Realizacja upływu czasu

Synchroniczne wywołanie metody
(procesu)

Gdy dwie lub więcej aktywności obiektu
wzajemnie zależą od siebie, można je
synchronizować poprzez sekwencję:

...
TELL obiekt TO metoda (lista argumentów ’IN’)

[IN czas]

...

a w kodzie źródłowym metody umieszczenie bloku
instrukcji:

WAIT FOR obiekt2 TO metoda2 (lista

argumentów ’IN’)

...instrukcje do wykonania po przejęciu

sterowania

END WAIT;

{’obiekt’ oczekuje na wykonanie przez ’obiekt2’
’metody2’
następnie realizuje określone wewnątrz
instrukcje}

background image

Realizacja upływu czasu

Synchroniczne wywołanie metody
(procesu) c.d.

Analogiczny efekt po wywołaniu w instrukcji

WAIT

FOR

metody typu WAITFOR:

Różnica

- ’WAITFOR’ można wywoływać tylko w

powyższej sekwencji, natomiast ’TELL’ ma tylko
parametry wejściowe IN

background image

Sterowanie procesami

Odwołania do metod

każda wywołana metoda otrzymuje swój
niepowtarzalny identyfikator typu rekordowego

ACTID

VAR

actid : ACTID;
...

BEGIN

actid := TELL obiekt TO Metoda();
...

wykorzystanie ACTID w bloku

WAIT FOR actid .... END WAIT;

wykorzystanie ACTID w sekwencji INTERRUPT

background image

Sterowanie procesami

Przerywanie aktywności (oczekiwania metod)

Przerwanie wszystkich aktywności w obiekcie

object

:

InterruptAll(IN object : ANYOBJ);

Przerwanie konkretnej aktywności o identyfikatorze

activity:

InterruptMethod(IN activity : ACTID);

Przerwanie pierwszej napotkanej w Pending List
aktywności o nazwie

methName

w obiekcie

object:

Interrupt(IN object : ANYOBJ; IN methName :

STRING);

Uwaga :

próba przerwania nieistniejącej czynności nie

powoduje błędu

’runtime error’ generowany jest przy braku
sekwencji ’ON INTERRUPT’ w przerywanej
aktywności metody

background image

Sterowanie procesami

Przykład

TELL METHOD Ladowanie;

...
WAIT DURATION 10.0

...

ON INTERRUPT

...

END WAIT;

END METHOD;

id := TELL samolot TO Ladowanie;

InterruptMethod (id);

{przerwie dokładnie ’id’}

Interrupt (samolot, „Ladowanie”); {przerwie pierwszą
napotkaną}

background image

Sterowanie procesami

Synchronizacja procesów symulacyjnych

Klasa TriggerObj

Metody:

WAITFOR METOD Fire()

ASK METHOD Release()

ASK METHOD NumWaiting():INTEGER

// Proces 1

WAITFOR tr TO Fire
ON INTERRUPT
END WAIT;

// Proces 2

ASK tr TO
Release();

background image

Sterowanie metodami

Wymuszone wewnątrz metody zakończenie
czynności

Realizowane przez instrukcję:

Terminate;

Przykład:


IF SimTime() > czasStop

Terminate;

END IF;


Document Outline


Wyszukiwarka

Podobne podstrony:
modsim symulacja
symulacja modsim grafika i animacja
symulacja modsim monitory
symulacja modsim grafika i animacja
Modsim Skladnia
SYMULACJA
mgr cw 2 symulacja zmian stanu zasobów 2010
prognozowanie i symulacje wyklad (25 str)
Nabici w kapsułę – bezsens treningów polskich pilotów na rosyjskich symulatorach
Środowisko programowe do symulacji zjawiska tunelowania
,Modelowanie i symulacja system Nieznany (3)
Uczenie się przez symulację, PEDAGOGIKA, Metodyka nauczania przedmiotów pedagogicznych
Program - PROGNOZOWANIE I SYMULACJA, STUDIA, prognozowanie
prognozowanie i symulacje
projekt symulacje pspice polak
SYMULACJA KOMPUTEROWA OBWODÓW ELEKTRYCZNYCH
M5 Modelowanie i symulacja silnika wrzecionowego SM

więcej podobnych podstron