CAN alapú járműves adatokat megjelenítő szoftver fejlesztése Beszámoló Dokumentum szám: D01-018-08-05 Dokumentum dátum: 2014. január 30. Szerző(k): Jánky Szabolcs (szabolcs.janky@inventure.hu) http://
Tartalomjegyzék 1 A FELADAT BEMUTATÁSA... 3 1.1 FELADAT... 3 1.2 SPECIFIKÁCIÓ... 3 2 A PROGRAM FEJLESZTÉSE... 4 2.1 BEVEZETÉS... 4 2.2 MEGJELENÍTŐ MODUL - WECANFORM... 4 2.2.1 Események... 4 2.2.2 Delegate-k... 4 2.2.3 Metódusok... 4 2.3 ADATKEZELŐ - DATAMANAGER... 5 2.3.1 Események... 5 2.3.2 Metódusok... 5 3 A PROGRAM HASZNÁLATA... 7 3.1 A PROGRAM TELEPÍTÉSE... 7 3.2 AZ FMS VIEWER INDÍTÁSA ÉS LEÁLLÍTÁSA... 7 3.3 MEGJELENÍTÉSI MÓDOK... 8 3.3.1 Műszerfal nézet (dash display)... 8 3.3.2 FMS adatok (FMS signals)... 9 3.3.3 Esemény napló (Event log)... 10 3.3.4 Grafikon megjelenítése (Graph display)... 11 jankysz_can_monitor_besz_2014 2/11
1 A feladat bemutatása 1.1 Feladat CAN alapú, járműves adatokat megjelentő szoftver fejlesztése A kutató feladata egy olyan CAN alapú, járműves adatokat megjelenítő szoftver tervezése és kísérleti fejlesztése, amely megfelel a mai kor kihívásainak, és egy hozzá nem értő ember számára is releváns információt nyújt a jármű aktuális állapotáról. A tervezett szoftver legyen egyszerűen futtatható PC-s környezetben, és legyen képes az Inventure Kft. által forgalmazott FMS Gateway eszközhöz kapcsolódni és az eszköz által küldött adatokat megjeleníteni. 1.2 Specifikáció Feladat egy olyan program elkészítése, amely az Inventure WeCAN-USB eszközével csatlakozik a jármű FMS buszára, vagy az Inventure FMS Gateway kimeneti CAN buszára. A támogatott FMS szabvány az FMS Standard 1.0. Az elérhető adatokat képes megjeleníteni az alábbi formában: - Áttekintő nézet (műszerfal) - Részletes adatok megjelenítése - Események megjelenítése - Grafikon ábrázolási mód jankysz_can_monitor_besz_2014 3/11
2 A program fejlesztése 2.1 Bevezetés A program 2 fő részből áll: - egy megjelenítő modulból WeCANForm - valamint egy adatkezelőből DataManager A WeCanForm modul feladata interface biztosítása a felhasználónak, ahol lehetőség nyílik a program vezérlésére, beállítására. A DataManager feladata a can busz inicializálása, olvasása, annak lezárása, valamint az onnan olvasott adatok feldolgozása, WeCanForm vezérlése. A két objektum események segítségével valamint pointerekkel kommunikálnak, szinkronizálnak egymással. Egymás eseményeinek összerendelését a program.cs tartalmazza. 2.2 Megjelenítő modul - WeCANForm 2.2.1 Események public delegate void startstoprecvthreaddelegate(); public event startstoprecvthreaddelegate startstoprecvthreadevent; Ezzel a delegate - event párossal lehet elindítani az olvasó szálat a datamanager-ben. Hozzárendelt metódus: DataManager.startStopThread() 2.2.2 Delegate-k delegate void ShowEventCallback(data_struct dstruct); Ez a delegate végzi az olvasó szál által beállítani kívánt objektum újraírását. delegate void SetTextCallback(string message); Ez a delegate végzi az olvasó szál által írni kívánt journal text újraírását. 2.2.3 Metódusok public void addmessage(string message) message stringet hozzáadja journal text végéhez. public void showdata(data_struct dstruct) dstruct alapján beállítja az adott megjelenítő objektumot. public void setstartstopbuttontext(string text) Beállítja a start/stop nyomógomb szövegét public void getchipconfig( ref can_chip_struct canchipdata) A paraméterben szereplő can_chip_struct-ot beállítja a setup fülnek megfelelően. private void startstopbutton_click(object sender, EventArgs e) jankysz_can_monitor_besz_2014 4/11
start/stop nyomógomb click eseményekor lefutó függvény. Feladata elindítani, illetve leállítani a datamanager olvasó programszálát. private void closebuttonclick(object sender, EventArgs e) close nyomógomb click eseményekor lefutó függvény. Feladata a form bezárása, és így a program leállítása is. 2.3 Adatkezelő - DataManager 2.3.1 Események public delegate void ShowDataEvent(data_struct dstruct); public event ShowDataEvent ShowData; Ennek az eseménynek a segítségével képes az olvasó szál tudatni a formmal, hogy megváltozott a struktúrában szereplő objektum értéke. Ennek hatására változik meg az objektum értéke. Hozzárendelt metódus: WeCANForm.showData(data_struct) public delegate void setssbtext(string text); public event setssbtext setstartstopbuttontext; Ezzel az eseménnyel állítja be az olvasó szál a formon található start/stop nyomógomb szövegét. Hozzárendelt metódus:wecanform.setstartstoptext(string) public delegate void ShowMessageEvent(string message); public event ShowMessageEvent ShowMessage; Ezzel az eseménnyel ad hozzá az olvasó szál egy új bejegyzést a journal texthez. Hozzárendelt metódus: WeCANForm.addMessage(string) public delegate void getcanchipevent(ref can_chip_struct canchip); public event getcanchipevent getcanchip; Az olvasó szál ennek segítségével kérdezi le a canchip beállításához szükséges adatokat a fromtól. Hozzárendelt metódus: WeCANForm.getChipConfig(ref can_chip_struct) 2.3.2 Metódusok private void recvthreadprocess() Ez a függvény a program lelke. Feladata a busz vonal olvasása, a kiolvasott adatok értelmezése, valamint a form felé a változások jelzése. A program tesztelése céljából jelenleg dll hiba meglétekor nem szakad meg a függvény futása, helyette fals üzeneteket generál, így tesztelve a program értelmező részét. A fennakadások elkerülése végett ez a függvény külön programszálon fut. public ulong getbitdata(byte[] data, int bitpos, int bitlength) Ennek segítségével nyeri ki a program a nyers adatfolyamból a neki szükséges adatbiteket. Paraméterek: jankysz_can_monitor_besz_2014 5/11
data: értelmezendő adatfolyam, 8 byte hosszú bitpos: kinyerni kívánt adat bithelye a data-ban, jobb oldalról indulva. Értéktartománya: 0-63 bitlength: kinyerni kívánt adat bithossza. Értéktartománya: 1-64 public void processdata() Ez a függvény akkor fut le, amikor az olvasó szál módosítja a fogadó struktúrát, azaz új adatot olvasott ki. Ez válogatja szét a bejövő adatokat, valamint ez végzi a form vezérlését is. public bool isrunthread() Visszatérési értéke igaz, ha a datamanager olvasó szála fut. public void startstopthread() Ez a függvény indítja el, illetve állítja le az olvasó szálat. public unsafe DataManager(bool* programrunning) Ez az osztály konstruktora. Paramétere egy bool típusra mutató pointer. Ha ennek értéke false értékre változik, a szál futása be fog fejeződni a legközelebbi ciklus végénél. jankysz_can_monitor_besz_2014 6/11
3 A program használata Az FMS Viewer PC-s alkalmazás az Inventure FMS Gateway kimenetén küldött CAN adatai tekinthetőek meg szemléletes formában. Az alkalmazás segítségével a Gateway megfelelő konfigurációja, működése egyszerűen ellenőrizhető. 3.1 A program telepítése Telepítse az FMS Viewer-t a Setup.exe segítségével. A telepítő először telepíti a programot, majd az Inventure WeCAN-USB meghajtó programját. Megjegyzés: Amennyiben a meghajtó program telepítése során hiba lépne fel, akkor navigáljon a [Program Files]\Inventure Tools\FMS Viewer\WeCAN Driver\ mappába (illetve, ahova előzőleg a programot telepítette), majd ott indítsa el CDM20824_Setup.exe telepítőt. 3.2 Az FMS Viewer indítása és leállítása 1. Csatlakoztassa a WeCAN-USB-t a számítógép egy szabad USB portjához 2. A WeCAN-USB-t a mellékelt kábel segítségével 3. A programot az asztalon található parancsikon segítségével indíthatja (FMS Viewer) 4. Nyomja meg a jobb sarokban található Start gombot 5. A program akkor működik megfelelően, ha a bal sarokban található folyamatsáv melletti felirat No communication Received packets per sec.: X üzenetre változik 6. Az adatok fogadása a Stop gomb segítségével megállítható 7. Végül a programból a Close gomb megnyomásával léphetünk ki jankysz_can_monitor_besz_2014 7/11
3.3 Megjelenítési módok 3.3.1 Műszerfal nézet (dash display) Ez a nézet az alapvető információk grafikus megjelenítésére szolgál, mint a - sebesség (km/h) - megtett út (km) - fordulatszám (rpm) - motor hömérséklet ( C) - tankszint (%) - gázpedál pozíció (%) - fékpedál állapot (be/ki) - kuplung pedál állapot (be/ki) - az összes felhasznált üzemanyag (L) jankysz_can_monitor_besz_2014 8/11
3.3.2 FMS adatok (FMS signals) Ebben a nézetben az összes bejövő FMS adatot tekinthetjük meg szöveges formában. jankysz_can_monitor_besz_2014 9/11
3.3.3 Esemény napló (Event log) Az eseménynapló segítségével a WeCAN-USB és a CAN buszon történő eseményekről tájékozódhatunk. Rendellenes működés esetén a tartalmából informálódhatunk a hiba okáról. jankysz_can_monitor_besz_2014 10/11
3.3.4 Grafikon megjelenítése (Graph display) A grafikon segítségével különböző adatok változását tekinthetjük meg 10 másodperc, 1 perc és 10 perc részletességgel. A következő adatok elérhetőek grafikonon megjelenítve: - sebesség a kerék alapján - tankszint - motor fordulatszáma - sebesség a tachográf alapján - motor hőmérséklete A grafikon élő adatgyűjtését a graph is live jelölőnégyzet segítségével szabályozhatjuk. jankysz_can_monitor_besz_2014 11/11