Teemu Huhtala OBD2-JÄRJESTELMÄÄN PERUSTUVAN OHJELMAN KEHITTÄMINEN Tietojenkäsittelyn koulutusohjelma Sovellusohjelmoinnin suuntautumisvaihtoehto 2010 OBD2-JÄRJESTELMÄÄN PERUSTUVAN OHJELMAN KEHITTÄMINEN Huhtala, Teemu Satakunnan ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma lokakuu 2010 Ohjaaja: Stenfors, Juha Sivumäärä: 39 Liitteitä: 1 Asiasanat: autotekniikka, katsastus, diagnostiikka _____________________________________________________________ Opinnäytetyön aiheena oli tehdä laajalti ymmärrettävä dokumentaatio OBD2järjestelmästä ja tutkia sen mahdollisuuksia luoda auton moduuleihin yhteyden. Opinnäytetyön tavoitteena oli ohjelmoida ElmoScan ohjelmistosta uusi ja laajempi versio. Uusi versio mahdollistaa yhdistämisen auton eri moduuleihin. Tämän työn tarkoitus on kasvattaa ihmisten ymmärrystä OBD2järjestelmästä ja sen nykyaikaisista mahdollisuuksista. Työ selventää myös mitä järjestelmä pitää sisällään ja millaisia ominaisuuksia sen avulla voidaan tulevaisuudessa hyödyntää. Työssä kerron Suomessa olevasta katsastuksessa tapahtuvasta OBD2-järjestelmän tarkastuksesta. Työssä tutustutaan lähemmin OBD2-järjestelmän liittyviin moodeihin ja niiden tarjoamiin eri päätekomentoihin. Työssä esitellään tiettyjen päätekomentojen antamia vastauksia ja niiden tulkintaa oikealla tavalla. Työn tarkoitus on selventää autoilijalle minkä takia auton vikamerkkivalo syttyy ja miten auton vikakoodit luetaan. Opinnäytetyössä tutkitaan mahdollisia tapoja ja menetelmiä miten voi yhdistää autossa oleviin yksiköihin eli moduuleihin. Opinnäytetyön loppupuolella on esitetty Suomalaisen OBD2-ohjelmiston, ElmoScan, kehittäminen. Kehittämistyön tavoitteena oli ohjelmoida uusi ElmoScan versio, joka mahdollistaa yhteyden luomisen tietyntyyppisiin moduuleihin. Uuden ohjelmistoversion kehittäminen vaati huomattavan määrän tutkimustyötä ja dokumentaatioiden ymmärtämistä käytännössä. Opinnäytetyön toimeksiantajana toimi porilainen Softator Oy. OBD2 SOFTWARE DEVELOPMENT Huhtala, Teemu Satakunnan ammattikorkeakoulu, Satakunta University of Applied Sciences Degree Programme in Business Information Systems October 2010 Supervisor: Stenfors Juha Number of pages: 39 Appendices: 1 Keywords: Automotive engineering, inspection, diagnostics _____________________________________________________________ The purpose of this thesis was to create comprehensive documentation of On-Board Diagnostic system and create a new version of the ElmoScan OBD2 diagnostic software. The new version of the software makes it possible to connect to certain type of car modules. One goal of this work is to increase people's understanding of the OBD2 system and its modern opportunities. This work also clarifies what the system contains and what features it can utilize in the future. In this work I also tell how the Finnish car inspection uses the OBD2-port. This thesis looks into OBD2 general modes and PIDs. Also the thesis introduces some specific PIDs and replies, and how to convert the replies to real information. The purpose is to clarify why a cars fault indicator lights up on the car and how to read fault codes from the car. This work looks into the possible ways and methods to connect specific type of car modules. Finnish OBD2 software development is presented at the end of this thesis. The software is called ElmoScan and purpose of this thesis was to program new features to ElmoScan. The development of the new version of the ElmoScan software required a considerable amount of research. The thesis was assigned by Softator Oy in Pori. Softator Oy is a Finish software Development Company SISÄLLYS SYMBOLI- JA TERMILUETTELO ................................................................... 6 1 JOHDANTO............................................................................................... 8 2 OBD2......................................................................................................... 9 2.1 Käyttötarkoitus ................................................................................ 10 2.2 Käyttäjät .......................................................................................... 11 2.3 OBD:n historia ................................................................................ 12 2.3.1 OBD1 ................................................................................... 12 2.3.2 OBD2 ................................................................................... 13 2.4 OBD2 Protokollat ............................................................................ 13 2.4.1 ISO 15765-4......................................................................... 14 3 2.4.2 Muut protokollat ................................................................... 14 2.5 Lainsäädäntö ja katsastus suomessa ............................................ 14 2.6 Autonvalmistajien käytäntö............................................................. 15 OBD:N TULEVAISUUS ........................................................................... 16 4 3.1 OBD3 .............................................................................................. 16 3.2 Autojen seuranta............................................................................. 16 OBD2:N KOMMUNIKOINTI .................................................................... 17 4.1 Lukijalaite ........................................................................................ 17 4.2 Tiedon pyytäminen ja vastauksen tulkitseminen ............................ 18 4.2.1 Moodin käyttäminen............................................................. 18 5 4.2.2 Moodin ja päätekomennon käyttäminen .............................. 19 OBD2 DIAGNOSTIIKKA ......................................................................... 20 5.1 Vikakoodit ....................................................................................... 20 5.2 Moodit ............................................................................................. 21 5.2.1 Nykyiset tiedot...................................................................... 22 5.2.2 Freeze Frame Data.............................................................. 22 5.2.3 Tallentuneet vikakoodit ........................................................ 22 5.2.4 5.2.5 5.2.6 5.2.7 Tyhjennä muisti .................................................................... 23 Happianturin ja järjestelmän seurannantestaus .................. 24 Vireillä olevat vikakoodit....................................................... 24 Autontiedot ........................................................................... 24 5.2.8 Pysyvät vikakoodit ............................................................... 25 5.3 Valmistajakohtaiset moodit ja päätekomennot ............................... 25 5.3.1 Ford ...................................................................................... 26 5.3.2 Muut valmistajat ................................................................... 26 6 MODUULIT.............................................................................................. 27 6.1 Käyttötarkoitus ................................................................................ 27 7 6.2 Autonvalmistajat ............................................................................. 28 6.3 Yhteyden luominen ......................................................................... 28 ELMOSCAN ............................................................................................ 29 7.1 7.2 7.3 7.4 Historia............................................................................................ 29 OBD2-ohjelmistojen nykytilanne..................................................... 30 ElmoScan ohjelmistoon tutustuminen ja työn etenemisaikataulu .. 30 Tavoitteet ........................................................................................ 32 7.5 7.6 7.7 7.8 Moduulien hakeminen..................................................................... 32 Selvitystyön aikaiset ongelmat ....................................................... 33 Ohjelmoinnin aikaisia ongelmatilanteita ......................................... 33 Saavutetut hyödyt ........................................................................... 35 7.9 Tulevaisuuden näkymät.................................................................. 36 8 POHDINTA .............................................................................................. 37 LÄHTEET....................................................................................................... 38 LIITTEET SYMBOLI- JA TERMILUETTELO $ Etuliite tarkoitus on selventää, että kyseessä on heksadesimaalijärjestelmään kuuluva luku. Työssä käytetään etuliitettä yleisesti moodien yhteydessä. ABS (Anti-lock Brake System) Auton lukkiutumaton jarrujärjestelmä. AIRBAG Turvatyyny toimii yhtenä autojen turvallisuuslaitteena. CAN-Väylä (Control Area Network) automaatioväylä, joka toimii ajoneuvojen ja koneiden sisäisenä paikallisväylänä. DTC (Diagnostic Trouble Code) Yleinen vikakoodeista käytetty yleinen lyhenne. ECM (Engine Control Management) Moottoriohjauksen yksikkö. ESC (Electronic Stability Control) Elektroninen ajonvakautusjärjestelmä. LED (Light-Emitting Diode) Loistediodi eli ledi. Kun ledin läpi johdetaan virtaa, niin se säteilee valoa. OBD (On-Board Diagnostic) Ajoneuvon sisäinen valvontajärjestelmä, joka seuraa autontoimintoja. Kannettava ohjain Tässä työssä kannettava ohjain tarkoittaa kädessä pidettävää laitetta, joka osaa toimia itsenäisesti auton OBD2järjestelmän kanssa. Pending DTC (Pending Diagnostic Trouble Code) Viereillä olevat vikakoodit. PIDS, Päätekomennot (Parameter IDs) päätekomentoja käytetään moodeissa, joissa on enemmän kuin yksi komento. Protokolla Käytäntö tai standardi joka määrittelee tai mahdollistaa laitteiden tai ohjelmistojen väliset yhteydet. TCM (Transmission Control Module) Vaihteiston kontrollointi moduuli. SAE (The Society of Automotive Engineering) Yhdysvaltalainen autoalan standardisointijärjestö. Katso lisätietoa http://www.sae.org/ VIN (Vehicle identification Number) Autokohtainen tunnistetieto. Esimerkki auton 1M8GDM9A_KP042788. Katso tunnistetiedosta: lisätietoa http://www.angelfire.com/ca/TORONTO/VIN/VINcode.ht ml Vikamerkkivalo Autojen mittaristoista löytyvä merkkivalo, joka ilmaisee tallentuneista vikakoodeista. 8 1 JOHDANTO Opinnäytetyössäni tulen kertomaan OBD2-järjestelmän nykyaikaisesta käyttötarkoituksista ja käyttäjäkunnan kasvamisesta. Samalla on tarkoitus esitellä miten OBD2-järjestelmä on kehittynyt huomattavasti laajemmaksi alkuperäisestä OBD-järjestelmästä. Tavoitteena on myös esitellä nykyaikaista CANväylää, joka on muita protokollia kehittyneempi ja tämän hetkisessä tilanteessa ainoa käytettävä protokolla uusissa autoissa. Dokumentaation osana tulee olemaan opastusta, miten jokainen aiheesta kiinnostunut voi itse syöttää komentoja auton OBD2-järjestelmälle ilman kalliita ohjelmistoja. Komentojen syöttämisen lisäksi tarkoitus on kertoa miten OBD2-järjestelmän tarjoamia vastauksia on mahdollista tulkita. Esittelen myös tärkeimmät moodit, koska niitä voidaan pitää OBD2-järjestelmän perustana. Moodien toiminnallisuus täytyy sisäistää ja ymmärtää hyvin, jos haluaa oppia OBD2-järjestelmän toiminnallisuutta tarkemmin. Perusteiden jälkeen on hyvä tutustua hieman haasteellisempaan ja mielenkiintoisempaan alueeseen, eli moduuleihin. Moduuleilla tarkoitetaan autossa olevia eri yksiköitä, joihin on mahdollisuus ottaa yhteys OBD2-järjestelmän kautta. Yksiköitä voivat olla vaikka auton ABS tai stereot. Opinnäytetyöprojektissa tutkitaan mahdollista tapaa toteuttaa autojen diagnostiikka ohjelmistoon (ElmoScan) päivitys. Päivityksen tarkoituksena on mahdollistaa ElmoScan ohjelmiston välityksellä yhdistämisen tietyntyyppisesti esiintyviin auton eri moduuleihin. Opinnäytetyönprojektin päätavoitteena on saada julkaistua ohjelmistosta uusi ja entistä edistyneempi versio ElmoScan ohjelmistosta. Luvuissa 2-6 esittelen OBD2 toiminnallisuutta yleisellä tasolla. Luvussa 7 esittelen moduuleita ja niiden tarkoitusta. Luvussa 8 kerrotaan tarkemmin ElmoScan ohjelmistoon tehdystä päivityksestä. 9 2 OBD2 OBD (On Board Diagnostic) termin pitäisi jokaiselle autolla omistajalle tuntua tutulta termiltä. OBD2 on nykyaikainen tapa valvoa ja seurata auton kasvavia sähköjärjestelmiä, sekä raportoida mahdollisimman monipuolisesti auton jokaista tapahtumaa lähes reaaliaikaisesti. OBD2-järjestelmä toimi erittäin monipuolisesti nykyaikaisten ohjelmistojen välityksellä. Geneerisen OBD2-mittauksen suorittamiseen ei vaadita tunnuksia, eikä liikennettä olenkaan salattu. Tämä mahdollistaa käyttäjien tutustua järjestelmään yllättävän helposti ja vaivatta. Auton OBD2-porttiin liitetään pelkästään lukijalaite, joka kommunikoi auton ja ohjainlaitteen välillä. Ohjainlaitteena voi toimia erillinen kädessä pidettävä kannettava ohjainta (Kuva 1), autoon kiinteästi asennettava mittaristolaite tai ihan perinteinen kannettava tietokone. Lukijalaite ja ohjainlaite voi olla myös yhdistetty samaan laitteeseen. Lukijalaitteen tehtävänä on välittää tietoa autosta ohjainlaitteelle, joka kyselee komennoilla haluttuja tietoja autolta. Kuva 1. Tyypillisen näköinen kannettava ohjain. Lähde: http://www.sinoytool.com/upload/pro/472-813200816312283.jpg. 10 Nykyään on vaikea edes ymmärtää kuinka paljon normaaleissa henkilöautoissa on sähköisesti ohjattuja laitteita. Tämän kaiken seuraamiseen on kehitetty autoon oma diagnostiikkaportti, jonka tarkoituksena on seurata autossa tapahtuvia erilaisia muutoksia ja tapahtumia. Moni autoista enemmän tietävä ei välttämättä edes osaa kuvitella mihin kaikkeen OBD2-järjestelmään voidaan hyödyntää. Autokorjaajien työnkuvaan kuuluu entistä enemmän tietokonepohjainen ongelmien tutkiminen ja selvittäminen. Eroavuus on huikea verrattuna siihen kun autoissa kulki vain muutama isompi sähköjohto ja loput olivat mekaanisesti toteutettuja laitteita. Nykytilanne on kaukana tästä ja tämä aiheuttaa omat ongelmat, mutta osaksi se on vienyt kehitystä huimasti eteenpäin ja turvallisuus on kehittynyt aivan uudelle tasolle. 2.1 Käyttötarkoitus OBD2:n käyttötarkoituksia löytyy varmasti useita, eikä kaikkia ole varmasti vielä keksitty tai hyödynnetty tarpeeksi kattavasti. Alkuperäinen käyttötarkoitus on ollut yksinkertainen ja toimiva: kehittää pakokaasujärjestelmää lähes reaaliaikaisesti seuraava järjestelmä. Järjestelmä osaa myös havaita vikoja ja tuoda ne muutamalla yksinkertaisella komennolla käyttäjälle. Autoilijoille koko OBD2-järjestelmä saattaa tuntua vain isolta vaivalta ja turhalta rahastukselta katsastuksessa, vaikka sitä se ei todellisuudessa ole. OBD2 järjestelmän tavoitteena on vähentää autojen päästöjä ja saada autoilijat nopeasti puuttumaan autoissa oleviin teknisiin ongelmiin ja vikoihin. Viat saattavat nostaa huomattavasti auton päästöjä tai heikentää auton turvallisuutta. Tämän lisäksi OBD2-järjestelmä kykenee moneen muuhunkin tarkoitukseen. OBD2-standardit päätekomennot tarjoavat suurehkon määrän lähes reaaliaikaista tietoa. Esimerkkeinä näistä tiedoista on: auton kierrosluku, nopeus ja muiden eri anturin tarjoamaa tietoa. Saa selville kuinka kuumana koneen jäähdytysneste oikeasti on tai kuinka lämmintä ilmaa koneen imusarjaan menee. Tämän tyyppistä tietoa on ilman OBD2-järjestelmää vaikea selvittää. Pelkästään näille tiedoille löytyy jo huomattavamäärä käyttöä ja mahdollisuuksia tutkia moottorin toimintaa. 11 OBD2-järjestelmällä avulla on erittäin helppo seurata esimerkiksi auton kulutusta tarkemmin ja vertailla sitä omaan kirjanpitoon tai ajotietokoneen antamiin arvoihin. Tällaisen seurannan avulla esimerkiksi yritykset voivat kehittää ohjelmiston seuraamaan ylinopeuksia, epätaloudellisia ajotapoja ja kehittämään autojen kuljettajia taloudellisemmaksi. Mahdollisuuksia ja käyttötarkoituksia on monia, kunhan löytyy tarpeeksi kehittäjiä tekemään monipuolisia ohjelmia yleisesti saataville. 2.2 Käyttäjät OBD2:lle löytyy useita eri käyttäjiä, kuten esimerkiksi autokorjaamot, katsastusasemat ja autoharrastajat. Näistä autokorjaamoilla ja katsastusasemilla on suurin käyttötarve vikakoodien lukemisessa ja niiden huoltotarpeiden selvittämisessä. Näiden lisäksi löytyy myös edistyneitä käyttäjiä, jotka saattavat jopa kehittää oman ohjelmiston, joka soveltuu paremmin hänen käyttötarkoitukseensa. Koska olemassa olevien ohjelmistojen tarjonta saattaa olla liian suppea tai ei sovellu tarpeeksi hyvin käyttäjän käyttötarkoitukseen. Näitä ohjelmia ei välttämättä ikinä julkaista yleisesti saataville ja niiden toiminta voi jäädä täysin kokeelliseksi. Toisista ohjelmistoista voi kuitenkin kehittyä laadukas ohjelmisto, jonka tulevaisuus voi olla hyvinkin tuottoisa. Osa käyttäjistä on innokkaita autoharrastajia, jotka haluavat oppia, seurata ja ymmärtää autojen toimintaa. Innokkaimmat käyttäjät yrittävät saada kaiken mahdollinen informaation ulos autosta ja päästä seuraamaan sitä reaaliaikaisesti. Autoharrastajat keskustelevat eri keskustelupalstoilla ja foorumeilla. Tällä tavalla he jakavat tietoa keskenään. Tämän tyyppinen kehittävä tutkimustyö on jo saanut aikaan useita pienempiä ohjelmia, jotka toimivat mainiosti ja ovat käyttötarkoitukseltaan edistyksellisiä kehitettyyn toimintoon. 12 Pienissä OBD2 ohjelmistoissa kehitystä tapahtuu yleisesti hitaasti, mutta suurin ongelma tulee olemaan kehittäjän eli yksittäisen ihmisen tai pienen ryhmän aika. Lopulta kehittäjien resurssien väheneminen saattaa lopettaa kehitystyön kokonaan ja ohjelmiston ylläpitäminen tulee loppumaan kokonaan. 2.3 OBD:n historia OBD:n historia on jo yllättävän pitkä ja kehitys on mennyt paljon eteenpäin. Kehittäminen on alkanut 1980-luvun alkupuolella, jolloin ensimmäiset OBDportit tulivat autoihin ja kehitystyötä alkoi tästä. Alussa suurin heikkous oli laitteiden yhteensopimattomuus. OBD-järjestelmän kehittämisen päätavoite oli autoilla puhtaamman ilman puolesta. OBD:n tarkoitus on seurata auton pakokaasujen päästöjä ja tiukentaa päästöjen seurantaa. Tärkeimmät ovat olleet päätökset, jotka ovat pakottaneet autovalmistajien lisäämään täydellisesti toimivan OBD2-portin autoihin. Yhdysvalloissa tämä tapahtui jo vuonna 1996. (Omitec Limited) 2.3.1 OBD1 OBD1-järjestelmä oli suhteellisen yksinkertainen ja se sisälsi ainoastaan happianturin tarkkailun, pakokaasunkierrätyksen seurannan, bensiininsyötön ja ECM:n seurannan. OBD1 oli tarkoitettu puhtaasti seuraamaan pakokaasupäästöjä auton elektronisten moottorinohjauksen välityksellä. Vikatiedot saatiin yleensä autoista ilman erillistä lukijalaitetta ja siihen riitti pelkästään LEDin käyttäminen tai auton vikamerkkivalo. Vikakoodien raportoimiseen toimii vikamerkkivalon vilkkuminen ja tästä saatiin luettua mitä vikakoodeja oli tallentunut järjestelmän muistiin. OBD1 heikkoutena oli liian väljä standardi, joka johti jokaiselle valmistajalle mahdollisuuden kehittää omalaista toimintaa. Tämä aiheutti useiden erilaisten adapterien tarvetta ja mahdollisti joihinkin järjestelmiin pääsyyn ainoastaan valmistajakohtaisilla lukijalaiteilla. (Omitec Limited) 13 2.3.2 OBD2 OBD2-Järjestelmä on asetettu huomattavasti tarkempi standardi ja kehittynyt samalla käyttäjäystävällisemmäksi, joka helpottaa käyttäjien tutustumista järjestelmään. Tiukemman standardin oli tarkoitus antaa tarkemmat ohjeistukset, miten järjestelmän tulee toimia. Samalla havaita herkemmin mahdolliset päästöjärjestelmiin liittyvät viat ja ongelmat. Merkittävä hyöty tiukemmasta standardista oli OBD2-liittimen standardisointi tiettyyn malliin. Katso kuva 2. Tämä vähensi ylimääräisien adapterien käyttämistä. Autoissa oleva vikamerkkivalo saattaa vilkahtaa herkästi, jos autossa ilmenee hetkellistä vikaa. Vikamerkkivalo ei välttämättä jää palamaan, koska se voi johtua hetkellisestä ongelmasta sytytyksessä tai joku tärkeä osa-alue autosta menetti yhteyden auton OBD2-järjestelmään.(Omitec Limited) Kuva 2. OBD2 standardi portti. Lähde: http://us1.webpublications.com.au/static/images/articles/i19/1935_5lo.jpg. 2.4 OBD2 Protokollat OBD2-protokollia löytyy jo useita erilaisia, joiden käyttäytymisessä on pieniä eroavuuksia. Nykyaikaiset lukijalaitteet osaavat automaattisesti valita oikean protokollan. Vanhemmat protokollat ovat poistuneet jo käytöstä ja uusimmat kehittyvät kokoajan paremmaksi. Tämä aiheuttaa ohjelmistojen kehittäjille huomattavaa määrää lisätyötä, koska joudutaan testaamaan jokaista protokollaa erikseen ja varmistaa toimiiko laitteisto ja ohjelmisto oikein. Protokollien tarjoaman tiedon sisällön kanssa ei pitäisi olla eroa, mutta ero löytyy tiedonpituudessa ja sen käsittelyssä. Vuoden 2008 jälkeen valmistetuissa autoista pitäisi löytyä aina CAN-väylä. (OBD Automotive Oy 2007) 14 2.4.1 ISO 15765-4 ISO 15765-4 eli CAN-väylä tarjoaa entistä enemmän käyttäjille tietoa auton OBD2-järjestelmästä. CAN-väylä on nykyaikaisin protokolla, joka eroaa huomattavasti vanhemmista protokollista. Tietoa ei tarjota vanhaan tapaan eli ottamalla yhteys tiettyyn moduuliin, vaan se tarjoaa kaikista moduuleista tulevat tiedot yhtäaikaisesti. Tuleva tieto kuitenkin priorisoidaan tärkeyden mukaan eli kaikki turvalaitteet ovat ennen muita ja vähemmän tarpeellinen tieto vasta näiden jälkeen. Harvoissa Suomen teillä liikkuvissa autoissa on CANväylä, koska se tuli pakolliseksi vasta vuoden 2008 jälkeen. CAN-väylän tiedonsiirtonopeus on huikeasti vanhoja nopeampi ja luotettavuus ei ole silti kärsinyt. (OBD Automotive Oy 2007; Müller 2005, 44-45 ) 2.4.2 Muut protokollat Ennen vuotta 2008 oli käytössä useita eri protokollia, jotka johtivat sekavaan käytäntöön. Yhdellä autonvalmistajalla saattoi olla useita eri protokollalla käytössä samassa automallissa. Tietyn protokollan käyttäminen ei ollut yhtenäinen muiden autovalmistajien kanssa. Vanhempien protokollien suurimpia heikkouksia oli hidas tiedonsiirto. Suurimpia eroja toiminnallisuudessa CANväylän kanssa on fyysisten osoitteiden eroavuus ja tästä seurasi komennoilla pyydettyjen vastauksien pituuksien vaihtelua. (Müller 2005, 43-45) 2.5 Lainsäädäntö ja katsastus suomessa Suomen laissa on määritetty, että jokaisen 2001 vuoden jälkeen valmistetuissa bensiinikäyttöisissä autoissa pitää olla toimiva OBD2 portti ja dieselkäyttöisissä autossa vuodesta 2003 eteenpäin. Vuosikatsastuksessa tarkistetaan OBDII portin toimivuus ja sen muistiin tallentuneet virheilmoitukset ja auton tämän hetkiset päästöt. 15 Vuosikatsastuksessa hyväksytään myös valtuutetun korjaamon tarjoama OBD-tarkastuksen tuloste, jossa tulee ilmetä seuraavat tiedot TraFi:n (AKE 2007, 2-4) mukaan: • Vikamerkkivalon tila, mikäli valo on aktiivinen ja se on mittalaiteesta saavissa. • Selkokielinen informaatio OBD-järjestelmän mahdollisista vioista. • Selkokielinen informaatio auton sisäisen valvontajärjestelmän toimintavalmiuden osatestien suorittamisesta. • Mikäli kaikkia osatestejä ei ole pystytty suorittamaan, merkitään tieto lambdasäädön toiminnasta ja sen tiedoista. 1.1.2004 jälkeen valmistetuille autoille suoritetaan korotettu pyörintänopeus päästötesti, josta tulee ilmetä normaalien tietojen lisäksi 2.6 • Lambda-arvo • Co- ja HC-arvot • happi- ja hiilioksidi-arvot • moottorin pyörintä nopeus, mikäli se on mahdollista mitata Autonvalmistajien käytäntö Autonvalmistajilla on tiukat politiikat järjestelmien salaamisesta ja valmistajakohtaisten komentojen julkaisemattomuus on aina ollut hidastava tekijä OBD2-ohjelmistojen kehittämisessä. Mahdollista on myös ostaa eräiltä autovalmistajilta parannettujen OBD2 komentojen tiedot. Näiden tietojen hinnat ovat pienimmille yrityksille aivan liian korkeita. Tämän tyyppisen toiminnan tarkoituksena on estää mahdollisuus niiden ostamiseen. OBD2 ohjelmistojen hitaat markkinat estävät kehitystyön, koska autonvalmistajien antamat tiedot, ovat vain isojen yritysten käytettävissä. Pienimmissä ohjelmistojen kehitystyössä joudutaan harrastamaan paljon hidasta tutkimustyötä. Tällöin joudutaan käyttämään suuria määriä resursseja pelkästään yksinkertaisiin autonvalmistajakohtaisien moduulien yhteyksien luomiseen ja päätekomentojen tarjoamien vastauksien tulkitseminen. 16 3 OBD:N TULEVAISUUS Tulevaisuudessa tullaan suurella todennäköisyydellä kehittämään kehittyneempi versio OBD2-järjestelmästä, joka tulee korvaamaan sen lähes täysin. Nykyiset hybridi- ja sähköautot, ovat selvästi tulevaisuudessa isomassa asemassa, mutta OBD2 ei ole kehitetty sopimaan näiden autojen vaatimiin tarpeisiin. 3.1 OBD3 OBD-järjestelmän kehitys menee eteenpäin jolloin olemassa olevan järjestelmän kehittäminen tulee nopeasti eteen. Tiedetään varmasti, että OBD3:een on jo korjattu OBD2 löytyvät puutteet ja lisätään nykyaikaisuuteen liittyviä ominaisuuksia. Yhtenä suurimpana uudistuksena odotetaan, ettei vaadita fyysistä yhteyttä tietojen hakemiseen autosta. OBD3-järjestelmässä mahdollistetaan tapa jolla voidaan hakea kaikki tiedot langattomasti autosta. Nykyään on huomattava määrä tapoja jotka mahdollistavat langattoman tiedonsiirron autossa. Tiedonsiirtoon voidaan käyttää esimerkiksi Wlan tai Bluetooth -tekniikoita. Langatonta yhteyttä pidetään yhtenä suurimmista uudistuksista, jota OBD3 tuo mukanaan.(California Air Resources Board, 2009, 13) Langattoman tekniikan tarkoituksena on vähentää auton eliniän aikana aiheuttamia käyttökustannuksia. Tieto auton vikatiedoista voidaan lähettää välittömästi sitä valvovalle viranomaiselle (TraFi). (California Air Resources Board, 2009, 13) 3.2 Autojen seuranta Nykyaikaisilla järjestelmillä ja ohjelmistoilla on mahdollisuus hallita auton OBD2-järjestelmää. Tällöin pystytään hallitsemaan useita autontoimintoja. Hyvänä lisänä on myös GPS:n tuleminen autoihin. 17 4 OBD2:N KOMMUNIKOINTI Yhdistämisen OBD2-järjestelmään tarvitaan aina lukijalaite, joka tulkitsee viestit OBD2-järjestelmän ja tietokoneen välillä. Erityisen OBD2-ohjelmiston käyttäminen ei ole välttämätöntä, jos tietää miten luoda yhteyden tietokoneen ja lukijalaiteen välille. Yhteyden luomisen jälkeen voidaan kysellä autolta haluttuja tietoja. Lukijalaite välittää autolta tulleen vastauksen terminaaliin, kunhan terminaali osaa ottaa tietoa tarpeeksi nopeasti vastaan. 4.1 Lukijalaite OBD2-lukijailaite toimii yleensä yhdistettynä johdolla tietokoneeseen, mutta tarjolla on myös langattomia vaihtoehtoja. Langattomat lukijalaitteet toimivat, joko Bluetooth tai Wlan tekniikoilla. Langattomalla tiedonsiirrolla yritetään helpottaa laitteiden käyttämistä ja välttää vaarallisia johtoja liikkuvassa autossa. Lukijalaitteen tehtävänä on hoitaa OBD2 tiedon käyttäjän ja OBD2järjestelmän välillä. Nykyaikana lukijalaitteita on lukemattomia määriä tarjolla ja hinnat liikkuvat kymmenen ja usean tuhannen euron välillä. Käyttäjän tarpeesta riippuen kannattaa valita lukijalaite tarkasti. Nimittäin on turha maksaa kalliista laitteesta, jos tarpeena on pelkästään vikakoodien lukeminen. Jos käyttäjä haluaa tehdä muutakin kuin lukea vikakoodeja saa nykyaikaisen, laadukkaan ja kattavan lukijalaitteen tilattua edullisesti. Lukijalaitteiden tärkeimmät ominaisuudet ovat tulkin toimivuuden lisäksi lukijalaitteen ominaisuudet, luotettavuus, nopeus. Kun tietokone on saanut yhteyden lukijalaitteeseen, niin kaikki nykyaikaiset lukijalaiteet pitäisi pystyä tunnistamaan automaattisesti auton käyttämä tiedonsiirto protokolla. Vanhemmissa lukijalaitteissa on mahdollista, että käyttäjä joutuu itse määrittämään auton käyttämän protokollan tai lukijalaite on tehty pelkästään toimimaan tietyn protokollan kanssa. 18 4.2 Tiedon pyytäminen ja vastauksen tulkitseminen Yhteyden luomisen jälkeen on erittäin helppoa kysellä haluttuja tietoja autolta. Tiedonpyytämiseen löytyy moodi komentoja tai jos moodi sisältää useampia eri komentoja, niin käytetään moodia ja päätekomentoa yhdessä. Kaikki moodit eivät sisällä useita komentoja. Kun auton OBD2-järjestelmältä on pyydetty tietoa, niin se saadaan vastaus merkkijonoina. Merkkijono voi sisältää joko heksadesimaaleja tai suoraan vastauksen merkkijonossa. Merkkijonojen pituus voi vaihdella käytetyn protokollan mukaan, koska protokollien tunnistetietojen esiintymisessä on eroavuuksia. Merkkijonon vastausta täytyy osata tulkita oikein, koska muuten merkkijonon tarjoamista tiedosta ei ole hyötyä. Merkkijonojen tulkitsemisesta löytyy tietoa SAE:n maksullisista dokumenteista. (Seyfert, Karl 2007) Seuraavissa kohdissa esitän esimerkkejä pelkän moodin ja moodin ja päätekomennon käyttämisestä todellisuudessa 4.2.1 Moodin käyttäminen Esimerkki pyydettäessä auton vikakoodeja pelkällä moodilla $03. Jos auton muistiin ei ole tallentunut, niin ei vastausta välttämättä tule ollenkaan. Vikakoodien pyytämiseen riittää kun syöttää lukijalaitteelle pelkästään numerosarjan ”03”. Kuva 3. Kuvankaappaus ElmoApuri ohjelmasta. Vikakoodien luku. Kuvassa 3. olevissa riveissä on nähtävissä suoraan vikakoodit. Vikakoodeja tulkittaessa rivien otsikkotiedot (43) ei ole merkitseviä. Vikakoodit ovat aina neljän merkin ryhmissä ja kuvan 3 mukaisessa tapauksessa on vikakoodeja yhteensä seitsemän. 19 4.2.2 Moodin ja päätekomennon käyttäminen Esimerkki pyydettäessä auton nopeutta käytetään moodilla $01 ja komentoa 0D. Kuva 4. Kuvankaappaus ElmoApuri ohjelmasta. Auton nopeus. Kuvassa 4 olevan vastausrivin 4 ensimmäistä merkkiä palauttaa kysytyn komennon. Tämän jälkeen loput merkeistä kertoo nopeuden heksadesimaaleina. Vastauksen saa purettua kääntämällä heksadesimaalin normaaleiksi desimaaleiksi, jolloin kuvanotto hetkellä nopeudeksi saatiin 53km/h. (Elm Electronics Inc. 2010, 27) Esimerkki pyydettäessä auton kierrosluku tietoa käytetään moodilla $01 ja komentoa 0C. Kuva 5. Kuvankaappaus ElmoApuri ohjelmasta. Auton kierrosluku. Kuvassa 5 olevan vastausrivin 4 ensimmäistä merkkiä palauttaa kysytyn komennon. Tämän jälkeen loput merkeistä on vastaus eli ”20 51”. Merkkijono käännetään heksadesimaali desimaaleiksi, jonka jälkeen saatu luku jaetaan neljällä, jolloin saadaan tulokseksi 2068 kierrosta minuutissa. (Elm Electronics Inc. 2010, 27) 20 5 OBD2 DIAGNOSTIIKKA OBD2-järjestelmän diagnostiikalla mahdollistetaan auton toimintojen seuranta ja muistiin tallentuneiden tietojen lukemisen OBD2-ohjelmiston avulla. Diagnostiikka on tärkeimpiä toiminnallisuuksia OBD2-järjestelmässä. OBD2järjestelmän diagnostiikka tarjoaa huomattavan määrän lähes reaaliaikaista tietoa. Usean tiedon tulkitsemisella voidaan tehdä monipuolisia ohjelmia, joiden toiminnot pitävät sisällä laajan kokonaisuuden. 5.1 Vikakoodit Vikakoodien (Diagnostic Trouble Code, DTC) tallentamista ja tulkitsemista pidetään OBD2-järjestelmän yhtenä tärkeimpänä ominaisuutena. Vikakoodit tallentuvat aina samalla tavalla auton muistiin ja yksittäisen vikakoodin merkkijonon pituus on aina vakio, vaikka tiedonsiirtoprotokolla vaihtuisi. Vikakoodien tarkoituksena on tallentaa autonmuistiin tapahtuneet viat, jotka ovat ilmentyneet tietyssä tilanteessa. Vikakoodien tallentumisella on tarkoitus helpottaa autossa esiintyvän vian määrittämistä. Vikakoodien tallentuminen mahdollistetaan nykyaikaisemman korjaamotoiminnan. Autossa tapahtuvan vian ilmentyessä tarpeeksi useasti (kolme kertaa) se tallentuu muistiin, jolloin vikamerkkivalo saattaa syttyä. Vika voi ilmentyä myös satunnaisesti pitkällä aikavälillä, jolloin vikakoodia ei tallenneta normaaliksi vikakoodiksi vaan vireillä olevaksi vikakoodiksi. Vikamerkkivalon palaminen ei estä autolla ajamista tai välttämättä haittaa lainkaan autontoimintaa. Vikamerkkivalon palamisen löytyy yleensä selitys vikakoodeja luettaessa lukijalaitteella. Vikakoodienlukeminen on erittäin tärkeä suorittaa säännöllisesti, koska se on kehitetty nimenomaan autojen turvallisuuden ja luotettavuuden takia. Vikakoodien lukeminen lukijalaitteella saattaa tuoda julki, myös autossa vireillä olevia vikoja. Moni autojen tekniikasta ymmärtävä saattaa säästää kalliin korjaamokäynnin, kun pystyy lukemaan vikakoodit omalla lukijalaitteellaan. Autokorjaamo veloittaa jo lukijalaitteen hinnan pelkästään yhden auton vikakoodien lukemisesta. 21 Vikamerkkivalo voi syttyä jo pienestäkin ongelmasta kuten huonosta kontaktista auton anturin liittimessä. Tämä aiheuttaa yhteyden pätkimisen ECM:n kanssa. Pätkimisen seurauksena vika on toistuva, jolloin vikamerkkivalo syttyy. Vikakoodien lukemisella pääsee heti selville mikä sytytti vikamerkkivalon ja esimerkiksi pelkän liittimen putsaamisella tuli säästettyä melko kallis korjaamo käynti. 5.2 Moodit Moodit sisältävät OBD-järjestelmän päätoiminnallisuudet omissa osaalueissaan. Moodit toimivat komentoina, joita OBD2-järjestelmä kuuntelee ja osaa niihin vastata. Osa moodeista sisältää huomattavan määrän enemmän alikomentoja kuin pelkän moodi komennon. Alikomentoja kutsutaan päätekomennoiksi (PIDS). Moodien jakaminen selkeisiin omiin osa-alueisiin selkeyttää OBD2- järjestelmän toimintaa. Jokainen moodi on kehitetty tiettyyn toimintaan ja tarkoitukseen. Päätekomennot ovat moodien sisäisiä komentoja, joilla saadaan osoitettua tarkemmin mitä tietoa haluaa kysyä OBD2-järjestelmältä. (sae j2178) Seuraavassa taulukossa (Taulukko 1) on lueteltuna kaikki yleisimmät käytössä olevat moodit. Moodien tarkempi kuvaus esitellään seuraavaksi alaotsikoiden avulla. Taulukko 1. Yhteenveto moodeista. (Seyfert, Karl 2007) Moodi $01 $02 $03 $04 $05, $06 $07 $09 $0A Tarkoitus Nykyiset tiedot Freeze Frame Data Tallentuneet vikakoodit Tyhjennä muisti Happianturin ja järjestelmän seurannantestaus Vireillä olevat vikakoodit Auton tiedot Pysyvät vikakoodit 22 5.2.1 Nykyiset tiedot $01 on moodeista eniten käytetty, koska se sisältää huomattavan määrän toiminnallisuutta. Moodi $01 sisältää esimerkiksi tallentuneiden vikakoodien lukumäärän ja huomattavan määrän standardisoituja päätekomentoja. Päätekomentoja avulla saadaan kyseltyä useiden eri antureiden tämänhetkiset arvot. Ohjelmistot yleensä hyödyntävät näitä tietoja joko tietojen keräämiseen tai näyttääkseen eri arvoja graafisessa muodossa käyttäjille. Moodin $01 päätekomentojen avulla voidaan kysellä hyödyllistä tietoa. Esimerkkinä hyödyllisistä tiedoista ovat: auton tämänhetkinen nopeus, kierroslukumäärän, auton käynnissä olo aika tai kuinka pitkään autolla on ajettu vikamerkkivalo päällä. Suurin osa tiedoista on merkkijonoja joiden tarkoitus ei selviä ennen niiden kääntämistä oikeaan muotoon. Oikeaan muotoon kääntäminen ei ole yksiselitteinen, vaan tapahtuu hyvinkin erityyppisten laskelmien avulla. (SAE International 1997, 31) 5.2.2 Freeze Frame Data $02 moodin tarkoituksena on tallentaa vikatilanteen tapahtuessa muistiin huomattava määrä hyödyllistä tietoa vikakoodin tapahtuma hetkestä. Moodi $02 tallentama tietoa sisältää esimerkiksi tapahtuneen vikakoodin, auton nopeuden ja kierrosluvun. Nämä tiedot on mahdollista lukea ja analysoida, myös jälkikäteen. Tallentuneen tiedon avulla on mahdollista selvittää mistä vikatilanne saattoi johtua tai oliko mahdollisesti poikkeuksellinen vikatilanne päällä. Poikkeuksellinen tilanne voi olla esimerkiksi isoilla kierroksilla tapahtunut auton huomattava tärinä, joka on aiheuttanut tiedonsiirto ongelman anturin ja OBD2-järjestelmän välillä. (SAE International 1997, 31) 5.2.3 Tallentuneet vikakoodit $03 moodi on OBD2-järjestelmän yksi helpoimmista moodeista käyttää, tulkita ja analysoida. Kyseltäessä pelkällä moodilla $03 saadaan vastaus, joka sisältää kaikki järjestelmän muistiin tallentuneet oikeat vikakoodit. Moodin 03 23 palauttama vastaus ei sisällä tietoa mitä vikakoodi tarkoittaa, vain pelkän merkkijonon. Merkkijonon ensimmäisen merkin avulla voidaan päätellä mikä auton osa-alue on kyseessä. Aina kun vikakoodeja on tallentunut tämän moodin muistiin, vikamerkkivalon syttyy automaattisesti. Jos vikakoodeja ei ole ollenkaan järjestelmän muistissa, vastausta ei tule tai se on tyhjä.(SAE International 1997, 32) 5.2.4 Tyhjennä muisti $04 on tarkoitettu tyhjentämään auton muistiin tallentuneet tiedot, jotka liittyvät vikakoodien tallentumiseen ja pakokaasupäästöjen seurantaan. Moodi ei sisällä yhtään erillistä päätekomentoa vaan moodi toimii pelkästään kaikkien tietojen tyhjentämiseen. Tärkeintä tietojen tyhjentämisessä on muistaa, että tyhjennettyjä tietoja ei voi palauttaa ollenkaan. Moodi $04 tyhjentää seuraavat osa-alueet: • Vikakoodien määrästä • Vikakoodeista • Freeze frame datan tallentaneen vikakoodin • Freeze frame datan sisällöstä • Happianturin testauksen tiedot • Järjestelmän seurannan tila • Moodin $06 ja $07 tulokset Mikäli, joku tyhjennettävistä osa-alueista ei vastaa $04 komentoon se ohitetaan ja jatketaan seuraavaan osa-alueeseen. Tietojen tyhjentäminen ei ole vaarallista tai haitallista. Tallentuneet tiedot vain menetetään lopullisesti. Moodi tulisi suorittaa aina kun vikakoodit on luettu ja mahdollinen vian aiheuttaja korjattu. Vikakoodien muistia ei pitäisi joutua turhaan tyhjentämään, jos järjestelmä on täysin kunnossa. (SAE International 1997, 32) 24 5.2.5 Happianturin ja järjestelmän seurannantestaus $05 ja $06 moodit toimivat testausmoodeina, joiden avulla pystytään selvittämään, saako auto puhtaan testaustuloksen. Happianturin moodin $05 toimiminen ei ole välttämätöntä, jos järjestelmäntestausmoodi $06 toimii. Katsastuksessa suoritetaan vain moodin 06 testaus, joka antaa kattavan vastauksen auton osa-alueiden toimivuudesta. Jos moodin $06 tarjoamaa tietoa ei saada tai joku osa-alueista ei toimi joudutaan suorittamaan moodi $05. (SAE International 1997, 32, 36) 5.2.6 Vireillä olevat vikakoodit $07 moodi kertoo vireillä olevat vikakoodit. Vireillä olevat vikakoodit ovat toistuneet satunnaisesti pitkällä aikavälillä tai alle 3 kertaa. Näiden tietojen avulla voi yrittää hakea satunnaista vikaa tai muuten ajon aikana ilmenneitä hetkellisiä ongelmia. Vireillä olevat vikakoodit siirtyvät automaattisesti moodin $03 alaisuuteen jos ne toistuvat yli 3 kertaa. Moodin $07 tarkoituksena on mahdollistaa nopeampi vianpaikantaminen vikakoodien nollaamisen jälkeen. Vireillä olevat vikakoodit helpottavat autokorjaajan toimintaa, koska ajokerran jälkeen pääsee heti näkemään onko vikakoodi ilmestynyt uudestaan nollaamisen jälkeen. (SAE International 1997, 36) 5.2.7 Autontiedot $09 moodi sisältää autosta tallennettuja tietoja, joista hyödyllisin on autokohtainen VIN-sarjanumero. Sarjanumeroa on hyödyllinen käyttää, jos haluaa yksilöidä tallennetut autot, omaan ohjelmaan. VIN-sarjanumeron avulla voidaan myös selvittää automerkki-kohtainen sarjanumerointi. VIN-sarjanumero on tallennettu 5-riviseksi International 1997, 39) merkkijonoksi OBD2-järjestelmässä. (SAE 25 5.2.8 Pysyvät vikakoodit $0A moodin tallentuneiden tietojen tarkoitus ei ole poistua käyttämällä moodia $04. Pysyvät vikakoodit poistuvat automaattisesti vasta kun vika on korjaantunut ja OBD2-järjestelmä huomaa tapahtuneen muutoksen. Moodi $04 saattaa sammuttaa vikamerkkivalon hetkellisesti, mutta se syttyy uudestaan kun diagnostiikka on huomannut sen uudelleen. Tällöin vikamerkkivalon syttyy automaattisesti ja pysyy päällä siihen asti kun vika on korjattu. (SAE International 1997, 44) 5.3 Valmistajakohtaiset moodit ja päätekomennot Edellä esiteltyjen moodien lisäksi löytyy huomattava määrä tuntemattomampia moodeja, jotka voi paljastaa paljon uutta erittäin hyödyllistä tietoa. Tämän tiedon löytäminen saattaa usein viedä aikaa huomattavan määrän aikaa. Tieto ei välttämättä löydy kirjoista tai muualta suoraan luettavana olevista lähteistä. Tietoja saattaa löytää esimerkiksi Internetin maksullisista palveluista, joihin liittyminen saattaa maksaa useita tuhansia euroja. Mahdollista on myös hankkia tietoa suoraan autonvalmistajilta, mutta näidenkin hinnat ovat hyvin korkeita. Korkeat hinnat hankaloittavat suuresti tietojen tarkempaa keräämistä ja sen hyödyntämistä. Toisien autovalmistajien moodit ja päätekomennot saattavat pienellä mahdollisuudella löytyä Internetistä ja toisista automerkeistä ei löydy mitään. Mahdollinen tapa selvittää tai varmistaa oman auton tietoja on käyttää valmista ohjelmistoa, josta löytyy halutut toiminnot tai ominaisuudet. Seuraavaksi esitellään yksi automerkki, jossa moodi tietojen selvittäminen ja löytäminen osoittautui haasteelliseksi. Esiteltävä automerkki on Ford. Muut automerkit käsitellään yhteenvetona omassa kohdassa. 26 5.3.1 Ford Fordin käyttämä moodi on $22. Samaa tapaa käyttävät muutama autonvalmistaja, kuten esimerkiksi General Motors -autokonserni. Kun oikeanlainen moodi on löydetty, luodaan yhteys käyttämällä sitä. Moodin yhdistäminen on vasta ensimmäinen askel todelliseen moodin tietojen käyttämiseen. Yhdistämisen jälkeen on pakollista aloittaa selvitystyö, jotta löytää oikeat päätekomennot ja mitä kyseinen päätekomento tarkoittaa. Päätekomentojen syöttämisen jälkeen saadaan vastaukset merkkijonoja. Merkkijonon tulkitsemiseen tarvitaan mahdollisesti purkaustapa, jonka avulla merkkijono puretaan oikeaksi tiedoksi. (Ford Motor Company 2007, 59-60) 5.3.2 Muut valmistajat Monilta autovalmistajilta löytyy oma moodinsa. Eri autonvalmistajien käyttämät moodit poikkeavat mahdollisesti General Motorsin ja Fordin käyttämästä moodista $22. Ainoa kriteeri moodin numeroksi on, että sen pitää olla järjestysnumeroltaan yli 9. Taulukosta 2 löytyy esimerkkejä. Taulukko 2. Esimerkkejä autovalmistajien moodeista. Autonmerkki Toyota Mazda Moodi $21 $22 OBD2-ohjelmistojen kehittäjät ovat huomanneet autonvalmistajien käyttämät moodit ja niiden päätekomennot. Jolloin kehittäjät panostavat sen tutkimiseen tarkemmin entistä enemmän. Monien OBD2-ohjelmistojen kehittäjien tilanne on tehdä valmistajakohtaiset paketit jokaiselle autovalmistajille. Autovalmistajien paketeilla yritetään hyödyntää autovalmistajakohtaiset moodit. Autovalmistajakohtaisella paketin avulla saadaan lisättyä ohjelmiston myyntiä ja näkyvyyttä. (Rleale 2009) 27 6 MODUULIT Autossa saattaa nykyaikana olla jo useita kymmeniä erilaisia moduuleja perinteisen ECM-yksikön lisäksi. Moduulilla tarkoitetaan erilaisia pienempiä yksiköitä. Moduulit on kehitetty hoitamaan sille tehtyä tarkoitusta ja mahdollisesti välittämään tietoa eteenpäin. Aikaisemmin moduulien ongelma on ollut heikko tai hankala moduulien tiedon välittäminen. Yleisesti tärkeimmät moduulit kuitenkin liittyvät läheisesti auton toimintaan ja turvallisuuteen. Auton toimintaan liittyviä moduuleita ovat muun muassa ECM ja TCM. Puolestaan turvallisuuteen liittyviä moduuleita ovat muun muassa: ABS, Airbag ja ESC. Vähemmän tarpeellisia moduuleita saattaa löytyä uusista autoista huomattavan paljon. Vähemmän tarpeellisia moduuleita voivat olla esimerkiksi stereot, lukot ja muut mukavuuteen liittyvät tekijät. Moduulien tärkeimpänä tekijänä on luoda yhteys muihin moduuliin, jotka mahdollistavat tiedonsiirtoa suoraan moduuleista käyttäjälle. OBD2 moduulit tarjoavat mahdollisuuden, jolla vältetään jokaiseen laitteeseen fyysinen yhteyden luominen. Moduulien avulla mahdollistetaan yhden portin välityksellä tiedonsiirtämisen. OBD2-järjestelmä on yhteensopiva usean moduulin kanssa. Ongelmana on moduulien yhteen sopivuus OBD2-järjestelmän kanssa. Harva moduuli on tehty suoraan täysin yhteensopivaksi OBD2-järjestelmän kanssa. (Elm Electronics Inc. 2010, 35-37) 6.1 Käyttötarkoitus Käyttötarkoituksia moduuleille varmasti löytyy useita, koska jokainen moduuli eroaa toisistaan. Käyttötarkoitukseen voi liittää kaikki auton toiminnot ja niiden säätömahdollisuudet. Jollekin voi olla tärkeää päästä tutkimaan vaihdelaatikon tarjoamia tietoja, vaikka esimerkiksi akseleiden pyörintä nopeuksia ja toiset voivat olla kiinnostuneita päästä vaihtamaan mittaristonvalojen värisävyjä. 28 6.2 Autonvalmistajat Määrityksen mukaista käytäntöä moduulien kanssa toimimiseen ei ole ollut montaa vuotta, joten autonvalmistajat ovat käyttäneet itse kehittäminään keinoja yhteyden luomiseen moduuleihin. Nämä Autovalmistajien omat tavat vaikeuttavat ohjelmistojen kehittämistä huomattavasti. Tietylle automerkille tai jopa automallille voi joutua pidempäänkin etsimään mahdollista yhteyden luomisen tapaa. Mikään ei myös estä autovalmistajia lisäämästä yksilöllisiä tunnuksia autokohtaisesti, jotka vaaditaan päästäkseen moduulin kanssa yhteyteen. Autovalmistajien kehittämät ominaisuudet tietenkin välitetään merkkihuollon käytettäväksi, mutta ei muille ohjelmistojen kehittäjille. Tämä johtaa siihen, että autonmerkkihuolto pääse aina helposti tutkimaan auton kaikkia moduuleita. (Rleale 2009) 6.3 Yhteyden luominen Moduuleihin on yleisesti mahdollista luoda yhteys OBD2-portin kautta. Mahdollisia tapoja yhteyden muodostamista tapoja on monia. Selvästi suosituin on muuttaa tiedonsiirtonopeutta (Baudrate) tai muuttamalla lukijalaitteen tunnistetta (header). Nykyaikaiset lukijalaitteet pystyvät vaihtamaan käytön aikana tiedonsiirtonopeutta tai tunnistetietoja. Yhteyden luominen on mahdotonta, jos ei tiedä autonkohtaista oikeaa tapaa miten moduuleihin yhdistetään. (Elm Electronics Inc. 2010, 35-37) 29 7 ELMOSCAN Opinnäytetyön projekti osuutena oli kehittää ElmoScan ohjelmistoon mahdollisuuden hakea ja yhdistää tietyntyyppisesti esiintyviin moduuleihin. ElmoScan ohjelmisto on ohjelmoitu Delphi:llä. Tässä projektissa käytettiin alkuperäisiä lähdekoodeja mahdollisimman vähän muokaten. Tällä yritetään välttää sekoittamasta ohjelmiston muita toimintoja. Projektissa ohjelmoitiin uusi ElmoScan versio. ElmoScan on täysin suomalainen ohjelmisto. Ohjelmisto on kehitetty autoissa käytetyn OBD2-järjestelmän ympärille. ElmoScanin kosketusnäytölle suunniteltu käyttöliittymä tarjoa monelle innokkaammalle käyttäjälle kiinnostavan ympäristön. 7.1 Historia ElmoScanilla on jo huomattavan pitkä historia, jonka aikana kehitystä on tapahtunut huomattavan paljon ja useita versioita on tullut. Versioita on julkaistu lähes vuosittain. ElmoScan oli historiansa alkuaikoina omalla alueellaan edelläkävijä ja kilpailijoitaan monella tavalla edistyneempi. Hyvinä esimerkkeinä voidaan pitää kiihdytysmittauksia, tiedonkeruuta ja auton tehomittauksen ominaisuuksia. Nykyisin monelta kilpailijalta löytyy vastaavia ominaisuuksia omistaan ohjelmistoistaan. ElmoScan ohjelmiston kehitystyö on aloitettu Porissa ja ohjelmiston omistajuus on historiansa aikana kokenut muutaman eri omistajan vaihdoksen. Nykyisenä kehityksestä ja omistajuudesta vastaa porilainen Softator Oy, joka on tämän opinnäytetyön asiakasyritys. 30 7.2 OBD2-ohjelmistojen nykytilanne Nykytilanteessa ohjelmistojen kehitys alkaa olla sillä tasolla, että ohjelmistoista on todellista hyötyä vaativimmallekin käyttäjälle. OBD2-ohjelmistot ovat päässeet käsiksi jo huomattavaan määrään päätekomentoja ja moduuleita. Tämä on selvästi myös huomattavissa kehityksen kiristymisessä ja isompien ohjelmien kehitystyöstä. Muutama vuosi takaisin oli aivan turha haaveilla yksityiskäytössä kehittyneemmästä ohjelmasta. Kehittyneemmällä ohjelmalla tarkoitetaan ohjelmaa, joka on kehitetty toimimaan usealla automerkillä ja samalla pystyy tarjoamaan tietylle autonmallille kehittyneempiä komentoja. Kehittyneemmät komennot antavat huomattavan määrän enemmän tietoa verrattuna OBD2järjestelmän sisältämiin perinteisiin komentoihin. Kehittyneempiä ohjelmia saattoi olla aikaisemmin tarjolla mutta, yksityishenkilölle hinnat olivat liian kalliit, joten vain isommilla yrityksillä oli mahdollisuus hankkia kehittyneempiä ohjelmia. Tilannetta hankaloittaa markkinoiden hidas kehittyminen. Tällä hetkellä markkinoilta löytyy useita eri ohjelmistoja ja uusia ilmestyy useita vuoden aikana. Eräitä OBD2-ohjelmistoja löytyy taulukosta 2. Taulukko 2. Esimerkkejä OBD2-ohjelmistoista. Ohjelmisto Kehittäjä ScanXL Palmer Performance Engineering Inc. OBDwiz OCTech, LLC CarMM CarMM Digimoto PerformanceScan, LLC 7.3 ElmoScan ohjelmistoon tutustuminen ja työn etenemisaikataulu ElmoScan ohjelmistoon ennakkoon tutustuminen auttoi huomattavasti ohjelmointi opinnäytetyöprojektin edistymistä. Samalla tutustuminen selvensi miten ohjelmiston lähdekoodia oli aikaisemmin rakennettu ja kehitetty. 31 ElmoScanin lähdekoodiin ymmärtämiseen menee huomattava määrä aikaa. ElmoScan ohjelmistossa on jo yli 10 000 riviä lähdekoodia. Lähdekoodi on jäsennelty hyvin omiin osa-alueisiin, jotka helpottavat tulevaisuudessakin ohjelmiston kehittämistä. Ohjelmisto on rakennettu hyväksymään uusia moduuleita, vaikka itse pääohjelman lähdekoodia ei muokattaisi. Ennen varsinaista opinnäytetyön aloittamista tuli tutustua laajalti OBD2järjestelmän toimintaan ja käyttäytymiseen. OBD2-järjestelmän tutustuminen aloitettiin hyvissä ajoin ennen varsinaisen työn tekemistä. Tutkimustyöhön kului yllättävän paljon aikaa, koska laadukkaiden lähteiden etsimiseen ja tulkintaan kului huomattavasti aikaa. Laajan selvitystyön jälkeen oli välttämätöntä tutustua tässä opinnäytetyössä käsiteltävään ohjelmistoon (ElmoScan). ElmoScan on toteutettu Delphi-ohjelmointikielellä, jonka ymmärtäminen ja tulkitseminen vaativat asiaan paneutumista ja sisäistämistä. Ohjelmointikieleen helpotti ElmoScan lähdekoodien runsas läpikäynti ja lähdekoodissa olevat kommentoinnit. Delphi-ohjelmointikieli on tyypillinen Pascal-kieleen perustuva ohjelmointikieli jolloin sitä on helppo tulkita ja ymmärtää. Ymmärtämistä edes auttaa lähdekoodin toiminnan ja syntaksien tarkoituksen täydellisesti. Opinnäytetyön vaativampi osuus oli tuoda nykyiseen ElmoScan- ohjelmistoversioon tutkimustyön aikana selvitetyt menetelmät ja halutut toiminnot. Esimerkkinä näistä toiminnoista löytyy luvusta 6. Uusien toimintojen käyttöönottamiseen vaaditaan huomattava määrä lähdekoodin kirjoittamista ja olemassa olevan koodiin sovittamista. Kehitetyt lähdekoodit tulee toimia vanhan ElmoScanin-ohjelmiston lähdekoodin kanssa yhteen ongelmitta. Uuden lähdekoodin kirjoittamiseen kuluu huomattavasti vähemmän aikaa, kuin sen toiminnallisuuden selvittämiseen. Tutkimustyön ja ohjelmoinnin lisäksi tulee tehdä kaiken kattava testaustyö Elmoscan-ohjelmiston toimivuudesta. Uusien ominaisuuksien ja toimintojen käyttäminen ei saa haitata vanhojen ominaisuuden toimivuutta. Uusien ominaisuuksien integroiminen nykyisiin toimintoihin voi johtaa ongelmallisiin tilanteisiin. Näiden ongelmien selvittäminen ja korjaaminen saattaa vaatia uusien 32 ratkaisujen kehittämistä. Uusien ominaisuuksien toiminta tulee perusteellisesti testata, koska se paljastaa ohjelmistossa olevat mahdolliset ongelmakohdat. Tämä testaus laajennetaan koko ElmoScan-ohjelmistoon, jolloin saadaan selvitettyä mahdolliset ongelmakohdat ja niiden nopealla korjaamisella pystytään vaikuttamaan ennen ohjelmiston uuden version julkaisemista. 7.4 Tavoitteet Opinnäytetyöllä oli alusta asti selvät päätavoitteet. Tavoitteena oli selvittää mahdollisia tapoja luoda yhteys tietyllä tavalla esiintyviin auton OBD2moduuleihin. Tavoitteessa huomioitiin luvun 6 sisältö, josta käy ilmi, ettei moduuleihin yhdistämiseen ole yhteistä tapaa. Kattavan selvitystyön jälkeen oli tarkoitus saavuttaa toinen päätavoitteista, eli ElmoScan projektiin liittyvä ohjelmointi. Ohjelmointityön tavoitteena oli kehittää uusi versio nykyiseen ElmoScan ohjelmistoon. Uuden version tarkoituksena on mahdollistaa tietyntyyppisten moduulien hakemisen. Samalla mahdollistamaan tapa, jolla luodaan yhteys löydettyihin moduuleihin. Tapauksissa jossa useampia moduuleita ei löydy, niin sen ominaisuutta ei saa hyödyntää jolloin sen toimiminen tulee olla estettynä. 7.5 Moduulien hakeminen Moduulien hakemisesta ohjelmointiin täysin oma proseduurinsa EcuSearch. Proseduurin ansiosta moduulien haku helpottuu jatkossa huomattavasti. Proseduurista on hyötyä, jos moduuleita pitää hakea uudestaan tai mahdollisesti päivittää listauksen haetuista moduuleista. Tämän opinnäytetyön liitteenä 1 on moduulien hakemisesta toteutetun proseduurin lähdekoodi. Lähdekoodi havainnollistaa muutettavia asetuksia ja vaadittavia toimenpiteitä eri protokollien välillä. 33 7.6 Selvitystyön aikaiset ongelmat Projektin aikaisien ongelmatilanteiden selvittämiseen auttoi huolellinen selvitystyö ja ajan kanssa asioiden huolellinen tutkiminen. Tarkempien tutkimuksien jälkeen alkoivat ongelmatilanteet lähes aina selvitä ja mahdollisten ratkaisujen löytäminen alkoi kehittyä. Tässä työssä esitellyn selvitystyön aikana kohdattiin kaksi merkittävää ja isoa ongelmaa. Selvitystyön haasteellisimmaksi ongelmaksi ilmeni luotettavan tiedon hankinta. Hyvät lähteet olivat lukijalaitteiden piirisarjojen valmistajien yleiset dokumentaatiot. Dokumentaatioissa oli selkokielisesti selitetty lukijalaitteiden toiminnallisuus ja ohjeistettu komentojen toimintaa. Toisena erityisen haasteellisena ongelmana oli terminaali ohjelmiston, eli HyperTerminaalin liian hidas tiedon vastaanottonopeus. Liian hidas tiedon vastaanottonopeus kadottaa osan vastauksessa olleista tärkeistä riveistä. Ongelma ratkaistiin tekemällä terminaalityyppinen apuohjelma, joka osaa ottaa tarpeeksi nopeasti tietoa vastaan, eikä kadota yhtään riviä välistä. 7.7 Ohjelmoinnin aikaisia ongelmatilanteita Varsinaisen ohjelmoinnin aikana ilmeni useita erityyppisiä ongelmia. Lähes jokaiseen ongelmaan löytyi ratkaisu tutkimalla suoritettua lähdekoodia. Käytetyn ohjelmiston breakpoint-toiminnon avulla oli helppo seurata mihin ohjelma todella pysähtyi. Projektin ohjelmointi tapahtui Delphi-ohjelmointikielellä. Delphin tarjoamat työkalut toimivat hyvin lähdekoodin seuraamisessa ja mahdollistivat suorituksen aikaisen lähdekoodin seuraamisen. Ohjelma osaa kertoa, myös mihin suorittaminen pysähtyi ja samalla antaa mahdollisen virheenkuvauksen. Virheenkuvauksen tulkitsemisen jälkeen tiedossa oli virheen todellinen aiheuttaja tai mistä virhe saattaisi johtua. 34 ElmoScanin lähdekoodin suorittamisen aikaista seuraamista hankaloittaa ohjelmiston lähdekoodin tiedostorakenteessa olevat useat tiedostot. Ohjelmisto on rakennettu modulaariseksi, joten siihen saa helposti lisättyä uusia ominaisuuksia. Tämäntyyppisellä tiedostorakenteella on tietenkin huomattava määrä hyötyä. Tämän ohjelmointiprojektin alussa kun saatiin ensimmäiset kokeilut suoritettua tuli heti vastaan ongelma, joka ilmeni vain tietyissä tilanteissa. Alkuperäisessä ElmoScan versiossa poistettiin automaattisesti tietoa tapauksissa, joissa ilmeni turhaa tietoa. Turha tieto ilmeni OBD2-järjestelmästä tulevasta ”SEARCHING”-tekstistä. Kaikki vastaanotetut tiedot lisättiin taulukkoon ja taulukosta otettiin talteen vain korkein luku eli aina viimeinen osio. Alkuperäinen tapa tietenkin toimii, mutta jos tarvittiin ainoastaan yhden moduulin vastausta. Alkuperäinen menetelmä ei toiminut, jos moduuleita oli enemmän kuin yksi moduuli. Tällöin taulukko otti vain korkeimman arvon eli viimeisen moduulin tiedot ja hävitti muiden moduulien tiedot automaattisesti. if (Pos('SEARCHING',s_ResponseFull) > 0) then begin b_isHexData := True; Log('RemovingSearchText'); HajoitaRivi(ar_Rows,s_ResponseFull,c_DELIMITER); s_ResponseFull := ''; for i := 1 to High(ar_Rows) do begin //for lausekkeella korjattiin ongelma tilanteet s_ResponseFull := s_Responsefull + ar_Rows[i] + c_DELIMITER; end; for i_Counter := 1 to Length(s_ResponseFull) do begin if (b_isHexData) then b_isHexData := isHexDigit(s_ResponseFull[i_Counter]); end; end; Koodi 1. Searching-tekstin poistaminen ja kaikkien moduulien tietojen lisääminen. Koodin 1 mukaisen korjauksen kehittäminen oli alkuperäisen mallin mukaan helppo korjata. Eli tehdä samantyyppisesti toimiva taulukko, mutta talteen otettaan muitakin arvoja. Taulukkoon ei lisätty ensimmäistä arvoa, vaan kaikki muut arvot lisättiin taulukkoon. Tällöin ensimmäinen arvo eli ”SEARCHING”-teksti saatiin pois ja samalla saatiin talteen kaikkien muidenkin moduulien tiedot. 35 Ohjelmointityön edistyessä ilmeni uusia ongelmia, jotka pysäyttivät ohjelman suorittamisen täydellisesti. Näitä ilmeni tilanteissa, jossa käyttäjä pääsi valitsemaan moduulin mihin haluaa yhdistää ja tämän jälkeä lukea vikakoodeja. Ongelmaksi tuli jo olemassa olevan koodin aiheuttamat tiukat rajoitteet. Koodissa 2 päätekomennolla 0101 pyydetään tietoa. Muuttujaan (s_Temp) kerätään aina kuuden merkin merkkijono. Vanhalla koodilla tuli tietoa kerättäessä muuttujaa tallennettiin 'ERR_NO', joka lopetti ohjelmiston suorittamisen. Korjauksena toimintoa muutettiin vaihtamaan muuttujan sisällöksi ”000000”, Tämä korjasi tilanteen jossa 0101 ei saa oikean tyyppistä vastausta lainkaan. s_Temp := ''; if (s_Data[i_i] = c_DELIMITER) then inc(i_i); for i_j := 1 to 6 do begin s_Temp := s_Temp + s_Data[i_i]; Inc(i_i); end; if s_Temp = 'ERR_NO' then S_Temp := '000000'; //käytetty korjaus Koodi 2. Vääräntyyppinen vastaus. Ohjelmointityön loppuvaiheessa suoritetussa testauksessa ja toimivuus tarkistuksessa tuli vastaan ongelmatilanne, joka vaati uuden toimivan ratkaisun kehittämiseen. Käyttäjä ei saa valita moduulia kaikissa suoritettavissa toiminnoissa, kuten katsastusraporttia tehtäessä. Jos estoa moduulin valintaan ei olisi, niin moduulin yhdistämisellä saatettaisiin pystyä vaikuttamaa katsastusraporttiin tulokseen. 7.8 Saavutetut hyödyt Projektilla saavutetut hyödyt ovat ohjelmiston kannalta erittäin tärkeitä ja edistyksellisiä. Ohjelmiston uudella versiolla tullaan jatkamaan ElmoScan ohjelmiston kannalta tärkeää kehitystyötä, joka takaa ohjelmiston tulevaisuuden jatkumisen. Ohjelmiston uuden version julkaiseminen ja käyttöönottaminen on ollut projektin yhtenä päätavoitteena. Uuden version päätavoitteena on 36 tuoda lisäarvoa ohjelmalle ja samalla kehittää sitä vastamaan paremmin nykyisten kilpailijoiden tuotteita. Uuden ElmoScan version myötä markkinoille saadaan kokonaan isompi uudistus, joka houkuttelee asiakkaita lisää tai mahdollisesti vanhoja asiakkaita päivittämään uudempaan julkaisuun. Uuden version on tietenkin, myös tarkoitus parantaa ohjelmiston luotettavuutta ja samalla laajentaa sitä. 7.9 Tulevaisuuden näkymät ElmoScan-ohjelmiston tulevaisuuden näkymät, ovat edelleen hyvin positiiviset, koska Suomesta tällä hetkellä kilpailijoiden tuotteita ei löydy. Vahvuutena on tarjota täysin suomalaisten kehittämä tuote, joka tarjoaa kehittyvän ohjelmiston käyttäjilleen. Kaikki käyttäjät eivät ole tottuneet käyttämään tietokoneita tai englanninkielisiä ohjelmia. Muun muassa suomenkielisyyden vuoksi ElmoScan-ohjelmisto on todella hyvässä markkina-asemassa. 37 8 POHDINTA Tämän opinnäytetyöprojektin kokonaisuuden hahmottamiseen ja toteuttamiseen kuluva aika tuntui kasvavan huomattavan pitkäksi. Varsinkin ympäristössä, jossa kehitystyötä pitää tapahtua samalla, kun yritti viimeistellä opinnäytetyötä. Tietenkin kehitystyö opettaa samalla lisää OBD2-järjestelmästä ja samalla saa lisää ymmärrystä ohjelmistotuotannosta. Pelkästään OBD2järjestelmään tutustumiseen tuntui menevän erittäin paljon aikaa mitä voisi odottaa. Hyvä ymmärtäminen OBD2-järjestelmän toiminnallisuudesta ja käytännöstä tuo huomattavan avun tämän opinnäytetyön kirjoittamiseen ja ElmoScan-ohjelmiston kehitystyöhön. Haasteellisuutta aiheuttaa selvästi heikosti käytössä oleva informaatio tai sen lähes mahdoton tulkinta. Luotettavat ja laajat lähteet, jotka sisältävät tarkempaa informaatiota OBD2-järjestelmän toiminnasta on vaikeasti saatavilla tai mahdotonta saada käyttöönsä järkevään hintaan. OBD2-järjestelmästä varmasti pystyisi keräämään lähes loputtomasti tietoa, jos olisi kaikki lähteet vapaasti saatavilla kaikille kiinnostuneille. Ohjelmointiprojektin tekemisen haasteellisuus on tietenkin aina mielenkiintoa nostava tekijä minulle, koska olen hyvin kiinnostunut ohjelmistotuotannosta. Ongelmia tuli tässä projektissa dokumentaation puutteesta koska yksinkertaistakin toiminnallisuutta joutui pelkän lähdekoodin avulla selvittämään pitkään. Lähdekoodia on helppoa tulkita, mutta monimutkaisuutta ei aina välttämättä heti oivalla. Tietenkin isomman lähdekoodi kokonaisuuden toimivuuden ymmärtäminen tuo edistymisen tunnetta ja varsinkin kun samalla saa yhdistettyä siihen oma kirjoittamaa lähdekoodia. Lopullisen lähdekoodin viimeistely ja toimivuuden testaaminen tuo tullessaan mukavan lisän projektin loppuun viemisessä varsinkin kun kyseessä on kaupallinen tuote. 38 LÄHTEET AKE 2007. Ottomoottorikäyttöisten ajoneuvojen pakokaasupäästöjen tarkastus. Viitattu 18.10.2010. Saatavissa: http://www.ake.fi/NR/rdonlyres/D9364707-6D5B-4477-A43B186DCCC91403/0/11912082007.pdf. California Air Resources Board 2009. Transitioning Away from Smog Check Tailpipe Emission. Viitattu 27.9.2010. Saatavissa: http://www.arb.ca.gov/msprog/smogcheck/march09/transitioning_to_obd_onl y_im.pdf. Elm Electronics Inc. 2010. ELM 327 - OBD to RS232 Interpreter. Viitattu 22.10.2010. Saatavissa: http://www.elmelectronics.com/DSheets/ELM327DSF.pdf. Ford Motor Company 2007. 2001 MY OBD System Operation Summary for Gasoline Engines. Müller, Gerhard 2005. Diagnostiikkaa EOBD-liitännällä. Prosessori 9, 42-45. OBD Automotive Oy 2007. EOBD, OBD2 ja valmistajakohtaiset protokollat. Viitattu 22.9.2010. Saatavissa: http://www.obd.fi/index.php?option= com_content&task=view&id=32&Itemid=2. Omitec Limited. EOBD - A detailed history. Viitattu 12.10.2010. Saatavissa: http://www.omitec.com/en/support/technology-briefs/detailed-history-ofeobd/. Rleale. ‘OBDII and Enhanced Diagnostics Again’. canbushack: Hack Your Car. 13.12.2009. Viitattu 14.10.2010. Saatavissa: http://www.canbushack.com/blog/index.php/2009/12/13/obdii-and-enhanceddiagnostics-again. 39 SAE International 1997. On-Board Diagnostics for Light and Medium Duty Vehicles Standards Manual HS-3000. Pennsylvania USA. Seyfert, Karl 2007. OBD2 generic pid diagnosis. Viitattu 2.10.2010. Saatavissa: http://findarticles.com/p/articles/mi_qa3828/is_200709/ ai_n21033507 . LIITELUETTELO LIITE 1 EcuSearch Proseduuri LIITE 1 procedure Tfrm_Menu.EcuSearch; //Header päälle & Ecu talteen var s_ResponseFull, s_Protocol: String; i,i_EcuPos,i_EcuSync,I_EcuCopy,I_EcuTunniste: Integer; begin Log('Header on'); cport_main.WriteStr('ath1' + #13); //Headerit ReceiveData(cport_main,s_ResponseFull,'ath1'); cport_main.WriteStr('ATDPN' + #13); //Protokolla ReceiveData(cport_main,s_ResponseFull,'0100'); s_Protocol := s_ResponseFull; cport_main.WriteStr('0100' + #13); //Tiedot ReceiveData(cport_main,s_ResponseFull,'0100'); i := 0; SetLength(ar_ecus, i+1); if (s_Protocol = 'A6') or (s_Protocol = '6') or (s_Protocol= 'A8') or (s_Protocol = '8') then begin //11BIT i_EcuPos := 0; i_EcuSync :=0; i_EcuCopy :=3; i_EcuTunniste :=1; end; if (s_Protocol = 'A1') or (s_Protocol = '1') or (s_Protocol = 'A2') or (s_Protocol = '2') or (s_Protocol = 'A3') or (s_Protocol = '3') OR (s_Protocol = 'A5') OR (s_Protocol = '5') then begin //PWM,VPW,ISO9141-2,ISO,14230-4 i_EcuPos := 5; i_EcuSync := 3; i_EcuCopy := 2; i_EcuTunniste :=2; end; if (s_Protocol = 'A7') or (s_Protocol = '7') or(s_Protocol = 'A9') or (s_Protocol = '9') then begin // 29BIT ISO15765-4 i_EcuPos := 7; i_EcuSync := 5; i_EcuCopy := 2; i_EcuTunniste :=3; end; ar_ecus[i] := copy(s_Responsefull, i_EcuPos, i_EcuCopy); if AnsiPos(c_Delimiter,s_ResponseFull) > 0 then begin //jos löytyy ecuja niin käsitellään. Log('EcuHeaderResponse' + s_Responsefull); while AnsiPos(c_Delimiter,s_ResponseFull) > 0 do begin i := i+1; SetLength(ar_ecus, i+1); i_EcuSync := AnsiPos(c_Delimiter,s_ResponseFull); delete(s_Responsefull, 1, i_EcuSync); //poistetaan lisätyt ar_ecus[i] := copy(s_Responsefull, i_EcuPos, i_EcuCopy); //ecut lisätään arrayhyn ennen poistoa end; for i :=0 to High(ar_ecus) do begin ar_ecus[i]:= IntToStr(i_EcuTunniste) + ar_ecus[i]; end; Log('EcusResponsed' + ' Ecu1: ' + ar_ecus[0]+ ' Ecu2: ' + ar_ecus[1]+ ' Ecu3: ' + ar_ecus[2]); end; //Otetaan header pois päältä ReadTimeoutReset; Log('Header is on, disabling'); cport_main.WriteStr('ath0' + #13); ReceiveData(cport_main,s_ResponseFull,'ath0'); end;
© Copyright 2024