Błędy sprzętu i oprogramowania w samochodach

| Gospodarka Artykuły

Upowszechnianie elektroniki w samochodach zapewnia wiele korzyści, ale równocześnie jest dla konstruktorów wyzwaniem. Mimo starań nie udaje się całkiem uniknąć błędów w zakresie sprzętu i oprogramowania. Te z kolei nie tylko negatywnie wpływają na opinię o producencie aut, ale - jeżeli nie zostaną wcześniej wykryte i naprawione - mogą doprowadzić do wypadku. W ostatnich latach odnotowano liczne przypadki usterek, przez które doszło do tragedii lub konieczne okazało się wezwanie do serwisu wybranych modeli pojazdów. Ucierpiała na tym reputacja wielu producentów z branży motoryzacyjnej.

Błędy sprzętu i oprogramowania w samochodach

Przykładem jest firma General Motors. Pod koniec minionego roku CNN na stronie internetowej www.cnn.com/interactive/2014/05/us/gm-recalls przedstawiło spis wad, jakie w 2014 roku wykryto w samochodach tego producenta. Łącznie z ich powodu naprawy wymagało prawie 20 milionów pojazdów. Wśród usterek, które uznano za niebezpieczne, znalazły się te o charakterze typowo mechanicznym, elektrycznym i błędy w oprogramowaniu.

Długa lista usterek aut GM

General Motors m.in. alarmowało o możliwości zwarcia w jednym z modułów kontrolnych, o niedomykaniu się maski, uszkodzeniu części zawieszenia powodującym chybotanie się kół i o możliwości przegrzania oraz stopienia się części systemu pompy paliwowej, które prowadzi do wycieku paliwa. Groźny dla użytkowników okazał się również problem z połączeniem elektrycznym, przez który poduszka powietrzna nie otwiera się do końca, możliwość korozji przewodów z płynem hamulcowym, niedziałanie napinaczy pasów bezpieczeństwa oraz lamp przednich i wadliwie przyspawane siedzenia.

GM musiało ponadto rozwiązać problemy z połączeniem elektrycznym, przez które nie działało wspomaganie układu kierowniczego i hamulcem wydłużającym drogę hamowania. Do serwisu wezwano też samochody, w których stwierdzono prawdopodobieństwo nieotwarcia się poduszek powietrznych z powodu błędnie zaprogramowanego komputera pokładowego, przegrzania oraz pożaru instalacji elektrycznej i uszkodzenia w niskiej temperaturze kabla, który zasila podgrzewacz bloku silnika.

Defekty pojazdów Mazdy i Nissana

Na wykazie CNN znalazły się także błędy w programie, powodujące kilkusekundowe opóźnienie przyspieszenia pojazdu, wyłączanie się systemu ESC (electronic stability control) bez ostrzeżenia, korodowanie okablowania zainstalowanego w drzwiach auta, błędne wskazania wskaźnika paliwa i nieprawidłowe podłączenie przewodów paliwowych. Problemy nie ominęły i innych firm.

Na przykład Mazda musiała wycofać kilka modeli aut w związku z awarią systemu ich ładowania, powodującą wyłączenie silnika. Przyczyną usterki było ześlizgiwanie się paska alternatora błędnie interpretowane przez moduł PCM (power control module). W starszych pojazdach tej marki z kolei stwierdzono, że czujnik momentu obrotowego w kierownicy nie działa prawidłowo. Aby naprawić tę usterkę, m.in. konieczna okazała się aktualizacja oprogramowania modułu PSCM (power steering control module). W samochodach Nissana natomiast wystąpił problem z nadmiernym ciśnieniem w poduszce powietrznej. Pękając, mogła ona, zamiast zabezpieczyć pasażerów pojazdu przed skutkami wypadku, spowodować poważne obrażenia ciała.

Błędy w kodzie źródłowym przyczyną tragedii

Głośnym echem w mediach odbiła się również sprawa Toyoty. Dowiodła ona niestety, że chociaż od producenta tej klasy można by oczekiwać dotrzymywania wysokich standardów jakości, w praktyce okazuje się, że nie zawsze są one przestrzegane. W tym wypadku niestety złamanie podstawowych zasad kosztowało życie ludzkie. Z powodu błędów w kodzie źródłowym systemu ETCS (electronic throttle control system) samochody przyspieszały w sposób nagły i niezamierzony. W wypadkach tym spowodowanych zginęli ludzie. Co w obliczu takiej tragedii jest wprawdzie drugorzędne, poza trudnymi do oszacowania stratami wizerunkowymi, firma ta poniosła również wymierne koszty procesów i odszkodowań, które musiała wypłacić rodzinom ofiar.

Eksperci, którzy analizowali kod źródłowy ETCS, zarzucali mu nie tyle błędną implementację funkcji, jakie miał realizować, co przede wszystkim nadmierną złożoność oraz mnogość zmiennych globalnych i funkcji, których stopień skomplikowania uniemożliwiał nawet ich przetestowanie. Poza tym programistom Toyoty udowodniono nieprzestrzeganie lub tylko wybiórcze dotrzymywanie standardów budowania aplikacji w języku C, głównie MISRA-C. Kod źródłowy nie został też należycie przetestowany.

Prostota i staranność gwarancją bezpieczeństwa

Chociaż usterek mechanicznych, elektrycznych ani tych z powodu błędów w oprogramowaniu nie da się całkowicie uniknąć, należy zrobić wszystko, by do nich nie dopuścić. W coraz bardziej skomplikowanych systemach, w jakie są wyposażane samochody, zwłaszcza w związku z popularyzacją tych hybrydowych i elektrycznych, nie można niestety przewidzieć wszystkich prawdopodobnych awarii. Najlepszym zabezpieczeniem jest zatem stosowanie się do powszechnie przyjętych norm. Zadania powinny być z kolei implementowane w sposób najprostszy z możliwych (ale nie prostszy). Najłatwiej wyjaśnić to na przykładzie oprogramowania. Złotą zasadą przy tworzeniu kodu źródłowego powinno być ostrożne gospodarowanie zasobami pamięci i wydajności obliczeniowej, dbałość o jakość kodu oraz testowanie go przez niezależnie pracujące zespoły programistów.

Monika Jaworowska

Zobacz również