Ohjelmistoarkkitehtuurit Koneenohjausmaailmaa Kevät 2016 Samuel Lahtinen (Veli-Pekka Eloranta) http://www.cs.tut.fi/~ohar/ Ohjelmistoarkkitehtuurit 2016 1
Tarjolla tänään Vierailuluentoinfoa: Timo Lehtonen, Solita 16.3. Koneenohjausjärjestelmien introa Erityispiirteitä Yleisiä vaatimuksia Jotain patterneita Ohjelmistoarkkitehtuurit 2016 2
Suunnittelumallien esitystavat Canonical Form ja Gof (Design patterns: Elements of reusable object-oriented software, Gamma et. Al.) Name Alias (optional) Context Problem Forces Solution Example (optional) Resulting Context Rationale (optional) Known Uses Related Patterns Name Also Known As Applicability Intent Motivation Participants, structure, collaborations, implementation Sample code Consequences Known Uses Related Patterns
Konepajahenkistä teollisuutta Tampereen seudulla: Metso Fastems John Deere Kone Cranes Agco Power Sandvik Kalmar Cargotec Avant Microteam Muita esimerkkejä: Kone (Hyvinkää) Epec (Seinäjoki) Artic Machine (Iisvesi) ABB (Helsinki, Vaasa) Vision Systems Turussa, lisää mielenkiintoista,mm. telakkateollisuus jne.
Esimerkki sovellusalueista
Ohjelmistot, miksi työkoneissa?
Ohjelmistot, miksi työkoneissa? ltuottavuus paranee Toimintojen automatisointi Koneen käyttäjän opastaminen Tehokkuus Helpompi päivitettävyys lhuoltotarvetta voidaan ennakoida lintegrointi tuotannonohjausjärjestelmiin ja laivueenhallintaan (fleet management) lkommunikointi muiden työkoneiden kanssa
Tyypillisiä erityispiirteitä: pitkä elinkaari vs
Elinkaareen liittyen luotettavuus softa rauta aika
Erityispiirteet - skaalautuvuus
Erityispiirteet - hajautus
Erityispiirteet - tuoteperheet http://www.colterlec.com.au/site/index.cfm?display=138553 Danfoss taajuusmuuntajia/pehmokäynnistimiä tms.
Erityispiirteet - reaaliaikaisuus
Erityispiirteet - turvallisuus
Yksittäinen kontrolleri, ohjelmassa yleensä suoraviivainen kontrollisilmukka while(true) { readsensors(sensordata[]); controldata[] = calculatecontrols(sensordata[]); controlactuators(controldata[]); }
Koneenohjauspatternkieli Designing Distributed Control Systems A Pattern Language Approach
Suunnittelun aloitus ljo käytössä suunnittelumallikieli, valitaan kielen juuresta sopiva pattern ja soveltaa sitä ltai halutaan ratkaista yleinen ongelma: mikä on järkevät tapa luoda sulautettu järjestelmä suuremmalla laitteelle/koneelle? Miten rakentaa suurempi koneenohjausjärjestelmä järkevästi? lanti-pattern-versio: Keskitetään kaikki toiminnallisuuden ohjaus yhteen isoon mötikkään, joka vastaa jokaisen laitteen ja vekottimen kontrolloimisesta
Isolate Functionalities, many to many communication (kaivosporauslaite) Puomin ohjaus Moottorin ohjaus Vaihteiston ohjaus Väylä, esim. CAN Poran ohjaus Rungon ohjaus Human machine interface (HMI)
Mitä saatiin? Päivitettävyys, erilaisten ohjainten vaihtaminen mahdollista ilman muutoksia muualle Vikasietoisuus, yksittäisen kontrollerin kippaaminen ei tuhoa koko järjestelmän toimintaa
Havaitaan ongelma/ saadaan vaatimuksia Entä jos väylä halutaan vaihtaa? Jokaisen solmun sovellus on riippuvainen valitusta väyläteknologiasta Syitä muutokseen Tuki loppuu pitkän elinkaaren aikana Valmistaja menee konkurssiin Suunnittelun aikana havaitaan, ettei valitun teknologian kapasiteetti riitä Halutaan varautua tulevaan (esim. Väyläkapasiteetin kasvutarve) Ongelma/kysymys: Kuinka vaihtaa valittu väyläteknologia tai protokolla ilman että (laitteiden, jne) sovelluskoodia ei tarvitse muuttaa?
Bus Abstraction Puomin ohjaus Send( node3, data, repeat=no) Poran ohjaus Callback( node1, data) Bus abstraction Väylä, esim. CAN lähetä väyläspesifisessä muodossa Bus abstraction vastaanota väylän käyttämässä muodossa
Erilaiset protokollat ja niiden yhteensovittaminen Montako erilaista sovitinta tarvitaan, jos käytössä viisi erilaista kommunikaatioprotokollaa?
Paljon eri protokollia, kanonisointi Ongelma: paljon eri protokollia, viestintätyyppejä ja tekniikoita, kutsuja protokollasta toiseen, esim. 5 eri protokollaa, tekniikkaa sovitin joka väliin ja kahteen suuntaan N*N palikkaa Kanonisointi, joko 2*N tai 2*(N-1), jos valitaan joku valmiista formaateista
Entäpä jos väylä katkeaa tai solmu (node) hajoaa? ltilanne pitäisi havaita jotenkin, jotta asialle voidaan tehdä jotain l How to make sure that a node or a bus will not fail undetected? lkuinka varmistua siitä, ettei väylän tai solmun hajoaminen jää huomaamatta?
Heartbeat Supervisor Node I am alive Tietty ennaltasovittu aikaväli I am alive
Pull vs. Push Designing Distributed Control Systems: A Pattern Language Approach, Heartbeat
Toinen ratkaisu: Watchdog Node A Watchdog Node B Corrupted data timeout
Tai Watchdog perinteisemmin Node Reset watchdog Tietyin aikavälein Watchdog If( watchdog not reseted){ Reset node }
Lisää turvallisuusjuttuja Ongelma: yksittäinen vika voi aiheuttaa vakavia seurauksia (esim. liikkuvat koneet, toinen ääripää tietoturva) Laitteilla ja ohjelmistoilla vikaantumistodennäköisyys, joka > 0 Riskit liittyvät potentiaalisen vaaratilanteen vakavuuteen ja todennäköisyyteen Hajautettu toimintaympäristö voi lisätä riskejä, viestit voivat hapantua tai hukkua, väärin toimiva laite voi tehdä yksittäisellä virhetulkinnalla kohtalokkaita Ratkaisua: jaetaan potentiaalisesti vaarallinen toiminto usealle eri osalle, jotka kaikki tekevät oman osansa toiminnasta. Jos kaikkien osien toiminta onnistuu ja kaikki on ok, suoritetaan operaatio (jos ei, esim. vikatila)
joystick Cabin control Boom control Power pack control Move left Moveleft Start motor Pressure ok Move boom to left Turvaominaisuuksia: jos molemmilla operaatio menee läpi (puomi ja Hydrauliikkavoiman ohjaus), puomi liikkuu, lisävarmistus tilan perusteella Hyttiosassa (lisäksi puomin toiminnassa tarkastukset jne.) Jos power pack huomaa, että nostettua hydraulipainetta ei käytetä, Virhetilanne.
Turvallisuutta, esimerkki Ongelma: yksittäinen vika voi aiheuttaa vakavia seurauksia (esim. liikkuvat koneet, toinen ääripää tietoturva) Laitteilla ja ohjelmistoilla vikaantumistodennäköisyys, joka > 0 Riskit liittyvät potentiaalisen vaaratilanteen vakavuuteen ja todennäköisyyteen Hajautettu toimintaympäristö voi lisätä riskejä, viestit voivat hapantua tai hukkua, väärin toimiva laite voi tehdä yksittäisellä virhetulkinnalla kohtalokkaita Ratkaisua: jaetaan potentiaalisesti vaarallinen toiminto usealle eri osalle, jotka kaikki tekevät oman osansa toiminnasta. Jos kaikkien osien toiminta onnistuu ja kaikki on ok, suoritetaan operaatio (jos ei, esim. vikatila)
Arkkitehtuuri tähän mennessä Watchdog Puomin ohjaus Moottorin ohjaus HB Vaihteiston ohjaus HB Bus abstraction Bus abstraction Bus abstraction Väylä, esim. CAN Bus abstraction Poran ohjaus Bus abstraction Rungon ohjaus HB Bus abstraction HMI
Turvallisuutta, jatkoa Ongelma: laitteet jne. vikaantuvat, mitä tehdä jos yhteydet katkeavat tai viestisisältö epäselvää? Ratkaisua: Failstate, ongelmatilanteissa ja epäselvissä tilanteissa laite ajetaan turvalliseen tilaan Ongelma: vikatilanne estää laitteen käytön, mutta vekotin on saakelin iso ja huolto pöpelikössä, kaivoksessa jne. on kypsähköä Ratkaisua: limp home mode Rajoitetaan ominaisuuksia, rajoitetaan käyttömahdollisuuksia, mutta sallitaan vekottimen käyttö niin, että se saadaan siirrettyä turvallisesti, tehtyä joku osakokonaisuus loppuun (esim. autoista tuttua) Laitteet voivat vikaantua, havainnointi ulkopuolelta vaikeaa Ratkaisu: self test
Entäpä jos viestejä tulee väylältä enemmän kuin ehditään käsitellä? Kaikki viestit tulisi käsitellä, yhtäkään viestiä ei saisi jättää huomiotta. Lähetettävien (tai vastaanotettavien) viestien määrää ei voida ennakoida kehitysaikana Viestit tulisi käsitellä siinä järjestyksessä kuin ne vastaanotetaan. Kaikki viestit tulisi käsitellä mahdollisimman nopeasti.
Ratkaisu: Message Queue Node 1 Node 2 Send queue Send queue Receive queue Receive queue
Halutaan tarjota korkean tason palveluja Korkean tason palvelut eivät ole reaaliaikaisia. Korkean tason palvelut eivät saa häiritä reaaliaikatoimintoja, koska se voisi johtaa järjestelmän virheelliseen toimintaan. Testattavuus: Reaaliaikatoimintojen testaaminen erillään korkean tason palveluista pitäisi olla mahdollista. Korkean tason ohjelmistojen kehittäminen on helpompaa kun ei tarvitse välittää reaaliaikavaatimuksista. Reaaliaikatoimintojen tulee toimia tietyissä rajoissa, esim. Jarrujen ja muiden ohjausten vasteaika tulee olla riittävä.
Ratkaisu: Separate Real-time Communicates only over bus
Watchdog HB HB Puomin Moottorin Vaihteiston ohjaus ohjaus ohjaus Bus SQ RQ Bus SQ RQ Bus SQ RQ Abstraction Abstraction Abstraction Bus Bus Bus Abstraction SQ RQ Abstraction SQ RQ Abstraction SQ RQ Väylä, esim. CAN Bus SQ RQ Bus SQ RQ Bus SQ RQ Bus Abstraction Abstraction Abstraction Abstraction Bus Bus Bus abstraction SQ RQ abstraction SQ RQ abstraction SQ RQ SQ RQ Poran Runkon Rungon ohjaus ohjaus HMI HB PC
Lisää vaatimuksia/ongelmia Laitteisto saattaa vaihtua, ei haluta vaihtaa joka kerta ohjelmistoa Abstrahoidaan laitteisto, Hardware abstraction layer (erillinen rajapinta, jonka takana laitteisto on. Vertaa ajurit ja tietokone) sovellus OS HAL Application interface HAL drivers Rauta
Tiedon jakamista ja yhteistoimintaa Paljon yhteistoimintaa, useita osajärjestelmiä, jotka suorittavat yhdessä monimutkaisempia tehtäviä Tiedon jakaminen hajautetussa järjestelmässä: joko kiinnostuneiden pitää seurata asiaan liittyviä tapahtumia ja kerätä tietoja talteen kun niitä tulee Epäsuoria riippuvuuksia, syö resursseja kuuntelijoista, monimutkaistaa Pyyntö, aina kun tiedoille tarvetta, jokaiselle tietolähteelle erikseen esim. useita eri lähteitä, jokaiselle pyyntö & odotus vastauksesta Viive, liikennemäärän lisääntyminen, kuormituksen ennustettavuus Toiminnan kontrollointi ja tiedon jakaminen: Kuten yllä, mutta tarvitaan keskitettyä kontrollia suoritusten ohjaamiseen
Variable manager (Matalan tason ratkaisumalleja) järjestelmässä keskitetty paikka, jonka tehtävänä huolehtia tietojen ja arvojen varastoinnista Sisällytetään nodeen, Keskitetysti yhdessä paikassa, tallennusvastuu selkeä, yksinkertaistaa komponenttien toimintaa Mitä potentiaalisia ongelmia? Designing Distributed Control Systems: A Pattern Language Approach, Variable Manager
Blackboard liitutaulu Helppo jakaa toimintaa toisistaan riippumattomiin dataa jalostaviin kokonaisuuksiin Osa dataa tuottavista toimijoista voi olla ihmisiä, sensoreita jne. Tiedon jalostajat, isomman ongelman ratkaiseminen yhteistoiminnalla Tekoälymaailmasta tuttu: Koneenohjausmaailma: älykkäät koneet, päätöksenteon hajauttaminen, osajärjestelmät toimivat tiedon perusteella ja jalostavat tietoa tilanteen mukaan Liitutaululle tietoja Control S1 S2 S3 S4 blackboard
Linkkejä & muuta lähdemateriaalia Blackboard-esimerkki: http://social.technet.microsoft.com/wiki/contents/articles/13461.blackboard-design-pattern-apractical-example-radar-defense-system.aspx CAN-väylää, CANopen: http://www.can-cia.org/can-knowledge/canopen/canopen/ Esimerkkilaite ja dokumentaatio: http://www.libelium.com/downloads/documentation/canbus_communication_guide.pdf Lainsäädäntöä ja säädöksiä, jotka vaikuttavat myös ohjelmistoihin: http://www.iso.org/iso/catalogue_detail.htm?csnumber=34931 Turvallisten laitteiden suunnittelua http://w3.siemens.se/topics/se/sv/funktionssakerhet/maskinsakerhet/documents/sp- rapport_how_to_design_safe_machine_control_systems_-_a_guideline_to_en_iso_13849-1.pdf Sulautettuja järjestelmiä http://www.embedded.com/ Reaaliaikajärjestelmiä (Open access book) http://www.intechopen.com/books/real-time-systems-architecture-scheduling-and-application Vikasietoisuutta ja patterneja: Robert Hanmer, Patterns for Fault-tolerant Software (Googlen scholarin kautta osin luettavissa)
Yhteenvetoa koneenohjausjutuista Koneenohjausmaailman arkkitehtuuriratkaisut, ideologia samaa Melko yksinkertaisia hyväksi havaittuja toimintatapoja Arkkitehtuuriratkaisujen taustalla ongelma/vaatimus Samoja ideoita ja ratkaisuja voi käyttää myös muualla (esim. nettimaailma) TTY-lähtöistä: Designing Distributed Control Systems: A Pattern Language Approach Veli-Pekka Eloranta, Johannes Koskinen, Marko Leppanen, Ville Reijonen, 2014 Wileyn sivut kirjalle
Kysyttävää? Ohjelmistoarkkitehtuurit 2016 45