V Zfnotat
Nummer: T 09 Datum: 1987-02-12
Titel: Dokumentation av datorprogrammet Parning
Författare: Praktikarbete av Erik Ejvegård
Avdelning: T
Projektnummer: _71002-0
Projektnamn: Trafiksimulering, modellutveckling och tillämpningar
Uppdragsgivare: VTI )
Distribution: fri / nyförvärv / begränsad /
Statens väg- och trafikinstitut
w Veag-och Trafik-
Pa: 58101 Linköping. Tel. 013-1152 00. Telex 50125 VTISGI S
- --o W N * -N P lwa U ' I -P b J N r -s INNEHÅLLSFÖRTECKNING Sid ANVÄNDARHANDLEDNING 1 Inledning 1
Körning
,
l
Körexempei 3 KONSTRUKTIONSBESKRIVNING . V 4Översiktlig funktionsbeskrivning
4
Allmän beskrivning 4 Erogrambeskrivning 5 Översiktlig procedurbeskrivning 11 Beskrivning av huvudprogrammet 13 BILAGA Programkodl. ANVÄNDARHANDLEDNING
1.1 Inledning
Programmet Parning(PP) är ett automatiskt fordonsparningsprogram för flerpunktsmätningar. PP kan ta hand om upp till fem mätstationer. PP arbetar med en riktning åt gången, varvid två körningar behövs för utvär-dering av båda riktningarna. Det PP gör är att para ihop samma fordon från de olika Fordonsfilerna och skriva ut dessa på en fil. PP ligger iett directory på Viktor och startas upp på sedvanligt sätt.
1.2 Körning
När du kör PP så vill programmet ha en del indata i början.
Ange riktning (1/2):
Det första du skall ange är vilken riktning du vill behandla. Det gör du genom att ge siffra för riktning.
Ge värde för acceleration:
Här skall du geett heltal som motsvarar vad ett fordon kan tänkas accel-erera, du anger en övre gräns. På en väg utan förändringar ligger det värdet vid 10. Vägförhållandena kan påverka detta värde med någon
enhet.
Ge värde för retardation:
Ge värde för spridningen av hastigheten:
Detta värde anger hur mycket punkthastigheten som mest kan förändras och bör vara ungefär det dubbla av ovanstående d v 3 runt 20.
Ange promilletal för avvikelse av axelavstånd:
P g a osäkerheten i mätningarna skall ett värde för hur stora felmätning-arna kan vara anges. Hur stora felen är varierar från mätning till mätning, men ligger troligtvis mellan 20 och 30 0/00.
Ge antal mätstationer (>=2, <=5):
Hur många mätstationer man vill ha ihopparade på sträckan anges med en siffra mellan två och fem.
Ge namn på första filen:
Här skall man ange vad fordonsfilen över första mätstationen heter. Med första menas den mätstation som fordonen passerar först beroende på riktning.
Ge namn på andra filen:
Här skall man ange vad fordonsfilen Över nästföljande station heter.
Ge sträcklängden:
Sträcklängden mellan de båda ovanstående stationerna skall anges 1 meter.
Om det rör sig om fler än två mätstationer kommer även dessa att frågas efter med respektive sträcklängder.
Ge namn på utfilen:
' 1.3 Körningsexempel
I 0
i..
\\ , . . . Å'ÄZÅWTT A21 0f .. ' . - \ .w .i'lnnädinuI
' O: ' \ \ 1- Hag \ ' u \ Anton-l (in: a
V \v Nüd ,MH- WP '\ y. Skudaqardun mv'ngmmç, y" ) 'Enn'
Äui'iiVWiu'H! 51I1Ul"q.| .O - i \ V '^ ' 1 2 T . . .x ' OHbCfgd rupmquci 61/ 4' - .v . a I I
Sunda: HHg'HHa! N bum ° . ' . . '16 *ROby H damp "p a A\[\t|H;)HI . I -t?? ' '\ fFu-(jnkshwq / Hagen. Lugmsbwg )_ _ _ l 7 ' l . 0 Kull'Stad-A- / a- \ ' Orlmda \ \ "' «. . . T rttwr'n (nu) \ ' .'4 Motby .- . - 0' . H ,kunm Städ 9 1 . .Normstçorp *i * . H '1 / ". . ' / k!) Prustnnqun. 5 ,' \ - r * Q' ' \ i 1? 'W b M'r \ *a \' Q ' m Knam'rstvn. \ (nu 4 A .. . = - . Gatan ' ' ., é» ° > H ' ^ ' ' . \- VlSRHHf P*
Ange riktning (1/2): 2
Ge värde för acceleration: 10Ge värde för spridningen av hastigheten: 20 Ange promilletal för avvikelse av axelavstånd: 26 Ge antal mätstationer (> = 2, < = 5): 2
Ge namn på första filen: b.dat Ge namn på andra filen: a.dat Ge sträcklängden: 3251
'Ge namn på utfilen: ut_fil.dat
THE PROGRAM IS NOW RUNNING... RUNNING IS COMPLEATED...
2. KONSTRUKTIONSBESKRIVNING
2.1
, Översiktlig funktionsbeskrivning
PP är ett hjälpmedel vid utvärdering av restidsmätningar. PP behandlar mellan 2 och 5 stationer med utgångspunkt från första stationen i antingen riktning i eller 2. Det innebär att endast om fordonet blir hopparat fortsätter sökningen i nästa station.
PP parar ihop fordon genom att söka i nästföljande station efter ett fordon som "stämmer in". Första skall det vara samma riktning, fordons-typ och antal axlar. Sedan skall axelavstånd, hastighet och tid falla innanför gränserna. Dessa gränser bestäms genom indata till programmet. När endast ett fordon hittas skrivs det på en fil som lagrar alla parningarna.
2.2 Allmän beskrivning
Parning består \av 29 procedurer, varav två, skriv och rita, är procedurer i
Utskriv.
PP läser in en registrering från första filen och söker sedan i nästa efter samma fordon. Detta går till så att först läggs alla registreringar i andra filen, som ligger inom rimlig tid, i en länkad lista. Därefter söker man igenom listan efter möjliga fordon. Då kollar man att det är rätt riktning, fordonstyp och antal axlar. Vidare krymper man tidsintervallet genom att ta hänsyn till vilken hastighet som hölls. Slutligen kontrolleras att axelavstånden och hastigheterna inte skiljer för mycket. Hur stor skillnad det får vara bestämmer man genom indata. När man hittat en registrering som stämmer fortsätter programmet på samma sätt tills alla filer är genomsökta 'eller programmet inte hittar en. Då när sökandet är över skrivs det hela ut på en fil.
2.3 Globala dataareor: çonst Type Var Programbeskrivning Blank = Midnatt : Arr = Nodep = Node = Head = Datum: Head Plats: Head 51: 52: 53: 54: 55: Text Text Text Text Text
"(32) /Används för att få mellanrum vid utskrift /
86399999 / 23:59:59z999 i
millise-kunder används som kontrolltal så
att inga blir större än detta /
Packed array (1..50) of char / I denna typ av array lagras en
for-donsregistrering /
Node Record into: arr link: Nodep EndPacked array (1..70) of char /i denna typ av array lagras huvudena av filerna/
Överföringsvariabel
av filhuvud
från
infil till utfil /
Internt filnamn på första filen /
\ andra filen /
tredje filen /
fjärde filen /
arrl: arr Ny: boolean Uttid: integer i: integer hastighet:integer accezinteger ret.integer hastzinteger msekl :integer rootzinteger station2:nodep
att lagra fordonsregistreringar från första filen /
Håller reda på om en ny fordons-registrering skall länka till den
länk-ade listan över intervallet i station
2/
Tiden vid station 2 som används vid
kontrollerna att hitta vid station 3 / Håller reda på antal stationer vid
utskrift /
Hastigheten som fordonet höll vid station l /
Indata av värde för accelerationer
som används vid beräkning av
ogran /
Indata som används vid beräkning av
ogran /
Indata att addera och subtrahera till
hastigheter vid kontroll /
Tiden att använda vid bestämning av intervallet för den länkade listan / Pekare som alltid pekar på början av den länkade listan /
Pekare som används för att lägga till poster i listan /
ogran:integer ograns:integer sträcklängd: integer räknarezinteger utfilztext
ut: packed array (1..14) of char riktning:chan paxel:O..99 stor:rea l oaxehread antal:integer
Värde att addera till tiden för att få
Övre tidsgränsen /
Ogran + tid = övre gränsen /
Indata son används vid beräkning av
ogran och ugran /
Håller reda på ordningstal vid
ut-skrift /
Internt namn på utfilen /
Array att lagra namnen på de olika filerna /
Indata att jämföras med riktningen i
fordonsregistreringen /
Indata som används vid beräkning av axelavståndsavvikelse /
Den längsta sträckan /
Paxel omräknat till kontrolltal för
övre axelavståndsavvikelse /
Lokala variabler Procedure: Milli Inläsning Fart Tall Dumpa Jamfor x:char tal:integer yzinteger hchar takinteger x:char skrapzreal o:real u:real hjalpmodep lista:arr tidenzinteger slutazboolean lokpekmodep
Tillfällig teckenlagringsvariabel /
Tillfällig tallagringsvariabel /
En räknare till indexnummer: array/ Flyttar över från filen till arrayen /
Används för att kunna dividera /
Hjälppekare för att inte tappa post-er när root flyttar fram /
Att lägga fordonsregistreringen från hjälp i (vid jämförelser) /
Att lägga tiden från lista i /
Kollar så man tagit bort alla som
går /
Används för att skapa nya poster till listan /
Axel Axelt Utskriv Rita Listning x:char tal:lnteger x:char tal:integer COHSt al :integer a2 a3 all a5 pzreal y:integer z:integer e:integer 12 cl ar:arr hininteger h2 kant:lnteger I tldzinteger
Att lägga ett tecken i /
Att lägga siffran l /
Att lägga ett tecken i /
Att lägga siffran i /
c=':' Att avskilja de olika tidsen-heterna /
b=' ' Att få lite mellanrum /
Att lägga axelavstånd: /
Att lägga medelvärdet av de olika axelavstånden: /
Räknar /
Antal avstånd att räkna medelvärde på /
Positioner i arrayen /
Att lägga fordonsregistrerlngen av bilen att jämföras med: /
Hastigheten av /
Hastigheten av
Räknare som kollar att man bara
hittar ett fcrdon / Jämförelse tid /
10
axlzinteger Axelavstând från arr /
ax2 Axelavstånd från arrl
statmodep Hjälppekare för att stega fram i
2.4 Home Frag Ask Milli Inlasning Gran Fart Tall Dumpa Jamfor Axel Axelt Utskriv Skriv ll
Översiktlig procedurbeskrivning
Blankställer skärmen och flyttar markören till hem
Ställer en rad frågor och lagrar undan svaren. Väljer ut den längsta sträckan och konverterar den till millisekunder.
?Konverterar från tecken till siffror
Plockar fram tiden ur en array och räknar om den till
millisekunder
Läser en fordonsregistrering från första filen och lägger den i en array
Räknar ut tidsintervallsgränserna för tidigast och senast an-komst vid nästa station
Plockar fram hastigheten ur en array
Räknar ut värdena att addera till tiden (additionen görs i Gran)
Tar bort poster från listan som ej kan bli aktuella längre fram p g a att tiden är passerad
Lägger till nya poster till listan som kan bli aktuella Plockar fram det första axelavståndet ur en array Plockar fram valfritt axelavstând ur en array Skriver utdatafilen
12.
Rita . Ligger i utskriv och räknar ut medelvärdet av axelavstânden
samt skriver antal axlar och axelavståndet
13
2.5 Beskrivning av huvudprogram met
Huvudprogrammet består av fyra delar: initiering, öppningsfiler, genom-gång av filer och stängning av filer.
Initiering:
Räknare som används vid utskrift sätts till noll. Home blankställer sedan skärmen. Frag låter användaren initiera vissa variabler. Home blankställer skärmen och en text om att programmet är i gång skrivs på skärmen. Paxel räknas om till uaxel och oaxel. De olika root pekarna sätts till Nil för att deras listor är tomma. Ny får värdet sant.
Öppning av filer:
Nu öppnas de filerna som användaren namngett i frag och deras huvuden kopieras över på utfilen.
Genomgång av :filer:
Denna del av HP genomgås så länge som första filen inte nått sitt slut.
Slut tilldelas falskt värde.
Nu läser Inlasning in den första fordonsregistreringen. Sedan kontrolleras det. om en dålig registrering eller en i fel riktning lästs in. Om så är fallet så läses nästa registrering in. Detta fortgår tills en korrekt registrering läses in eller om slutet på filen nås. Om det är en bra registrering så får slut ett sant värde och programmet går vidare. Nu anropas några procedurer med data från den senast inlästa registreringen. Milli anropas och tiden läggs i msekl. Fart anropas coh hastigheten läggs i hastighet. Tall och Gran räknar ut tidsintervallet. Jamfor lägger till registreringar som kan bli aktuella och Dumpa tar bort sådana som är inaktuella från listan. Listning söker i listan efter Samma fordon. Slutligen får ny ett sant
värde eftersom listan kanske ska ändras.
Stängning av filer:
i. i u :r . I! 72 '. CT: .uu-a 13.!..5...1 -' v7 0' 1. .. ", 51! i i .. .. _. v ru!
.I .. .2 . . ' \ / .4.3 .4,1 i a:in U! U! 00 m m. E27.:11 :i 71 ". 1! :r . r.
:Tj Li: Li 3._ , Pm ! 'M 4 P.. ., 4.! ['.l m m . m 4.3 mr. * 4.3 I: ' .' I ., mg [2 3 ^ .,.. ., -... vr u .V 'N . l -Li .. . .x. .. . r. vu. n-nçf , o' . IW! ;31. 'M H' . H L 1 i' *I ...1 13. r. r_ I m :11 F.. LL .
n. . .' -4541" l" '" ! . Å *fxrzå' 1:3 5 SV . ., m5 -1 I I' 11 '. '. .. ., '. .. .4 . -" " . k . . H] 25 l r . u. _..-.1
LL! . r . .2
. i *22 : z 3 -0: : 3: : 5: _ 7. .. . :. w L. : :R u: n._ i = .z .. ?5 . 8 L 0 p 3. .. .. . . I V f ) 'I V 9 (
51 Iaca
3. . m ä 1.. vi .. .2 ; . ... ha nu Su .2 .. . Mzm ... .2. ..:1. . h a n 3 : nu
C u u. ?i ... i 2 ; .. u. w. 5.
. . . zh ?. L 2. .. T. .. T. .. m: »nad r. .. r. .« . MM .L v uu
.1 w. : w .. .I m .. .a . .m .2 * 2 .. --. .. l. må. .. "
5. 5 3. . 5 S. . 33 * x ....w ..., . 1, 1.. E , . .r ti M2 5* m. : _5 nu: »d u :+ 1. i. S _. 4. . _ 5 7 7. .. .-m. : mi .. . ? L . w.. . : . . . 1 %
2.' .' r. m.. :iii In .. .? 21 23'. H 31'. .t.. ., . I. .. ] ..2...I :Wi 4..: n. #153! m :2121 a m 4...! .:2;: W! i :. .. .v i!? [IL .. _. .. .J a ,... .4
:3 H". 18 IT. u 3.. '0. ..' . -u' Hii 4... »
....a n .4.. av_ :n. . ... ...an a... .Jr-t 10... ... 3 .i a,.. . _ . M g w a i m . 7 3 . .n am . .m in _UH "i 5 _....L 5 ...T u a u E .. .i *
T; .-c " . 2 H A M . n. i. . .. : : .I J r. 03 1m .. . 2 5 ". K S U ... H
_-.
.
..
.u
.u V.. ...3 .1 ,11 .1 ?W i in r. : x-a ., _. 0 . '. 42 a m"nl 1. 0. 4 nu? F... .22 ' m |" '.3 1 I.: I" 1 [I ] |A. ..| aøl vzr a Bi1a0a1 Sid 13 (16)
u n'. .. .0 .1 1"' "l 'H I ru. .. 2313 ;' r: vl .-' M . a .. .t 5-4 . pm ; :a 31 '. 5". 123? U.. . ;... .4 :Tj L ? .1.... LU
BHaqa 1
Sid15 (16)
v' -. . ur 12 If .H W . ug p. . n : i:I: u 90 .... .1 r!:1 "N J I: :I N II .zzjr' m. 43.! .4.4 Cl zum ! ., mg 9.4 ... [I '1 "! :1. ...0 .: :fi I: .. .g l L'TE.. n ur. ... mg U! h a n " [I Iw' l rm -l ' r" ! i. . , u ' I »1 ..-: " " ' ! :1: .4.4 . EI r-ml i!) 4.. .! 'M ' un a ' v. »|. c .. .a L u ,^ 4|4 If .4 I" ,2 . ' I n a ' [II ' m v' Ill 4...! v r u' . I. .. , " :r . v' . LL! rm'! :3:: ... ..| n'-tf t! i LH -L J
*'33 -. 4... <0 .0 ... ..b LC .. .3.15 1-4...! 'r ", 3.... ... .. u' n n . , -[II ra s-0, ?li
. L .. w.: H. 7. . .L a i .. .2 . .L.w . . . T i m: 7... z.. å ... å.. ha ....... _ _ ».i 4._ I *