• Nie Znaleziono Wyników

REALIZACJA STRUKTUR SYMULACYJNYCH W JĘZYKU TURBO PASCAL DLA POTRZEB MODELU I SYMULACYJNEGO RUCHU POCIĄGÓW

N/A
N/A
Protected

Academic year: 2022

Share "REALIZACJA STRUKTUR SYMULACYJNYCH W JĘZYKU TURBO PASCAL DLA POTRZEB MODELU I SYMULACYJNEGO RUCHU POCIĄGÓW"

Copied!
22
0
0

Pełen tekst

(1)

ZESZYTY NAUKOWE POLITECHNIKI ŚLĄSKIEJ

S e r i a : TRANSPORT z. 16 Nr k o l. 1100

1990

S t a n i s ł a w KRAWIEC

REALIZACJA STRUKTUR SYMULACYJNYCH W JĘZYKU TURBO PASCAL DLA POTRZEB MODELU I SYMULACYJNEGO RUCHU POCIĄGÓW

S t r e s z c z e n i e . W a r t y k u l e p rz e d s ta w io n o r e a l i z a c j ę s t r u k t u r y s y m u la c y jn e j w ję z y k u Turbo PASCAL v. 5. O. P rz e d sta w io n o z asad y t w o rz e n ia moduł u SI MULATI ON, moduł u SIMPROCESS, i =1.. . LPROCESÓW dl a ww. s t r u k t u r y o r a z z a s a d y k o m u n ik acji m iędzy o b ie k ta m i tworzonymi podczas r e a l i z a c j i p ro c e s u sy m u lacy jn eg o . Ja k o p r z y k ła d w y k o rzy stan ia z r e a l i z o w a n e j s t r u k t u r y sy m u la c y jn e j- podano s t r u k t u r ę modelu sy m u la c y jn e g o do s y m u la c ji ru c h u pociągów na l i n i i Kolejowego Ruchu Regi o n aln eg o .

1. Wprowadzeni e

Zespół pracowników I n s t y t u t u T r a n s p o r tu P o l i t e c h n i k i ' Ś l ą s k i e j z r e a l i z o w a ł w l a t a c h 1986-1989 model s y m u la c y jn y ru c h u pociągów na s i e c i k o le jo w e j d l a p o t r z e b r e g u l a c j i ru c h u [4 3 . R e a l i z a c j a k o le jn y c h etapów ty c h p r a c , prowadzonych w ramach program u badawczego R P .I .0 9 , d o p ro w a d z iła do s tw o r z e n ia dwóch z a s a d n ic z y c h modułów oprogram ow ania sym ulacyjnego:

- modułu MODEL, sy m u lu ją c e g o r u c h pociągów na dowolnym fra g m e n c ie s i e c i k o le jo w e j [ 1 , 2 , 3 , 4 , 5 3 ;

- modułu MAPA, odw zorowującego w posób dynamiczny ru c h pociągów na symulowanym fra g m e n c ie s i e c i k o le jo w e j [ 1 5 ,1 6 ,1 7 ,1 8 3 .

C a ło ść oprogram ow ania z r e a liz o w a n o w ję z y k u LOGLAN w ramach p ra c pośw ięconych te s to w a n iu te g o ję z y k a na m ikrokom puterze IBM PC, z re a liz o w a n e g o p rz e z z e s p ó ł pracowników I n s t y t u t u In fo rm a ty k i U n iw e rsy te tu W arszawskiego pod kierow nictw em p r o f . A. S a lw ic k ie g o . W 1989 roku z r e a liz o w a n o w a r ia n t dwukomputerowy [1 7 3 , u m o ż liw ia ją c y w s p ó łd z ia ła n ie modułu MODEL o r a z MAPA. Ze względu na o g r a n i c z e n i a i n t e r p r e t e r a jęz y k a LOGLAN n i e u d a ło s i ę z i n t e g r o w a n ie c a łe g o oprogramowania w ramach w a ria n tu jednokom puterow ego. Ze względu na brak e fe k ty w n e j im p le m e n ta c ji k o m p ila to ra LOGLAN-u do r e a l i z a c j i z in te g ro w a n e g o modelu ru c h u pociągów na p r z y k ła d z ie nowo p r o je k to w a n e j l i n i i KRR po stan o w io n o w y k o rzy stać za so b y Języka Turbo PASCAL v . 5 . 0 , zachow ując je d n a k " lo g la n o w s k l" s t y l programowania obi ek t owego.

W a r t y k u l e poprzednim n i n i e j s z e g o z e s z y t u Cl 93 p rz e d s U w : ono

(2)

1Q0 S t a n is ł aw Krawiec

m ożliw ości r e a l i z a c j i o d pow iednika lo g la n o w s k ie g o modułu SIMULATION na b a z i e ję z y k a Turbo PASCAL, co ł ą c z n i e z e standardow ym i m ożliw ościam i w e r s j i 5 . 0 te g o ję z y k a u m o ż liw iło s t w o r z e n i e s t r u k t u r y s y m u la c y jn e j, u m o ż liw ia ją c e j s to s o w a n ie z i s t o t y i f i l o z o f i i metod program ow ania obi ek t owego.

£. S t r u k t u r a programu sy m u la c y jn e g o w języku T urbo PASCAL

Ogólna s t r u k t u r a program u sy m u la c y jn e g o w ję z y k u T urbo PASCAL p r z e d s ta w io n a z o s t a ł a w [193. P o n iż ę j p rz e d s ta w io n o s t r u k t u r ę program u s y m u la c y jn e g o , b ę d ą c ą podstawową w e r s j ą budowy d l a r e a l i z a c j i te s to w e g o program u sy m u la c y jn e g o , a n a s t ę p n i e modelu sy m u la c y jn e g o ru c h u pociągów.

' Pr ogr am SYMULACJA PROCESÓW

DYSKRETNYCH

-

---

1 1

i i

UNIT SIMULATION

i ! r

I

UNIT SIM2PR0CES

UNIT SIMnPRCCES

R y s . l . Bazowa s t r u k t u r a program u sy m u la c y jn e g o F i g . l . A b a s e s t r u c t u r e o f s i m u l a t i o n programm

Program głów ny, c z y l i program SYMULACJA_PROCESÓW_DYSKRETNYCH s p e ł n i a n a s t ę p u j ą c e f u n k c je :

- w iąże w s z y s tk ie moduły w y s tę p u ją c e w modelu sym ulacyjnym , kończy wykonywanie program u s y m u la c y jn e g o .

-Bazowa s t r u k t u r a t e g o program u może być n a s t ę p u ją c a :

PROGRAM SYMULACJA_PROCESÓW_DYSKRĘTNYCH;

USES SIMULATION. SI Ml PROCES, SIM2PROCES. . . . ,SIMnPROCES;

BEGIN

(3)

Realiz ac ja struktur symulacyjnych.

PROCES;

{ z a i n i c j o w a n i e s y m u la c ji p o p rz e z wywołanie p ro c e d u ry PROCES z UNIT-u SIMULATIOtO

WRITELNC * KONI EC SYMULACJI _PROCESÓW_DYSKRĘTNYCH ’ J ; END. {PROGRAM SYMULĄCJA_PROCESÓW_DYSKRĘTNYCH>

UNIT SIMULATION s p e ł n i a . r o l ę lo g la n o w s k ie g o modułu SIMULATION. S t r u k t u r a bazowa t e g o modułu może być p r z e d s ta w io n a w sp o só b poglądowy, choć n ie f o r m a ln y n a s t ę p u j ą c o :

UNIT SIMULATION;

INTERFACE CONST

MAXYMALNA_LICZBA_PROCESÓW= {szacow ana z g ó ry np. 100>

CZAS_AKTUALNY: LONGI NT= { c z a s początkow y np. 0>

IND: INTEGER = O {wskaźnik p r o c e s u aktyw nego!

PORZĄDKOWANI £_TABLI CY _PRCESÓW= FALSE;

TYPE

TYP_NAZWY_PROCESU = CPROCES_l, PROCES_2 PROCES_NJ ; { i l o ś ć nazw procesów d l a k o n k re tn e g o modelu j e s t zn an a!

TABLICA_PROCESÓW = ARRAYtl. . MAXYMALNA_LICZBA_PROCESÓWl OF RECORD

TYP : TYP_NAZWY_PROCESU;

P : POINTER;

PLANOWY_CZAS_AKTYWACJI: LONGI NT;

CZYJJSUNĄC : BOOLEAN;

NUMER_OBIEKTU_DANEGO_TYPU: INTEGER;

END;

VAR

MAXYMALNY_PROCES_WYGENEROWANY : 1. . MAXYMALNA_LICZBA_PROCESÓW;

PROCESY : TABLI CA_PROCESÓW;

CZAS_ZAKONCZENIA_SYMULACJI : LONGINT;

PROCEDURE PROCES;

FUNCTION FCTYP_PROCESU : TYP_NAZWY_PROCESU;

NUMER_PROCESU : I NTEGER3 : I NTEGER;

IMPLEMENTATION

USES SIMULATION. SIM1PROCES. SIMEPROCES SIMnPROCES;

FUNCTION FCTYP_PROCESU : TYP_NAZWY_PROCESU;

NUMER_PROCESU : I NTEGER! : I NTEGER;

BEGIN

{ f u n k c ja o d s z u k u je a k t u a l n y numer p ro c e s u w t a b l i c y procesów}

END;

(4)

192 S t a n i s ł a w Krawiec

PROCEDURE PROCES;

{ - - - >

PROCEDURE PORZĄDKOWANIE;

VAR I : INTEGER ; BEGIN

FOR I : =1 TO MAXYMALNY_PRQCES_WYGENEROWANY DP IF PROCESY t l i . CZY _USUNĄĆ

THEN i p r z e s u w a n ie p r o c e s u o num erze a k t u a l n i e najwyższym na m i e js c e

r

p r o c e s u u s u n i ę t e g o z p r o c e s u sy m u la c y jn e g o z a pomocą z l e c e n i a DI SPOSE> ;

MAX YMALNY_PROCES_WY GENEROWANY: =MAXYMALNY _PROCES_WY GENEROWANY-1 ; PORZĄDKOWANI E_TABi_I CY_PROCESÓW: =FALSE;

END; <PROCEDURA PORZĄDKOWANI E>

< ■>

PROCEDURE WYBÔR_PROCESU;

VAR I , MI NI MALNY_CZAS: I NTEGER ; BEGIN

MI NI MALNY __CZAS : =PROCESYtl3 . PLANOWY_CZAS_AKTYWACJI ; I : =1 ;

IND: =1 ;

WHILE I< MAXYMALNY_PROCES_WYGENEROWANY DO BEGIN

I : =1 +1 ;

IF . PROCESY! I 3 . PLANOWY_jCZAS_AKTYWACJI < MI NI MALN Y _CZAS THEN BEGIN

MI NI MALNY__CZAS: =PROCESY 11 3 . PLANOWY_CZAS_AKTYWACJI ; I ND: =1 ;

END;

END; tw y b ran o p r o c e s IND>

IF MI NI MALNY _CZAS> =0 THEN BEGIN

CZAS_AKTUALNY : =CZAS_AKTUALNY+M I N I M ALNY_CZAS;

FOR I : =1 TO MAXYMALNY_PROCES_WYGENEROWANY DO PROCESY [ 1 3 . PLANOWY _C ZA S_A K TY W A C JI : =

PROCESY113. PLANOWY_CZAS_AKTYWACJI. MI NIMALNY _CZAS;

END;

CASE PROCESY [ I ND3 . TYP OF

PROCES_l : PROCES1C PROCESY i IND3 . PI ; PR0CES_£: PROCES2CPROCESY 11ND3 . PI ;

PROCES_N : PROCESNC PROCESY i IND] . P3 ; END; <CASE>.

(5)

Realizacja struktur symulacyjnych.

193

END; <PROCEDURA WYBĆR_PROCESU>

BEGIN

{ g en ero w an ie procssćw }

{p rzykładow e wygenerowani® S o b i e k t u p r o c e s u ty p u PROCES_ i , np. 13 o b ie k te m wygenerowanym w modelu>

NEWCP13 ; P i'- . N: =5;

P i* , E: =1 ;

P i* , a tr y b u t_ m e r y to r y c z n y _ p r o c e s u : = PROCESY113] . TYP: =PROCES_i ;

PROCESY [ 13] . PLANOWY_CZAS_AKTYWACJI: = PROCESY C 13] . P: =Pi ;

PROCESYC13] . CZY_USUNĄĆ: =FALSE;

PROCESY Cl3] . NUMER_OBIEKTU_DANEGO_TYPU: =5;

AKTUALNA_LICZBA_WYGENEROWANYCH_OBIEKTÓW_TYPU_i: =5;

MAK YMALNY_PROCES_WY GENEROWANY: =13;

< wybór p r oc e s u>

WHILE CZA3_AKTUALNY< CZAS_ZAKONCZENIA__SYMIJLACJI DO BEGIN

IF PORZĄDKOWANIE_TABLICY^PROCESÓW THEN PORZĄDKOWANIE;

WYBÓR__PROCESU;

END;

EXIT <d o program u głównego>

END;

BEGIN

WRITELNC * PODAJ CZAS ZAKOŃCZENIA SYMULACJI‘ D;

READLNC CZAS_ZAKONCZENIA_SYMULACJIJ;

END. < PROCES>

Do r e a l i z a c j i o s i c z a s u wybrano w a r ia n t tymczasowy* n a j p r o s t s z y , p o l e g a ją c y na każdorazowym p r z e g l ą d a n i u p r z y wyborze p ro c e su a t r y b u t u PLANOWY __CZAS_AKTYWACJI w s z y s tk ic h o b iek tó w . P ro c e d u ra PORZĄDKOWANIE używana j e s t każdorazowo po u ż y c iu i n s t r u k c j i DISPOSE. Generowanie procesów C początkowe!) n i e musi być r e a liz o w a n e w module SIMULATION. Może być r e a liz o w a n y w o d d zieln y m module, np. module DIALOG, k t ó r y m u sia łb y być wywołany z programu głównego p rz e d wywołaniem p ro c e d u ry PROCES. Funkcja F J e s t podstawową f u n k c j ą u m o ż liw ia ją c ą r e a l i z a c j ę 1 og lan o w sk ich instrufccji**- o p e r u ją c y c h na a t r y b u t a c h c z a s u CHOLD, CONTINUE i t d . j .

Bazowa s t r u k t u r a modułu SIMiPROCES może być p rz e d s ta w io n a n a s tę p u ją c o Cponownie n i e f o r m a l n i e d l a celów poglądowych!):

(6)

19 4 Sta.nl sł a w Kr a wi ec

UNIT SI Mi PROCES; < 1 = 1 , . . . , N>

<moduł PROCES!>

INTERFACE TYPE

REKORD_STANU_PROCESUi _=>' REKORD_STANU_PROCESUi ; REKORD__STANU_PROCESUi =RECORD

E: BYTE; <e t y k i e t a k o n ty n u a c ji>

N: I NTEGER; < numer obi ek t u ty p u i >

a try b u t_ m e ry to ry c z n y _ jp ro c e s u : . . .

END;

VAR

Pi : REKORD_STANU_PROCESUi

AKTUALNA_LI CZBA_WY GENEROWANYCH_OBI EKTÓW_TYPU_i : I NTEGER;

PROCEDURE PROCES!CW: REKORD_STANU_PROCESLD ; I MPLEMENTATION

USES SIMlPROCES. . . . . SIMi-1 PROCES. SIM i+1PROCES. . . . , SI MnPROCES, SI MULATION;

PROCEDURE PROCESiCW: REKORD_STANU_PROCESlD ; CONST ET1_=1;ET2_=2. . . . . ETk_=k;

LABEL ET1,ET2,. . . , ETk < e t y k i e t y k o n t y n u a c j i ) BEGIN

WITH W- DO BEGIN

CASE E OF <wymóg t e c h n i c z n y w PASCAL-u>

ET1 GOTO ET1 ; ET2_: GOTO ET2;

ETkGOTO ETk;

ELSE BEGIN WRITELNC * BŁĄD* D; HALT; END;

END; <CASE>

ET1 : < . . . >

<p o c z ą t kowe a k c j e p r ocesu>

<. . . >

E: =ET2_; EXI T;

ET2:< . . . >

< d a ls z e a k c j e p r o c e s u ) ;

<. . . >

E: =ET3_;EXIT;

ET3 : < . . . >

{ d a l s z e a k c j e p r o c e s u ) ;

<. . . >

(7)

R ealizacja struktur symulacyjnych.

E: =ETk_;EXIT;

ETk : < . . . >

{ d a l s z e a k c j e p r o c e s u ) ;

C. . .>

E: =ET1 EXIT;

END;

END; <PROCESi>

< >

BEGIN

END. vSI Mi PROCES>

Każdy moduł ty p u SIMiPROCES C i = i . . . . ,10 w modelu symulacyjnym j e s t t y l k o pewnym wzorcem o b i e k t u danego ty p u . Właściwymi o b ie k ta m i w modelu s a peicordu stan ó w z a d e k la ro w an e w INTERFACE-ie ty c h modułów, a generowane w dowolnym m ie js c u program u z le c e n ie m NEWCPiD. W szelk ie o p e r a c j e na re k o rd a c h s t a n u , c z y l i na o b i e k t a c h modelu s y m u la c y jn e g o ,p rz ep ro w a d z a n e s ą w ramach a k c j i p ro c e s u m iedzy ko lejn y m i e ty k i e t a m i modułów ty p u SIMiPROCES.

W c e l u u m o ż liw ie n ia p rz e p ro w a d z e n ia o p e r a c j i na o b i e k c i e , c z y l i na konkretnym r e k o r d z i e s t a n u , musi byó znany a k t u a l n y numer o b i e k t u , pod którym j e s t id e n ty f ik o w a n y w t a b l i c y PROCESY Cnumer t e n n i e j e s t s t a ł y w p r o c e s i e symulacyjnynO . Znajomośó te g o numeru um ożliw ia:

- d o s tą p do zm ien n ej P, ty p u POINTER, w s k a z u ją c e j a d r e s te g o o b ie k tu w pam ięci ,

— d o s t ę p do a t r y b u t u c z a s u o b i e k t u CPLANOWY_CZAS_AKTYWACJID, u m o ż liw ia ją c y s t e r o w a n i e modelem.

A k tu a ln y numer dowolnego o b i e k t u w t a b l i c y PROCESY u d o s tę p n ia f u n k c ja F, k t ó r e j argumentami s ą : t y p p ro c e s u i numer o b ie k tu danego ty p u Cnp.

FCPOCIĄG,t53}. Numer o b i e k t u a k t u a l n i e aktywnego u d o s tę p n ia zmienna IND.

Umożliwia t o p r o s t e z r e a l i z o w a n i e odpowiedników lo g ia n o w s k ic h f u n k c j i HOLD, PASSIVATE, SCHEEHJLE, CANCEL, RUN. Przykładow o odpow iednikiem lo g la n o w s k ie j i n s t r u k c j i CALL HOLDCIOCD j e s t i n s t r u k c j a : PROCESYCIND3 . PLANOWY_CZAS_

__AKTYWACJI: =PROCESY i I ND3 . PLANOWY_CZAS_AKTYWACJI +100, natomi a s t

odpow iednikiem i n s t r u k c j i CALL SCHEDULECPOCIĄGC6D.7 0 3 ; j e s t i n s t r u k c j a : PROCESY < FC POCI ĄG, 6D11 PLANOWY_CZAS_AKTYWACJI: =PROCESY C FC POCI ĄG, 62) ] . PLANOWY_

CZAS_AKTY WACJI+70.

(8)

196 Stani sł a w Kr awi &<_

3- Struktura modelu sy m ul ac yj n eg o r uchu po c ią g ó w w jwzyku T ur bo PA SCAL

Dla r e a l i z a c j i z in te g ro w a n e g o modelu sy m u la c y jn e g o p r z y j ę t o i z r e a liz o w a n o program s y m u la c y jn y o n a s t ę p u j ą c e j s t r u k t u r z e :

PR O G R A M MODELMAIN;

USES B A Z A „ K R R »DI AL 03, SI M UL ATI ON * SI Ml P R O C E S * SI M 2 P R O C E S , M A P A t M AP Al . MAP A S . P O M O C - BEGIN

PROCES-

WP.I TELNC ' KONI EC SYMULACJI * D ; SETKURSOR •

END. -C PROGRAM MODELMAIN >

UNIT SI M U L ATI O N ;

< Moduł P RO C ES >

I NTERFACE C ON ST

M AX _ L_ PR OC E SO W= l00;

C Z A S _ A K T U A L N Y : L O N G I N T = 0 ; I ND : I N T E G E R = 0 ;

P OR ZĄ DK O WANIE_TABLICY PROCESOW: B O O L E A N = F A L S E ; TYPE

TYP_NAZWY„PROCESU « C POCI AG. STEROWANI E, ZWOLNI ENI E„PRZEBI EGU!*;

TABLICA_PROCESOW = ARRAY £1. . MAX_L„PROCESOW3 OF RECORD

TYP

PLANOWY _CZAS_AKTY W CZY _USUN AC

NR_OBJ_DANEGO_TYPU END;

TY P„NAZWY „PROCESU ; POINTER;

I NTEGER BOOLEAN INTEGER

VAR

MAK„PROCES„WYGENEROWAŃY PROCESY

CZAS_ZAKON CZENIA„SYMULĄCJI MAX_L„POCIAGOW

PROCEDURĘ PROCES;

FUNCTION FCTYP_PROCESU : TYP„NAZWY„PROCESU;

NUMER_PROCESU : INTEGER} : INTEGER;

FUNCTION XTIME C XX : STRING D : LONGI NT;

< - f u n k c ja z m ie n ia ją c a c z a s podany ja k o t e k s t w f o r m ie hh: mm: ss na s e k u n d y -

J. . w r i- - ■ ■ -_- i, ł

T A B L I C A _ P R O C E £ O W ; LONGI NT;

BYTE-

FUNCTION YTIME C YY' : LONGI NT 3 : STRING;

< - f u n k c j a z m ie n ia ją c a c z a s podany w sek u n d ach na t e k s t w f o r m ie hh; mm: s s

}

IMPLEMENTATION

USES PRI NTER, CRT, DOS, DI AL06, SI Ml PROCES. SI M2PROCES .MAPA ;

(9)

R ealiz ac j a struktur symulacyjnych. 15"

FUNCTION FCTYP_PROCESU: TYP_NAZWY_PROCESU;

NUMER_PROCESU: I NTEGER3: I NTEGER;

BEGIN

END;

FUNCTION XTIME C XX : STRING I : LONGINT;

BEGIN

f f u n k c j a z m i e n i a j ą c a c z a s podany Jako t e k s w fo rm ie hh: mm: s s na sekundy!

END; < XTIME >

FUNCTION YTIMEcC YY : LONGINT 3 : STRING;

BEGIN

■Cfunkcja z m i e n i a j ą c a c z a s podany w sekundach na t e k s t w fo rm ie hh: mm: s s J ' END; i YTIME~>

PROCEDURE PROCES;

{ >

PROCEDURE PORZĄDKOWANIE;

VAR

» I : INTEGER;

BEGIN

FOR I :=1 TO MAX_PROCES_WYGENEROWANY DO IF PROCESYm . CZY_USUNAC THEN

BEGIN

PROCESY [ I 3 . P: =PROCESYIMAX_PROCES_WYGENEROWANY 3 . P;

PPOCESYII 3 . TYP: =PROCESYC MAX _PRQCES_WYGENEROWANY 3. TYP;

PROCESY [ 1 3 . PLANOWY_CZAS_AKTYW: =

PROCESY I MAX _PROCES_WYGENEROWANY ]. PLANOWY_CZAS_AKTYW;

PROCESY I I I . CZY'._U£UNAC: =FALSE;

PROCESY! 1 3. NR_GBJ_DANE60_TYPU: =

PROCESY I MAX_PROCES_WYGENEROWANY 3 . NR_OBJ_DANEGO_TYPU;

DECCMAX_PROCES_WYGENEROWANY! ; END;

PORZĄDKOWANI E_TABLI CY _PROCESOW: =FALSE;

END; < PROCEDURA PORZĄDKOWANIE >

PROCEDURE WYBORJPROCESU ; VAR

I , MINIMALNY_C2AS: INTEGER;

BEGIN

MI NI MALNY_CZAS: =PROCESYI 1 ] . PLANOWY_CZAS_AKTYW;

I : =1 ; IND: =1 ;

WHILE I < MAX_PROCES_WYGENEROWANY DO BEGIN

I : =1 +1 ;

IF PROCESY 11 1 . PLANOWY_CZAS_AKTYW < MINIMALNY_CZAS THEN BEGIN

MI NI MALNY__CZAS: =PROCESY 113 . PLANOWY _CZAS_AKTYW;

I ND: =1 END;

END;

IF MI NI MALNY_CZAS > = 0 THEN

BEGIN

CZAS_AKTUALNY : = CZAS_AKTUALNY + MI NI MALNY _CZAS.

FOR I : =1 TO MAX_PROC£S_WYGENEROWANY DO PROCESY 113. PLANOWY_CZAS.„AKTYW: =

(10)

198 S t a n i s ł a w Krawiec

PROCESY [ I ] . PLANOWY_CZAS_AKTY W-MI HI MALNY _ C Z A S ; END

ELSE

WRITELNC ’ BLAD W WYBORZE PROCESU ’ 3 ; IF TRYB_PRACY_MAPY THEN BEGIN

TWRITEC " 3 ;

WRITELNC’ WYBRANO PROCES ’ , IND3 ; END;

IF TRYB_PRACY_MAPY THEN WYBOR_OKNA ELSE WYBOR_OKNA_MAPY;

CASE PROCESY C I ND] .TYP OF

POCI AG: PROCES1C PROCESY £1 ND] . P3 ; STEROWANI E: PROCES2C PROCESY £ I ND ] . P3 ;

ZWOLNI ENI E_PRZEBI EGU: PROCES3C PROCESY 11 ND]. P3 ; ELSE

BEGIN TWRITEC’ ’ 3;

WRI TELNC 1 NI EZIDENTYFI KOWANY PROCES ’ 3 . END;

END; { CASE >

END; < WYBOR_PROCESU >

{ . .---

BEGIN

< genero w an ie procesow ty p u POCIĄG >

FOR I I : =1 TO MAX_L_POCIAGOW DO BEGIN

NEWCP13;

P I ' . N: =11 ; P I ' . E: =1;

PI - . NUMER_2ADANI A: =11 ; P I ' . AKTUALNY_NUMER: =0;

P I '. WSKAZNIKJU: =1;

P I ''. STAN: =1 ;

PI-'. KOLEJNY_ODCINEK_PRZEBIEGU: =0;

P I ' . NR_PR2EB: =0;

P I ' . KOLEJNY_NR_POC_W_ZADANIU: =1;

P I '. KKK: =0;

P I ' . SEMAFOR: =TRUE;

PI'.NR_POC_W_KOLEJCE: =1;

P I ' . KI ERUNEK_J AZDY: =0;

P I ' . NR_NAJBL^SYGNAŁ: =0;

P I ' . POPRZEDNI _SY GNALI ZATOR: =0;

13: =1 ;

FOR 13: = 1 TO < d lu g o s c p l i k u CPOCIAGI+NR_ROZKLADU3 3 DO BEGIN

I F ZADANI A£ 11 ,1 ] =CPOCI AGI+NR_ROZKLADU3 1 1 2 ,1 ] THEN BEGIN

P I ' . ROZKLAD_J AZDY £ 1 3 ]: =C POCI AGI +NR_ROZKLADU3 [ 1 2 .2 ] P I ' . CZAS_JAZDY-. =CPOCIAGI+NUMER_ROZKLADU3£I2.3] ; 13: =13+1 ;

END;

END;

P I '. POŁOŻENIE_CZOLA: =0;

PROCESY 1113. TYP: =P0CIAG;

PROCESY £113. PLANOWY_CZAS_AKTYW: =P1' . CZAS_J AZDY £ 1 ] -3 0 0 ■ PROCESY£11] . P: =P1;

PROCESY [ 11 ] . CZY_USUNAC: =FALSE;

PROCESY! I I ] . NR_OBJ_DANEGO_TYPU: =11;

END;

AKTUALNA_LI CZBA_WYGENEROWANYCH_OBI EKTOW_TYPU_POCI AG: =MAX_L AKTUALNA_LI CZBA WY GENEROWANY CH OBIEKTOW TYPU STEROWANIE: =o":

>

POCI AGOW;

(11)

Realizacja struktur symulacyjnych. lövj

AKTUALNA_LI CZBA_WY GENEROWANYCH_OBI EKTOW_TYPU_ZWOLNI ENI E_PRZEBI EGU: *0;

MAX_PROCES_WYGENEROWANY: =MAX_L_POCIAGOW;

IF TRYB_OBSERWACJI=1 THEN TRYB_PRACY_MAPY: =FALSE;

CASE TRYB_OBSERWACJI OF 1: INITMAPA;

2 : OKNOJCOMUNIKATY;

END; <CASE>

< wybór p ro c e s u >

WHILE CZAS_AKTUALNY < CZAS_ZAKONC2ENIA_SYMULACJI DO BEGIN

IF PORZĄDKOWANIE_TABLICY_PROCESOW THEN PORZĄDKOWANIE;

IF TRYB_CZASOWY =3 THEN REPEAT UNTIL KEYPRESSED;

WYBOR_PROCESU;

END;

EXIT; < DO PROGRAMU GLOWNEGO >

END;

BEGIN

WRITEC * PODAJ CZAS ZAKOŃCZENIA SYMULACJI ? ’ D;

P.EADLNC CZAS_ZAKONCZENI A_SYMULACJI D ;

WRITEC»PODAJ MAKSYMALNA ILOSC SKŁADÓW POCIAGOW NA LINII KRR ? * j ; READLNC MAX _L_POCIAGOWD;

END. < PROCES >

UNIT SI Ml PROCES;

jC Modul PROCES1 >

INTERFACE TYPE

REKORD_STANU_PROCESUl_=~REKORD_STANU_PROCESUl;

REKORD_STANU_PROCESUl = RECORD

E: BYTE; < w a rto ś ć e t y k i e t y k o n ty n u a c ji >

N: INTEGER; < k o l e j n y numer o b i e k t u ty p u pociag>

INTEGER;

INTEGER;

ARRAY£1. .1 0 0 ] OF INTEGER;

ARRAYCl. . 1003 OF INTEGER;

BYTE;

BYTE; <1 : s t o i »2 : j e d z i e , 3: s t o i w k o le jc e >

INTEGER;

NUMER_ZADANIA:

AKTUALNY_NUMER:

ROZKLAD_JAZDY:

CZAS_J AZDY:

WSKAZNIK_RJ:

STAN:

NR__N AJBL_SY GNAL:

POPRZEDNI _SYGNALI ZATOR:

POŁOŻENIE CZOŁA:

KIERUNEK_JAZDY KOLEJNY_ODCINEK_PRZEBIEGU NR_PRZEB KOLEJNY_NR_POC_W_ZADANIU

KKK SEMAFOR:

NR_POC_W_KOLEJCE:

END;

INTEGER INTEGER

BYTE;

BYTE;

I NTEGER;

BYTE;

INTEGER;

BOOLEAN;

BYTE;

< w arto ść d o d a tn ia : torowy»

ujemna: zw rotnicow y)

< 1: PYSKOWICE 2 : BOGUCICE >

-CO: brak p rzeb ieg u >

<p o p rz e d n i p rz e b ie g » j e s z c z e n i e zwoiniony>

<1»2» 3, i t d >

VAR

PI: REKORD_STANU_PROCESUl_; < u n ik a ln a nazwa >

AKTUALNA__LI CZBA_WY GENEROWANYCH_OBI EKTOW_TYPU_POCI AG: I NTEGER ; PROCEDURE PROCES1 CW: REKORD__STANU__PROCESUl J ) ;

1 ELEMENTATE ON

(12)

200 S t a n i s ł a w Krawiec

USES PRINTER *LIALOG » S I M2PROCES » SIMULATION, MAPA*POMOC » BAZA_KRR, AUP;

{ :---

PROCEDURE PROCES1 CW: REKORD_STANU_PROCESUł _3 ; CONST

ET1 _= 1; ET2_=2 ; ET3_=3;

CZAS_DOJ AZDU_DO_IZOLACJI=4;

LABEL ET1, ET2* ET3; < e t y k i e t y k o n ty n u a c ji >

VAR

I :INTEGER;

KRZ: INTEGER;

BEGIN

WITH DO

BEGIN

CASE E OF < wymóg t e c h n i c z n y w PASCAL-u >

ET1 _ ET2_

ET3

GOTO ET1 GOTO ET2 GOTO ET3 ELSE BEGIN

■C TWRITEC’ *3; >

< WRITELNC * BLAD KONTYNUACJI W PROCESIE POCIAG’ 3;

HALT END;

END; < CASE >

E T l: < z g ł o s z e n i e p o c ią g u do sy stem u 5 m inut p r z e d planowym odjazdem>

< z t o r u p o sto jo w eg o l u b zw ro tn eg o >

<...a k t u a l n e p a r a m e tr y p o c ią g u ...>

SZUKAJ _PRZE8I EGUC POŁOŻENI E_CZOLA. N3 ;

E : = ET2_; EXIT; < 5 m inut ~ >

< >

ET2: < o d ja z d p o c ią g u - m in i e c i e k o le jn e g o s y g n a l i z a t o r a >

ET3: -C p o c ią g m ija k o l e j n a i z o l a c j e >

< o s t a t n i a os p o c ią g u z w a ln ia p r z e b i e g i >

END; < PROCES1 >

< >

BEGIN

END. < SI Ml PROCES >

UNIT SIM2PROCES;

< Modu l PROCES2 >

INTERFACE TYPE

REKORD_STANU_PROCESU2_=~ REKORD_STANU_PROCESU2;

REKORD STANU PROCESU2 * RECORD E N NR_PRZEB WYSWIETL_SZ END

BYTE;

INTEGER;

INTEGER;

BOOLEAN;

(13)

Realizacja struktur symulacyjnych. £01

VAR

P2: REKGkD_STANU_PROCESU2_; < w z a s a d z i e powinna byc u n ik a ln a na;: w a AKTUALNAJLICZBA_WYGENEROWANYCH_OBIEKTOW_TYPU_STEROWANIE: I NTEGER;

PROCEDURE PROCESS CW: REKORD_STANU_PROCESU2_};

IMPLEMENTATION

USES PRINTER, DI ALOG f SI MUL ATI ON »SI Ml PROCES, MAPA, POMOC, B AZAJCRR;

{ >

PROCEDURE PROCESS CW: P.EKORD_STANU_PROCESU2_j ; CONST E T 1 _ = 1 ; E T 2 _ = 2 ; E T 3 _ = 3 ; E T 4 _ = 4 ; E T 5 _ = 5 ;

MAX _LICZBA_SYGNALOW_AUP=l3;

MAX_LICZ8A_SPRZECZNYCH_PRZEBIEGOW=3S;

CZAS_OCZEKIWAMIA=1O; < c z a s te s to w a n ia >

C Z A S _ R E A K C J I _ Z S P = 1 ;

LABEL E T i»ET2»ET3*ET4, ET5; < e t y k i e t y k o n ty n u a c ji >

VAR

ETY: INTEGER;

I : INTEGER;

OCZEKIWANIE: BOOLEAN;

ZAJMOWANIE .-BOOLEAN;

SYGNAŁY : ARRAY Cl . . MAK _LICZBA_SYGNALOW_AUP1 OF STRINGC103;

SPRZECZNE : ARRAY Cl . . MAX_LICZ3A_SPRZECZNYCH_PRZEBIEGOW3 OF I NTEGEF;

BEGI N

WITH W~ DO.

BEGIN

CASE E OF < wymóg t e c h n i c z n y w PASCAL-u >

ET1 __ GOTO ET1 ; ET2_ GOTO ET2;

ET3_ GOTO ET3;

ET4_ GOTO ET4;

ET*55 GOTO ET5;

ELSE BEGIN TWRITEC *

WRITELNC *BLAD KONTYNUACJI W PROCESIE STEROWANIE*3 ; HALT END;

END; < CASE >

E T 1 : < kontrola »czy można ustawie ca ły przebieg >

ET2: < zajmowanie od cinkow pr z ebiegu >

ET3: v zajęcie p r ze bi eg ó w sprzecznych do niego >

ET4: < utwi er dz e ni e pr ze biegu >

ET5: C nasta wi e ni e sygnału zezwalającego)

■C... s a m ou ni ce s tw ie ni e p r o c e s u ... . END; < PROCES2 >

< — >

BEGIN

END. < MP ROCES2 >

UNIT SIM 3 P R O C E S ;

< Moduł PROCESS >

INTERFACE TYPE

REKORD_STANU_PROCESU3_=~REKORD_STANU_PROCESU2 ; REKORD„STANU_PROCESU3 = RECORD

(14)

202 S t a n i sł aw Krawiec

E N NUMER_jODCI NKa NUMER__PKZEBI EGU PRZEBIEG_SAM OCZYNNY NUMER_SEM EN D ;

B Y T E ; I NTEGER I NTEGER IN T E G E R IN T E G E R IN T E G E R

VAR

P 3 : R EFC O R D _STA N U _PRO CESU 3_; < w z a s a d z i e p o w i n n a b y c u n i k a l n a n a z w a >

AK TU ALN A _ L I CZBA_WY GENEROWAŃ Y CH_O B I EKTOW_TYPU__ZWOLNI E N I E _ P R Z E B I EGU: I N TE G ER ; PROCEDURE P R O C E S S CW: R EK O R D _S TA N U _PR O C E SU 3 J > ;

IM PL EM EN TA TIO N

U S E S P R I N T E R . D I ALOG*S I M lP R O C E S . S IM U L A T IO N , POMOC. B A 2A _K R R ;

< - >

PROCEDURE P R O C E S 3 CW: REKORD_STANU__PROCESU3_D ; CONST E T 1 _ = 1 ;

LA B EL E T 1 ; < e t y k i e t y k o n t y n u a c j i >

VAR

E T Y , J *I : IN T E G E R ; SEM _1 . SEM__2. S E M - 3 : I N T E G E R ; O D _ l , O D _ 2 : IN T E G E R ; B E G IN

WITH W~ DO B E G IN

C A SE E O F < w y ro o g t e c h n i c z n y w P A S C A L - u >

ET1 GOTO E T 1 ; E L S E B E G IN

TW RITEC * * 3 ; >

W RITELNCVBLAD K O N TYNUACJI W P R O C E S IE 2 * I ; HALT END;

EN D ; < C A SE >

ET1 :

I F C CN U M ER _O D C IN K A O O > AND C N U M E R_PRZEB I EGU> 02?}

THEN C z w o l n i e n i e o d c i n k a i p r z e b i e g u

I F CCNUM EP_ODCINKA O O ) -AND C N U M ER _PR Z EB IEG U = OD3 THEN B E G IN < z w o l n i e n i e s a m e g o o d c i n k a >

< o b s ł u g a b l o k a d y S B L >

... S A M O U N IC E S T W IE N IE S I E PR O C ESU ...

EN D ; < P R O C E S 3 >

< ---

B E G IN

£ N D .. < M P R 0 C E S 3 >

U N IT MAPA;

IK T E R F A C E U S E S

C R T , G R A PiLrM A PA l, M APA2;

CONST

TRYB_PRAĆY^M APY: B Q QLEA N =.TRU E;.. C TR U E-M A PA STATYCZNA* F A L S E -M A P A X Y NAMI

(15)

R ealizacja struktur symulacyjnych.

PROCEDURE BAZA; < ła d o w a n ie bazy >

PROCEDURE INITMAPA; < i n i c j a c j a g r a f i k i o r a z pokazywania mapy >

PROCEDURE CLOSEMAPA; < w y jś c ie z g r a f i k i >

PROCEDURE AKTUALCSTANY : TAB}; < a k t u a l i z a c j a stanów elem entów mapy d e f i n i c j a t a b l i c y STANY o ra z ty p u TAB w module mapaS >

IMPLEMENTATION

END. < MAPA >

UNI T MAP Al : INTERFACE

CONST

MAX_LS£M=450; Í Max. l i c z b a semaforów na mapie MAX_L0DCT=270; < Max. l i c z b a ODCINKOW TOROWYCH MAX._LODCZ=300; < MAX. LICZBA ODCINKOW ZWROTNICOWYCH MAXj_PEP=35; < MAX. LICZBA PERONOW

MAX_LKCP=70; < MAX. LICZBA POL KOREKT MAX_LSTER=80; < MAX. LICZBA POL STERUJĄCYCH MAX_LWLOT=20; < MAX. LICZBA WLOTOW

MAX_LPODZ=500; < MAX. LICZBA ODCINKOW PODZIALEK MAX_NADZ=250; < MAX. LICZBA WIEPSZY STEROWANIA ODC MAY. _ST AC JI =33;

LK_MAPA_ODCT=6; <

LK_MAPA_ODC2=6; <

LK_MAPA_SEM=5; <

LK_MAPA_PER=4; <

LK_MAPA_KOR=5; <

LK_MAPA_STEP=5; <

L K_ MaPA_WLOT=4 ;

<

LK_MAPA_PODZ=3 ; <

LK_MAPA_NADZ=15; <

PX=1 .1 5 ; PY =0. 75;

LIT_TXT=2;

LIT_SEM=0. 9;

LIT_ODCT=l;

L ic z b a kolumn t a b l i c y MAPA_ODCT >

L ic z b a kolumn t a b l i c y MAPA__ODCZ .}

L ic z b a kolumn t a b l i c y MAPA_SEM >

L ic z b a kolumn t a b l i c y MAPA_PER >

L ic z b a kolumn t a b l i c y MAPA__KOR >

L ic z b a kolumn t a b l i c y MAPA_STER >

L ic z b a kolumn t a b l i c y MAPA_WLOT >

L ic z b a kolumn t a b l i c y MAPA_PODZ >

L ic z b a kolumn t a b l i c y MAPA_NADZ >

< W spółczynnik k o r e k c j i e k ra n u po o s i X >

•C W spółczynnik k o r e k c j i e k ra n u po o s i Y >

< PIERWOTNE SKALE DLA TEKSTU,OPISU SEMAFORÓW

< ORAZ ODCINKOW TOROWYCH >

TYPE

MAPA_ODCT_ 2 ARRAYCl . . MAX_LODCTt 1. . LK_MAPA_ODCT3 OF INTEGER MAPA_ODCZ_ 2 ARRAY[1 . . MAX._LODCZ, 1. . LK_MAPA_ODCZ3 OF INTEGER MAPA_SEM_ ARRAY C1 . . MAX._LSEM, 1. . LK_MAPA_SEM] OF INTEGER MAPA KOR ARRAY r 1 . . MAX_LKOR, 1. . LK_MAPA_KOR] OF INTEGER MAPA_STER_ ARRAY[1 . . MAX._LSTER, 1 . . LK_MAPA_STER] OF INTEGER MAPA_WLOT_ 2 ARRAYCl . . MAX. LWLOT, 1. . LK MAPA WLOT] OF INTEGER MAPA_PER_ 2 ARRAY C1 . . MAX._LPER, 1. . LK_MAPA_PER] OF INTEGER MAPA_PODZ_ = ARRAY [ 1 . . MAX._LPODZ, 1 . . LK_MAPa_PODZ] OF INTEGER mapa_nadz_ = ARRAY Cl . . MAX_NADZ, 1. . LK_MAPA_NADZ3 OF INTEGER;

MENU_TXT - STRINGÜ1Q3 ; NAZWA_ST = STRINGC243 ;

MAPA_ST_ = ARRAY C1 . . MAX._STACJI3 OF NAZWAjST;

VAR

MAPA_ODCT ,MAPA_ODCZ MAPA_SEM -MAPA +COR

~MAPA_ODCT__; < Mapa s t a t y c z n a odęinkow torow ych J

~ MAP A_ODCZ_; < Mapa s t a t y c z n a odcinkow zw rot ni c owych >

~MAPA_SEM_; < Mapa semaforów

^MAPA_KOR— < MAPA POL - KOREKT >

(16)

204 St a ni s ła w Kr a w i ec

MAPA_STER MAP A_STER_ ; < MAPA POL STERUJĄCYCH MAPA_WLOT ^ MAPA_WLOT_; < MAPA WLOTOW }

MAPA_PER "MAPA_PER_; < MAPA PEROMOW >

MAP A_P ODZ MAP A_PODZ__ ; < MAPA PODZIALEK >

MAPA_ST MAP A_ST_ ; < MAPA STACJI TEKST>

MAPA_NADZ ^MAPA_NADZ_; < MAPA NADZORU ODC ZWROTNICOWYCH }

LSEM INTEGER ; •C L ic z b a semaforów na mapie }

LODCT INTEGER ; < L ic z b a odcinkow to row ych } LODCZ INTEGER ; < L ic z b a odcinkow zw rotnicow ych } LPER INTEGER ; < L ic z b a peronow }

LKOR INTEGER ; < L ic z b a poi k o r e k t } LSTER INTEGER ; < L ic z b a poi s t e r u j ą c y c h } LWLOT INTEGER ; < L ic z b a wlotow }

LPODZ INTEGER < Li czb a ode po d zi a le k >

LNADZ INTEGER < L ic z b a rekordów s t e r u j ą c y c h p rzeb ieg am i >

NRSEM INTEGER < Numer se m a fo ra >

NR INTEGER < Numer zm ienna u n iw e r s a ln a } NRODCT INTEGER ■C Numer ode to row ego >

NRODCZ INTEGER < Numer ode zw rotnicow ego }

KIERUNEK INTEGER < K ieru n ek ry s o w a n ia se m a fo ra 0 - 1 ewo 1 -praw o DLPER INTEGER < D lugosc p e ro n u }

SZERPER INTEGER < S z e ro k o ś ć p e ro n u >

STAN INTEGER < A tr y b u t s t a n u e le m e n tu }

XMIN, YMIN LONGI NT < W spółrzędne p o c z ą tk u e k ra n u na mapie >

XMAX, YMAX LONGINT < W spółrzędne końca e k ra n u na mapie >

SZER_MAP LONGI NT < Bazowa s z e r o k o s c mapy Cpo o s i X} } WY S_MAP LONGI NT < Bazowa wysokosc mapy Cpo o s i Y} >

I * J INTEGER < nm ienne u n iw e r s a ln e }

STR_, S INTEGER < B ie ż ą c y numer s t r o n y k a r t y H e rc u le s }

SKALA REAL; < O gólna s k a l a mapy }

SKALA_X REAL; < B ie z a c a s k a l a mapy <p o w iek szen i e X > >

SKALA_Y REAL; < B ie z a c a s k a l a mapy <p o w ię k s z e n ie Y > } INKX, INKY LONGINT < In k re m e n t przesuw u mapy klaw iszam i } NINKX, NINKY LONGINT; < Jak INKX i INKY t y l k o bez k o r e k c j i e k . >

XM, YM LONGI NT < W spółrzędne ś r o d k a e k ra n u na mapie } NXM,NYM LONGI NT < Jak XM i YM t y l k o bez k o r e k c j i e k ra n u } STAC NAZWA__ST ; < Nazwa s t a c j i }

TEKST STRINGC803 ; < pomocni c z a } TEKST1 STRINGt 803 ; < pom ocnicza >

PLIK_MAPA STRINGC803 ; < nazwa p l i k u - b a z y danych a r a f i c z n y c h mapy }

STEROWNIK INTEGER

TRYB INTEGER

ERRCODE INTEGER

F TEXT; < p l i k z a w ie r a ją c y m ape-haze danych >

X I, Y1,X2,Y2 INTEGER; < W spółrzędne u n iw e r s a ln e }

SZER EKR INTEGER

WYS_EKR INTEGER

ESCMAP POINTER < Zmienna z a w i e r a j a c a obraz w y ci ę ty przez r am kę menu >

TAB_MENU ARRAY Cl. . 63 OF MENU_TXT; -C T a b li c a z a wi e ra ja ca tekst o we o p c je menu >

tfSK_WYJ_MAPY: BOOLEAN C j e ż e l i TRUE , dynam iczne w y jś c ie z mapy } PROCEDURE GRAFIKA; < I n i c j a c j a g r a f i k i i p r z e j ś c i e do t r y b u te k s to w e g o >

FUNCT1ON I NKEY : INTEGER; C C z y ta n i e k odu k 1awi s z a >

FUNCTION READG CXP,YP,N: INTEGER} : REAL; < C z y ta n ie l i c z b y w t r y b i e g raficzn y m }

PROCEDURE CHOWAJ_RAMKE;

PROCEDURE PODSTAW;

PROCEDURE PODSWIETLCW, K : INTEGER};

PROCEDURE ZGASC W,K; INTEGER};

PROCEDURE PODSWIETLSC W, K, L : INTEGER};

PROCEDURE ZGASSC W, K, L : INTEGER};

PROCEDURE STACJA; < p r o c e d u r e wyboru s t a c j i do p o d g lą d u >

PROCEDURE OKNO_ESC*

(17)

R ealizacja struktur symulacyjnych.

20‘?

PROCEDURE ESC_MENU;

PROCEDURE SKALA_LITERC SKALA: REAL} ; PROCEDURE EKRAN;

FUNCTION STRONA; INTEGER;

PROCEDURE RYSUJ CXI, Y1, X2,Y2.NR. STAN: INTEGER};

PROCEDURE RYSUJ _ZW C X I. Y l. X2. Y2. ŃR. STAN : I NTEGER};

PROCEDURE RYSUJ_STER CXI . Yl . X2. Y2: INTEGER};

PROCEDURE RYSUJ_KOR CXI , Yl . X2. Y2: I NTEGER};

PROCEDURE P.YSUJ_PERONC XI , Y l. DL. S2ER. M; I NTEGER ; NS: STRING} ; PROCEDURE RYSUJ_WLOTCXl , Yl .KIER: INTEGER} ;

PROCEDURE RYSUJ_SEMAFORCXl . Yl . NR. KI ER. STAN: INTEGER} ; PROCEDURE RYSUJ_PODZCXI. X2, NR: INTEGER};

PROCEDURE RAMKA; < ramka e k ra n u >

PROCEDURE NAPIS; < n a p i s na g ó r z e ramki e k ra n u F5 . . . >

I MPLEMENTATION USES

GRAPH. CRT;

END. < MAFAi}

UNIT MAPA2; \

INTERFACE TYPE

TAB = ARRAYtl..41 OF INTEGER;

VAP

STANY: TAB;

PROCEDURE LAD_:-!APA; < ła d o w a n ie b azy danych } PROCEDURE SKALAM; < zm iana s k a l i mapy } PROCEDURE KROKM; < - / / - k ro k u przesuw u } PROCEDURE WIDOK; < widok xy >

PROCEDURE MENU;

PROCEDURE POK_EKRAN; < p o k a z a n ie e k ra n u >

PROCEDURE MENU_STR2ALKI; i o b s łu g a s t r z a ł e k >

PROCEDURE PRZESKALOWANIE; < p r z e s k a lo w a n ie b azy danych >

PROCEDURE WSTĘP ;< n a d a n ie w a r to ś c i początkow ych d l a zmiennych g r a f ic z n y c h mapy}

PROCEDURE PETLA;< p ę t l a o c z e k iw a n ia na k la w is z >

IMPLEMENTATION USES

CET, GR APH . MAP Al ; END. < MAPA2 >

UNIT BAZA_KRR:

< baza danych d l a model u }

INTERFACE CONST

DLUGOSC_POCI AGU = 200.; . MAX_DL_.RJ = 120;

LI CZBA_SKLADOW_NA_KRR = 4.0;

LICZ3A_NUMEROW_SKLADU = 13;

L_NA2_G = 103*

(18)

206 S t a n i s ł a w Krawiec

L_SYGN = 449;

L_TOR_OD_I2 = 259;

L_P_STER = 84;

L_P_KOR = 62;

L_L_STER = 41;

L_PRZEB = 234;

L_ZWP = 58;

L_ZWR_OD_IZOL = 87;

L_WJ AZDOW = 15;

MAX_L_PRZEB_SPRZECZ = 25;

LKOL1=2;

LKOL2=7; ; .

LKOL3=3;

LKOL4=16;

LKOL5=4;

LKOL6=8;

LKOL7 =5;

TYPE

NAZWY_GEOGRAFXCZNE=ARRAY C l .. L_NAZ_G.1. . LKOL13 OF STRINGC353 ; RODZAJ_SYGNALI ZATOROW=ARRAY C l .. L„SYGN , 1 . . LKOL23 OF I NTEGER;

OPIS_SY GNALIZATOROW=ARRAYC l .. L_SYGN, 1. . LKOL3 3 OF STRINGC 6 3;

ODCINKI_TOROWE=ARRAYC l .. L_TOR_OD_IZ*1 . . LKOL13 OF STRINGC 5 3;

ODCINKI_TOROWE_OPI S=ARRAY C l .. L_TOR_OD_IZ.1 . . LKOL4 3 OF INTEGER;

POLA_KOREKT=ARRAY C l .. L_P_KOR3 OF BYTE;

POLA_STERUJACE=ARRAY C l.. L_P_STER.1 . . LKOL53 OF INTEGER;

POLA_LOKALNE=ARRAY C l . . L_L_STER> 1. . LKOL33 OF INTEGER;

PRZEBIEGI=ARRAY C l . . L_PRZEB* 1. . LKOL63 OF INTEGER;

ODCINKI_IZOLOWANE_PRZEBIEGU=ARRAYC l . . L_PRZEB, 1 . . LKOL63 OF INTEGER;

ZWROTNICE_PRZEBIEGU=ARRAY C l .. L_PRZEB,1 . . LKOL7 3 OF I NTEGEP;

STAN_ZWROTNIC_PRZEBIEGU=ARRAY C l.. L_PRZEB* i . . LKOL73 OF INTEGER;

STAN_I ZOLACJI _ZWROTNI COWYCH=ARRAY C l .. L_ZWR_OD_I ZOL 3 OF I NTEGER.

WEJSCIA_KRR=ARRAY C l . . L_WJAZDGW3 OF INTEGER ; ZWROTNI CE=ARRAY C l.. L_ZWR * 1 . . LKOL3 3 OF STRINGC103;

I ZOLACJA_ZWROTNIC= ARRAY C l.. L_ZWR_OD_IZOL, 1 . . LKOL13 OF STRINGC103;

PRZEBIEGI SPRZECZNE=ARRAYC1. . L PRZEB.1 . . MAX L_PRZEB_SPRZECZ3 OF INTEGER;

<nazwy g e o g r a f i c z n e l i n i i k rr>

C o p is s y g n a li z a t o r ó w na l i n i i k rr>

<opis s y g n a l i z a t o r ó w wg bpk>

Copis o d c i n k o w torowych wg bpk>

Copis o d c i n k o w terowych)

■Copis poi korekt na linii krr) Copis poi st er uj ą c y c h na linii

kr r >

■Copis lok al n yc h poi sterujących*

t yl ko dla potrzeb model u >

■Copis p r z e b i e g ó w na linii krr>

■Copis w sz y skich odci nk o w izol ow a ny ch przeoiegu>

Copis k ol e jnych zwrotnic pr zebiegu)

STAN_ZWR_PRZEBIEGU: STAN_ZWROTNIC_PRZEBIEGU;

STAN_IZOL_ZWROT: STAN_IZOLACJI_ZWROTNICOWYCH;

WESIEC: WEJ SCI A_KRR;

ZWROT: ZWROTNI CE;

I ZOL_ZWROT: IZOLACJ A_ZWROTNIC;

PRZEB_SPRZECZNE: PRZEBI EGI „SPRZECZNE;

SEM_TYPU_S: ARRAY C1. . 16^3 OF STRI NGC 1 3 ; SEM_TYPU_L: ARRAY 11 . . 63 OF STRINGC13;

SEM_TYPU_LW: ARRAY C l . . 63 OF STRINGC13;

SEM_TYPU_STM: ARRAY C l . . 43 OF STRINGC13 MAX_L_POCI AGOW: I NTEGER

VAR

NAZ_GEOG: NAZWY_GEOGRAFICZNE;

R_SYGNAL: R0DZA.T _SY GNALI ZATOROW;

SYGNAL: OPIS_SYGNALIZATOPOW;

ODC_TOR: ODCINKI_TOROWE;

TOP_IZOL: ODCINKI _TOROWE_OPIS;

POLA_KOR: POLA_KOREKT;

POLA_STER: POLA_STERUJACE;

POLA_LOK: POLA_LOKALNE;

PRZEB: PRZEBIEGI ;

ODC_IZOL: ODCINKI _IZOLOWANE_PRZEBIEGU;

ZWROT_PRZEBIEGU: ZWROTNICE_PRZEBIEGU ;

(19)

Realizacja struktur symulacyjnych. 207

MAX _L_N UMERÓW: I NTEGER;

ZADANI A: ARRAY C1. . LI CZBA_SK LADOW_N A_KRR, 1 . . LI CZBA_NUMEROW_SKLADU ] OF INTEGER;

NR_ROZiCLADU: BYTE;

I MPLEMENTATION USES CRT»DOS;

END. < BAZA_KRR>

UNIT AUP;

I NTERFACE

PROCEDURE SZUKAJ_PRZEBIEGUC NRPOLSTER, NUMER_P3;

PROCEDURE WYSWIETL_SYGNALCKIER_JAZDY. NUMER_POLA_LOKALNEGOD;

IMPLEMENTATION

USES SI Ml PROCES. SIM2PROCES, BAZA_KRR;

BEGIN

END. <AUP>

UNIT POMOC;

< ' '---

Moduł za w ier a j a c y p r o c e d u r ę u m o ż liw ia ją c a wymianę danych pomiędzy sym ula­

to rem ru ch u pociagow a systemem SNB/AUP . a ró w n ież p ro c e d u rę z e r u j ą c ą r e k o r d t r a n s p o r to w y p rz e c h o w u ja cy o d c z y ta n e badz zap isy w an e dane.

INTERFACE USES CRT;

C ON ST

MAX _ LI C Z_PL_NUMER = 5;

MAX _LI CZ_PL _ZN AK = 9 ; MAX LIC Z PL LOGIC = 2;

C maksymalna liczba poi numerycznych >

< maksymalna liczba poi znakowych

< maksymalna liczba poi logicznych >

TYPE

TYP REK RECO RD PL_NUMER PL_ZNAK PL_LOGI C PL_DATA END;

< typ rekordu transportowego ARRAY C l.. MAX_LICZ_PL_NUMER] OF INTEGER;

ARRAY[1 . . MAX_LICZ_PL_ZNAK3 OF STRINGC210 3;

ARRAY C l.. MAX_LICZ_PL_LOGIC 3 OF BOOLEAN;

S T R I NG C83;

VAR

REK TRANSPORTOWY TYP_REK ; < rekord transportowy śluzy do p r z e k a ­ zywania danych pomiędzy procedurami odczytującymi/zapisującymi dane z'do zbioru dBase zawierającego dane PROCEDURE ZEROWANIE;

PROCEDURE KONWERSJAC NAZWA : STRING;

NR_REK : I NTEGER ; ZNACZN - BYTE>;

< nazwa z b i o r u z b aza danych

<. numer rek ordo w b a z ie danych zn ac z n ik - o p e r a c j i na z b i o r z e

(20)

208 S t a n i s ł a w Krawiec

1 - o d c z y t z e z b i o r u 2 - z a p i s do z b i o r u

3 - d o p i s a n i e na końcu z b i o r u IMPLEMENTATION

BEGIN

END. < POMOCNICZY >

4. Uwagi końcowe

Z re a liz o w a n a d l a p o t r z e b modelu sy m u la c y jn e g o s t r u k t u r a sy m u lacy jn a c h a r a k t e r y z u j e s i ę p ro s ta . r e a l i z a c j ą o r a z niewyszukanymi metodami in fo rm aty czn y m i z p u n k tu w id z e n ia ko sztó w algorytm ów , poniew aż głównym celem b y ło z r e a l i z o w a n i e samego z in te g ro w a n e g o modelu ru c h u pociągów.

A k tu a ln ie moduł SI MUL ATI ON n i e j e s t j e s z c z e modułem u n iw e rsa ln y m , ponieważ k o n ie c z n a j e s t i n g e r e n c j a w je g o t r e ś ć d l a każdego re a liz o w a n e g o program u sy m u lacy jn eg o . Można je d n a k s t w i e r d z i ć , ż e d l a celów r e a l i z a c j i modelu ru c h u pociągów j e s t t o j u ż w e r s ja w y s t a r c z a j ą c a .

R e a l i z a c j a p r z e d s ta w io n e j w a r t y k u l e s t r u k t u r y o p ró c z m ożliw ości sy m u lacy jn y ch u d o s t ę p n i a p e łn e m o żliw o ści g r a f i c z n e j ę z y k a Turbo PASCAL.

R e a l i z a c j a u n iw e r s a ln e g o moduiu SIMULATION o r a z p e łn e g o z estaw u p ro c e d u r pom ocniczych u ł a t w i a j ą c y c h program ow anie s yrrtuł a c y j ne b e d z ie r e la iz o w a n e w p r z y s z ł o ś c i , być może nawet w p o s t a c i p a k i e t u z in te g ro w a n e g o z sym ulacyjnym ed y to rem s t r u k t u r a ln y m . Na tym e t a p i e p r a c s z c z e g ó l n i e i s t o t n a b ę d z ie m i n im a liz a c ja kosztów r e a l i z a c j i p ro c e d u r s t e r u j ą c y c h symul ac j ą .

LITEPATURA

[13 KRAWIEC S: P r e z e n t a c j a o g ó ln a modelu ru c h u pociągów . Z e s z y ty Naukowe P o l i t e c h n i k i Ś l ą s k i e j , s . T r a n s p o r t n f 13, G liw ic e 1989.

[23 KRAWIEC S: Opis n ie f o r m a ln y modelu ru c h u .pociągów - e le m e n ty . Z e s z y ty Naukowe P o l i t e c h n i k i Ś l ą s k i e j , s . T r a n s p o r t n r 1 3 , G liw ic e 1989.

[33 KRAWIEC S: Opis n ie f o r m a ln y modelu ru c h u pociągów - i n t e r a k c j a elem entów. Z e s z y ty Naukowe P o l i t e c h n i k i Ś l ą s k i e j , s . T r a n s p o r t n r 1 3 , G1 i wi c e 1989.

[43 KRAWIEC S: Opis fo rm a ln y .m odelu ru c h u pociągów . Z e s z y ty Naukowe P o l i t e c h n i k i Ś l ą s k i e j , s . T r a n s p o r t nr 13, G liw ic e 1989.

[53 JANECKI R . : Baza danych to p o lo g ic z n y c h i ruchowych d l a p o t r z e b modelu sy m u lacy jn eg o ru c h u pociągów . Z e s z y ty Naukowe P o l i t e c h n i k i Ś l ą s k i e j , s . T r a n s p o r t n r 1 3 , G liw ic e 1989.

(21)

Realizacja struktur symulacyjnych.

209

£63 KONIECZNY R. + z e s p ó ł C praca zbiorow a}: Z asto so w an ie ję z y k a LOGLAN do modelowania dużych systemów tra n s p o rto w y c h na p r z y k ł a d z i e modelu ru ch u pociągów - K atow ice 1987 Cmaszynopis p ra c y naukowo-badawczej NB-277/^RTy^7 program RP. 1 . 09}

[73 KONIECZNY R. + z e s p ó ł C praca zb io ro w a}: Z asto so w an ie ję z y k a LOGLAN do modelowania dużych systemów tr a n s p o rto w y c h na p r z y k ła d z ie modelu ru c h u pociągów c z ę ś ć I I - K atow ice 1988 Cmaszynopis p ra c y naukowo-badawczej NB-195/RT/88 program RP.1.09}

C83 KONIECZNY R. + z e s p ó ł C praca zbiorow a}: Z asto so w an ie ję z y k a LOGLAN do modelowania dużych systemów tra n s p o rto w y c h na p r z y k ła d z ie modelu ru ch u pociągów c z ę ś ć I I I - Katow ice 1989 Cmaszynopis p ra c y naukowo-badawczej NB-195/RT/88 program R P .I.0 9 } .

[93 KONIECZNY R. + z e s p ó ł C praca zbiorow a}: Moduły programowe wspomagające komputerowy makromodel ru c h u pociągów

Cmaszynopis p r a c y naukow o-badaw czej}.

C103 BIELECKI J: Turbo PASCAL 5 . 0 - w e rs ja p r o f e s j o n a l n a - Wydawnictwa Kom unikacji i Ł ą c z n o ś c i, Warszawa 1989.

[113 CIRIC BOBBY. THIES KLAUS DIETER: Turbo PASCAL 5 . 0 / 5 . 5 - te - w i V erlag GmbH 1989.

[123 KONIECZNY R.: P rz y k ła d y r o z w ią z a n ia problemów sym ulacyjnych w Języku LOGLAN. Z eszy t Naukowy P o l i t e c h n i k i Ś l ą s k i e j , s . T ra n s p o rt nr 13, Gl i wi c e 1989.

[133 TISCHER: Turbo PASCAL i n t e r n . D ata Becker 1989.

[143 ZEIGLER B. P. : T e o r ia modelowania i s y m u la c ji. PWN, Warszawa 1984.

[153 KONIECZNY R. , KRAWIEC S. : Z a g a d n ie n ia komputerowej r e a l i z a c j i mapy r e jo n u s i e c i k o le jo w e j - c z ę ś ć I . C n i n i e j s z y z e s z y t} .

[163 KONIECZNY R. .KRAWIEC S .: Z a g a d n ie n ia komputerowej r e a l i z a c j i mapy r e jo n u s i e c i k o le jo w e j - c z ę ś ć I I . C n i n i e j s z y z e s z y t} .

[173 KRAWIEC S. »KONIECZNY R. »JANECKI R .: Dwukomputerowa r e a l i z a c j a makromodel u ru c h u pociągów. C n i n i e j s z y z e s z y t } .

£183 KONIECZNY R. : N ie k tó r e a s p e k ty rozw oju modułu MAPA d l a p o tr z e b s y m u la to ra ru c h u pociągów. C n i n i e j s z y z e s z y t } .

L193 KONIECZNY R. : Z a g a d n ie n ie r e a l i z a c j i 1 og lan o w sk ieg o modułu SIMULATION na b a z i e ję z y k a Turbo PASCAL. C n i n i e j s z y z e s z y t} .

SIMULATING STRUCTURES REALIZATION IN TURBO PASCAL FOR SIMULATING MODEL OF RAILWAY TRAFFIC

S u m m a ry

S im u la tin g s t r u c t u r e s r e a l i s a t i o n i n v. 5 . 0 Turbo PASCAL has been p resented i n the paper. P r i n c i p l e s of SIMULATION module, SI Mi PROCESS module, i =1 ,2, , , LPROCESS f o r a^'m s t r u c t u r e and i n t e r - o b j e c t communication d u r in g s i m u l a t i o n p r o c e s s r e a l i z a t i o n have been d is c u s s e d . The r e a l i z e d s i m u l a t i o n s t r u c t u r e a s a s i m u l a t e d model o f t h e s t r u c t u r e has been used as an exam ple f o r r a i l w a y t r a f f i c s i m u l a t i o n i n R egional R ailw ay T r a f f i c Sys t em.

(22)

210 S t a n is ła w Krawiec

R E A L IS IE RU N G DER S IM U LA T I O N S S T R U K T U R E N IN DER P R O G R A MM IE RS P RA CH E T U RB O PASCAL FÜR D A S S I M U L A T I ON SM OD E LL D E S Z UG VE R K E H R S

Zusammen!' a ssu n g

Im A u fs a tz wurde d i e R e a l i s i e r u n g d e r S i m u l a t i o n s s t r u k t u r i n der P ro g ra m m ie rsp ra c h e TURBO PASCAL v. 5 . 0 v o r g e s t e l l t . Es wurden d i e A u f b a u p r in z ip ie n d e r Programmodule SIMULATION und SIMiPROCES, b e i i = l . ,L Prozeß f ü r d i e oben g e n a n n te S t r u k t u r so w ie d i e K o m m u n ik a tio h s p rin z ip ie n zw isc h e n den Q b ie k te n , d i e während d er R e a l i s i e r u n g des S i m u l a t i o n s p r o z e s s e s g e b i l d e t w erden, v o r g e s t e l l t . Als B e i s p i e l wurde d i e S t r u k t u r d es S im u la tio n s m o d e lls f ü r d i e S i m u la tio n d e s Z u g v e rk e h rs im R e g io n a le n Bahnver k e h r KRR.

CTPYKTYPA MOZIE JIM ÜBM3KEHMH Ü0E3ZI0B HA B3UKE TURBO PASCAL

Peatofie

B c T a T S M i r p e ü C T a B J t e H O cttocoó peajiH3auHM CTpyKTypbi n o n e i i M Ha 3 3b i K e Turbo PASCAL v. 5. O. I I p e a c T a B J i e H O c t r o c o ö b i c r p o e H M H t i o j i y s i x SIMłJLATION, n o z i y j i s i SIMiPROCES. i = 1 , 2 . . . . , L T r p o u e c c o B ajih B b m s e y n o r t s i H y T o Ä C T p y K T y p w a T a K x e n p M H H H T ib i c o o ß m e H M H M e x a y n o j i y M a e M W M H b o B p e r w n o / i e j T H p o B a H H s i o ó e K T a M H . B x a p a K T e p e T r p w n e p a y x e n p a K T H M e c K M h c r r o j i b 3 0B a H H0M C T p y K T y p b i n o / z e jim T r o / i a H O ftOÆeJïb AB HX6HHSI TTOe 3 flOB TTO JIHHMSIM paWOHHOÍÍ 3PJ183HOH AOpOTM.

Cytaty

Powiązane dokumenty

The proposed model is based on a Feller semigroup one, the derivative with respect to time is expressed by the non-integer order Caputo operator, and the derivative with respect

In this paper we have seen that the (i + 1)st component of the vector m associated with the k-core of a partition is the difference in the number of appearances of color i on the

The notion of a regular system of divisors of a number underlying a Narkiewicz's idea of the generalization of the familiar Dirichlet and unitary convolution of arithmetical

Należy udowodnić całkowitą poprawność tego pro- gramu względem

[r]

Opi s form alny modelu... Cpls fo

CTaTfaa siBJisieTcsi ochobo A ajis oopnajibHoro otthc a hüb no/re jih b KOHBeHllHH OTTHC 3HM CMCTSMisl fl.HCKpeXHblX

Opis n ie