1998-04-18 Denna manual är skriven i html-text.Om du läser den med en browser kan du klicka på rubriker och automatiskt komma till rätt avsnitt. Vad kan jag använda programmet till? Hur startar jag programmet? Vad gör jag om programmet avbryts? Vad visar skärmen? Hur kör jag bilen? Hur ändrar jag ingångsvärden och konstanter? Hur väljer jag mod? Hur beskriver jag en körcykel? Hur beskriver jag en förbränningsmotor? Hur beskriver jag växellådan och fordonet Hur gör jag en fordonsfil för min bil? Koppling,friläge och tomgång?? Hur kan jag ändra tabeller under pågående simulering? Hur kan jag få kurvor som visar vad som hänt? Hur ändrar jag vad som sparas? Hur ändrar jag fordonskonfigurationen? Hur ändrar jag använda formler? Hur skriver jag egna komponentbeskrivningar? Hur använder jag tabelläsarna? Se Hur skriver jag egna komponentbeskrivningar? Krav på tabeller Vad gör programmet? Några simuleringsfel Dataspel Några tips Hybridbil? Hur kan jag komplettera grafiken med egna bilder? Om .BMP och .SIM bilder Vad kan jag använda programmet till? ==================================== Ett simuleringsprogram är ett konstruktions- och utvecklingsverktyg. Men det kan också användas av produktanvändare som vill studera en produkts egenskaper och som ren leksak.Nedanstående synpunkter avser programmet som konstruktionshjälpmedel som produktinformation och som leksak. Konstruktionshjälpmedel: Ett simuleringsprogram beskriver vad som händer när man använder ett antal samverkande komponenter på ett visst sätt.Om man vet exakt hur motor,kraftöverföring,hjul och kaross uppför sig var för sig och kan beskriva exakt hur de samverkar kan man åstad- komma ett simuleringsprogram som anger hur en bil kommer att bete sig. För alla datorprogram gäller regeln: sopor in = sopor ut.Vet man inte hur ingående komponenter beter sig eller hur de samverkar kan man inte åstadkomma en meningsfull simulering.Kraven på detaljerad specifikation av komponenter blir alltså mycket högre om man skall simulera ett system än om man skall bygga det och prova i verkligheten. Simulering ställer alltså mycket höga krav på specifikation.Att genomföra det merarbete som detta innebär kan ändå vara motiverat därför att man sedan enkelt kan ändra i specifikationerna för att via ett simuleringsprogram se hur varje ändring påverkar slutre- sultatet.Har man väl lyckats åstadkomma bra komponentbeskriv- ningar och bra beskrivningar av komponentsamverkan för en bil och vill veta vad det skulle innebära att t ex minska förluster i växellådan med 10 % kan man enkelt mata in denna ändring i simu- leringen för att se vad det skulle betyda vid olika driftfall.Är alla komponenter och alla samband rätt beskrivna får man ut ett svar som är rätt. Ett stort problem när det gäller att skriva specifikationer är att finna lämpliga presentationsformer.Vad skall man ange?Hur noggrant skall det anges?Skall man ställa upp tabeller eller rita kurvor o s v.För att kunna göra simuleringar måste man bestämma sig för någon lätt dataläsbar form.Om man kan enas om hur speci- fikationer skall skrivas för simulering har man därmed också fått fram ett sätt att beskriva komponenter.Alla komponentleverantörer kan då presentera sina produkter via diskettlagrade specifikatio- ner som enkelt kan jämföras. Man kan likna ett simuleringsprogram vid en TV.Den är av föga värde så länge ingen sänder program som den kan omvandla till bild.På samma sätt är ett simuleringsprogram av föga värde så länge ingen tillhandahåller specifikationer som det kan omvandla till systemprestanda,eller omvänt tillhandahåller systemprestanda som kan omvandlas till komponentspecifikationer. Produktinformation: Det är svårt att beskriva en komplicerad produkt som en bil på sådant sätt att alla användare vet hur man kan utnyttja den på bästa sätt.För att inte kostnaden för körkort skall bli orimlig måste körskolor begränsa sig till en ganska översiktlig bild av hur en bil fungerar.Bilförsäljare hinner,i bästa fall,visa några finesser.Och bilägaren lär sig med åren via den hårda vägen några knep.Men många egenskaper kommer aldrig till full användning.I vissa fall för att de är svåra att bekriva,i vissa fall för att inte ens tillverkaren känner till dem. Med ett simuleringsprogram kan bilägaren,eller den presumptive bil- köparen beskriva en viss väg och "köra" den utan störande inverkan från trafik o dyl.Man kan få svar på frågor som "Spar man bensin på att ta fart inför en uppförsbacke?","Påverkar det bensinförbrukningen om jag ändrar min hantering av växellådan?","Om jag ökar farten ökar luftmotståndet men motorns verkningsgrad ökar också så vilken fart bör jag välja om jag vill spara bensin?","Hur skall jag växla för att släppa ut så lite NOx som möjligt?","Hur mycket bensin kostar det om jag sätter på en takbox på semesterresan?","Hur påverkas acceleration och bensinförbrukning om jag lastar bilen med fyra personer och 100 kg bagage?" o s v. De specifikationer som ligger med programmet beskriver normala egenskaper för 80-talsbilar.Som framgår nedan kan du enkelt ändra om du kan få fram nyare uppgifter för de bilmodeller som du är intresserad av. Jag har en del ytterligare uppgifter om körcykler,motorer och fordon. Hör av dig om du är intresserad av detta. Leksak: Programmet kan användas som ett vanligt dataspel. Du kan beskriva banor i Tidcykel eller Karta och tävla med dig själv eller andra i att köra längst,på kortast tid,med minsta bensinåtgång, med minsta utsläpp av HC o s v.Du kan ändra bilens egenskaper,t ex sätta in en mycket liten motor och se om du kan ta dig upp för backar, du kan lägga in ökat rullmotstånd genom att ändra fordonsfilen för att "köra" banor i snömodd,du kan lägga in upp till tio växlar och prova vad som händer om du försöker variera motoreffekten i varvtalsled snarare än i momentled o s v. Hur startar jag programmet? =========================== I nedanstående beskrivning förutsätts att du har en PC (programmet går inte att köra på MAC). Lägg alla filerna i samma directory och kör START.BAT. Programmet hämtar hela tiden värden från tabeller på hårddisk eller diskett.På moderna datorer fungerar hårddisken så bra att hämtning från den knappast märks.Kör du från diskett däremot märker du att programmet då och då stoppar upp för att hämta nya värden. På äldre datorer var detta ett stort problem och det finns därför en möjlighet att komma ifrån detta. Om du inte vill att programmet hela tiden skall hämta värden från diskett eller hårddisk gör du på följande sätt: Lägg in RAMDRIVE.SYS (ingår i hjälpfiler till DOS) i bootdirectoryt. Gå till CONFIG.SYS. Lägg till en rad med DEVICE=RAMDRIVE.SYS 24 Boota om. Datorn lägger nu upp en ramdrive.Kolla vad den heter (använd t ex "Den här datorn").Om den t ex heter D: går du med en texteditor in i FIL.VAL och döper om de filer som beskriver TIDCYKEL,KARTA,MOTOR och FORDON genom att sätta D: framför namnen.När du så kör programmet kommer det att hömta dessa filer från aktivt directory,lägga över dem på ramdriven och därefter hämta värden från ramdriven.Du kan också sätta D: framför namnen på resul- tatfilerna så att programmet lagrar resultat på ramdisken men då bör du välja betydligt större ramdisk än 24 kB. Men på en normalt snabb dator behöver du inte göra detta. START.BAT börjar ev med annonssidor.Så följer ett par sidor med informationstext och så kommer själva programmet KONVBIL.EXE. Under detta förlopp får du hela tiden besked på skärmen om hur du skall komma vidare. Programmet KONVBIL.EXE börjar med fyra tablåer där du kan ändra de värden som programmet arbetar med.Hur du ändrar och hur du går vidare framgår av texten på skärmen. I tablån över använda filer anger du filnamn t ex D:KARTA.000. Programmet letar då efter KARTA.000 i aktivt directory och lägger över filen till D:KARTA.000 för att i fortsättningen arbeta med D:KARTA.000.Om D: är en diskdrive ger detta något snabbare hantering och mindre slitage på diskenheterna.Vill du använda filerna direkt i aktivt direktory anger du inte någon diskdrive utan enbart t ex KARTA.000. Principen för filöverföring är följande:Om andra tecknet i angivet namn är : eller om första tecknet i infilsdirectory ligger mellan A och z görs överföring.Om andra tecknet i angivet namn är : tas de två första tecknen bort när programmet söker efter infilen.Det söker alltså efter en infil med ett namn som motsvarar infilsdirectory+ återstående tecken.Filen läggs så över till angivet namn. Vad gör jag om programmet avbryts? ================================== Den diskenhet som anges för in och utfiler måste motsvara en reell diskenhet eller en ramdisk.Annars får du exekveringsfel när programmet försöker läsa eller skriva på en disk som inte finns.Ändra då diskenhet i FIL.VAL. Om tabelläsarna kommer till filslut utan att ha funnit något värde som motsvarar det eller de ingångsvärde(n) som den anropats med avbryts exekveringen med Halt.Före avslut lägger då fil- läsaren upp en fil ERROR.TAB i aktivt directory och skriver i denna in information om orsaken till avbrottet.Om programmet avbryts kollar du alltså om du i aktivt directory har fått en fil som heter ERROR.TAB.Om så är fallet läser du den med någon ord- behandlare för att se vad som orsakade avbrottet.När du läst den kan det vara lämpligt att radera den så att du kan se vad som hänt nästa gång programmet avbryts utan att vara osäker på om du läser en ny ERROR.TAB eller en som står kvar från förra av- brottet.(Detta gäller inte Tidcykel och Karta). Vad visar skärmen? ================== När du gått igenom de inledande tablåerna visar skärmen en instrumenttavla med följande innehåll: Överst anges vilket fordon du simulerar och dagens datum.Därefter följer ditt namn så att man kan se vem som gjort simuleringen om du sparar skärmbilden (sparas med "Print Screen").I tablån med använda filer finns en rad med ditt namn som du kan ändra där.Vill du ändra det permanent ändrar du med en texteditor i FIL.VAL. Övre raden avslutas med att den aktuella körtiden presenteras.Angivet värde är körd tid i sekunder. På nästa rad anges accelerationen under senaste beräkningscykeln i m/s2. Om du valt någon mod där värden inte hämtas från en körcykelfil anges koden för mod(er) efter accelerationen. Hastigheten anges av en hastighetsmätare där övre kanten anger begärd hastighet och huvudstapeln verklig hastighet. Strax under hastighetsmätaren står en siffra,cl/mil och ytter- ligare en siffra.Den första siffran anger bensinförbrukningen under hela körningen,den andra anger bensinförbrukningen under senaste beräkningscykeln.I båda fallen är sorten cl/mil. Längre ned under hastighetsmätaren finns längst till vänster en bensinmätare som går från noll till full tank.Under denna anges kvarvarande bensinmängd i cl. Mitt under hastighetsmätaren finns en vägmätare som anger körd sträcka i km med en decimal. Under vägmätaren finns en linje som visar hur marken lutar.Till höger om denna anges lutningen i % och höjd över startpunkt i m. Nedtill,till höger om bensinmätaren finns tre mätare för CO , NOx och HC.Under dessa anges motsvarande utsläpp i g.Denna siffra avser det totala utsläppet under hela körningen.Stapeln växer till 100 g. Därefter blir den dubbelt så bred och växer med en tiondel av tidi- gare ökningstakt.Den når alltså första stapelns längd vid 1000 g. Till höger om utsläppsmätarna finns en motoreffektmätare. Och längst ut till höger finns en stapel som anger bromskraft. Om du väljer Vindruta = N visar skärmen enbart det som beskrivits ovan.På rad 4 kan du då välja skala i höjdled för instrumenten.Du kan,i stället för siffervärde,ange C(GA),E(GA) eller V(GA) och får instrumentet anpassat till dessa format. Men du kan också sätta Vindruta till J , 2 ,3 , 4 , 5 eller 6.Instru- menten samlas då på skärmens övre halva och underdelen används för en stiliserad väg eller för musseldiagram. Vindruta=J: Se Dataspel Vindruta=2 , 3 , 4 , 5 eller 6: Undre delen av skärmen visar ett musseldiagram för verkningsgrad,CO,NOx,HC resp bensinflöde.Var du för ögonblicket befinner dig i diagrammet visas med en blinkande punkt. När den blinkande punkten flyttar sig lämnar den kvar ett spår i diagrammet.Du kan alltså i efterhand följa var du har varit även om du inte kan se hur länge du har stått kvar i varje punkt. Uppritningen av musseldiagrammet tar en liten stund.Tålamod är en dygd!! Hur kör jag bilen? ================== Bilen kör automatiskt och hämtar hela tiden erforderliga uppgifter från en fil som beskriver en körcykel (tidcykel eller karta).I den första tablån med filnamn betämmer du namn på den körcykel som programmet skall leta efter.Genom att ändra och skriva nya körcykel- filer kan du lägga upp nya banor som bilen får köra.Växlingspunkterna hämtas från en speciell fil som också namnges i första tablån. En viktig fördel med att använda automatisk körning är att körstilen inte ändras från gång till gång.Vill du t ex veta hur bensinförbruk- ningen påverkas om du ändrar växlingspunkter på en automatlåda kan du naturligtvis köra en verklig bana,sätta in en ny automatlåda och köra på nytt för att se vad det gav.Men detta är mycket svårt.Hur väl du än försöker köra med samma fart och samma acceleration kommer du att trampa lite olika hårt på gasen och få variationer som döljer den skill- nad du ville mäta.Simuleringsprogrammet däremot beräknar gaspådraget på samma sätt varje gång du kör banan. Men du kan,när du vill,gå in och ta över körningen. Du kan köra med tangentbordet,med mus eller med joystick. Hur du styr med mus eller joystick framgår av avsnittet Hur väljer jag mod? nedan. Om du går in från tangentbordet kommer du till en mod där programmet behåller de värden du matat in.Du får alltså i fortsättningen hela tiden styra från tangentbordet. Kör med siffertangenterna till höger på tangentbordet (tänd NumLock- lampa). 4 sväng vänster 6 sväng höger 7 och 9 ger brantare svängar (med risk för sladd). Svängar hämtas alltid från tangentbord,mus eller joystick,aldrig från körcykelfil. 8 manuell styrning av motoreffekt,ökad effekt 2 manuell styrning av motoreffekt,minskad effekt 0 bromsning (stryper motoreffekten,effektpådrag lossar bromsen) G manuell växling,högre växel g manuell växling,lägre växel A,a automatisk växling vänster musknapp manuell växling,lägre växel höger musknapp manuell växling,högre växel > manuell styrning av hastighet,lägre hastighet > manuell styrning av hastighet,högre hastighet M avbrott och återgång till inledande tablåer V avbrott och presentation av aktuella variabelvärden Du kan också styra motoreffekten med I och P (ökad effekt) samt i och p (minskad effekt). 8,2,I och i ändrar effekten i steg om maxeffekt (enl tablå två rad ett) dividerad med 30 för varje beräkningscykel.För att gå från helt strypt motor till fullt pådrag tar det alltså 30 beräkningscykler.P och p ändrar motoreffekten i steg om 0,5 kW. Programmet kollar hela tiden i tabell 1 i förbränningsmotortabellerna att inte max moment d v s WOT-momentet (Wide Open Throttle) överskrids.I så fall begränsas momentet vilket du märker genom att det inte går att öka motoreffekten. < och > ändrar begärd hastighet med 1 m/s för varje beräkningscykel. 0 ökar för varje beräkningscykel bromsningen med maximal bromskraft (enligt tablå två rad nio) dividerad med 5.Manuellt motorpådrag medför att bromskraften omedelbart faller till noll.OBS! 0 ändrar inte programmets mod.Du kan inte använda bromsning med 0 när bilen kör efter begärd hastighet d v s i körcykelmod eller i mod >. Om man vill se hur mycket det betyder om man kopplar ur och slår av motorn så att bilen ibland får frirulla kan man stänga motorn genom att trycka på C.Motorn stängs då av och bilen frirullar men varvtals- räknaren "fastnar" och visar inte rätt värde.När man drar på motoreffekt t ex med 8 går motorn igång och börjar dra bränsle.Om man trycker på C i mod 1.M eller 1.Y slår motorn ifrån på vanligt sätt.För att sedan få igång motorn behöver man trycka på någon tangent men man måste då välja någon tangent som inte ändrar moden,t ex kan man trycka på 5 eller ge en kort bromsning med 0. Hur ändrar jag ingående värden och konstanter? ============================================== Programmet utvecklades ursprungligen som ett hjälpmedel för jäm- förelser mellan konventionell bil,hybridbil och elbil.Det var då viktigt att samma ingångsvärden kunde användas för alla biltyper. Jag har behållit detta.Det är därför som de inledande tablåerna innehåller tomma rader.Motsvarande filer för ingångsvärden (FIL.VAL , CONS.VAL , CONS2.VAL och UTG.VAL) måste skrivas med rader även för sådana ingångsvärden som inte används för konventionell bil. När det gäller maximal motoreffekt används för hybrid- och elbil i stället en begränsning av maximal motorström.Programmet för konven- tionell bil räknar om denna ström till effekt genom att multiplicera med 120 (konstant batterispänning = 120 V).Det värde som skall stå på rad 1 i CONS.VAL är alltså max effekt dividerad med 0,12.När du ändrar i tablån däremot anger du direkt effekten i kW. I början på programmet får du upp en tablå där du kan se var programmet hämtar ingångsvärden och lägger resultat.I denna tablå kan du även ange ditt namn vilket kan vara bra om du vill spara skärmbilder och se vem som gjorde simuleringen.Så följer en tablå som anger använda bilkonstanter.Efter denna kommer en tablå som anger programkonstanter och slutligen en tablå som anger ingångsvärden för vissa variabler.Vid varje tablå har du möjlighet att ändra gällande värden. Under pågående körning kan du nå dessa inledande tablåer genom att trycka på M.Simuleringen stannar då och går till de inledande tablåer där du kan ändra filnamn,konstanter och variabler.Dessa har nu sina aktuella värden och du kan alltså se vilka värden programmet arbetade med i avbrottsögonblicket och om du vill kan du ändra dessa värden. Observera att om du avbryter programmet,t ex med M,och körningen går i realtid får du ett orimligt stort tidsinkrement när du kommer till- baka till körningen.Detta gäller speciellt om du använder mussel- diagram eftersom det tar en stund att återrita dessa.Om du på detta sätt avbyter en körning förlorar du också information om tidigare arbetspunkter.Du får ett nyritat musseldiagram.Detta är alltså också ett sätt att rensa bort gamla arbetspunkter ur ett musseldiagram som blivit nerklottrat av arbetpunkter. I första tablån anges vilka tabellfiler programmet använder.Det finns en viktig skillnad mellan att ändra dessa i programmets början och att ändra dem under pågående körning. Om du anger en diskdrive när du startar programmet t ex D:KARTA.000 kommer programmet att leta efter filen KARTA.000 i aktivt direktory,föra över den filen till ramdiskfilen D:KARTA.000 och sedan använda sig av denna ramdisk-fil.Om du sedan under körningens gång ändrar till t ex D:KARTA.001 kommer programmet enbart att leta på ramdisk D: efter D:KARTA.001.Finns inte den filen stannar programmet med ett exekveringsfel. 6 (22) Om du har programmet i A: tillsammans med filerna A:ICMOT.000 och A:ICMOT.001 och du vill börja med att använda A:ICMOT.000 kan du föra över den till ramdisk D: genom att i programmets början ange D:ICMOT.000 (Läsning från ramdisk är skonsammare mot diskettsta- tionen och snabbare än läsning från diskett).Filen A:ICMOT.001 förs däremot inte över till ramdisk och du måste alltså ange den som ICMOT.001 när du vill gå över till den. I vissa fall finns ett sätt att komma runt detta problem.Om du vet att du enbart kommer att arbeta med karta-filer behöver du inte filen Tidcykel.Du kan då på rad 1 ange D:ICMOT.001 vid programstarten.Resultatet blir att A:ICMOT.001 förs över till D:ICMOT.001. Du kan sedan byta mellan D:ICMOT.000 och D:ICMOT.001 men om du väljer Cykeltyp = Tidcykel spårar programmet ur. Du kan också trycka på V under pågående körning.Du får då upp de flesta av de variabler som du inte kommer åt via M-kommandot. Dessa variabler anges med de namn de har i programmet.De går att ändra men det finns stor risk att sådana ändringar ger egendom- liga resultat. I nästa tablå anger du de konstanter som beskriver den aktuella bilen. För rad 3 Fordonsmassa och rad C CdA gäller att du kan ange -1.Progam- met letar då i slutet på den fil som beskriver fordonet för att finna den fordonsmassa och det CdA som tabellen är gjord för.Det sätter så fordonsmassa och CdA till dessa värden.Har du angett positiva värden som avviker från dem som tabellen är gjord för gör programmet en omskal- ning.Denna tillgår så att luftmotståndet med tabellens CdA dras ifrån tabellens värden.Återstående rullmotstånd anses proportionellt mot fordonsmassan och omräknas till den massa du angett.Så skalas luftmot- ståndet om till det CdA du angett och läggs till rullmotståndet. CdA är bilens tvärsnittsyta A gånger en luftmotståndskoefficient Cd som beror på bilens form.För vanliga bilar är Cd omkring 0.5 och för extrema sportbilar kan man komma ned mot 0.3. För att beräkna CdA uppskattar du tvärsnittsytan som maximal bredd gånger maximal höjd och multiplicerar med 0.5.Om du sätter på en takbox lägger du till takboxens tvärsnittyta till bilens tvärsnittsyta. Hur väljer jag mod? =================== Som defaultvärde gäller alltid att programmet hämtar aktuella värden från den tidcykel eller den karta du har valt.Du kan emellertid ändra detta och i stället hämta värden från tangent- bord,mus eller joystick.Ändringsmenyn för detta kan du nå från tablån med utgångsvärden. När du befinner dig i denna tablå och har gjort alla ev ändringar i den trycker du på M.Du kommer då till en modmeny. 1 innebär att du väljer pådragsmod. > Om du väljer > kan du därefter ange begärd hastighet som då får det konstanta värde du angett oberoende av vad som står i den körcykel du har angett.Väljer du > får du föreslaget värde på >.Vill du ändra det måste du,innan du trycker RETURN,skriva > för att få ändra värdet. I Väljer du I kan du därefter ange motorström i A.Hastigheten blir då vad denna effekt kan ge oberoende av begärd hastighet i körcykeln.Hastigheten kommer i denna mod att variera med marklutning.Väljer du I får du föreslaget värde på I.Vill du ändra det måste du,innan du trycker RETURN,skriva I för att få ändra värdet.(I fungerar inte på konventionell bil) P Fungerar som I men med motoreffekt i kW i stället för motor- ström.Sätter du fast effekt med P kan du få problem att komma igång.Starta då i någon annan mod.Gå med M tillbaka till mod- tablån och sätt P.Observera dock problemet med avbrott om du kör i realtid! M Väljer du M styr du hela tiden motoreffekten och bromsen med musen.Begärd hastighet från aktuell körcykel visas på skärmen vilket gör det möjligt att manuellt försöka följa en körcykel. Denna begärda hastighet har emellertid ingen annan effekt i programmet.Drar du muspekaren nedåt på skärmen minskar motor- effekten och övergår till bromsning som ökar när du drar mus- pekaren nedåt.Om du satt Sidrörelse = J i tablå tre medför sid- förflyttning av muspekaren att bilen svänger.Oberoende av om du valt mod M eller inte ger tryckning på musens knappar byte av växel. Y Väljer du Y styr du med joystick i ställer för med mus. T,K eller F innebär styrning med begärd hastighet som hämtas från aktuell körcykel.A ger återgång till automatisk växling. 2 innebär att du väljer lutningsmod L Väljer du L kan du därefter ange en marklutning som bibehålls oberoende av vad körcykeln anger för lutning. T,K eller F innebär att lutningen hämtas från aktuell körcykel. 3 innebär att du väljer tidsinkrementmod D Väljer du D kan du därefter ange ett tidsinkrement i sek som bibehålls oberoende av vad körcykeln anger för tidsinkre- ment.Väljer du D får du föreslaget värde på D.Vill du ändra det måste du,innan du trycker RETURN,skriva D för att få ändra värdet. R Väljer du R sätts tidsinkrementet för att ge körning i real- tid.Programmet kollar på datorns interna klocka hur lång tid föregående beräkningscykel tog och tilldelar denna tid till tidsinkrementet. SPACE innebär att tidsinkrementet hämtas från aktuell kör- cykel. 4 innebär att du väljer områdesmod.Detta har ingen effekt för konven- tionell bil. Du kan också under pågående körning gå in från tangentbordet och ändra mod.Du ställer då önskat värde genom att hålla tangenten nedtryckt tills du nått det värde du vill ha. I eller 8 ger mod 1.I Ökning av effekt med maxeffekt/30 per cykel i eller 2 ger mod 1.I Minskning av effekt med maxeffekt/30 per cykel P ger mod 1.P Ökning av effekt med 500 W per cykel p ger mod 1.P Minskning av effekt med 500 W per cykel > ger mod 1.> Ökning av beg hast med 1 m/s per cykel < ger mod 1.> Minskn av beg hast med 1 m/s per cykel L ger mod 2.L Ökning av lutning med 0.5 % per cykel l ger mod 2.L Minskn av lutning med 0.5 % per cykel När du på detta sätt ställer värden med tangenttryckningar finns en viss risk att du råkar släppa tangenten mellan att programmet noterat "tangent nedtryckt" och att det läst av tangenten.Prog- rammet stannar då men kommer igång om du ger tangenten en snabb nedtryckning. s stoppar upp programmet S återstart efter stopp Q ger avslut med Fulltid:=ttot Trycker du på någon annan tangent nollställs pådragsmod och lut- ningsmod d v s du kommer till mod 1. , 2. medan mod 3 och 4 kvarstår. Hur beskriver jag en körcykel? ============================== Körcykel beskrivs i filer med de namn som anges på rad 1 och 2 i första tablån d v s i filnamnstablån. Under en körning behöver du variera vissa storheter.Du kan vilja ha olika hastighet,simulera backar,köra ut ur och in i miljökäns- liga områden och använda olika tidsupplösning på beräkningarna. De flesta av dessa storheter kan du ändra direkt från tangentbordet men om du vill simulera en viss körcykel är det opraktiskt att hela tiden ändra värden via tangentbordet.I stället använder du en fil där programmet vid varje beräknings- cykel kan läsa av vilka värden som gäller.Allteftersom bilen kör kollar alltså programmet bl a vilken begärd hastighet som pådraget skall försöka uppnå. En förutsättning för att programmet skall kunna hitta aktuella värden är att det finns någon storhet som anger hur långt bilen har kommit.Det kan antingen vara hur långt bilen kört i väg eller hur länge den kört i tid.Vilket du vill köra bestämmer du genom att i filen CONS2.VAL skriva in Karta resp Tidcykel på rad nr 3. Du kan också ändra valet i början av programmet när du får upp tablån med använda konstanter.Du kan även under pågående körning hoppa mellan karta och tidcykel genom att trycka på M så att du får upp tablån med använda konstanter där du kan ändra ditt val. Du beskriver körcykeln i en tabell som du gör med någon editor som producerar ASCII-kod utan några styrtecken för marginaler, sidslut mm t ex med Edlin eller med editorn i Turbo Pascal eller i Norton Commander. Ursprungliga programmet läste körcykelfiler med tabelläsaren Ttabr1 men denna har ersatts med Ttabr01 som anpassaats speciellt för läsning av körcykeltabeller.Detta ställer lite ändrade krav på dessa tabeller. För att undvika felläsning i tabellens början skall den börja direkt med en rad med sex siffervärden i sex kolumner (kol0 tid i s eller sträcka i m,kol1 begärd hastighet i m/s,kol2 lutning i %,kol3 körmod, kol4 tidsinkrement,kol5 sidavvikelse).Alltså ingen inledningstext och inget tabellnummer.Avsluta varje rad med RETURN och gör med RETURN en tomrad mellan raderna. Om du gör en karta anger du i första kolumnen hur långt bilen kört i m.Om du gör en tidcykel anger du i första kolumnen hur länge bilen kört i s.Andra kolumnen skiljs från den första med minst ett mellanslag.Oberoende av om du gör karta eller tidcykel anger du i andra kolumnen begärd hastighet i m/s.Tredje kolumnen skiljs från andra med minst ett mellanslag och anger lutning i % (negativt värde = utförsbacke).Fjärde kolumnen anger körmod enligt nedan och femte kolumnen anger tidsinkrement i s (-1 ger körning i realtid).Sjätte kolumnen anger sidavvikelse (se avsnittet Dataspel).Efter sjätte kolumnen avslutar du raden med RETURN och gör en tom rad med hjälp av RETURN.Därefter är det dags för nästa rad i tabellen. Samma körcykelfil skall kunna användas för såväl konventionell bil som för hybridbil och elbil.Det finns alltså möjlighet att ange kör- moder som avser hybridbil och elbil men som saknar innebörd för konventionell bil (t ex körning i miljökänsligt område).Nedanstående sammanställning tar upp alla körmoder inkl dem som inte är aktuella för konventionell bil. Körmod 0 = icke miljökänsligt område börjar 1 = miljökänsligt område börjar 10 = startpunkt för upprepning 11 = upprepa förloppet från närmast föregående start- punkt som markerats med 10 12 = byt Karta eller Tidcykel till nästa enligt lista i filen NEXT.VAL.En rad med Del i NEXT.VAL bety- der:Radera fil enligt ovanstående rad och läs in fil enligt nästa rad.Om samma filnamn återkommer återgår läsningen till detta namns första pos. 15 = byt Karta eller Tidcykel till nästa enligt lista i NEXT.VAL.Starta läsning från sträcka resp tid enl kolumn 4 men fortsätt inkrementering av to- tal sträcka och tid 20 = byt Cykeltyp från Karta till Tidcykel eller omvänt 21 = begärd hastighet gäller i det antal sekunder som anges i kolumn 4.Beräkningar sker med föregående tidsinkrement.Därefter återgår begärd hastighet till föregående värde.Två rader med mod 21 får inte ligga efter varandra utan någon rad med annan mod emellan. 30 = Kolumn 1 avser begärd hastighet (bryter ej I,P,>) 31 = Mod J.Kolumn 1 avser drivmotorström i A (ej I,P,>) 32 = Mod W.Kolumn 1 avser drivmotoreff i kW (ej I,P,>) 4X = X=Antal tidsinkrement till beg hast 40=41.Drivning 5X = X=Antal tidsinkrement till beg hast 50=51.Broms. 60 = Stanna och avvakta S. 71,72,73 = Påbörja lagring av värden i A , P resp J. 75,76,77 = Avsluta lagring av värden i A , P resp J. 100 = Avsluta 101 - 110 = Växelnr 1 - 10. 120 = Automatväxel över 999 Aktivering och avaktivering av bilder i Vindruta 10xx aktiverar bild,20xx avaktiverar bild för bilder som ingår i programmet enligt xx=01 Korsning till vänster xx=02 Korsning till höger xx=03 Höghus xx=04 Hus till höger om vägen (vid start) xx=05 Korsande bil xx=06 Mötande bil xx=07 Upphunnen bil Så länge dessa bilder är aktiverade upprepas de enligt vissa kriterier (se källkoden i SSIKTK.PAS).xx 03-07 aktiveras vid start (se källkoden i KONVBIL.PAS) och om du inte vill ha dem måste du avaktivera dem. 12nn aktiverar egen bild på det sätt som finns beskrivet i Hur kan jag komplettera grafiken med egna bilder? Sådan bildinläggning sker omedelbart när programmet kommer fram till moden och fortsätter tills hela bildserien försvunnit vid skärmens nerkant.Därefter avaktiveras moden och om du vill att den skall upprepas måste du på nytt aktivera den.Så länge en bildserie (t ex BILD14Y) visas är denna mod (d v s 1214) upptagen och du kan inte aktivera nya bilder med 1214. Simuleringen tillgår så att pådrag och broms försöker uppnå begärd hastighet under ett tidsinkrement.Ett högt värde på tids- inkrementet ger alltså mjuk körning med lång tid för acceleration och bromsning.Det ger också en snabb exekvering eftersom antalet beräkningspunkter blir litet.Å andra sidan ger ett högt värde på tidsinkrementet dålig noggrannhet eftersom programmet inte hämtar de olika värden på t ex motorverkningsgrad som förekommer under ett accelerationsförlopp.Ett sätt att få mjuk körning med god noggrannhet kan vara att välja litet tidsinkrement men begränsa max motoreffekt) och max bromskraft.Ytterligare ett sätt är att med körmod 4X och 5X dämpa pådrag och broms till att omfatta flera tidsinkrement. Ett problem med ett högt värde på tidsinkrementet är att program- met beräknar vad som händer under tidsinkementet för att nästa gång återkomma till tabellen ett tidsinkrement senare.Om bilen under ett tidsinkrement hinner passera mer än en rad blir någon rad överhoppad.Den information som finns på en överhoppad rad blir aldrig inläst och den kan alltså inte användas av program- met.Om programmet t ex hoppar över en rad med Körmod = 10 sätts aldrig det värdet på startpunkten och upprepningen vid Körmod = 11 kommer då att göras från fel startpunkt.Man måste alltså iakta en viss försiktighet när man väljer tidsinkrement och värden i första kolumnen.Vid mod 21 gäller detta inte bara för tidsinkre- mentet utan för hela den angivna tiden. OBS!! I karta kan du inte sätta begärd hastighet = 0.Om du gör det kommer bilen att stanna så att den aldrig når fram till nästa rad.Använd mod 21 för att åstadkomma stopp i karta. Vid långa körcykelfiler blir programmet trögt eftersom det,när det kommer långt fram i filen,läser hela långa filen varje gång det skall hämta nya värden.Det märks inte så mycket på en snabb dator men även där kan det bli önskvärt att snabba upp programmet.Detta kan man göra genom att dela upp körcykeln i delfiler och lista dessa i en fil som heter NEXT.VAL.Genom att i slutet på varje fil ange körmod 12 i fjärde kolumnen beordrar du programmet att gå till nästa fil enligt listan i NEXT.VAL.I NEXT.VAL skriver du varje fil på en ny rad utan mellanrum mellan raderna.Om du anger diskdrive flyttar programmet filen från aktivt directory till den diskdrive du anger.Om du skjuter in en rad med Del mellan två rader kommer programmet att radera den fil som står på raden ovanför när det går över till den som står nedanför. OBS! Du måste ge exakt samma namn på första filen som det som står på första raden i NEXT.VAL.Använder du t ex inte små och stora bokstäver på samma sätt byter inte programmet fil.Ibland kan detta vara ett an- vändbart sätt enbart köra igenom första avsnittet av en körcykel. Hur beskriver jag en förbränningsmotor? ======================================= Förbränningsmotorn beskrivs i en fil med det namn som anges på rad 4 i första tablån,d v s i filnamnstablån. En förbränningsmotor beskrivs med 5 tabeller. Beträffande angivande av tabellnr och uppställning av tabellerna gäller samma regler som för alla tabeller. Tabell 1 skall i kolumn 0 (vänstra kolumnen) ange ingångsvärden för varvtal i rpm.Börja med 0 och sluta med ett värde som är högre än vad som kan förekomma under simuleringar.I nästa kolumn anger du maximalt vridmoment i Nm d v s vridmoment vid fullt gaspådrag.I vissa tabeller finns även en kolumn som anger bromsmoment vid motorbromsning.Denna används inte och där kan alltså stå vad som helst. Tabell 2 är ett musseldiagram i tabellform.På rad 0 anger du vridmoment i Nm och i kolumn 0 varvtal i rpm.Utvärdena från tabellen är verkningsgrad som funktion av vridmoment och varvtal. Tabell 3 anger CO-utsläpp,tabell 4 NOx-utsläpp och tabell 5 HC- utsläpp.Dessa anges som funktion av vridmoment i Nm (rad 0) och varvtal i rpm (kol 0).Värdena avser utsläpp i promille av till- fört bränsle.Om motorn vid ett visst moment och varvtal avger 1 g CO per 2 kg tillfört bränsle skall du alltså ange 0.5 på motsva- rande plats i tabell 3.Tabell 4 och 5 anger på motsvarande sätt NOx-utsläpp resp HC-utsläpp. Beräkningen av CO- , NOx- och HC-utsläpp utgår från bränsleförbruk- ningen.Bränslemängd anges i liter.Eftersom tabell 3 , 4 och 5 anger utsläpp i g/kg måste bränslevolym räknas om till bränslemassa för att man skall få fram utsläpp i g.Bränslet täthet sätts då till 0.75 kg/l. Detta värde kan inte ändras utan omkompilering av programmet men det går naturligtvis att räkna om ingående värden i tabell 3 , 4 och 5 för att ta hänsyn till bränsle med annan täthet.Strängt taget skall dessa tabeller ange utsläpp i g per 1.33 l bränsle. Ett viktigt skäl till att ottomotorn kommit att dominera som personbils- motor är att man kan reglera effekten i den takt som trafiken kräver. För vissa motortyper,t ex stirlingmotor och gasturbin,gäller att det är svårt att snabbt ändra uteffekten.Det finns en möjlighet att simulera detta.Nedanför tabell 5 gör du en tomrad,så en rad där det står Const, så en tomrad och så en rad med en siffra.Denna siffra anger hur många sekunder det tar att ändra effektpådraget med ett steg. Denna begränsning av effektens ändringshastighet fungerar enbart om du kör från tangentbordet med 8 och 2 för ökning resp minskning av effekt.Om siffran är 0 eller om dessa rader saknas ändras effekten med ett steg per beräkningscykel. Hur beskriver jag växellådan och fordonet? ========================================== Växellådan beskrivs i en fil med det namn som anges på rad C i första tablån d v s i filnamnstablån.Denna fil flyttas inte till ramdisk. Fordonet beskrivs i en fil med det namn som anges på rad 6 i första tablån d v s i filnamnstablån. Fordonet beskrivs i en endimensionell tabel som anger framdriv- ningskraft i N (kolumn 1) som funktion av hastighet i m/s (kolumn 0).I denna fil skall även finnas texten Const Fordonsmassa i kg xxx CdA i m2 yyy där xxx anger den fordonsmassa i kg som tabellen är uppgjord för och yyy det värde på CdA i m2 som tabellen är uppgjord för. Hur gör jag en fordonsfil för min bil? ====================================== Om du inte vill göra fordonsfilen direkt med någon ordbehandlare kan du använda hjälpprogrammet DOFORD.EXE. Du börjar då med att döpa filen.Det namn du anger skall du sedan ha på rad 6 i filnamnstablån när du kör simuleringsprogrammet. Så skall du ange rullmotståndet vid stillastående.För att få veta detta kan du lägga ur växeln,lossa alla bromsar,dra bilen och se hur stor kraft som erfordras för att den skall börja rulla (prova på några olika ställen för att vara säker på att du valt plan och slät väg).Jag brukar använda en personvåg,en sådan där platt liten badrumsvåg,som jag sätter mot bilens bakände.Så trycker jag tills bilen börjar rulla och läser av vad vågen visar. Den siffra som vågen visar skall du dividera med bilens massa.Om bilen är tom kan du ta tjänstevikten minus 80 kg. Det rullmotstånd du nu fått fram är något för högt eftersom det inklu- derar motståndet i differentialen.För en första uppskattning kan du försumma detta fel men om du vill vara mer noggrann kan du lyfta driv- hjulen och dra runt dem med fjädervåg så att du kan beräkna det mot- stånd som differentialen ger.Egentligen skall då båda hjulen dras runt samtidigt vilket går att ordna genom att man binder ett snöre i varje hjul,binder ihop snörena och drar från en punkt rakt framför eller rakt bakom bilen.Be ett par medhjälpare kolla att båda hjulen rör sig så att inte något hjul står stilla p g a anliggande bromsar e dyl. När bilen rullar varierar rullmotståndet något med hastigheten.Detta beror bl a på att däcket värms av förlustvärmet vilket medför att gummits egenskaper ändras och på att förlusterna i gummit inte bara beror på gummits deformation utan också på deformationshastigheten.Det finns i litteraturen en del formler för att ta hänsyn till detta t ex F = 100 m + 0,38 v m N där m fordonsmassa i ton v hastighet i km/tim men det är tveksamt om de medför att man kommer närmare sanningen än om man bara räknar med hastighetsoberoende rullmotstånd.När hastigheten blir så hög att den hastighetsberoende termen börjar spela någon roll har luftmotståndet ökat så att det svarar för den dominerande delen av totala framdrivningsmotståndet.Så svara N på frågan om du vill ange rullmotstånd vid olika hastigheter. För luftmotståndet skall du ange bilens tvärsnittsyta som du kan upp- skatta genom att mäta bredd och höjd. Cd beror på bilens strömlinjeform.Normalt är Cd omkring 0,5 men om din bil är ovanligt strömlinjeformad sätter du ett lägre värde ner mot 0,3 för extrem sportbilsform.Är den ovanligt kantig sätter du högre värde upp mot 1,0 om tillverkaren inte gjort något alls för att hålla nere luftmotståndet. Koppling,friläge och tomgång?? ============================== En fråga som man måste ställa sig när man gör ett simuleringsprogram är "Hur många detaljer skall jag ta med?".Det går naturligtvis att ta med hur mycket som helst men risken är att programmet blir svårhanter- ligt och att hanteringen av oviktiga detaljer skymmer det väsentliga. Jag har därför valt en närmast skissartad hantering av koppling,friläge och tomgång. Om du vill koppla ur motorn och stänga av den helt använder du C. Om inte motorn är avstängd med C sätter Ggear motorns minimivarvtal till 300 rpm.När bilen stannar går alltså motorn med 300 rpm och matar hjälp- apparater med hjälpapparateffekten. I Hhast sätts minimomentet ut till växellådan till 6 Nm.För att inte bilen skall rulla av detta krävs att rullmotståndet plus ev åtdragen broms ger en bromskraft som överstiger dragkraften på ilagd växel (normalt ettan).Om inte bilen rullar sätts hastigheten i Hhast till 0,001 m/s d v s en snigelfart som eliminerar problemet med division med noll för storheter med hastigheten i nämnaren. För att bilen skall kunna starta måste WOT i förbränningsmotortabell 1 ge en maxeffekt vid 300 rpm som överstiger hjälpapparateffekten.Över- skottet måste vara så stort att det räcker till för att på ettan över- vinna rullmotståndet vid stillastående. Hur kan jag ändra tabeller under pågående simulering? ===================================================== När jag började med föregångare till det här programmet använde jag det kommersiella programmet SideKick för att,under pågående körning gå in och ändra i tabeller.Detta var praktiskt vid debugging när det gällde att se hur ändring av ingångsvärden påverkade slutresultatet. I och med att programmet blivit mer utvecklat har det emellertid visat sig att det är sällan någon mening att gå in och ändra under pågående körning.Jag har därför inte gjort något för att underhålla denna möjlighet. Om du har en WINDOWs-tangent kan du med denna gå ur ett pågående program för att t ex med NotePad ändra i tabeller.Därefter kan du återgå till programmet.I princip skall detta fungera men på min dator (IBM Aptiva) brukar det medföra att tangentbordet kopplas bort. När man väl börjat få ett fungerande program är det ofta bättre att i förväg göra alternativa tabeller i stället för att ändra i befint- liga tabeller.Du kan så med M komma till filnamnstablån och där byta till den alternativa tabellen.Observera dock problemet med att använda M i realtidsmod. Hur kan jag få kurvor som visar vad som hänt? ============================================= Programmet lagrar för varje beräkningscykel värden i två resul- tatfiler.Detta görs i unit Sspara och Ssparap.Du kan där se vilka värden som lagras och ev ändra detta.Om du ändrar måste program- met kompileras om med TurboPascal V. I tablån över Programkonstanter anger du med 1 i Pres/Spara vilka filer du vill spara värden i. Vid uppläggning av en resultatfil lägger programmet in ett ta- bellhuvud som det hämtar från filerna BAS.RES resp BASP.RES.Denna uppläggning av resultatfiler görs även om du inte angivit att du vill spara några värden.Orsaken är att detta görs innan du går in i programmets körcykeldel och om du skulle vilja börja spara värden senare under körningen behöver du ha resultatfilerna upplagda. För att omvandla tabellvärden till kurvor använder du kurvritaren i hjälpprogrammet KURVOR.EXE. Avsikten är att man skall använda tid eller vägsträcka som X-axel.Såväl tid som vägsträcka är monotont växande storheter och kurvritaren kräver att den kolumn som skall ge X-värden innehåller monotont växande värden. X-axeln är 600 pixels lång vilket innebär att kurvritaren kan ge 600 värden i x-led.Men om inte den kolumn som skall ge X-värden råkar vara just 600 värden kan det bli aktuellt med flera Y-värden för samma X-läge. Beroende på vad du vill se kan du välja om kurvritaren skall visa det högsta (maX),det minsta (MiN) värdet eller medelvärdet (meDel).Observera att max och min inte avser absolutvärde utan värde med tecken!I mod maX slår alltså -2 ut -3. Vill du detaljstudera ett avsnitt kan du avgränsa kurvorna till detta avsnitt genom att ange Xmin och Xmax. Kontrollera innan du använder kurvritaren att inte tabellen innehåller några orimliga värden,t ex skrivfel vid programavbrott. Du kan få kurvritaren att samtidigt visa 5 kurvor med olika färg.För var och en av dessa kollar kurvritaren det högsta tabellvärdet inom det sktuella avsnittet (om du inte angett Xmin och Xmax i hela tabellen). Kurvorna skalas så att de ryms inom Y-axelns 400 pixels.Om ingen kurva har negativa värden läggs X-axeln längst ner på skärmen.Har någon kurva negativa värden läggs X-axeln i skärmens mitt och kurvorna skalas in på +200 till -200 pixels.För varje kurva anges det maxvärde som den skalats med (avrundat till heltal) i kurvans färg längst upp till vänster på skärmen. Ett problem är att värden avrundas och att division med noll ger exekveringsfel som kan avhjälpas genom att sådana värden ges ett försumbart litet värde.De fel detta ger påverkar knappast resultatet i sin helhet men det kan medföra enstaka orimliga värden i resultat- tabellen.Ett sådant värde med orimligt stort absolutvärde medför att den storheten skalas ned så att man inte ser de variationer man vill studera.Ett exempel på denna typ av problem är bensinförbrukningen per mil under senaste beräkningscykel som ju blir oändlig om bilen står stilla.För att inte få exekveringsfel sätts inte hastigheten till noll utan till 0,001 m/s.Men värdet blir ändå så högt varje gång man stannar att jag har valt att inte ta med dessa värden i resultatfilerna. X-max anges vid X-axelns högra ände och X-min under Y-axeln. Tabellhuvudrubriker för kurvorna anges i kurvornas färg nedtill på skärmen. Inläsning av tabellhuvudet görs i tabellens översta rad.En siffra om- given av SPACE tolkas som en ny kolumnrubrik som börjar med kolumn- nummer och följs av text som beskriver kolumnens innehåll.Denna text får alltså inte innehålla någon siffra omgiven av SPACE eftersom det i så fall tolkas som en ny kolumnrubrik. Om du istället för att ange kolumnnummer för en kurva skriver SPACE RETURN utesluts den kurvan. Kurvorna täcker över varandra i den ordning de presenteras.D v s att röd kurva täcker över vit.Blå täcker över röd o s v. Om du vill spara de kurvor som presenteras på skärmen använder du PRINT SCREEN enligt anvisnigarna i WINDOWS 95. Hur ändrar jag vad som sparas? ============================== I SSPARA.PAS och SSPARAP.PAS kan du se vilka variabler som sparas. Du kan inte ändra dessa utan att kompilera om programmet.De är valda för att huvudsakligen användas för studier av hybridbilar och inne- håller alltså en hel del som är onödigt för en konventionell bil. Jag har emellertid gjort en del ändringar i SSPARA.PAS och döpt om den till SSPARK.PAS.Bl a har jag bytt ut kolumn 10 från att ange laddnings- ström till att ange förbränningsmotorns verkningsgrad. Om du kompilerar om ramprogrammet med Turbo Pascal V kan du byta ut de variabler som anges i SSPARA.PAS och SSPARAP.PAS mot andra globala variabler (se Vvaria).Turbo Pascal V kompilerar då också om den fil du ändrat.Du bör också ändra i BAS.RES resp BASP.RES så att du får rätt tabellhuvud.Eftersom jag ändrat i SSPARA.PAS har jag ändrat och döpt om BAS.RES till BASK.RES. Hur ändrar jag fordonskonfigurationen? ====================================== Ramprogrammet KONVBIL.PAS består av två delar,en del som anger vilka units programmet använder och en del som är själva program- met.I programdelen anges egentligen bara i vilken ordning de procedurer som finns beskrivna i units skall genomföras.Normalt har en unit ett namn med första bokstaven dubbelstavad och den procedur som uniten innehåller har samma namn utan dubbelstavning av första bokstaven. Vill du ändra fordonskonfigurationen ändrar du i listan över units och i programmet som anropar motsvarande procedur.Vill du t ex byta ut sättet att bestämma pådraget mot ett sätt som finns beskrivet i en unit med namnet PPDR2.PAS byter du i KONVBIL.PAS ut Ppdrk mot Ppdr2 och ev Pdrag mot vad proceduren i PPDR2.PAS heter.När du gjort det måste du kompilera om programmet med kompilatorn i TurboPascal V. Hur ändrar jag använda formler? =============================== Vissa beräkningar görs med formler i procedurer som finns be- skrivna i units.Totala framdrivningsmotståndet beräknas t ex i en formel som finns i Mmotst.Vill du ändra denna formel tar du in MMOTST.PAS i TurboPascals editor och ändrar formeln.Därefter måste du kompilera om det eller alla de ramprogram som använder denna unit med hjälp av kompilatorn i TurboPascal V.Denna känner då automatiskt av att en unit har ändrats och kompilerar då om även denna. Beträffande sättet att skriva formler gäller vanliga regler för Pascal.Beträffande tillgängliga variabler så finns globala variabler deklarerade i Vvaria.Behöver du någon ny global variabel kan du definiera den i Vvaria.Du bör då också ge den ett begynnelsevärde i proceduren Nolla som ingår i Vvaria.Om du vill kunna nå den direkt under körning lägger du även in den i Vvmeny. Hur skriver jag egna komponentbeskrivningar? ============================================ Det är lämpligt att varje komponent beskrivs i en särskild unit. Det kan vara lämpligt att benämna uniten genom att bubbelstava första bokstaven i den funktion eller procedur som är mest väsentlig i uniten. Hur man skriver units finns beskrivet i manualen till Turbo Pascal V. Om du t ex vill lägga till en ny unit som beskriver bakaxeln skriver du en unit för detta.Genom att under Uses ange Vvaria får du tillgång till alla variabler som finns definierade i Vvaria.Om du vill använda en endimensionell tabell för att beskriva bak- axeln anger du Ttabr1 under Uses och får då tillgång till funk- tionen Tabr1.Vill du använda en tvådimensionell tabell använder du i stället Ttabr2 resp Tabr2. Tabr1 är en funktion som ger ett svar av typ REAL.Anrop görs med Tabr1(Filnamn,Tabnr,mode,Inv,Kolnr) där Filnamn ärnamnet på den sökta filen STRING(.30.) Tabnr är nummer på den sökta tabellen STRING(.30.) mode är val av värde CHAR Ttabr1 läser tills värdet i första kolumnen (Kol0) över- stiger Inv.Om mode='+' returnerar den motsvarande värde i den med Kolnr angivna kolumnen,om mode='-' returnerar den föregående värde i den med Kolnr angivna kolumnen,om mode är något annat interpolerar Ttabr1 mellan dessa värden (linjär interpolation). Inv är det invärde Tabr1 skall söka i Kol0 REAL Kolnr är nummer på den kolumn Tabr1 skall läsa INTEGER Ttabr2 är en funktion som ger ett svar av typ REAL.Anrop görs med Tabr2(Filnamn,Tabnr,mode1,mode2,Inv1,Inv2) För Filnamn och Tabnr gäller samma som för Tabr1.Tabr2 söker i såväl vertikal som horisontell led och Kolnr är därför inte aktuellt.Inv1 är av typ REAL och anger vilket invärde Tabr2 skall leta upp i hori- sontell led medan Inv2 (REAL) anger vilket invärde Tabr2 skall leta upp i vertikal led.mode1 och mode2 fungerar som mode i Tabr1 men i horisontell resp vertikal led. När det gäller formler,noggrannhet,algoritmer mm finns inga reg- ler utöver dem som gäller för Turbo Pascal V. När du skrivit en unit skall den läggas in i ramprogrammet.Uni- tens namn skall in under ramprogrammets Uses och du bör även skriva en kommentar som anger vad uniten gör.Unitens funk- tion(er)/procedur(er) skall sedan anropas av ramprogrammets huvudprogram.Det gäller då att lägga in dessa anrop så sent i programmet att de variabler som den anropade funktionen/procedu- ren behöver finns beräknade men så tidigt att det ligger före de anrop som behöver värde(n) från den anropade funktionen/procedu- ren. Krav på tabeller ================ Rader måste skiljas med en tomrad. Kolumner måste skiljas med minst ett mellanslag. Ingångsvärden måste vara angivna så att de hela tiden ökar när man går framåt i texten. Ingångsvärden måste väljas så att aktuella värden säkert faller mellan högsta och lägsta värde.Skulle tabelläsare hamna utanför tabellen avbryts programmet utan något felmeddelande.Du kan emellertid finna orsaken genom att det före avslut lägger upp en fil ERROR.TAB och i denna skriver in orsaken till avbrottet. Text bör läggas sist.Orsaken till detta är att tabelläsaren läser igenom tabellerna från början.Om du lägger text som t ex beskri- ver tabellens innehåll före själva tabellen måste tabelläsaren varje gång läsa igenom denna för att komma fram till själva tabellen vilket tar onödig tid. Över varje tabell måste finnas texten Tabell följd av SPACE och tabellnummer.Denna text skall följas av en tomrad och därefter av själva tabellen (Detta gäller ej Karta Och Tidcykel). Tabr1 tolkar tabellens första kolumn (Kol0) som ingångsvärden och övriga kolumner som funktioner av dessa ingångsvärden. Tabr2 tolkar första raden och första kolumnen som de ingångsvärden som tabellens övriga värden är funktion av. Vad gör programmet? =================== Avsikten med denna beskrivning är att ge en översiktlig bild av programmets uppläggning.Alla detaljer i programmet finns till- gängliga i källkoden till ramprogram och units.Dessa har fil- namnstillägg .PAS och är skrivna i ASCII-kod som kan läsas direkt med någon ordbehandlare t ex editorn i TurboPascal,Edlin eller Norton Commander F4. Programmet bygger på två tabelläsare Ttabr1 och Ttabr2.I denna version används även en tabelläsare Ttabr01 som är en variant av Ttabr1. Ttabr1 kan läsa endimensionella tabeller med flera kolumner.Man kan alltså i en tabell ange ett antal storheter som är funktioner av samma variabel och låta Ttabr1 läsa en sådan tabell.När man t ex anger en tidcykel anger man begärd hastighet,lutning,körmod tidsinkrement och sidavvikelse som funktion av körd tid.Denna tabell läser programmet med hjälp av Ttabr01. Ttabr2 kan läsa tvådimensionella tabeller d v s variabler som är funktion av två variabler.Ett exempel på detta är verkningsgraden hos en förbränningsmotor som är en funktion av de två variablerna varvtal och moment. Programmet kan enkelt ändras för att simulera olika typer av fordon.Nedanstående beskrivning avser programmet Hybrid.Mot- svarande program för att beskriva elbil,kobventionell bil eller parallellhybrid har liknande uppläggning även om vissa detaljer är ändrade. Programmet börjar med att presentera använda konstanter och andra storheter så att man får möjlighet att ev ändra dessa. Om man anger infiler med namn där diskdrive finns angiven hämtar programmet infiler från aktivt eller angivet directory och lägger dem på angiven drive.Tanken med detta är att man skall kunna föra över alla infiler till ramdisk så att det går snabbare att läsa dem.Anger man ingen drive läser programmet infiler i aktivt directory. Programmet förbereder två resultatfiler och en jämförfil,ritar upp en instrumentbräda på skärmen och går därefter över till en loop med beräkningscykler. En beräkningscykel börjar med att unit Ccykel låter Ttabr01 hämta aktuella värden på begärd hastighet,lutning,körmod och tidsinkre- ment från den tabell som beskriver körcykeln. Därefter stegas körd tid fram ett tidsinkrement i unit Ttid.Man kan tycka att en så enkel operation som att lägga till ett tids- inkrement till tiden inte motiverar att man skriver en särskild unit bara för det.Men problemet är att man kanske inte vill använda det värde på tidsinkrementet som man fått från tabellen. Man kanske vill ange ett fast tidsinkrement som gäller oberoende av tabellvärdet eller ett tidsinkrement som motsvarar verklig tid för en beräkningscykel.För att kunna hantera sådana önskemål och för att samla tidsberäkningar till ett ställe så att man vet var man skall ändra om man vill ändra tidsberäkningen har framsteg- ning av tiden fått en särskild unit. På motsvarande sätt fastställs så lutningen i Llutn och val mellan miljökänsligt eller icke-miljökänsligt område i Oomr. För att den simulerade bilen skall kunna följa en körcykel måste skillnad mellan begärd och verklig hastighet översättas till en ändring av effekten till drivmotorn.Detta görs i unit Ppdr som finns närmare beskriven nedan. När man vet belastningen på förbränningsmotorn kan man beräkna bränsleförbrukning och emissioner.Detta görs i unit Iicmot. Totala framdrivningsmotståndet bestäms av framdrivningsmotstånd på plan väg som finns i en fordonstabell,av massan gånger acce- lerationen och av tyngden gånger lutningen.Beräkning av totala framdrivningsmotståndet görs i unit Mmotst. Om verklig hastighet är så mycket större än begärd att bilen inte kan nå begärd hastighet under det tidsinkrement som beräknings- cykeln avser enbart genom att minska motoreffekten behöver man bromsa med en viss bromskraft.Denna beräknas i Bbrake. När man vet vridmomentet från drivmotorn,totala framdrivnings- motståndet och ev bromskraft kan man beräkna accelerationen och därmed hastighetsändringen under tidsinkrementet.När man vet hastighetsändringen kan man lägga denna till det gamla hastig- hetsvärdet och få fram den nya hastigheten.Detta görs i unit Hhast. När man nu vet accelerationen och hastigheten under tidsinkremen- tet kan man beräkna hur långt bilen går och lägga detta värde till tidigare körsträcka för att få den totala körsträckan. Beräkning av bilens tillstånd efter det aktuella tidsinkrementet är nu färdig.Resultatet skall presenteras på skärmen vilket görs i Ppres och ev lagras i resultatfiler vilket görs i Sspara och Ssparap. Unit Pprev lagrar vissa variabelvärden för att förra beräknings- cykelns värden skall finnas tillgängliga under nästa beräkning. I denna version har tillagts möjligheten att "köra" på en väg eller visa motortillståndet i musseldiagram.Detta görs i unit Ssikt genom anropet Sikt resp unit Mmussla genom anropet Mussla. Efter detta startar nästa beräkningscykel. Ppdr ---- För att beräkna erforderlig effekt måste man veta aktuellt fram- drivningsmotstånd.I Ppdr görs en preliminär beräkning av detta. När framdrivningsmotståndet är känt kan erforderlig effekt beräknas som framdrivningsmotstånd gånger medelvärdet av hastigheten under tidsinkrementet.Hastighetsmedelvärdet sätts till medelvärdet av verklig och begärd hastighet vilket medför att man får det värde som verkligen behövs för att nå begärd hastighet.När man sedan ev begränsar effekten till max tillåtet värde kommer man inte att nå begärd hastighet men i det fallet används inte den beräknade effekten utan det ersätts med max effekt. Drivmotorns ineffekt sätts till beräknad erforderlig effekt. I Ppdr finns också rutiner för att styra motoreffekten direkt från tangentbord,med mus eller med joystick om man valt en mod där förloppet inte styrs från körcykeltabellen. Mmotst ------ Det motstånd som drivmotorn skall övervinna är accelerationen gånger massan + tyngden gånger lutningen + framdrivningskraft på plan väg. Framdrivningskraft på plan väg vid aktuell hastighet hämtas från fordonstabellen. Tabelläsaren använder linjär interpolation.Eftersom fram- drivningskraften inte är en linjär funktion av hastigheten ger detta ett interpolationsfel som kan minskas genom att man gör tabellen tätare.Fler värden i tabellen ger dock långsammare program. Om begärd hastighet avviker från verklig och motor eller broms inte är fullt utnyttjade kommer hastigheten att ändras under tidsinkrementet.Beräkningen görs med medelvärdet av begärd och verklig hastighet.Eftersom framdrivningskraften på plan väg inte är en linjär funktion av hastigheten är inte medelvärdet av framdrivningskraften samma som fram- drivningskraften för medelvärdet av hastigheten.Här finns alltså ett beräkningsfel som kan bli märkbart vid stora språngvisa ändringar i begärd hastighet som ger stor skill- nad mellan begärd och verklig hastighet. Om bilen inte når begärd hastighet under tidsinkrementet motsvarar inte medelvärdet av verklig och begärd hastighet medelvärdet av hastigheten under tidsinkrementet.Vid t ex maximal acceleration mot en hög begärd hastighet som det tar flera tidsinkrement att nå kommer alltså framdrivnings- motståndet att få ett för högt värde. Till framdrivningsmotståndet på plan väg läggs massan gånger accelerationen och tyngden gånger lutningen. Om fordonsmassan och/eller Cd*A avviker från de värden som gäller för tabellen och om man i konstanttablån har begärt omskalning görs en korrigering av framdrivningsmotståndet. Några simuleringsfel ==================== Hastighet för "stillastående" bil sätts i Hhast till 0,001 m/s. Om man kör i realtid efter begärd hastighet enl körcykel och gör ett avbrott i körningen kan man sedan återkomma efter så lång tid att man får ett mycket stort tidsinkrement.Om bilen accelererade när man avbröt programmet kan detta medföra att man får ett orimligt värde på hastig- heten.I nästa cykel får då pådraget orimliga ingångsvärden vilket kan resultera i instabilt system.För att undvika detta sätter Hhast hastig- heten till 1,2 gånger begärd hastighet om den överstiger 1,2 gånger begärd hastighet och körningen görs efter begärd hastighet. Ingen hänsyn tas till skillnaden mellan kall och varm motor.Men man kan göra motortabeller för olika motortemperaturer och efter start gå in med M och byta filnamn i filnamnstablån så att man allteftersom motorn blir varmare går över till en tabell för aktuell motortemperatur.Någon beräkning av motortemperaturen görs emellertid inte utan man får,helt manuellt,uppskatta denna efter körd tid.Observera också problemet att använda M vid körning i real tid. Dataspel ======== Programmet har ursprungligen lagts upp med finansiering från STU som ett hjälpmedel för utvärdering och konstruktion av el- och hybridbilar. Syftet har alltså varit ett helt annat än att ta fram ett dataspel.Men nytta är inget hinder för nöje och en spelmöjlighet har därför laggts till för att göra användningen mer lekbetonad.Grafiken är visserligen mycket enkel men den ger ändå en antydan om körupplevelse. Man ”kör” med pil-siffer-tangenterna i NumLock-läge.Användning av 2 och 8 ger övergång till I-mod.8 ökar effekten och 2 minskar effekten,F ger återgång till körcykelfilens begärda hastighet. Med 4 och 6 svänger man vänster resp höger. Genom att skriva tidcykelfiler eller kartfiler kan man lägga upp banor som man sedan kan köra. Genom att i den sjätte kolumnen (kol5) ange positiva eller negativa värden anger man hur många pixels vägen skall förskjutas vid horisonten.Denna förskjutning förflyttar vägen i förhållande till bilen när bilen kör mot horisonten. För att slippa snabba ryck kan man ange värden med belopp större än 999.Tusentalssiffran anger då hur många pixels som förskjutningen skall öka varje beräkningscykel och siffran under tusen anger förskjutningens slutvärde.Om hastigheten understiger det i kol1 angivna värdet reduceras förskjutningen per cykel med förhållandet mellan verklig och i kol1 angiven hastighet. Några tips ========== Prova att köra genom att dra upp farten till 80 km/tim,lägga i 5:an manuellt,slå från motorn (med C),låta farten sjunka till 60 km/tim, dra på till 80,slå ifrån o s v.Kolla vad som händer med bensinför- brukningen.Detta körsätt är lite obekvämt på en konventionell bil men det går att genomföra och jag har provat att det stämmer i praktiken. På en seriehybrid,även en seriehybrid utan batteri,är det ett ganska naturligt sätt att köra. Kör CVS-cykeln (följer med manualen) med musseldiagram för NOx och se hur motortillverkaren anpassat motorn till testcykeln. Om du sätter in en elmotor (eller flera) parallelt med den vanliga motorn, t ex låter elmotorn driva bakhjulen på en framhjulsdriven bil kan du använda elmotorn för att starta och komma upp i fart.Du kan också använda elmotorn för att ge ett tillfälligt momenttillskott.Du kan då ta bort växellådan och strypa motorn något.Du kan inte helt simulera detta efter- som du inte har någon elmotor inlagd i programmet men den energi som går åt för att starta får du återbetala genom att köra elmaskinen som genera- tor och det motsvarar ungefär vad som går åt för att starta via växellåda. För att se ungefär vad ett sådant arrangemang skulle kunna ge kan du stry- pa motorn något (dra ner WOT i tabell 1 i förbränningsmotorfilen).Ändra i växelfilen så att du sätter utväxlingen för 5:an till c:a 160 och väx- lingspunkterna så att 5:an ligger i från t ex 50 km/tim.Sätt verknings- grad för växellåda och drivaxel till 100 % på 5:an.Dra upp till 80 km/tim, slå av med C och frirulla till 60 km/tim,dra på o s v.Som du ser i mus- seldiagrammet för verkningsgrad utnyttjar du då motorn nära maximal verk- ningsgrad och du bör kunna komma ner under 40 cl/mil. Rullmotståndet är en vetenskap för sig.Ojämnheter i vägen ger vertikala rörelser som måste dämpas ut så att de inte ger obehagliga karossrörel- ser.Detta görs genom att "gungenergin" omvandlas till värme i däcken eller i stötdämparna.Eldrift öppnar en helt ny möjlighet till mycket snabb reglering av drivmomentet.Detta gör det möjligt att "hänga upp" bilen på det drivande momentet.Därigenom kan man utnyttja gungrörelser för drivningen.I stället för att denna energi ger värme som måste kylas bort från däck och stötdämpare kan man tillvarata energin för att minska rullmotståndet.Det blir då ännu viktigare än idag att undvika däckför- luster. För att däcken skall ge en god utjämning av ojämnheter i vägbanan kör man med ett tryck i däcken som valts så att man får en viss hoptryckning av däcken vid anliggningspunkterna.Detta innebär att man även på en helt slät väg får en knådning av däckgummit som kräver arbete och ger värme. Denna däckknådning svarar för huvuddelen av rullmotståndet.Den kan i princip minskas genom att man höjer trycket i däcken så att man reducerar hoptryckningen.På lastbilar där kostnad är viktigare än komfort har man vanligen betydligt lägre rullmotstånd i förhållande till fordonsvikten än på personbilar. Även vägytan utsätts för en knådning men för normala däck och vägbelägg- ningar ger den förluster som är försumbara jämfört med däcksförlusterna. För järnvägshjul där man minimerat såväl hjulknådning som vägknådning är rullförlusterna mycket små (c:a 1/7 av rullmotståndet för en personbil med samma massa). Jag provade på en långsamgående golfbil att byta hjulen mot plåtrullar med en tunn slitbana av gummi.Rullmotståndet minskade med knappt10 % per hjul d v s cirka 30 % för alla hjulen. Rullprov i backe med en gammal Volvo 145 visade att en sänkning av däcktrycket från 2,4 till 1,5 kp/cm2 gav en ökning av rullmotståndet med cirka 6 %.Om du vill se vad hur däcktrycket påverkar bensinförbruk- ningen kan du alltså räkna med att 0,1 kp/cm2 ger 0,6 % ändring av rullmotståndet.I tabellen som beskriver fordonet tar du,för varje 0,1 kp/cm2 som du ändrar däcktrycket 0,6 % av framdrivningsmotståndet vid hastigheten noll.Det värde du då får lägger du till (resp drar ifrån) alla andra värden i tabellen. Metoden är inte helt korrekt eftersom såväl däcktryck som gummits inre friktion ändras med däcktemperaturen som i sin tur påverkas av värme- utvecklingen i däcket men den ger ändå en ganska god bild av verklighe- ten. Hybridbil? ========== Med hybridbil menas,i detta sammanhang,en bil med en kombination av konventionellt och elektriskt drivsystem. Hybridbilar beskrivs ofta som elbilar med inbyggda laddnings- aggregat.Så kan man naturligtvis se dem men det är nog mer givande att betrakta dem som bilar med elektrisk kraftöverföring. Om man kopplar en elektrisk generator till en elmotor har man fått en helt steglös växellåda.Genom att lägga en sådan mellan för- bränningsmotorn och drivhjulen kan man fritt välja förbrännings- motorns varvtal oberoende av hur fort bilen går. Men har man bara satt in en generator-elmotor-växellåda måste förbränningsmotorn i varje ögonblick ge den effekt som fordras för att driva bilen.Om man väljer förbränningsmotorns varvtal kan man då inte också fritt välja momentet.Man får alltså en viss men inte total frihet när det gäller att välja arbetspunkt för förbränningsmotorn. Sätter man,förutom generator-elmotor-växellådan,även in ett batteri som kan ta upp effektöverskott eller täcka effektunder- skott kan man fritt välja förbränningsmotorns arbetspunkt.I stället för att ta ut en medelverkningsgrad på c.a 16 % kan man hela tiden låta förbränningsmotorn gå på 33 % verkningsgrad (och stänga den helt när batteriet börjar bli fulladdat). Nackdelen med detta system har varit att förlusterna i generator och elmotor tagit mer än hela vinsten.Med likströmsmaskiner låg verkningsgraden kring 80 % för vardera generatorn och elmotorn vilket gav hela "växellådan" en verkningsgrad på 60 %,att jämföra med en mekanisk växellåda med verkningsgrad på c:a 95 %. Med moderna material och modern halvledarteknik kan man emellertid nå över 90 % verkningsgrad för såväl generator som elmotor vilket ger mer än 80 % för hela "växellådan". I denna version av simuleringsprogrammet kan du inte direkt simulera en hybridbil men om du är intresserad av att se vad en sådan skulle kunna ge kan du konfigurera en "fuskbil". Skapa en förbränningsmotorfil där du i tabell 2 - 5 sätter verk- ningsgrad och utsläpp lika för alla varvtal och moment (ange de värden som gäller för den arbetspunkt du tänkt välja). Skapa en växelfil där du sätter in generatorns verkningsgrad som växellådeverkningsgrad och elmotorns verkningsgrad som differneti- alens verkningsgrad. Sätt in dessa komponenter i FIL.VAL eller i filvalstablån. Kör och se vad som händer! Hur kan jag komplettera grafiken med egna bilder? ================================================= Skapa en 16-färgers .BMP-bild,t ex med PAINT. Flippa den vertikalt t ex med GRAPHIC WORKSHOP. Skala till rätt storlek t ex med GRAPHIC WORKSHOP. Gör om den till .SIM-bild med MAKEBILD.EXE.Observera att du måste ange rätt bredd på ingående .BMP-bild.Annars gör MAKEBILD en distorderad bild.MAKEBILD hämtar information om bildens bredd från det WORD som BYTE 20 och 19 (omkastad ord- ning på dessa bytes) bildar.Skulle du få en sned bild kan du med READFIL.EXE ändra byte 20-19.Högre värde förskjuter bildens överkant åt höger. Kalla bilden för BILDXY.SIM där X och Y är siffror. För att ta in en egen bild (egna bilder fungerar bara om du valt Vindruta = J) skriver du 12nn i mod-kolumnen i körcykel- filen vid den körtid resp den körsträcka där bilden skall dyka upp.n är ensiffriga tal och nn anger X i BILDXY.SIM. För att sätta X=1 skall nn vara 01.Du kan alltså ha upp till 100 bildserier men jag vet inte riktigt vad som händer om du lägger in många bilder.Det tar ju tid att rita upp bilder så programmet kan bli segt. Se ävenHur beskriver jag en körcykel? När du körde MAKEBILD fick du frågan "Hur många pixel från vänsterkanten skall bilden dyka upp?".När du nu aktiverar bilden dyker den upp vid horisonten så många pixel från skärmens kant som du angett.Observera att det är pixels från skärmkanten inte från vindrutans kant. Den bild som dyker upp vid horisonten har Y=0 d v s den heter BILDX0.SIM.När bilden dyker upp lagras körsträckan och allteftersom körd sträcka ökar flyttas bilden nedåt. Samtidigt förskjuts den i sidled. Ju närmare bilden du kommer ju större skall den bli.Detta åstadkoms genom att Y ökar stegvis när bilden förskjuts nedåt.I rutans nedre del heter bilden BILDX5.SIM.Detta är alltså den största bilden i bildserien.Du börjar lämpigen med den och skalar ner den i steg till 80,60,40,20 % för att sluta med 10 % vid BILDX0.SIM. Det antal pixels från skärmkanten som bilden skall dyka upp avser hela tiden BILDX0.SIM.Om du vill att BILDX1.SIM skall dyka upp i direkt anslutning till BILDX0.SIM anger du i MAKEBILD samma värde på pixels från skärmkant som för BILDX0.SIM. Du kan också få bilden att röra sig i sidled som funktion av avstånd eller tid och i längsled som funktion av tid.Även det kan du ange när du använder MAKEBILD för att omvandla från .BMP till .SIM. Alltför många frågor att besvara är jobbigt i längden och det är därför viktigt att verktyg som MAKEBILD inte har onödigt många frågor innan bilden blir klar.Om du vill göra en enkel omvandling vill du inte ha alla detaljfrågorna.Men för att kunna få dem,om du vill,Lägger du till 1000 när du svarar på hur många pixels från skärmkanten bilden skall dyka upp.Skall den dyka upp 150 pixels från kanten svarar du 1150 och får då alla detaljfrågor. Vill du ändra positionsblocket på en färdig .SIM bild använder du MOVEBILD.Byte nr 3 ger avståndsberoende sidförskjutning, byte 5 ger tidsberoende sidförskjutning,byte 7 ger tidsberoende längsförskjutning.En etta i byte 4 , 6 eller 8 byter tecken på föregående byte.En etta i byte 9 avaktiverar funktionen för vissa förhållanden mellan längd och tid vilket ger ett slump- artat uppdykande. Krock- och dikesdetektorerna sitter i motorhuvens framkant. Innan motorhuven ritas upp hämtar de pixels med koordinaterna (350,450) , (420,450) , (490,450).Om någon av dessa är färg 4,10 eller 14 går programmet till KROCK.Är någon av dem färg 2 går programmet till DIKE.Vill du lägga in hinder som ger krock eller dikeskörning vid påkörning lägger du in bilder med detaljer i färgerna 4,10,14 eller 2 som skjuter ut i vägbanan. De bilder som du lägger in är alltid fyrkantiga.Vill du att de skall smälta in bättre gör du dem med en bakgrund som smälter in på det ställe där du lägger in dem.Det fungerar på en enfärgad yta som vägbanan men annars får du fel som beror på att varje bild förskjuts nedåt innan den byts ut. Det krävs en hel del mixtrande för att få det att se accep- tabelt ut.Med hjälp av "Print Screen" kan du lägga in en skärmbild i "Kopiera" som du sedan kan "Klistra in" i PAINT och använda som underlag för din bild. Den "skog" som omger vägen är mönstrad och slår i viss mån igenom de bilder du lägger på den.Om du vill ha enfärgad bakgrund eller annan typ av mönstring skriver du 90ab i mod- kolumnen.a och b är ensiffriga tal där a anger typ av mönster och b anger färg.a=0 och b=1 ger enfärgat grönt på vägens vänstra sida,a=0 och b=2 ger enfärgat grönt på vägens högra sida.a=1 och b=2 ger enfärgat grönt på båda sidor. Observera att hinderdetektorn inte registrerar dikeskörning om inte vägens omgivning är grön (färg 2). 91ab återställer omgivande "skog" oberoende av vad du sätter a och b till. Om .BMP och .SIM bilder ======================= Jag har inte lyckats finna någon bra beskrivning av .BMP bilder eller av Turbo Pascals bildformat.Nedanstående är därför baserat på vad jag kommit till via hacker-metoder. Turbo Pascal V har två metoder för bildvisning.Antingen ritas bilder pixel för pixel eller också överförs en vektor med hela bilden. Pixel för pixel metoden fungerar direkt på .BMP-bilder men den är mycket långsam.Jag har använt den för uppritning av musseldiagram och i MAKEBILD för att rita upp .BMP-bilden. För att,under pågående körning,kunna lägga in bilder måste inlägg- ningen gå så snabbt att en beräkningscykel kan klaras av på ett rimligt tidsinkrement.Bilderna måste då finnas färdiga som vektorer som kan läggas in i sin helhet.Jag kallar sådana färdiggjorda bilder för .SIM-bilder.Med hjälp av MAKEBILD.EXE kan du omvandla .BMP-bilder till .SIM-bilder.Vill du gå den omvända vägen kör du en simulering där .SIM-bilden visas.När den dyker upp på skärmen trycker du på PRINT SCREEN.Så avslutar du simuleringen (med Q).Gå till t ex PAINT, klicka på REDIGERA,klicka på KLISTRA IN och du skall få upp den skärmbild där .SIM-bilden finns med.Klipp ut den och spara den som en 16-färgers .BMP. .SIM-filer börjar med fyra BYTE som bildar två WORD.Dessa anger bildens bredd och höjd. När MAKEBILD gör en .SIM-bild lagras resultatet som en fil med 60 block med vardera 128 BYTE.Du kan alltså inte ha större bilder än 60*128-4 BYTE.Du kan visserligen ändra vektorns storlek i MAKEBILD men då passar inte bilden i simuleringsprogrammet. Efter de 60 blocken lägger MAKEBILD ett block med 128 BYTE.Detta block (positionsblocket)börjar med två bytes som bildar ett ord som anger det antal pixel från skärmkanten som bilden skall dyka upp.Så följer en byte (nr 3) som anger avståndsberoende sidförskjutning.Sätt den till noll om du inte vill att bilden skall röra sig på något speciellt sätt.Byte nr 4 är byte 3:s teckenbyte.En etta gör byte 3 negativ. Byte nr 5 anger tidsberoende sidförskjutning.Med hjälp av den kan du få en bild att röra sig med viss hastighet tvärs över skärmen.Ju högre värde ju större hastighet.Du kan t ex lägga in älgar som springer över vägen.Om du vill att påkörning av en älg skall ge "KROCK" måste du i älgen lägga in någon av färgerna 4, 10 eller 14 så att hinderdetek- torerna kan reagera på den.Byte nr 6 är byte nr 5:s teckenbyte.En etta gör byte nr 5 negativ. Byte nr 7 ger tidsberoende längsförskjutning med byte nr 8 som tecken- byte. Om byte nr 9 är 1 släcks bilden för vissa förhållanden mellan väg och tid vilket gör att man får en viss slumpmässighet i hur bilden dyker upp.Du kan t ex ha älgar som bara dyker upp ibland. Byte nr 10 ger möjlighet att lägga bilder via OR eller AND med bakgrunden. 1=XOR , 2=OR , 3=AND och 4=NOT.Övriga värden ger bilder som täcker över bakgrunden. Byte 11 ger möjlighet att lägga ett antal bilder över varandra.Om byte 11 ligger i intervallet 1 till 9 läggs först bilden BILDXY.SIM.Därefter BILnDXY.SIM där n går från 1 till den siffra som står i byte 11.Du kan alltså lägga upp till tio bilder på varandra.Du kan använda detta för att lägga bilder mot den befintliga bakgrunden.Om du gör en bild med färg 15 där bakgrunden skall slå igenom och färg 0 där bilden skall täcka bak- grunden kan du med byte 10 lägga den som en AND-bild vilket innebär att du skär ut den bild som skall täckas över.Så lägger du BIL1DXY.SIM som har färg 0 där bakgrunden skall lysa igenom.Genom att lägga den som en OR-bild får du fram den bild du vill ha. Resten av blocket är t v enbart bytens nummer (byte nr 100 är ev noll utan att detta framgår av MOVEBILD). Vill du ändra positionsblocket på en färdig .SIM bild använder du MOVEBILD.EXE. Om du vill mainipulera bilder gör du lämpligen detta på .BMP-bild innan du omvandlar denna till .SIM-bild. För att manipulera en .BMP-fil använder du READFIL.EXE.Observera att du här,till skillnad från MAKEBILD,måste ange hela filnamnet inkl filnamnstillägg. En .BMP-fil börjar med två BYTE som motsvarar bokstäverna B M. BYTE 11 Anger det bytenummer där lagringen av bildpixels börjar BYTE 19 Bildbredd LSB BYTE 20 Bildbredd MSB BYTE 23 Bildhöjd LSB BYTE 24 Bildhöjd MSB BYTE 115 Färgmättnad Blå BYTE 116 Färgmättnad Grön BYTE 117 Färgmättnad Röd Om MAKEBILD ger en distorderad (sned) bild kan du med READFIL ändra BYTE 19. .BMP-bilder lagras flippade vertikalt.Byte 11 anger alltså var nedersta vänstra pixeln ligger.Stigande bytenummer innebär att man går från fötterna mot huvudet.Många kommersiella program t ex Graphic Workshop har möjlighet att flippa vertikalt så att bilden blir rättvänd i MAKEBILD. Jag har använt en RGBPalette men inte lyckats få alla färgnummer att överensstämma med .BMP.I MAKEBILD ligger därför ett filter (A) som byter .BMP:s färgnummer enligt 1 till 4 4 till 1 9 till 12 12 till 9 3 till 6 6 till 3 11 till 14 14 till 11 Du har också möjlighet att lägga in egna filter.