How to debug your car

Ergens in de zeventiger jaren schreef een collega eens een
kort artikeltje getiteld "How to Tell a Program from an
Automobile" om uit te leggen dat soft- en hardware
onderhoud twee totaal verschillende dingen zijn.  Het is
nog steeds op een website van Microsoft te vinden.  Hier
twee sound bytes uit dat stukje:  "An automobile runs, a
program does not."  En deze:  "An automobile is a piece of
machinery, a program is some kind of mathematical
expression."

Ik moest heel sterk aan dit artikel denken door een verhaal
dat ik hoorde van een goede vriend.  Hij had vorig jaar een
gloednieuwe auto gekocht, en die reed meteen in tegen
stelling tot de ervaringen met software.  Na drie maanden
rijgenot, kreeg hij een brief van de fabrikant:  de airbag
was iets te gevoelig afgesteld en als hij naar de dealer
ging zou men de zaak regelen -- hee een auto deed het toch
gewoon?  Een standaard handeling: even een nieuwe kaart
erin.  Een nieuwe kaart?  Was een auto niet gewoon een
piece of machinery, denk je dan nog.

Na de ingreep name het rijgenot af: bij wat hogere
snelheden reed de auto niet meer zo lekker als eerst, en
bovendien stuurde hij niet meer zo lekker als eerst.  Vage
klachten die eerst niet zo opvielen.  De eigenaar, een
voormalig machine ontwerper, kreeg de schrik van zijn leven
toen zijn auto tijdens een inhaalmanoeuvre op de snelweg
wel heel erg stroef ging sturen, en hij alleen nog maar
door flink vaart te minderen de auto weer bestuurbaar
kreeg.  Bovendien was de auto alleen nog maar met heel veel
plankgas vooruit te branden, wat eerst helemaal niet het
geval was.  Na een weekje begon op te vallen dat de auto
significant zuiniger was gaan rijden.  En na twee weken
modderen met die auto had hij vastgesteld dat er iets of
iemand aan de motor had geklooid en hem te zuinig had
gezet.

Vroeger kon je bij elke auto een werkplaatshandboek kopen,
maar met die moderne auto's is men daarmee opgehouden, dus
dan maar naar de dealer getogen.  Daar werd een proefritje
gemaakt.  Meneer, hij doet het prima, we kunnen niets
vinden, en wat u zegt over dat afstellen, dat kan niet
kloppen.  Die moderne auto's van tegenwoordig zijn anders
dan die van vroeger.  We kunnen helemaal niet eens meer
iets afstellen aan die auto.  Allemaal computer gestuurd.
Aha, vandaar het gemis aan handboeken.  De eigenaar, niet
snel afgeschrikt door complexe machinerie, liet zich niet
afpoeieren door de goedbedoelende onderhoudsmonteurs, die
echt niets konden vinden ondanks de feiten die voor zich
spraken.  Het kan namelijk niet zo zijn dat een auto die
voor een reparatie perfect performt, en 1 op 14 loopt,
daarna ineens rijdt als een aardappelschrapmachine, en 1 op
21 gaat lopen.  De onderhoudsmonteurs waren de controle
kwijt: net zoals dat met software kan gebeuren.

Na wat heen en weer gediscussieer, sloot men de auto toch
maar aan op het diagnose station.  Heel makkelijk, je tikt
het chassisnummer in, en hopla, de hele doopceel van de
auto wordt gelicht.  Ook daar was niets te zien.  Alles zag
er pico bello uit.  Iedereen kan auto's repareren.  De
eigenaar, die gelukkig wel iets van complexe machinerie
snapte, keek ook maar eens naar het scherm, en zag de bug.
De cilinderinhoud die het diagnose station aangaf, was 23%
minder dan de werkelijke inhoud.  Hij vroeg de monteur om
de inhoud op het juiste aantal te zetten, en toen hij dat
deed waren alle problemen weg.  De monteurs hadden dit niet
gezien, want de cilinderinhoud stond nergens op of in de
auto.  Waar kennen we dat toch van: onvolledige
documentatie.

Wat was er nu gebeurd?  Bij het vervangen van de airbag
kaart, had een monteur de accu losgehaald.  Dat doe je ook
als je een nieuwe kaart in je computer zet: even de stroom
eraf.  Vervolgens was de motor management processor
gereboot op het basismodel waar een kleinere cilinderinhoud
bij hoort, en niet op de juiste inhoud.  Geen idee hoe dat
kon gebeuren, maar het stond wel verkeerd.  Die computer
rekent dan stelselmatig iets te weinig brandstof voor de
injectie.  Bij lagere snelheden merk je daar niets van: je
geeft ongemerkt iets meer gas, alleen je motor slijt er
veel harder van dan normaal.  Echter bij hogere snelheden,
is er zo'n tekort aan brandstof dat het ding niet meer
vooruit te branden is.  Dat verklaarde de
snelheidsproblemen, en het plotselinge veel zuinigere
brandstofverbruik.

Maar hoe zat het nu met dat sturen?  Bij hogere snelheden,
heb je meer oliedruk nodig voor de stuurbekrachtiging.  En
dit wordt ook geregeld door de motor management processor.
Die routine is kennelijk geparametrizeerd met de
cilinderinhoud.  Hij kijkt in ieder geval niet naar de
werkelijke snelheid, maar iets dat maatgevend is voor de
snelheid (bijvoorbeeld de hoeveeelheid geinjecteerde
brandstof).  Slim geprogrammeerd, want om real-time naar de
echte snelheid te kijken vergt een extra meetinstrument, en
dat spaar je nu uit.  Maar ja, als je sneller gaat dan die
routine denkt krijg je wel te weinig oliedruk waardoor de
auto steeds moeilijker gaat sturen.

Toegegeven, het zijn wel de perfecte omstandigheden om je
nieuwe airbag kaart in vivo te testen.  Maar hoe moet dat
nu verder met al die eigenaren die geen diagnosesystemen
voor F16 gevechtsvliegtuigen hebben ontworpen?

X

Meer weten over de wondere wereld van ICT 
in Jip en Janneke taal? Ga dan naar de
knipselkrant van Chris Verhoef

Prof. dr Chris Verhoef is hoogleraar informatica 
aan de Vrije Universiteit in Amsterdam.  Hij schrijft      
maandelijks een column in AG II.  Deze tekst is 
copyright SDU.  Niets van deze uitgave mag zonder
schriftelijke toestemming van de uitgever worden
overgenomen of worden gepubliceerd.