Egy vasúti járműben használható blokkolásgátló algoritmus és annak futtatását lehetővé tevő szimulátor alkalmazás kifejlesztése, paraméter optimalizálási lehetőséggel
Készítette:
Varga Attila
Egy vasúti járműben használható blokkolásgátló algoritmus kifejlesztése
1
Bevezetés ............................................................................................................ 6
2
Feladatspecifikáció .............................................................................................. 8 2.1
A dolgozat témája......................................................................................... 8
2.2
A dolgozat célja .......................................................................................... 11
2.3
A dokumentum hatóköre............................................................................. 12
2.4
A rendszer helye és szerepe ...................................................................... 12
2.5
Érdekeltek, felhasználók............................................................................. 13
2.6
A rendszer humán és technikai környezete ................................................ 13
2.7
Elvárások, követelmények .......................................................................... 13
2.8
Megoldandó problémák .............................................................................. 14
2.9
Rendszerjellemzők ..................................................................................... 14
2.10
Feltételezések és összefüggések............................................................... 15
2.10.1
3
A fékezési folyamat, csúszás, súrlódási együttható ............................ 15
2.11
Licenszek.................................................................................................... 17
2.12
Internet-címek............................................................................................. 18
2.13
A rendszer tulajdonságai ............................................................................ 19
2.14
Korlátozó tényezők ..................................................................................... 19
2.14.1
Blokkolásgátló ..................................................................................... 19
2.14.2
Szimulációs környezet......................................................................... 20
2.15
Prioritások................................................................................................... 20
2.16
A rendszer áttekintése ................................................................................ 20
Blokkolásgátló vezérlés fejlesztése ................................................................... 26 3.1
Fejlesztői környezet kiválasztása ............................................................... 26
3.2
A fejlesztési folyamat elemei ...................................................................... 26
3.3
A fejlesztés lépesei..................................................................................... 27
3.4
Blokkolásgátló fejlesztése........................................................................... 28
3.5
A blokkolásgátló algoritmus elvi működése ................................................ 29
3.6
A blokkolásgátló szoftver felépítése ........................................................... 32
3.7
Öröklődési hierarchia.................................................................................. 34
3.8
A linkHolder technika .................................................................................. 35
3.9
Bemenetek beolvasása .............................................................................. 38
3.10
A referenciasebesség kiszámítása ............................................................. 39 2
Egy vasúti járműben használható blokkolásgátló algoritmus kifejlesztése
3.10.1
4
A referenciasebesség-számítást megvalósító osztály ......................... 42
3.11
A referenciasebesség kiszámítása üzemmód-váltás esetén ...................... 43
3.12
A referenciasebesség korrigálása .............................................................. 46
3.13
Szabályzási parancsok meghatározása ..................................................... 48
3.14
A kimenetek vezérlése................................................................................ 51
3.15
Továbbfejlesztési lehetőségek.................................................................... 55
Szimulációs környezet fejlesztése ..................................................................... 59 4.1
Fejlesztői környezet kiválasztása ............................................................... 59
4.2
A szimulációs környezet elvi felépítése ...................................................... 59
4.3
A fejlesztési folyamat elemei ...................................................................... 61
4.4
A fejlesztés lépései..................................................................................... 62
4.5
Használati esetek ....................................................................................... 63
4.6
Felhasználói felület..................................................................................... 64
4.7
A rendszer felépítése.................................................................................. 68
4.8
A szimulátort megvalósító osztályok........................................................... 69
4.9
Adatátadás a szimulátor és a vezérelt egységek között ............................. 72
4.9.1 4.10
Adatátadási protokoll ........................................................................... 73
A vezérlési folyamat ................................................................................... 78
4.10.1
Blokkolásgátló indítása........................................................................ 79
4.10.2
Járműmodell indítása .......................................................................... 80
4.11
Paraméter-optimalizálás ............................................................................. 82
4.11.1
Adatok áramlása az ABS és a szkript modul között ............................ 86
4.11.2
Interfész a szimulátor felé.................................................................... 88
4.11.3
Szkript forráskód szerkesztő ............................................................... 91
5
HIL szimuláció ................................................................................................... 94
6
Összegzés ......................................................................................................... 99
7
6.1
Blokkolásgátló ............................................................................................ 99
6.2
Szimulátor................................................................................................. 100
Függelék .......................................................................................................... 102 7.1
A szimulátor-rendszer részletes felépítése ............................................... 102
7.2
A járműmodell felépítése .......................................................................... 102
7.3
DLL-ek interface leírása............................................................................ 104
7.3.1
Blokkolásgátló ................................................................................... 104 3
Egy vasúti járműben használható blokkolásgátló algoritmus kifejlesztése
7.3.2
Jármű ................................................................................................ 105
7.4
Compiler Front-end................................................................................... 105
7.5
Futófelület sérülések ABS nélkül .............................................................. 114
7.6
A dolgozat virtuális gépen......................................................................... 116
7.7
Felhasznált komponensek ........................................................................ 116
8
Fogalomszótár ................................................................................................. 118
9
Ábrajegyzék ..................................................................................................... 120
10
Irodalomjegyzék ........................................................................................... 123
4
Egy vasúti járműben használható blokkolásgátló algoritmus kifejlesztése
A hasonló esetek megelőzésére
5
Egy vasúti járműben használható blokkolásgátló algoritmus kifejlesztése
1 Bevezetés A blokkolásgátlás, mint funkció évek óta igen ismert - már a nagyközönség előtt is viszont kevéssé ismert maga a megvalósítás, a megoldandó problémák és az alkalmazott megoldások halmaza. Ezért a dolgozat ennek a problémakörnek egy lehetséges megoldását tűzte ki célul.
Részlet egy internetes keresőbe írt "blokkolásgátló" címszó eredményéről: Blokkolásgátló: alkalmazásának célja, hogy fékezéskor megakadályozza a kerekek blokkolását, mivel ha ez bekövetkezik, kormányozhatatlanná válik a jármű, illetve elveszti stabilitását. Ennek az az oka, hogy amikor a kerék nem gördül, akkor megszűnik az oldalvezető erő is. Az elektronikus blokkolásgátló rendszerek a kerekekre szerelt jeladók adatai álapján következtetnek a blokkolásra. Ha ez megtörténik, elektromágneses szelepek csökkentik, illetve korlátozzák az adott kerékhez jutó féknyomást, úgy, hogy végig megmaradjon a gördülés. Vagy: Az ABS fékezéskor megakadályozza az egyes kerekek blokkolását, így optimális fékút érhető el, biztosított az oldalvezetés... A blokkolásgátló a vasúti technikában már a '30-as években megjelent, bár a fejlesztést más indokok tették szükségessé.
Az idézett mondatok természetesen teljesen helytállóak, csak éppen nem mondanak semmit egy ilyen egység működési elveiről, belső felépítéséről. Arra a tényre, hogy csökkenteni kell egy jármű fékerejét blokkoló kerekek esetén, valószínűleg mindenki hamar rájön, ennek a mikéntje viszont már egyáltalán nem triviálisan egyszerű (sőt, ahogy mondani szokás, az ördög - itt is - a részletekben rejlik). Mennyivel csökkenteni ? Milyen módon ? Mennyi a jármű aktuális sebessége ? (Bár ez utóbbi kérdés egyszerűen megválaszolhatónak tűnik, de mint látni fogjuk, nem az) Egyáltalán miért kell törődnie egy blokkolásgátlónak a járműsebességgel ? Milyen részekből és hogyan épül fel egy olyan program amelyik képes ilyen szabályzásra ?
Ezeknek a kérdéseknek egyfajta megválaszolására született ez a dolgozat, tudva azt, hogy természetesen többfajta válasz is lehetséges. Egy másik, ok, hogyha valaki meg akarja ismerni a járműiparban felhasznált elektronikus megoldásokat, akkor a blokkolásgátló rendszer az "alap". Azt itt megismert tudásra épülnek az utóbbi évek újabb fejlesztései, mint például az EBS (elektronikus fékrendszer) vagy az ESP (elektronikus stabilizáló program). 6
Egy vasúti járműben használható blokkolásgátló algoritmus kifejlesztése
Annak a ténynek, hogy ez a téma került feldolgozásra, több oka van. Először is több
évi,
járműipari
vállalatoknál
szerzett
gyakorlat
érdeklődővé
tett
a
számítástechnika ezen ága iránt, másrészt (mivel PC-s programok tervezése és fejlesztése is feladatom volt) ez a téma jó lehetőséget nyújt mind beágyazott, mind személyi számítógépen futó kevert programozási nyelvű feladat megoldására és bemutatására.
A téma fő jellemzői tehát, hogy a.) szoftvert mutat be; b.) ez a járműiparban felhasználható; és hogy c.) a program ún. valósidejű alkalmazás. Ezért a számítástechnikában jártas, a járműipar iránt érdeklődő, programozók, vagy programozásban jártas szakemberek érdeklődésére tarthat számot és mindazokéra, akiket érdekelnek az ún. beágyazott alkalmazások.
A dolgozat első része egy blokkolásgátló programot mutat be. Vagyis egy olyan programot amely megakadályozza egy jármű futóművének blokkolását azáltal, hogy fékezésnél - amennyiben szükséges - csökkenti a fékerőt és levezényli az ebben a szabályzási folyamatban nélkülözhetetlen lépéseket.
A második rész bemutatja, hogy hogyan lehet egy az első részben ismertetett algoritmust személyi számítógépen futó alkalmazással tesztelni, vagyis egy olyan járműszimulátor programot, amellyel a blokkolásgátló működése vizsgálható, ellenőrizhető és a helyes működéshez szükséges beállítások elvégezhetőek.
Mindezek elméleti alapozása és gyakorlati megvalósítása található a következő fejezetekben.
7
Egy vasúti járműben használható blokkolásgátló algoritmus kifejlesztése
2 Feladatspecifikáció 2.1 A dolgozat témája A dolgozat bemutatja egy speciális blokkolásgátló algoritmus kifejlesztését, amelynek használata vasúti járműben lehetséges és a mely a vasúti a körülmények figyelembevételével készült. Az eljárás végterméke egy olyan modul, amely tartalmazza egy blokkolásgátló minden funkcionális elemét, vagyis egy komplett egység, amely alkalmas egy beágyazott rendszerben történő üzemeltetésre egy nagyobb alrendszeren belül. Közúti és haszongépjárművektől eltérően vasúti üzemben a kerékpárok megcsúszása nem csak vészfékezés vagy jeges útpálya esetén jöhet létre ezért a blokkolásgátlónak alkalmasnak kell lennie a jármű minden üzemmódjában a körülötte levő hardver rendszer felülvizsgálatára és azonnali beavatkozásra.
A dolgozat magát a blokkolásgátlást mint funkciót helyezi előtérbe, vagyis ennek az algoritmusnak a bemutatása, kifejlesztésének lépései, működésének leírása és megvalósítása a fő célja. Részletesen tárgyalja a szükséges funkciókat, a felmerülő problémákat, az erre adott megoldásokat és mindeközben szem előtt tartja, hogy a végtermék vasúti járműben kerül alkalmazásra, vagyis mely részek azok, amelyek esetleg egyszerűsíthetők vagy hogy milyen szempontokat kell különlegesen kezelni.
Tervezési fázisban a fejlesztés az UML jelölésrendszert alkalmazza az egyes részegységek
szabványos
leírására
és
dokumentálására. Mivel beágyazott
alkalmazásról[1] lévén szó, ilyen típusú alkalmazás esetén szinte egyeduralkodó a C és a C++ nyelv. Másik megvalósításként szóba jöhet az ADA nyelv, de mivel a programozók körében az előzőek jóval ismertebbek ezért a blokkolásgátló nyelvi megvalósítása is C++ nyelven történik, ráadásul ehhez a nyelvhez könnyebb (szabadszoftver) tervezőeszközt találni.
Maga a blokkolásgátló program a tervezési fázis után az osztálydiagramok által generált kód részletes kidolgozásával
jön létre. A megoldandó feladatok között 8
Egy vasúti járműben használható blokkolásgátló algoritmus kifejlesztése
szerepel a ki- és bemeneti adatok lekezelése, a jármű sebességének megállapítása, a bemeneti adatok alapján a kimeneti válaszreakciók meghatározása és a feltételezett járműsebesség korrekciója, valós állapothoz igazítása. A blokkolásgátló ciklikus működése és az időszeletek változtathatósága miatt az algoritmus által mért idők nem függhetnek az alkalmazott időszelettől, hanem saját időmérő technikát kell bevezetnie a pontos időzítések biztosítására. Külön megoldandó feladat az egyes részek
közötti
információcsere
biztosítása,
amelyre
egy
ún.
"LinkHolder"
üzenetközpont technika kerül bevezetésre. A dolgozat kitér a továbbfejleszthetőség, alternatív megoldások lehetőségeire is. Foglalkozik ezentúl a modul pontos beállításának és paraméterezésének illetve olyan módszer bemutatásával amellyel a blokkolásgátló finomhangolása elvégezhető (paraméter-optimalizálás).
Egy blokkolásgátlást megvalósító modul - beágyazott alkalmazásról lévén szó teljesítenie kell a valós-idejű programokkal szemben támasztott követelményeket is, ezért a végső forráskód megfelelő szintű optimalizálására van szükség. A meghatározott válaszidők biztosítása céljából egyes technikák tiltottak ill. nem javasoltak a szakirodalom szerint, ezeket a megoldásokat a tervezésnél és a forráskódban kerülni kell.
A dolgozat egy másik hangsúlyos eleme egy jármű-szimulátor alkalmazás tervezése és létrehozása. Mivel a blokkolásgátló funkció beágyazott, vagyis egy célhardver-en futó alkalmazás vagy pedig egy nagyobb járműrendszer része, ennek helyes működését igen nehéz lenne valós körülmények között ellenőrizni, ráadásul amennyiben ez lehetséges, akkor is igen költséges eljárás. Bár egy valódi, alkalmazott rendszer fejlesztése nem mondhat le erről a lépésről, mint végső ellenőrzésről, viszont szükséges a második (és harmadik) szintű ellenőrzés érdekében egy személyi számítógépen futó alkalmazást kifejleszteni, amelyben ellenőrizhető a helyes működésmód. A dolgozat másik fő hangsúlyos része ezért egy ilyen járműszimulátor kifejlesztése. Így lehetőség van a fejlesztési procedúra első lépésének lezárására, vagyis egy szimulációs környezetben történő vizsgálatra, ellenőrzésre és beállításra.
9
Egy vasúti járműben használható blokkolásgátló algoritmus kifejlesztése
Ez a rész egy személyi számítógépen futó szoftvert mutat be és mint ilyen, több, a felhasználó által kezdeményezhető elemet, funkciót tartalmaz. Vagyis a választás egy olyan fejlesztőeszközre kell hogy essen, amellyel könnyen hozható létre egy felhasználóbarát ún. user-interface ugyanakkor erős támogatást biztosít az objektum-orientált közelítésmódhoz. A működés bemutatásához és ellenőrzéséhez célszerű vizualizációs technikaként grafikonokat és táblázatokat alkalmazni, vagyis olyan fejlesztőeszköz szükséges, amely tartalmaz ilyen elemet beépítve vagy található hozzá olyan komponens amely egy ilyen felhasználói felület létrehozását lehetővé teszi. Ezért a választás az Object Pascal nyelvre és a Delphi fejlesztői rendszerre esett (amelynek Personal változata szintén magánhasználatra ingyenes és) mivel bőségesen található hozzá olyan komponens, amely segíti a feladat megvalósítását egyszersmind objektum-orientált. A szimulátor által megvalósítandó funkciók között szerepel a blokkolásgátlóval való kapcsolattartás, a hardver szimulációja, az adatátvitel megvalósítása a szimulált hardver és a blokkolásgátló között, valamint a mérési adatok megjelenítése a felhasználó számára értelmezhető módon. Tekintve hogy a blokkolásgátló funkció programozási nyelve C++, a szimulátor-programé Object Pascal és a paraméter-optimalizálási rész pedig JavaScript nyelven került megvalósításra, ez lehetőséget biztosít kevert nyelvű alkalmazások létrehozásának bemutatására is.
Mivel a teljes forráskód megtalálható a dolgozat mellékleteként és elképzelhető, hogy egy továbbfejlesztési eljárás keretén belül a blokkolásgátló funkció átalakul, bővül. Ezért - a továbbfejleszthetőség érdekében - magának a jármű-szimulátornak igen általánosnak kell lennie, hogy ne csak a jelen esetben használt blokkolásgátló, hanem egy esetlegesen - másik programozó vagy fejlesztői csoport által - létrehozott blokkolásgátló is ellenőrizhető legyen vele, ezért a szimulátor és a blokkolásgátló közötti információcserére ún. generikus megoldást kell biztosítania. Ehhez a szimulátor interfész-osztályainak ún. soros-párhuzamos adatátviteli technikát és adatdeszkriptorokat kell használnia, amely technika szintén itt kerül bevezetésre. Ennek a bemutatása is a jármű-szimulátor alkalmazás célja.
A fejlesztésnél szempont volt, hogy minden felhasznált alkalmazás - a tervezőeszközöktől kezdve a programkód szerkesztőkön át a fordítóprogramokig 10