Tekniikka Useampi moottori - Erilaisia veto- ja ohjaustapoja - Kaikki nämä vaihtoehdot tarvitsevat kaksi moottoria - Oikealla ja vasemmalla on erillinen moottori ohjaamista varten - Keskellä ohjaaminen tapahtuu moottorien nopeuserolla=> tarvitaan moottorien välinen synkronointi
Tekniikka Suoraan ajaminen Ensimmäisessä vaihtoehdossa molemmilla moottoreilla on oma palautteeseen perustuva ohjaus (P) - Tällä tavalla ajoneuvo todennäköisesti mutkittelee
Tekniikka Toisessa vaihtoehdossa on lisätty paikkaan perustuva ohjain (I), joka laskee yhteen paikkaerot ja ohjaa molempien moottoreiden ohjaimia (P) - Tässä oletetaan palautteen olevan nopeaa
Tekniikka Kolmannessa vaihtoehdossa on vielä lisätty kaaren tasoitus (Curve Offset) sisäänmeno, joka nollaksi asetettuna mahdollistaa suoraan ajamisen ja muilla arvoilla erimittaisten kaarien ajamisen
Tekniikka Käyttöliittymäohjelma Robotin ohjauksessa pitää ottaa huomioon kaikki matalantason moottorinohjauksenongelmat -Haluamme kuitenkin käyttäjäystävällisen käyttöliittymän, joka hoitaa automaattisesti kaiken palautteeseen perustuvan ohjauksen -Alemman tason toiminnoilla voidaan ohjata suoraan moottoreita ja ylemmän tason toiminnoilla voidaan ohjata robotti liikkumaan suoraan, kääntymään haluttuun suuntaan, ajamaan kaartaen, jne.
Tekniikka Liikkuva robotti Kahden moottorin ja kahden renkaan käyttö on helpoin tapa saada robotti liikkumaan - muitakin tapoja on - Esim. Differentiaali- ja synchroajo sekä Accermann ohjaus - Lisäksi monisuuntaohjaus (Omnidirectional) Yksi vetävä pyörä, jota ohjataan -Yksinkertaisin -Tarvitsee lisäksi kaksi passiivista pyörää
Tekniikka Differentiaaliajo -Kaksi itsenäistä moottoria -Vetävien pyörien lisäksi tarvitaan vähintään yksi passiivinen pyörä - Rakenteeltaan yksinkertaisempi kuin edellinen, mutta ohjaus on monimutkaisempi, koska tarvitaan kahden pyörän koordinointi Suoraan ajaminen Kaartaminen oikealle Paikallaan kääntyminen (CCW) VL = VR, VL > 0 VL > VR, esim. VL = 2VR VL = -VR, VL > 0
Tekniikka Telaketjurobotti -Differentiaaliajon erikoistapaus -Ainoat erot ovat parempi liikkuvuus epätasaisella alustalla ja parempi pito kaarteissa
Tekniikka Synchroajo - Useampi synkronoidusti ohjattu pyörä - Voi kulkea mihin suuntaan tahansa - Saavutetaan hyvä tilan kattavuus, esim. Robottipölynimuri
Tekniikka Ackermann ohjaus - Tyypillinen ajoneuvoissa - Etupyörät ohjaavat ja takapyörät vetävät - Suoraan ajaminen helppoa - Vaatii tietyn kääntösäteen eli ei pysty kääntymään paikallaan - Takapyörät luistavat kaarteissa
Tekniikka Omni-Directional robotti - Monisuuntaohjattava: eteen, taakse, sivulle, ympäri - Erilaisia pyöräratkaisuja Mecanum wheel Omni-1 Omni-2
Tekniikka Robotin paikallistaminen -Perusongelma liikkuvien robottien kanssa -Esim. Robottipölynimurin pitää kattaa koko alue ja tavaran siirtorobotin pitää tietää oma paikkansa ympäristöön nähden - Globaaleilla paikannussenroreilla helposti hoidettavissa
Tekniikka Sisätiloissa käytetään majakoita (Beacon) ja ulkona, esim. Satelliittipaikannusjärjestelmää (Global Positioning System, GPS) -Sisällä voidaan käyttää infrapuna-, kaikuluotain-, laser- ja radiosensoreita -Tarvitaan synkronoidut majakat, jotka lähettävät eritaajuisia signaaleja säännöllisin väliajoin - Robotti vastaanottaa signaalit ja laskee vähintään kahden majakan signaalien perusteella sijaintinsa
Tekniikka Robotin paikallinen navigointi -Aloituspaikka ja -asento selvitetään yleensä jollakin globaalilla menetelmällä ja muutetaan koordinaateiksi - Annetaan robotille kartta tunnetusta ympäristöstä -Ratkaistaa robotin paikka erilaisilla algoritmeilla, esim. Dijkstra-, A *- (A-tähti), Wandering Standpoint- tai DistBug-algoritmilla
Tekniikka Robotin ohjelmistoarkkitehtuurit Klassinen malli (Classical model) - Hierarkinen, toiminnallinen, tekninen tai kolmikerrosmalli Käyttäytymiseen perustuva malli (Behavior-based model) - Suoritetaan rinnakkain, sunkronointia ei tarvita
Termejä ja käsitteitä Keskeytykset - Ongelma on varmistaa, että sulautettu järjestelmä reagoi riittävän nopeasti ulkoiseen tapahtumaan, vaikka se olisi tekemässä jotain aivan muuta Ensimmäinen keino on käyttää keskeytyksiä -Keskeytyspyyntö (Interrupt Request, IRQ) keskeyttää sulautetun järjestelmän mikroprosessorin olipa se tekemässä mitä tahansa ja laittaa mikroprosessorin suorittamaan uutta koodia - Tämä voi ratkaista sen hetkisen ongelman, mutta se vaatii monimutkaista ohjelmointia ja tuo mukanaan uusia ongelmia
Termejä ja käsitteitä Keskeytyksen perusteet Ne alkavat laitteistosta, esim. sarjaportin kautta tulee kirjain, joka mikroprosessorin tulee lukea, sijoittaa jonnekin muistiin ja lukea seuraava kirjain, jne. Jokaisella laitteella, joka tarvitsee mikroprosessorin huomiota on oma IRQ-nasta ja mikroprosessorilla useita, jotta se erottaa miltä laitteelta keskeytyspyyntö tulee Mikroprosessori siis keskeyttää edellisen suorituksen, tallentaa sen pinoon ja alkaa suorittaa keskeytysrutiinia, joka tarkoittaa mitä tahansa ohjelmoitua toimintoa, joka tässä tilanteessatulee tehdä Keskeytystä ei voi kutsua eli mikroprosessori reagoi laitteiston signaaleihin
Termejä ja käsitteitä Keskeytysrutiini (Interrupt routine, Interrupt Handler, Interrupt Service Routine, ISR) - On konekielinen aliohjelma, jonka viimeisen käskyn tulee olla Return (tai vastaava), jolloin mikroprosessori palaa suorittamaan keskeytynyttä eli pinon päällimmäistä tehtävää
Termejä ja käsitteitä Keskeytyksen haasteena on edellisen tehtävän käyttämien rekisterien tietojen palauttaminen, sillä keskeytysrutiini voi muuttaa niitä Tavallinen ratkaisu on, että keskeytysrutiini tallentaa rekisterien tiedot alussa ennen kuin alkaa käyttää niitä ja palauttaa ne sitten lopussa Mitä seuraa, jos rekisteriä ei tallenneta? Tulee bugi, joka ilmenee vain silloin, kun rekisterien arvot muuttuvat keskeytysrutiinien aikana Keskeytykset voidaan myös kieltää, sekä laite, että mikroprosessori voidaan ohjelmoida siten, etteivät ne reagoi keskeytyksiin tietyissä tilanteissa Keskeytykset voidaan myös priorisoida ja keskeytysrutiinikin voidaan keskeyttää toisella keskeytysrutiinilla sekä useampi keskeytys voidaan laittaa pinoon odottamaan vuoroaan
Termejä ja käsitteitä Jaetun tiedon ongelma Jatkuva kahden lämpötilan tarkkailu -Jos lämpötila kahdella anturilla ei ole sama, tulee hälytys -Jos tulee keskeytys ensimmäisen ja toisen lämpötilan lukemisen väliin ja lämpötila muuttuu keskeytysrutiinin aikana, tulee hälytys, vaikka molempien antureiden lukemat ovat koko ajan samat Keskeytysrutiini ei voi tietää minkä mikroprosessorin suorituksen se keskeytti.
Termejä ja käsitteitä
Termejä ja käsitteitä Tällainen bugi on todella vaikea havaita, koska prosessori suorittaa keskeytysrutiinin mikrosekunneissa tai niiden osissa ja sen vuoksi ko. bugi ilmenee hyvin harvoin Tyypillisesti se ilmenee perjantaina klo 17.00, kun pitäisi lähteä viikonlopun viettoon aina, kun et huomaa aina, kun debuggauslaite ei ole kiinni järjestelmässä silloin, kun laite on laskeutunut Marsiin ja tietysti asiakas demossa Epäile ja analysoi aina keskeytykset! Varmista, ettet koodaa tällaista!
Termejä ja käsitteitä Jaetun tiedon ongelman ratkaiseminen Ensimmäinen tapa on estää keskeytykset ohjelman suorituksen ajaksi aina, kun on kysymys kriittisestä ohjelmasta Toinen tapa on lukea yhden anturin arvo kahdesti peräkkäin. Jos arvo on sama, se on oletettavasti oikea, vaikka välillä olisi suoritettu keskeytysrutiini
Termejä ja käsitteitä
Termejä ja käsitteitä Keskeytysten viiveet Kuinka nopeasti sulautettujärjestelmä vastaa keskeytykseen? 1.Aika, jonka aikana keskeytykset on estetty 2. Aika, joka menee korkeamman prioriteetin omaavan keskeytyksen suorittamiseen 3.Aika, joka menee mikroprosessorilta edellisen suorituksen keskeyttämiseen, tilanteen tallentamiseen ja uuden keskeytysrutiinin aloittamiseen 4.Aika, joka menee keskeytysrutiinilta rekisterien tallentamiseen ja keskeytysrutiinin suorittamiseen
Termejä ja käsitteitä Edellisestä johtuen kannattaa pitää keskeytysrutiinit lyhyinä ja tehokkaina (Ohjelmoija voi vaikuttaakohtiin 2. ja 4.) Lisäksi keskeytysten esto on pidettävä mahdollisimman lyhyenä Lisää vaihtoehtoja keskeytyksen estolle 1. Pidetään kirjaa mihin rekistereihin ohjelma kirjoittaa ja ei anneta keskeytysrutiinin kirjoittaa samoihin rekistereihin - Pitää varmistaa, että tila riittää 2. Keskeytysrutiini kirjoittaa muistiin keskeytettävän ohjelman tiedot ja palauttaa ne lopuksi - Pitää kirjoittaa monimutkaista koodia - voi tulla helposti bugeja
Termejä ja käsitteitä Sulautettujen järjestelmien ohjelma-arkkitehtuurit Käytettävä arkkitehtuuri valitaan tehtävän vaativuuden mukaan -vasteaika vaatimukset - Mikroprosessorin nopeus - Muut prosessointivaatimukset -Nopea reagointi useisiin erilaisiin tapahtumiin, vaihteleviin vasteaikoihin ja erilaisiin prioriteetteihin vaatii monimutkaisen arkkitehtuurin
Termejä ja käsitteitä Round-Robin -Yksinkertaisin arkkitehtuuri -Silmukka tarkistaa jokaisen I/O-laitteen vuorollaan ja suorittaa tarvittavat tehtävät - jatkuva kierto - Ei keskeytyksiä, ei jaetun tiedon ongelmia, ei viiveongelmia - Toimii, kun ei ole nopeita vasteaikoja, eikä pitkiä suoritusaikoja - erittäin hyvä yksinkertaisissa sovelluksissa
Termejä ja käsitteitä Round-Robin keskeytyksillä -Keskeytykset vain kiireellisimmille tehtäville -I/O-laite asettaa lipun (flag) keskeytyksen merkiksi ja keskeytysrutiini suoritetaan heti ensimmäisellä kierrolla - Keskeytysten priorisointi - Hyvä vasteaika - Tuo mukanaan keskeytysrutiinin ongelmat, mm. jaetun tiedon ongelman ja viiveet
Termejä ja käsitteitä Function-Queue-Scheduling (Toimintojono ajoitus) - Keskeytysrutiinit lisäävät toiminto-osoittimia (function pointers) jonoon, josta ohjelma käy niitä lukemassa ja kutsumassa - Ohjelma voi käsitellä keskeytykset missä tahansa järjestyksessä - Parempi vasteaika kuin edellisillä, mutta monimutkaisempi - Matalan prioriteetin tehtävät saattavat jäädä tekemättä -> Ohjelma määrää mitä tehdään
Termejä ja käsitteitä Real-Time Operating System (RTOS) -Edelleen keskeytykset hoitavat kiireellisimmät tehtävät - Ero edellisiin: - RTOS hoitaa keskeytyksien ja ohjelman väliset signaalit - ei lippuja, ei toiminto-osoittimia -RTOS määrää mikä ohjelma tai keskeytysrutiini suoritetaan - ei silmukoita - RTOS voi keskeyttää minkä tahansa ohjelman tai rutiinin suorittaakseen toisen
Termejä ja käsitteitä -RTOS:n etu on myös se, että ohjelmakoodin muuttaminen keskeytysrutiineissa ei vaikuta korkeamman prioriteetin vasteaikoihin -vrt. Round-Robinissa uusi pitkä alemman prioriteetin keskeytysrutiini voi sekoittaa sulautetun järjestelmän kokonaan - Helposti saatavilla (ostettavissa) - Mukana tulee yleensä debuggaus työkalut - Voi olla kallis, käyttääitsessään prosessointi aikaa, voi olla monimutkainen - On myös ilmaisia, voidaan optimoida, esim. konfiguroimalla
Termejä ja käsitteitä Arkkitehtuurin valinta Valitse yksinkertaisin, joka täyttää sulautetun järjestelmäsi vasteaikavaatimukset Jos vasteaikavaatimukset saattavat tarvita Real-Time käyttöjärjestemän, aloita siitä, sillä hyvin harvoin vaatimukset yksinkertaistuvat Voit myös yhdistellä arkkitehtuureja tarvittaessa
Termejä ja käsitteitä Prioriteetti Huonoin vasteaika Vasteajan stabiliteetti koodia muutettaessa Yksinkertaisuus Round-Robin Ei Koko koodi Huono Erittäin yksinkertainen Round-Robin keskeytyksellä Keskeytyksillä on, ohjelmalla ei Koko ohjelman suoritusaika (+keskeytyrutiini) Hyvä keskeytyksillä, huono ohjelmalla Jaetun tiedon hallinta Fuction-Queue- Scheduling Keskeytyksillä ja ohjelmalla Pisimmän tehtävän suoritusaika (+keskeytyrutiini) Suhteellisen hyvä Jaetun tiedon hallinta ja toimintojonon koodi Real-Time Operating System Keskeytyksillä ja ohjelmalla Nolla (+keskeytyrutiini) Erittäin hyvä Monimutkaisin (vaikka suurin osa käyttöjärjestelmässä)
Defensiivinen ohjelmointi Laatu yleensä: Lähtökohtainen pyrkimys korkeaan laatuun; ei tilaa ohjelmointivirheille Ohjelmakoodin luettavuus: Toiminta pystytään varmentamaan helpommin esimerkiksi katselmoinnein Oletusten vähyys: Minimoidaan oletukset, joiden varaan ohjelman toiminta rakentuu; esim. varmistetaan että ohjelma toimii kaikilla syötearvoilla HUOM: Defensiivinen ohjelmointi ei välttämättä pure täysin aikakäyttäytymiseen, jossa oletuksia joudutaan väistämättä tekemään!
Vika-analyysi Vikasietoisuus vain etukäteen tunnistettuja vikoja kohtaan Analysoidaan mahdolliset viat Miten vikaan voidaan reagoida Miten viasta voidaan toipua
Esimerkki Sähkönsyöttö katoaa Akut kunnossa Aggrekaatti käynnistyy Aggrekaatti käynnistyy Siirrytään käsiajanottoon OK OK 30min jonka jälkeen käsiajanotto Pieni katkos, Ei ongelmia tuloksissa Tulokset viivästyvät mutta ne saadaan Tuloksia katoaa, kisoja tai sarjoja hylätään
Joitakin esimerkkijärjestelmiä Avaruussukkula 5 tietokonetta (laitteistoviat) 2 valmistajan ohjelmat (ohjelmistoviat) Ariane 5 avaruusraketti Alun perin määrittelyvirhe; raja-arvon ylittyminen johti siihen että laitteiston uskottiin olevan vialla ja se sammutettiin Syöksyi lopulta turvallisesti mereen
Vikaturvallisuuden luokittelua Taso 1: Normaalin toiminnan vikatilanteet Normaalit pikkuviat, esim. muistitilan ylittyminen, levyn täyttyminen Laitteistoviat transientteja Diagnostiikkajärjestelmä; käynnistystestit ainakin muisteille Taso 2: Vikaturvallinen toipuminen Vaatii tyypillisesti uudelleenkäynnistämisen vian havaitsemisen ja siitä toipumisen jälkeen Käyttöjännitteen seuranta, vahtikoira tms.
Luokittelu jatkuu Taso 3: ei-peittävä itsestabiloituva vikasietoisuus Esimerkkitapaus vikaantuneen muistin hallinta: Virhe tunnistetaan pariteettikentästä, ja vikaantunut muisti poistetaan käytöstä. Korjaus pysyvä jos muistin vaihto vaikeaa, muuten laite voi ilmoittaa huoltotarpeesta Muita vastaavia tapauksia ovat esim. ohjausvirheet ja ympäristön yllättävä käytös. Taso 4: peittävä vikasietoisuus Tärkeimät laitteet (tai osa niistä) monistettu Ongelmatilanteessa varayksikkö olemassa ja valmis astumaan remmiin nopeasti Esim. RAID, tietoliikenneyhteyksien monistaminen
Luokittelu jatkuu edelleen Taso 5: Korjaus konetta sammuttamatta Vain pieni parannus edelliseen; myös lopullinen korjaus konetta sammuttamatta Taso 6: Kaikkien laitteiden varmistus Kaikki laitteet monistettu Esim. Suurehko puhelinkeskus (pienemmät tasoja 4 ja 5) Taso 7: Koneiden monistaminen Eli siis kuten 6 mutta joka yksikkö laskee oman tuloksen ja valittu tulos saadaan äänestämällä tms. Käytännössä harvinaisia
Käynnistys ja uudelleenkäynnistys Käynnistys on aina erikoistilanne Oheislaitteet eivät ole käynnissä -> Ohjauselektroniikka saattaa tulkita tiloja miten haluaa (kytkennöistä toki riippuen, hyvällä elektroniikkasuunnittelulla voidaan saada ihmeitä aikaan!) Ulkoisten liittymien tulee toimia turvallisesti; ei satunnaiskäyttäytymistä edes käynnistyksen aikana Yleissääntöä turvalliseen käynnistämiseen ilman laitteistotukea ei ole; ohjelmoija voi toki luoda lisää ongelmia väärillä alustusrutiineilla Ajossa olevan järjestelmän käynnistys (varsinkin esim. jotain aktiivisesti ohjaavan) on muutenkin harkittava huolellisesti vaikkei ohjelmoijien mielenkiinto ja ohjelmointityyli työläitä tarkistuksia suosisikaan
Ohjelmistotyö ohjelman suorituksen aikana Järjestelmä voi olla jatkuvasti käytössä Alasajo ei vaihtoehto, jos toimintaa ei saa keskeyttää Ainoa mahdollisuus toteuttaa ylläpitotoimenpiteen ajon aikana Ääritapauksisssa sekä ohjelmisto- että laitteistotuki tarpeen
Ohjelmiston muuntelu suorituksen aikana Yksinkertainen tapaus: Parametrein tapahtuva ohjaus Esim. joku diagnostiikkaa häiritsevä toiminto kytketään pois päältä diagnostiikan käytön ajaksi Paikko-ohjelmistot (patch) Joku muistialue varataan patcheille Uudelleenkäynnistys/initialisointi jolloin patchit ladataan käyttöön Joskus voidaan toteuttaa komponentti kerrallaan, jolloin saadaan aikaiseksi hienorakeisempi päivitettävyys Joskus koko ohjelmiston uudelleenlataus ja uudelleenkäynnistys DISCLAIMER: Lähtökohtaisesti mitä ilmeisimmin virheherkkää eikä missään nimessä suositeltava yleinen käytäntö
Laitteistotuesta Laitteisto voi olla rakennettu siten, että se sallii kahden ohjelmiston ajamisen rinnakkaisesti kahdella eri tietokoneella Tällöin ohjelmisto voidaan päivittää tietokoneeseen A, ja päivityksen + toiminnan varmentamisen aikana tietokone B hoitaa toimintaa Jos A vaikuttaa toimivan hyvin, myös B voidaan päivittää Yleensä huomioitu järjestelmätason vaatimuksissa Ongelma: Mitä jos vanhaa versiota ajava B vikaantuu kun A:ta ollaan päivittämässä?
Yhteenveto Vikasietoinen järjestelmä kykenee jatkamaan toimintaansa itsenäisesti myös silloin kun siinä on vikaa Vikaturvallisen järjestelmän suunnittelussa on huomioitu erikseen ettei vikaantumisesta ettei tule vaaraa Vikasietoisuus voi kohdistua vain vikoihin jotka on otettu huomioon osana suunnittelua Ohjelmistojen sisäisen vikasietoisuuden toteutuskeinoina Ohjelman toiminnan tarkkailu Defensiivinen ohjelmointi
Ohjelmistot ja ohjelmointi Beginner's All purpose Symbolic Instruction Code (Basic) - Oli erittäin suosittu 1980-luvulla - Helppo omaksua ja soveltuu mm. pelien ohjelmointiin - Joissakin sulautettujenjärjestelmien mikroprosessoreissa on Basic-tulkki eli ohjelmaa ei tarvitse kääntää ensin konekielelle - Nykisin suosituin on Visual Basic Microsoft.NET -ympäristössä - FreeBasic, Ilmainen, 32-bittinen,Windows, DOS, Linuxympäristöihin - Blitz-Basic ja Dark-Basic (mm. 3D-pelejä), Gambas (Ilmainen)
Ohjelmistot ja ohjelmointi Programming Language for Microcomputers (PLM) - Yksi vanhimpia sulautettujen järjestelmien lausekieliä - Muistuttaa Pascal-ohjelmointikieltä - C-kieli on syrjäyttänyt lähes kokonaan C-kieli - Ylivoimaisesti käytetyin sulautetuissajärjestelmissä - Koneläheisin ohjelmointikieli - Tarjoaa suorat vastineet monelle konekieliselle käskylle - Variaatioita: µc, C++, C#, embedded C, objective C
Ohjelmistot ja Java ohjelmointi - Alun perin tarkoitettu sulautettujen järjestelmien ohjelmointiin - Saavutti suosionsa Web-selainten Java Applettien ansiosta - Muistuttaa C++ ohjelmointikieltä - Helpompi omaksua kuin C-kieli Ada -Nimetty ensimmäisenä ohjelmoijana pidetyn Ada Lovelacen mukaan, pohjautuu Pascal-kieleen Virtual Instrumentation Engineering Workbench (LabView) - Visuaalinen ohjelmointikieli (Visual Programming Language, VPL)
Ohjelmistot ja ohjelmointi Versatile Real-Time Executive (VRTX) - RTOS, joka soveltuu sekä perinteiselle sulautetulle järjestelmälle, että järjestelmäpiireille (SoC) VxWorks - Alun perin varsin yksinkertaisen WRTX-ohjelmointikielen laajennus - Suunniteltu sulautetuille järjestelmille Phar Lap ETC -Sopii Hard real-time järjestelmille -Virtuaalinen hallintaliittymä (Virtual Control Program Interface, VCPI)
Ohjelmistot ja ohjelmointi Windows CE - Sulautettuihin järjestelmiin suunniteltu - Vaatii muistia alle megatavun FreeRTOS - Sopii useille mikrikontrollereille - Vie vähän tilaa OpenRTOS - Sama kuin FreeRTOS, mutta erilainen lisenssi - JA PALJON MUITA!
Ohjelmistot ja ohjelmointi Sovelluskehittimet (Integrated Development Environment,IDE) Tekstieditori - Yksinkertaisin väline ohjelmointiin IngenjörsfirmanAnders Rundgren (IAR) -Erilaisia työkaluja sulautettujen järjestelmien ohjelmien tekemiseen ja debuggaukseen Microsoft Visual Studio - Microsoftin ohjelmankehitysympäristö, jossa voi käyttää useita ohjelmointikieliä - Eri versioita - viimeisin Visual Studio 2010 (12.4.2010)
Ohjelmistot ja ohjelmointi Atmel AVR Studio development environment - C, assembly, simulaattorit, debuggaus, evaluointi, referenssit - Atmel-yhtiön omalle mikroprosessoriperheelle Eclipse -Tukee useitaohjelmointikieliä - Avoimen lähdekoodin lisenssit Jbuilder, Jcreator, BlueJ, DrJava, Jdeveloper, jne. - Java-ohjelmointiin tarkoitettuja sovelluskehittimiä
Älypuhelimet - Rajatut resurssit Ohjelmistot ja ohjelmointi - Suorituskykyinen ohjelmakoodi Apple ios - Sovelluskehitys Xcodella (vain Applen koneille) - Ohjelmointikieli on Objective C, joka muistuttaa C:tä - Sisältää, mm. dokumentaation ja graafisen käyttöliittymätyökalun Interface Builder
Ohjelmistot ja ohjelmointi Google Android - Sovelluskehitys Javalla - Esim. Eclipse jaandroid Development Tools (ADT) - Myös Native Development Kit (NDK) => C, C++ Nokian ja Intelin Meego - Linux pohjainen Nokia Symbian - Java, Native C/C++ - C++ ja Qt Create
Ohjelmistot ja ohjelmointi Microsoft Windows Mobile - Visual Studio 2008 Microsoft Windows Phone - C# ja Visual Studio 2010 - SilverLight, Xna -.Net kirjasto - Expression Blend SketchFlow (interface)
Ohjelmistot ja ohjelmointi Java sulautetussa järjestelmässä Javalla on helpompi tuottaa virheetöntä koodia kuin C, tai C++ ohjelmointikielellä -Javan kaikki perustietotyypit ovat kiinteän kokoisia, esim. Int on aina 32-bit - Parempi ohjelman sidosten tarkastus käännettäessä - Monipuolinen String-muuttujien käsittely Oliopohjaisuus pakottaa ohjelmoijan suunnittelemaan tiedon ja toimintojen rakenteetloogisesti
Ohjelmistot ja ohjelmointi Kapselointia (Encapsulation), monimuotoisuutta (Polymorphism) ja perintää (Inheritance) käytetään laajasti Javan sisäänrakennetuissa luokkakirjastoissa - Peräkkäinen perintä on korvattu liitännöillä Automaattinen roskien keräys (Garbage collection) - Yksinkertaistaadynaamista muistin hallintaa - Estää muistin ylivuotoja Sisäänrakennettu säiekirjasto (Threads library) - Parantaa ohjelman siirrettävyyttä tarjoamalla johdonmukaisen säie- ja synkronointiliitännän käyttöjärjestelmiin kaikkiin
Ohjelmistot ja ohjelmointi Integroitu keskeytysmekanismi järjestää ohjelmistokeskeytykset loogiseen luokkahierarkiaan, eikä anna ohjelmoijan ohittaa niitä Javalla ei kuitenkaan voi tehdä aivan kaikkea mitä C- ohjelmointikielellä on totuttu tekemään -Javalla ei voi muokata osoittimia (Pointers), jotka on korvattu Javassa viitteillä (References) - Javalla voi kuitenkin kutsua C- ja assembly-toimintoja natiivimenetelmällä (Native methods) -Natiivimenetelmät sallivat laiteajurien ja muun muistia tai laiterekistereitä muokkaavien ohjelmien kirjoittamisen toisella kielellä
Javan kehitystyökalut Ohjelmistot ja ohjelmointi -Javakääntäjä eli luokkakääntäjä kääntää korkeamman tason Javakoodin assemblykieltä muistuttavaksi javan tavukoodiksi (Java bytecode) -Javan tavukoodit ovat Javan virtuaalikoneen konekieltä, joka tekee Javasta alustariippumattoman -Java Virtual Machines, Just-in-Time Compilers, ja Java Processors
Ohjelmistot ja ohjelmointi -Java virtuaalikone (Java VM) on ohjelma, joka kääntää Javan tavukoodin prosessorin natiivikoodiksi - Javan virtuaalikoneita on monille laitealustoille ja sulautetuissa järjestelmissä ne ajetaan RTOSkäyttöjärjestelmän päällä - Käännetyt kielet ovat siirrettäviä, mutta hitaita -Just-in-time kääntäjä (JIT Compiler) nopeuttaa käännösprosessia tallentamalla käännetyt tavukoodit muistiin, ettei niitä tarvitse kääntää heti uudestaan
Ohjelmistot ja ohjelmointi Nopein Java tekniikka on Javapiirit (JavaChips) -Sun Microsystems on julkaissut Java prosessoriperheen, jonka prosessoreissa on sisäänrakennettu Java virtuaalikone -Korkean tason Javakoodi käännetään suoraan Javan tavukoodiksi, jonka prosessori ymmärtää konekielisiksi käskyiksi
Ohjelmistot ja ohjelmointi Sulautettu Java työkalusarja (Embedded Java Toolkit) -Ideaalinen Javan kehitystyökalusarja sisältää ristiinkääntäjän, assemblerin, debuggerin ja RTOS-käyttöjärjestelmän -Tämä mahdollistaisi ohjelman kehittämiesen, testaamisen ja debuggaamisen isäntäkoneella, jopa ennen laitteiston valmistumista
Ohjelmistot ja ohjelmointi Ahead-of-time (AOT) kääntäjä muuttaa Javan tavukoodin natiiviprosessorin oliokoodiksi -AOT kääntäjällä on mahdollista kirjoittaa ohjelma Javalla, mutta välttää Java virtuaalikoneen ja JIT kääntäjän aiheuttamat viiveet -Virtuaalikone korvataan tässä mallissa pienellä ohjelmalla, joka hoitaa roskien keräämisen ja keskeytysten hallinnan mahdollisesti RTOS-käyttöjärjestelmän tarjoamana
Ohjelmistot ja ohjelmointi -AOT kääntäjällä tehty koodi voidaan linkittää suoraan C/C++ ja assembly-koodilla tehtyihin ohjelmiin olemassa olevilla työkaluilla (Kuvassa) -Tämän hetkisillä Javan tavukoodeilla on hyvin epätodennäköistä ohjelmoida sulautettu järjestelmä kokonaan Javalla, koska sillä ei ole keinoja ohjata suoraan perinteisen prosessorin muistia ja rekistereitä -Javapiireillä tämä onnistuu ja Javan tavukoodin laajennuksia on mahdollisesti tulossa
Ohjelmistot ja ohjelmointi Sekaohjelmointiympäristössä tarvitaan sovelluskehitin, joka ymmärtää Javan Natiivikoodia Ideaalitilanteessa se hoitaa myös: -Javan ja muiden kielien sekoittamisen yksityiskohdat -Tukee integroidun version hallintaa - Sisältää tehokkaan monikielituen
Ohjelmistot ja ohjelmointi Debugger on mahdollisesti kaikkein kriittisin osa tässä ympäristössä Sen pitää: -Pystyä vaihtamaan helposti Java-, C/C++ ja assemblykielen välillä Kommunikoimaan Java virtuaalikoneen kanssa: - Isäntäkoneella - Kohteessa - Emulaattorissa
Ohjelmistot ja ohjelmointi Javan haasteet sulautetuissa järjestelmissä -Vaikka Java on yksi suosituimmista ohjelmointikielistä tällä hetkellä, sulautettujen järjestelmien kehittäjät eivät siitä innostu -Vaatimuksia sulautetun järjestelmän ohjelmointikielelle ovat: säännöllinen käyttäytyminen (determinisyys), pieni muistitilavaatimus ja tehokas suorituskyky - Javan roskien keräysjärjestelmä ei ole riittävän deterministinen - Java vaatii liikaa muistia monessa tapauksessa -Java-ohjelma toimii usein kymmenen kertaa hitaamiin kuin C-ohjelma
Ohjelmistot ja ohjelmointi Haasteista huolimatta on joitakin tilanteita, joissa Java-ohjelmointia kannattaa harkita -Ainakin sellaisissa sulautettuissa järjestelmissä, jotka ovat yhteydessä tietoverkkoon tai Internetiin, esim. Set-top-box (Digiboksi) -Kuvan ja äänen vastaanotto hoituu edelleen C- ja assembler-ohjelmilla -Set-top-boxiin voi sitten myöhemmin ladata Javaohjelmia lisäarvona
Ohjelmistot ja ohjelmointi Java SE for Embedded Devices - Java on yksi maailman suosituimmista ohjelmointikielistä - Isäntäkoneelle ja kohteeseen - Optimoitu sulautetulle järjestelmälle: Sulautettujenprosessoreiden tuki, virran hallinta, pieni muistitilavaatimus - Saavuttaa natiivisovelluksen tehokkuuden - Siirrettävä eri prosessori- ja käyttöjärjestelmäalustoille - Hyvät tietoturvaominaisuudet
Ohjelmistot ja ohjelmointi GNU Javakääntäjä (GNU Compiler for Java, GCJ) -Kuuluu GNU kääntäjäkokoelmaan (GNU Compiler Collection, GCC) -Kääntää Java koodin natiivikoodiksi eli korvaa Java virtuaalikoneen => säästää muistitilaa, kun ei tarvita Java virtuaalikonetta -Ei sisällä suoraan ristiinkääntäjää, mutta sellaisen voi siihen asentaa - Konfiguroimalla saa mahtumaan pieneen tilaan
Eclipse CDT Ohjelmistot ja ohjelmointi - Avoimen lähdekoodin sovelluskehitin - Suunniteltu sulautettujen järjestelmien ohjelmontiin - Sisältää sovelluskehittimen C/C++, mobile Java (J2ME) ja mobile Linux käyttöjärjestelmille Kirjallisuutta, esim. Yksi ohjelma n. 1440 kielellä: http://99-bottles-of-beer.net/abc.html
Kurssikirja 2 Ohjelmistot ja ohjelmointi - Bräunl, Thomas: Embedded Robotics - Mobile design and Applications with Embedded Systems. Springer-Verlag, 2003 Ohjelmointityökalut - C/C++ ja assembly GNU-ristiinkääntäjä - RoBIOS käyttöjärjestelmä ja RoBIOS kirjastot - Erilaisia työkaluja tiedostojen lataamiseen, äänen konvertointiin, kauko-ohjaukseen, jne. - Debuggaukseen Background Debugger Module (BDM)
ACCUS ecosystem ACCUS Plug-ins Cross Domain Application Service Service Application Application Service Service Service Application ACCUS Integration and Coordination Platform Subsystem adaptor Subsystem adaptor Subsystem adaptor Subsystem adaptor Subsystem Subsystem Subsystem Subsystem Service Service Service Service Service Service Service Public space Domain Mobility Domain Energy Domain
Integration and Coordination Platform (ICP) Älykkäiden kaupunkien ohjauksessa korkea tason Integration and Coordination Platform (ICP), joka jakaantuu kolmeen tasoon: Core-kerros, joka sisältää välttämättömät kaupunkien palvelut, joita tarvitaan. Esimerkkejä ydinkerroksen palveluista ovat: tietokannat, sanomanvälittäjät, APIjohtaja, palvelupyörä jne.). Extension layer: sisältää etukäteen palveluja, jotka erottavat älykaupungin perinteisistä SoS-ympäristöistä. Esimerkkejä ovat tiedonvälitys- ja valvontapalvelujen välityspalvelut. Plugin layer, joka sisältää kaupunkikohtaiset palvelut, joita sovellukset voivat käyttää uudelleen. Esimerkkejä ACCUS-laajennuksista ovat Gdansk Traffic Monitor, Gdansk Policy Event -ilmaisimet jne. Ydinkerroksen ja laajennuskerroksen yhdistelmä määritellään ACCUS-kehoksi (body). Plugin-kerros määritellään ACCUS-mieleksi (mind).
ACCUS ecosystem Cross Domain Application Service Application Application Service Service Service ACCUS Integration and Coordination Platform Service Repository ACCUS API Ontologies Service Application = case specific software = ACCUS specific software = Standard software Service Service Access City State Policies Semantic Mapping Subsystem adaptor Subsystem adaptor Subsystem adaptor Subsystem adaptor Subsystem Subsystem Subsystem Subsystem Service Service Service Service Service Service Service Public space Domain Mobility Domain Energy Domain
Security ACCUS architecture Service Bus Application Cross Domain Application Subsystem Subsystem Smart Lighting Service Service Service Subsystem adaptor Subsystem adaptor Calamity detection Reasoner ACCUS API Presence detection Traffic monitor Event detection Rules Data Analytics Location detection Predictions ACCUS City State Ontologies Policies Info Broker & coordination Subsystem Monitoring Control Broker & coordination Semantic mapping ACCUS Work Flows Service Repository Management Database Data management Message Broker Service Broker Rule Engine Policy management Application Server Agent Framework Work Flow Engine Identity & access management = case specific software = ACCUS specific software = Standard software ACCUS ARTEMIS-2012-1 Integration and Coordination Platform 80
ACCUS architecture Cross Domain Application Subsystem Service Service Application Smart Lighting ACCUS Applications Subsystem Service Subsystems Subsystem adaptor Subsystem adaptor ACCUS API Calamity detection Security ACCUS ICP Core = case specific software = ACCUS specific software = Standard software Data Analytics Location detection Predictions Control Broker & coordination Info Broker & coordination Ontologies ACCUS City State Traffic monitor Policies Subsystem Monitoring Data management Message Broker Service Broker Policy management Application Server Agent Framework Work Flow Engine ACCUS Integration and Coordination Platform ARTEMIS-2012-1 ACCUS Work Flows Service Repository Semantic mapping Database Event detection Management ACCUS ICP Extensions Rules Presence detection Service Bus ACCUS ICP Plug-ins Reasoner Rule Engine Identity & access management 81
ACCUS architecture CITY and application Specific Cross Domain Application Application Smart Lighting ACCUS Applications CITY and domain Specific Service Subsystem Subsystem Service Service Subsystem adaptor Subsystems Subsystem adaptor ACCUS API Calamity detection Security ACCUS ICP Core = case specific software = ACCUS specific software = Standard software Data Analytics Location detection Predictions Control Broker & coordination Info Broker & coordination Ontologies ACCUS City State Traffic monitor ACCUS Specific Policies Subsystem Monitoring Data management Message Broker Service Broker Policy management Application Server Agent Framework Work Flow Engine Generic ACCUS Integration and Coordination Platform ARTEMIS-2012-1 ACCUS Work Flows Service Repository Semantic mapping Database Event detection Management ACCUS ICP Extensions Rules CITY Specific Presence detection Service Bus ACCUS ICP Plug-ins Reasoner Rule Engine Identity & access management 82
ACCUS architecture Cross Domain Application Subsystem Subsystem Service Service Subsystem adaptor Subsystem adaptor Application Smart Lighting Service ACCUS API Calamity detection Rules = Standard software Location detection Control Broker & coordination Policies Subsystem Monitoring Service Bus Security = ACCUS specific software Data Analytics Data management Message Broker Service Broker Policy management Application Server Agent Framework Work Flow Engine ACCUS Integration and Coordination Platform Event detection ACCUS Work Flows Service Repository Semantic mapping Database ARTEMIS-2012-1 Traffic monitor Management = case specific software Presence detection Info Broker & coordination Ontologies ACCUS City State Reasoner Rule Engine Identity & access management 83
ACCUS architecture CITY and application Specific Cross Domain Application Application Smart Lighting ACCUS Applications CITY and domain Specific Service Subsystem Subsystem Service Service Subsystem adaptor Subsystems Subsystem adaptor ACCUS API Calamity detection Security ACCUS ICP Core = case specific software = ACCUS specific software = Standard software Data Analytics Location detection Predictions Control Broker & coordination Info Broker & coordination Ontologies ACCUS City State Traffic monitor ACCUS Specific Policies Subsystem Monitoring Data management Message Broker Service Broker Policy management Application Server Agent Framework Work Flow Engine Generic ACCUS Integration and Coordination Platform ARTEMIS-2012-1 ACCUS Work Flows Service Repository Semantic mapping Database Event detection Management ACCUS ICP Extensions Rules CITY Specific Presence detection Service Bus ACCUS ICP Plug-ins Reasoner Rule Engine Identity & access management 84
ICP Core (1) ICP Core on ICP: n runtime-ympäristö, jossa tarjotaan yleisiä alustoimintoja, käyttäen standardi (hyllyltä, uusinta) ohjelmistotuotteita / -työkaluja / -alustoja." Application Servers : ympäristö/kehikko palvelujen ja sovellusten ajamiseen. Agent Framework: ympäristö joka tukee agenttipohjaisten palvelujen ajamista. Service Broker : ohjelmisto joka toimii välittäjänä eri ohjelmistoprotokollien ja orkestrointiryhmien välillä, joiden tarkoituksena on tarjota API ulkopuolisille osapuolille / järjestelmille Service Bus : ohjelmistomalli ja toteutus eri palveluiden vuorovaikutusta ja viestintää varten Data Management : toiminnot tietojen koodauksen, tallennuksen, tietojen saannin ja tietojen poistamisen hallintaan ICP: ssä ARTEMIS-2012-1 85
ACCUS ICP Core (1) The ICP Core is the Runtime Environment of the ICP in which generic platform functionalities are offered, using standard (of the shelf, state of the art) software products / tools / platforms. Application Servers : environment /framework for the execution of services / applications Agent Framework: environment to support agent based service execution Service Broker : software to mediate between different software protocols and orchestrate set of services, intended to provide API towards external parties / systems Service Bus : software model and implementation for the interaction and communication between the different services Data Management : functionality for management of tagging, storage, access and removal of data in the ICP ARTEMIS-2012-1 86
ACCUS ICP Core (2) Policy Management : functionality to manage policy defined in the ICP for access and usage of services and data in the ICP Identity & access management : functionality to identify and authorize users and systems for access and usage of services and data in the ICP Work Flow Engine : functionality for the implementation of the workflow of processes/service/actions Rule Engine : Rule Engine which executes (inference) rules (which can be used by ACCUS services, plug-ins and/or applications) ARTEMIS-2012-1 87
ACCUS ICP Core (2) Policy Management : ICP: ssä määriteltyjen käytäntöjen hallintaa ICP: n palveluiden ja tietojen saatavuutta ja käyttöä varten Identity & access management : funktionaalisuus joka tunnistaa ja valtuuttaa käyttäjät ja järjestelmät palveluiden ja tietojen saatavuuden ja käytön suhteen ICP: ssä Work Flow Engine : toiminnot prosessien / palvelun / toiminnan työnkulun toteuttamiseksi Rule Engine : Rule-moottori, joka suorittaa (päättely) sääntöjä (joita voivat käyttää ACCUS-palvelut, laajennukset ja / tai sovellukset) ARTEMIS-2012-1 88
ICP Core (3) Security : toiminnot ICP: n sisäisen turvallisuuden varmistamiseksi, pääsy ICP: n palveluihin ja tietoihin sekä pääsy siihen liitettyihin osajärjestelmiin ja sovelluksiin / laajennuksiin Management :toiminnallisuutta ICP: n yleiselle hallinnolle Data Base: geneerisen tietokannan toiminnallisuus, joka on kerätty osajärjestelmistä ja muista ICP: hen liittyvistä lähteistä Service Repository : yleinen tallennuspaikka kaikille ICP: n kautta käytettävissä oleville palveluille Message Broker: yleinen toiminto viestien vastaanoton ja jakelun käsittelemiseksi ARTEMIS-2012-1 89
ACCUS ICP Core (3) Security : functionality to ensure security within the ICP, access to the services and data in the ICP and access towards the connected subsystems and applications/plug-ins Management : functionality for the overall management of the ICP Data Base: generic data base functionality for data collected from subsystems and other sources connected to the ICP Service Repository : generic repository for all services accessible via the ICP Message Broker: generic function to handle the receipt and distribution of messages ARTEMIS-2012-1 90
ACCUS architecture Cross Domain Application Subsystem Service Service Application Smart Lighting ACCUS Applications Subsystem Service Subsystems Subsystem adaptor Subsystem adaptor ACCUS API Calamity detection Security ACCUS ICP Core = case specific software = ACCUS specific software = Standard software Data Analytics Location detection Predictions Control Broker & coordination Info Broker & coordination Ontologies ACCUS City State Traffic monitor Policies Subsystem Monitoring Data management Message Broker Service Broker Policy management Application Server Agent Framework Work Flow Engine ACCUS Integration and Coordination Platform ARTEMIS-2012-1 ACCUS Work Flows Service Repository Semantic mapping Database Event detection Management ACCUS ICP Extensions Rules Presence detection Service Bus ACCUS ICP Plug-ins Reasoner Rule Engine Identity & access management 91
ACCUS ICP Extensions (1) ICP-laajennukset sisältävät kaikki ACCUS-erityiset yleiset toiminnot (joita voivat käyttää kaikki kaupungit, jotka käyttävät ACCUS-alustaa), joita muut ACCUS-palvelut ja -sovellukset voivat käyttää Info Broker & Coordination : Toiminnallisuus joka välittää ja koordinoi eri tietolähteitä, jotka ovat käytettävissä ACCUS: ssa, joka parhaiten täyttää sovelluksen / palvelun tiedonhakupyynnön. Control Broker & Coordination : Toiminnallisuus joka välittää ja koordinoi valvontatoimia ACCUS-järjestelmään ja niihin liitettyihin osajärjestelmiin, jotka parhaiten täyttävät sovelluksen / palvelun pyytämät valvontatoimet. ARTEMIS-2012-1 92
ICP Extensions (2) Subsystem Monitoring : Yleinen toiminnallisuus, joka monitoroi kykettyjä alijärjestelmiä. Semantic Mapping : Yleinen toiminnallisuus, joka monitoroi eri alijärjestelmien ja niiden palvelujen semantiikkaa. ACCUS Work Flows : Prosessien / palvelu / toimintojen yleiset ACCUS-työnkulut, jotka edustavat liiketoimintalogiikkaa, joka on määritetty eri ACCUS-sovelluksille ja käyttötavoille. Subsystem adaptor : Alijärjestelmän erityinen sovitin, joka kääntää osajärjestelmän rajapinnat kohti standardia ACCUS APIa ARTEMIS-2012-1 93
ACCUS ICP Extensions (2) Subsystem Monitoring : Generic functionality for monitoring of connected subsystems Semantic Mapping : Generic functionality for mapping of semantics of different subsystems and their services ACCUS Work Flows : Generic ACCUS workflows of processes/service/actions which represent some business logic defined for the different ACCUS applications and use cases. Subsystem adaptor : Subsystems specific adaptor that translates the subsystem interfaces towards the standard ACCUS API ARTEMIS-2012-1 94
ACCUS ICP Extensions (3) ACCUS API: ACCUS ICP: n sovellusohjelmointirajapinta, jonka kautta kaikki saatavilla olevat ACCUS-palvelut voidaan löytää, käyttää ja käyttää. Sovellusliittymän käsittely liittyy voimakkaasti Service Brokerin, Policy Managementin, Identity & Access Managementin ja Service Repositoryn toimintoihin. ACCUS City State data: Tiedot kaupungeista, jotka edustavat kaupungin tilaa (esimerkiksi haettu osajärjestelmistä Ontology data: Ontologiatiedot eri osajärjestelmistä ja niiden palveluista ja tiedoista Policy data : Osajärjestelmien, ICP-palvelujen, lisäosien ja sovellusten käyttöön ja käyttöön liittyvät käytännöt ARTEMIS-2012-1 95
Service Plug-ins (1) ACCUS-palvelun laajennukset sisältävät kaikki ACCUS- ja City-erityiset yleiset toiminnot, joita muut ACCUS-palvelut ja -sovellukset voivat käyttää Depending on the use cases, the following plug-ins might be implemented: Event detection esim. erityisten tapahtumien seuranta osajärjestelmistä Location detection esim. ajoneuvojen sijainnin havaitseminen eri anturitulojen perusteella Presence detection esim. henkilöiden / ajoneuvojen havaitseminen Data analytics alijärjestelmistä kerätyn datan analysoiminen Situation awareness datan ja semantiikan tulkinta tilannetietoisuuden saavuttamiseksi Muita yleisiä funktioita kuten ennustaminen, päättely, etc, etc. ARTEMIS-2012-1 96
Service Plug-ins (2) Rule data : Säännön tiedot, jotka sisältävät (päättely) sääntöjä, jotka edustavat jotain palvelulogiikkaa, kuten tilannekohtaisia perusteluja ja / tai ennustuksen generointia (Rule-moottorin suorittamaa) ARTEMIS-2012-1 97
ACCUS architecture CITY and application Specific Cross Domain Application Application Smart Lighting ACCUS Applications CITY and domain Specific Service Subsystem Subsystem Service Service Subsystem adaptor Subsystems Subsystem adaptor ACCUS API Calamity detection Security ACCUS ICP Core = case specific software = ACCUS specific software = Standard software Data Analytics Location detection Predictions Control Broker & coordination Info Broker & coordination Ontologies ACCUS City State Traffic monitor ACCUS Specific Policies Subsystem Monitoring Data management Message Broker Service Broker Policy management Application Server Agent Framework Work Flow Engine Generic ACCUS Integration and Coordination Platform ARTEMIS-2012-1 ACCUS Work Flows Service Repository Semantic mapping Database Event detection Management ACCUS ICP Extensions Rules CITY Specific Presence detection Service Bus ACCUS ICP Plug-ins Reasoner Rule Engine Identity & access management 98
ACCUS architecture Cross Domain Application Subsystem Subsystem Service Service Subsystem adaptor Subsystem adaptor Application Smart Lighting Service ACCUS API Calamity detection Rules = Standard software Location detection Control Broker & coordination Policies Subsystem Monitoring Service Bus Security = ACCUS specific software Data Analytics Data management Message Broker Service Broker Policy management Application Server Agent Framework Work Flow Engine ACCUS Integration and Coordination Platform Event detection ACCUS Work Flows Service Repository Semantic mapping Database ARTEMIS-2012-1 Traffic monitor Management = case specific software Presence detection Info Broker & coordination Ontologies ACCUS City State Reasoner Rule Engine Identity & access management 99
Applications Application Service Application Service ACCUS-sovellukset sisältävät kaikki kaupunki- ja sovelluskohtaiset ohjelmistot, jotka käyttävät ACCUS ICP: tä (ja kaikki liitetyt palvelut) erityisten ACCUS-käyttötapausten toteuttamiseen Käyttötapauksesta riippuen, seuraavia sovelluksia on implementoitu: Smart lighting: esim. älykäs valaistuspalvelu, joka käyttää useista osajärjestelmistä saatuja tietoja Smart living: esim. verkkotunnuksen palvelu, joka yhdistää esimerkiksi energia-alan ja liikkuvuusalueiden tiedot Smart traffic management: esim. älykäs liikenteenhallinta käyttämällä (sensor) dataa useista osajärjestelmistä ja ohjaavista toimilaitteista eri osajärjestelmissä etc., etc. ARTEMIS-2012-1 100
Säätämisen historiaa Nicholas Minorsky: Directional stability of automatically steered bodies (1922) New Mexico sotalaivan automaattinen ohjausjärjestelmä Laivan kallistuminen heikensi laivatykkien tarkkuutta (S. Bennet: Nicolas Minorsky and the Automatic Steering of Ships)
Termejä Häiriö Asetusarvo Erosuure (e) Ohjausarvo (u) Säädettävä Säätäjä Prosessi suure Takaisinkytkentä Mittausanturi Oloarvo Askelvaste:
oloarvo asetusarvo erosuure
Stabiili prosessi Prosesseista Jos asetusarvo ja häiriöt pysyvät samana, prosessi asettuu luonnolliseen tasapainotilaan Esimerkiksi auton vakionopeudensäätö: jos moottoriin syötetty polttoainemäärä on vakio, auto kulkee vakionopeudella, kunhan ulkoiset tekijät kuten tuuli tai mäet eivät vaikuta Epästabiili, eli integroiva prosessi Prosessi ei asetu tasapainotilaan, vaan ajautuu rakenteelliseen ylä- tai alarajaan ilman säätöä
Stabiili Epästabiili
Aikavakio ja viive Prosessin aikavakio osoittaa nopeutta, jolla prosessi reagoi ohjausarvojen muutokseen Viive, eli kuollut aika, tarkoittaa asetusarvon ja oloarvon muutoksen välillä kuluvaa aikaa
P-säätäjä u = K*e + M Ohjausarvo on suoraan verrannollinen eroarvoon P-säätäjä jättää asentovirheen Jos kerrointa K kasvatetaan liikaa, järjestelmä voi värähdellä Säätäjän ohjaus on usein rajoitettu tietylle välille Koodia: ero = asetusarvo oloarvo; u = p_kerroin * ero + p_skaalaus; ohjaus = mid (alaraja, u, ylaraja);
K=3 K=10 Kuvaajat: http://www.pidlab.com
I-säätäjä u = K * average(e(1) e(k)) Säätimen ulostulo muuttuu eroarvoon verrannollisella nopeudella Ei reagoi pieniin häiriöihin Ei asentovirhettä Hidas Voi saturoitua toiminta-alueen rajalla, kun ohjaus ei riitä korjaamaan tilannetta (Windup). Ratkaisu: lisätään anti-windup toiminto, joka esimerkiksi estää integroinnin jatkumisen prosessin saturaatiotilanteessa
e t u t
Saturoituminen -> järjestelmä menettää ohjattavuutensa kunnes tilanne purkautuu
D-säätäjä u = K * ( e(n) e(n-1) ) Säätimen ulostulo on verrannollinen eroarvon muutosnopeuteen Säätö reagoi nopeasti Pitää liikettä yllä -> ylittää asetusarvon ja värähtelee Herkkä kohinalle Liitetään aina P tai PI-säätäjään
e t u t
Closed loop s1n1ulat1on - 2.5 2 1.5 0.5 0 0.5 0 2 <) ::::: I> fi1 p A& Ii?]PV Ii?] SP IN O MV li?] LD 3 4 time {sj
PI-säätäjä P-säätäjän nopeus, I-säätäjän tarkkuus Ei asentovirhettä
I I I,[i!.f1.11.1.1.g11,011tjiifl - - IDI "'"l'litucio Closed loop s mulation l I " I I '- 0.1 -. n o o sed loop simulation """' 1.2 1.0 0.8 0.6 Closed loop sun ulation 0.1. 0.4 0.2 o.i'""..0 2 0 ''"" 0.2... I.o.4. 0 5 ' 10 ' 1 ' 5 [05Jl l 0 <I I>..e"' 0 PV 0 O MV D t. E:b O closed loop sin1ulation 2 0 10 2() 30 <I I>..e"' Closed loop s hnulatlon 40 P.} SP (i] LO 10.9, 0.497 50 1;.,.[sj 00. "' '..,uua. Closed loop simulation 2 1.5 0.5 0 0.0 0.5 I 0 2 0 8 10 0
PD-säätäjä Nopea, ennustaa asetusarvon muutosta Värähtelee herkästi Herkkä kohinalle Jättää asentovirheen
! ----;:;:; ::::: nn antplillj<l antplillj<le Closed loop simulation nn ampmw. Closedloop simulation e = - -'--.....lo<;.!z. L. = 1.2 1.2 =- -'--.....lo<;.!z.l.= 1.0 0.8 0.6 0 0.8 0.6 0.4 0.4 0.2 0 0.2 0.2 0.4 0.6 0.8 0.2 "" " ',_, ma O Mv O LD [2]..,, 0 00.1 0.2 0.3 0.4 t.,,. fsj t.,,. fsj [ 2 ]..,, Closed loop simulation 1.5 0.5 0 M 20 40 60 80 100 120 0 Pv 0 sp O MV 0 LD
PID-säätäjä Reagoi nopeasti, mutta ei värähtele niin herkästi Yleissäätäjä P osa huolehtii perussäädöstä D osa tuo nopeutta I osa vaimentaa värähtelytaipumusta Ei asentovirhettä
Säätäjän virittämisestä Säätäjän virittäminen yritys ja erehdys - menetelmän avulla muuttamalla P, I ja D- osien kertoimia D- ja P-termit aiheuttavat värähtelyä/ylitystä I-termi hävittää asentovirheen, mutta voi aiheuttaa säätäjän saturoitumisen Ziegler-Nichols ja Cohen-Coon ovat eräitä klassisia viritysmenetelmiä
Mittaamisesta Mittaussignaalia joudutaan usein suodattamaan Häiriöt Kiinnostava taajuuskaista Mitta-anturi on toisinaan kalibroitava Kalibrointi saatetaan tehdä huollon yhteydessä tai automaattisesti laitteen ollessa käytössä
Yhteenveto P-, I-, D-, PI-, PD- ja PID-säätimet valitaan käyttötarkoituksensa mukaan ja viritetään toimimaan optimaalisella, mutta turvallisella tavalla. Mitta-anturien kalibrointi on usein tarpeen valmistustoleranssien ja kulumisen vaikutuksen poistamiseksi Järjestelmän turvallisuus on syytä ottaa aina huomioon
Kiitos!