‘How to debug your car’
Ik dacht aan dit artikel door een verhaal van een vriend. Hij had een gloednieuwe auto gekocht en die reed meteen, in tegenstelling tot de ervaringen met software. Na drie maanden kreeg hij een brief van de fabrikant: de airbag was te gevoelig afgesteld. Als hij naar de dealer ging zou men de zaak regelen. Maar de 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 nam het rijgenot af: bij hogere snelheden reed de auto niet meer zo lekker en bovendien stuurde hij niet meer zo fijn. De eigenaar kreeg de schrik van zijn leven toen zijn auto tijdens een inhaalmanoeuvre wel heel stroef ging sturen en hij alleen door flink vaart te minderen de auto weer bestuurbaar kreeg. Bovendien was de auto alleen nog met plankgas vooruit te branden. Na een weekje begon op te vallen dat de auto significant zuiniger was gaan rijden. En na twee weken modderen had hij vastgesteld dat iets of iemand aan de motor had geklooid en hem te zuinig had gezet. Vroeger kocht je bij een auto een werkplaatshandboek, maar met die moderne auto’s is men daarmee opgehouden. Dus 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 kan niet kloppen. De auto’s van tegenwoordig zijn anders dan die van vroeger. We kunnen niet eens meer iets afstellen. Allemaal computergestuurd.’ Aha, vandaar het gemis aan handboeken. De eigenaar, niet snel afgeschrikt door complexe machinerie, liet zich niet afpoeieren. Het kan namelijk niet zo zijn dat een auto die het voor een reparatie perfect deed en 1 op 14 liep, 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 gediscussieer, sloot men de auto aan op het diagnosestation. 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 diagnosestation aangaf, was 23 procent 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 airbagkaart, had een monteur de accu losgehaald. Vervolgens was de motormanagementprocessor gereboot op het basismodel waar een kleinere cilinderinhoud bij hoort, en niet op de juiste inhoud. Die computer rekent dan stelselmatig iets te weinig brandstof voor de injectie. Bij lagere snelheden merk je daar niets van, alleen je motor slijt veel harder. Echter bij hogere snelheden, is er zo’n tekort aan brandstof dat het ding niet meer vooruit te branden is. Dat verklaarde ook het lagere 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 motormanagementprocessor. Die routine is kennelijk geparametriseerd met de cilinderinhoud. Hij kijkt in ieder geval niet naar de werkelijke snelheid, maar iets dat maatgevend is voor de snelheid (bijvoorbeeld de hoeveelheid brandstof). Slim geprogrammeerd, want om realtime naar de echte snelheid te kijken heb je een extra meetinstrument nodig. Maar, als je sneller gaat dan die routine denkt, krijg je te weinig oliedruk en stuurt de auto steeds moeilijker. Toegegeven, het zijn wel de perfecte omstandigheden om je nieuwe airbagkaart in vivo te testen. Maar hoe moet dat nu verder met al die eigenaren die geen diagnosesystemen voor F16 gevechtsvliegtuigen hebben ontworpen? Prof. Dr. Chris Verhoef is hoogleraar computerscience aan de Vrije Universiteit en columnist van Automatisering Gids.