Koneenohjausjärjestelmien arkkitehtuurit. Sulautettu ohjelmointi Veli-Pekka Eloranta

Samankaltaiset tiedostot
Tarjolla tänään: Sanastoa Koneenohjausjärjestelmien suunnittelumallit. Pattern Architecture Style. GoF. Design pattern

7. Koneenohjausjärjestelmien suunnittelumallit. OhAr Veli-Pekka Eloranta

Ohjelmistoarkkitehtuurit Kevät 2014

Ohjelmistoarkkitehtuurit Koneenohjausmaailmaa. Kevät 2016

Ohjelmistoarkkitehtuurit

7 Sulautettujen järjestelmien suunnittelumallit. OhAr Marko Leppänen

Käyttöliittymät II. Käyttöliittymät I Kertaus peruskurssilta. Keskeisin kälikurssilla opittu asia?

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä

Suunnittelumallit (design patterns)

Capacity Utilization

Integrointi. Ohjelmistotekniikka kevät 2003

Salasanan vaihto uuteen / How to change password

LANSEERAUS LÄHESTYY AIKATAULU OMINAISUUDET. Sähköinen jäsenkortti. Yksinkertainen tapa lähettää viestejä jäsenille

National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

C++11 seminaari, kevät Johannes Koskinen

Venttiilit ja Automaatio

Efficiency change over time

7.4 Variability management

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Käyttöjärjestelmät: prosessit

Hankkeen toiminnot työsuunnitelman laatiminen

LYTH-CONS CONSISTENCY TRANSMITTER

Prosessiautomaatiota LabVIEW lla NI Days NI Days LabVIEW DCS 1

TURVAVÄYLÄSEMINAARI. Erilaiset kenttäväylät ja niiden kehitys Jukka Hiltunen

WAMS 2010,Ylivieska Monitoring service of energy efficiency in housing Jan Nyman,

Backup Exec 3600 Appliance

TPA-PMD alusta soi nyt ja tulevaisuudessa - Asennuskannan uudistaminen jatkuu vahvana

KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ

HITSAUKSEN TUOTTAVUUSRATKAISUT

Mistä kilpailukykyä kotimaiseen tuotantoon? Tuotannon ulkomaille siirtämisen haasteet

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Turvallisuusseminaari Silja-Line

Security server v6 installation requirements

Rosemount 3051S sähköiset ERS-anturit

Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

7. Product-line architectures

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

Security server v6 installation requirements

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

OSI ja Protokollapino

Use of spatial data in the new production environment and in a data warehouse

Tietojärjestelmäarkkitehtuurit

Prosessiautomaatiota LabVIEW lla NI Days NI Days LabVIEW DCS 1

Tietojärjestelmän osat

Teollisuusautomaation standardit Osio 9

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

Uusi Ajatus Löytyy Luonnosta 4 (käsikirja) (Finnish Edition)

16. Allocation Models

Järjestelmäarkkitehtuuri (TK081702) Pilvipalvelut. Pilvipalvelut - lähtökohtia

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

S11-09 Control System for an. Autonomous Household Robot Platform

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Choose Finland-Helsinki Valitse Finland-Helsinki

Exercise 1. (session: )

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo

Green Growth Sessio - Millaisilla kansainvälistymismalleilla kasvumarkkinoille?

HOJ J2EE & EJB & SOAP &...

Digitaalinen haavoittuvuus MATINE Tampere

Miehittämätön meriliikenne

Takki. Lisää ot sik k o osoit t am alla. Nyt se sopii, tai sitten ei. Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi

IBM Iptorin pilven reunalla

The CCR Model and Production Correspondence

Biojätteen keruu QuattroSelect - monilokerojärjestelmällä Tiila Korhonen SUEZ

Collaborative & Co-Creative Design in the Semogen -projects

Turvallisen tekniikan sem inaari -04. Koneautom aation ohjelm istot Teem u Pajala

Toimilohkojen turvallisuus tulevaisuudessa

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Standardit IEC (perustandardi) ja IEC (prosessit)

SQL SERVER 2012 PARALLEL DATA WAREHOUSE APPLIANCE

TeliaSonera Identity and Access Management

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

Väylämoduuli - DALI Master Wago

Virtualisoi viisaasti paranna palvelua. Iikka Taanila Systems Architect IBM Systems and Technology Group

F-SECURE TOTAL. Pysy turvassa verkossa. Suojaa yksityisyytesi. Tietoturva ja VPN kaikille laitteille. f-secure.com/total

SOA SIG SOA Tuotetoimittajan näkökulma

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Turvakriittisen projektin menetelmät ja työkalut

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

HAKURATKAISUN ANATOMIA - KURKISTUS PELLIN ALLE

Uudelleenkäytön jako kahteen

OHJ-4301 Sulautettu Ohjelmointi

4x4cup Rastikuvien tulkinta

Käyttäjähallinta liiketoiminnan selkärankana. Ratkaisuna LDAP-hakemistot

TIETOJOHDETTU RAKENNUSPROJEKTI Niko Vironen Kehityspäällikkö Fira Group

Opiskelijoiden tulostuspalvelu. Printing Service for Students

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistoarkkitehtuurit kevät

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Pikaintro käyttöjärjestelmiin

O-renkaan vaihto-ohje Instructions for replacement of o-ring

Directory Information Tree

Transkriptio:

Koneenjärjestelmien arkkitehtuurit Sulautettu ohjelmointi 15.3. 2012 Veli-Pekka Eloranta

Taustaa Sulake ja Sulava-projektit Yhteistyötä konepajayritysten kanssa Arkkitehtuuriarviointeja, dokumentaatio apuja, menetelmien kehittämistä, yms yrityksille Kerättiin usein toistuvia hyväksi havaittuja suunnittelukäytäntöjä (patterneja)

Työkoneet sovellusalueena

Miksi softaa? Tuottavuus paranee Toimintojen automatisointi Ohjaajan opastaminen Tehokkuus Huoltotarvetta voidaan ennakoida Integrointi tuotannonjärjestelmiin ja laivueenhallintaan (fleet management) Kommunikointi muiden työkoneiden kanssa

Erityispiirteet pitkä elinkaari vs

Erityispiirteet - hajautus

Erityispiirteet turvallisuus (safety)

Erityispiirteet - reaaliaikaisuus

Erityispiirteet - skaalautuvuus

Tyypillisiä vaatimuksia Vasteajat koneenohjauksessa 5-100 ms Väyläteknologian vaihtaminen pitää olla mahdollista Uuden väyläteknologian lisääminen vanhan rinnalle Kolmannen osapuolen sovellusten ja diagnostiikkasovellusten pääsy järjestelmän tietoihin Toiminnallisuuden siirrettävyys raudalta toiselle Järjestelmän pääsolmun (PC) käyttöjärjestelmän vaihto toiseen Järjestelmän osan vikatilanne ei saa tehdä koko konetta käyttökelvottomaksi

Matalan tason ohjelmointia? Monesti mielikuva sulautetusta ohjelmoinnista on assemblyn vääntöä Onko kännykkä sulautettu järjestelmä? Työkoneissa on korkean ja matalan tason ohjelmointia: Käyttöliittymät ja liitynnät työnjärjestelmiin Laitteiden ohjauksen ohjelmointi usein lähempänä laitteistoa Harvoin kuitenkaan assemblyllä Automaatiotekniikan osaamisesta hyötyä

Järjestelmän tyypillinen rakenne Remote connection Cabin PC Fleet management, ERP, Production control, Control room, Maintenance systems, etc Intelligent sensors (COTS) Motor control PLC Drive control PLC Frame control PLC Intelligent valves, e.g. CAN HMI control Boom control Sensors and valves Remote control Valves Sensors Work unit control

Järjestelmän tyypillinen rakenne Remote connection Cabin PC Fleet management, ERP, Production control, Control room, Maintenance systems, etc Intelligent sensors (COTS) Motor control PLC Drive control PLC Frame control PLC Intelligent valves, e.g. CAN Ethernet Boom control Sensors and valves HMI control Remote control Valves Sensors Work unit control

Ohjelmointikieliä / teknologioita Koneen (PLC) C / C++ Käyttöliittymä ja korkeantason C/ C++ Qt, QML C# +.NET Konfiguraationhallinta usein XML:llä Väylä CAN Flexray EtherCAT LON Protokollia väylällä CANopen J1939 Ohjausalgoritmit Matlab

Koneen Usein pollaava tai keskeytysohjattu ydin Virtualisointia jonkin verran, kuitenkin enemmän tulevaisuuden juttu Erilaisia säätöalgoritmeja (PID on yksi). Reaaliaikainen Matalan tason ohjelmointia

Kontrollerin tyyppillinen (ja yksinkertaistettu) anatomia Puomin Data manager Uses Control application Uses Hardware abstraction + communication While( true){ Lue anturi 1 Lue anturi 2 Ohjaa venttiiliä 1 Ohjaa venttiiliä 2 Laske kinematiikkaa } Background task

Ohjaamon PC Tarjoaa graafisen käyttöliittymän Yhteydet muihin järjestelmiin (työtehtävät, yms) Linux / Windows Ohjelmointi ei juuri eroa normaalien työpöytäsovellusten tekemisestä

Järjestelmän testaaminen Yksikkötestaus Simulaattorit HIL (Hardware-in-the-loop) testaus Laitetestit Usein laitetta ei ole saatavilla ennen kuin projektin loppuvaiheessa

Ongelma Miten suunnitellaan koneenjärjestelmän arkkitehtuuri?

Suunnittelumallikieli http://www.cs.tut.fi/~kk/patternlanguage.pdf

Pattern - suunnittelumalli Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution. Pattern is at the same time a thing, which happens in the world, and the rule which tells us how to create that thing, and when we must create it. It is both a process and a thing; both a description of a thing which is alive, and a description of the process which will generate that thing. - Christopher Alexander, Timeless Way of Building, page 247

Patternit Tarjoaa hyväksi havaitun ratkaisun usein toistuvaan suunnitteluongelmaan Gang of Four teki suunnittelumallit tunnetuiksi Jotta ratkaisu on patterni, pitää sen toistua vähän kolmessa eri järjestelmässä Sulake projektissa (ja sen jälkeen) löydettiin yhteensä noin 70 patternia.

Mallikielet Joukko saman sovellusalueen patterneja voidaan organisoida mallikieleksi suositellun käyttö järjestyksen mukaan Mallikieli rakentaa kokonaisuuden Antaa sanaston sovellusalueen kehittäjille Ei ole hierarkinen rakenne! Mallikieliä olemassa eri sovellusalueille, koneen, Scrum, puheentunnistus, jne

Mallikielet (jatkuu) Auttaa suunnittelijaa ratkaisemaan ongelmat loogisessa järjestyksessä. Tarjoaa monia polkuja Jokainen polku rakentaa erilaisen version kokonaisuudesta A B D C A B C D F A E F

Suunnittelun aloitus Valitaan kielen juuri -suunnittelumalli (Isolate functionalities) ja sovelletaan sitä Ratkaisee ongelman: What is a reasonable way to create an embedded control system for a large machine?

Isolate Functionalities Puomin Moottorin Vaihteiston Väylä, esim. CAN Poran Runkon HMI

Havaitaan ongelma 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ä Ratkaisu: abstraction How to change the selected bus technology or protocol so that the application code does not need to be changed?

Abstraction Puomin Send( node3, data, repeat=no) Poran Callback( node1, data) abstraction Send in bus-specific way abstraction Receive in bus-specific way Väylä, esim. CAN

Entä jos väylä katkeaa tai solmu hajoaa? Tilanne pitäisi havaita jotenkin, jotta asialle voidaan tehdä jotain Heartbeat patternin ongelman kuvaus vastaa meidän ongelmaamme: How to make sure that a node or a bus will not fail undetected?

Heartbeat Supervisor Node I am alive Tietty ennaltasovittu aikaväli I am alive

Toinen ratkaisu: Watchdog Node A Watchdog Node B

Tai Watchdog perinteisemmin Node Reset watchdog Tietyin aikavälein Watchdog If( watchdog not reseted){ Reset node }

Arkkitehtuuri tähän mennessä Watchdog Puomin Moottorin HB Vaihteiston HB abstraction abstraction abstraction Väylä, esim. CAN abstraction Poran abstraction Runkon HB abstraction HMI

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 Receive queue Send queue Receive queue

Watchdog Puomin Moottorin HB Vaihteiston HB SQ RQ SQ RQ SQ RQ Abstraction Abstraction Abstraction Väylä, esim. CAN Abstraction Abstraction Abstraction SQ RQ SQ RQ SQ RQ Poran Runkon HB HMI

Halutaan tarjota korkean tason palveluja Korkeantasonpalvelut eivät ole reaaliaikaisia. Korkeantason palvelut eivät saa häiritä reaaliaikatoimintoja, koska se voisi johtaa järjestelmän virheelliseen toimintaan. Testattavuus: Reaaliaikatoimintojen testaaminen erillään korkeantasonpalveluista pitäisi olla mahdollista. Korkeantason ohjelmistojen kehittäminen on helpompaa kun ei tarvitse välittää reaaliaikavaatimuksista. Reaaliaikatoimintojen tulee toimia tietyissä rajoissa, esim. Jarrujen ja muiden ten vasteaika tulee olla riittävä.

Ratkaisu: Separate Real-time Communicates only over bus

Watchdog HB HB Puomin Moottorin Vaihteiston SQ RQ SQ RQ SQ RQ Abstraction Abstraction Abstraction Abstraction SQ RQ Abstraction SQ RQ Abstraction SQ RQ Väylä, esim. CAN SQ RQ SQ RQ SQ RQ Abstraction Abstraction Abstraction Abstraction abstraction SQ RQ abstraction SQ RQ abstraction SQ RQ SQ RQ Poran Runkon HMI HB PC

Ongelma: Kuka päättää? Kuinka voidaan varmistua, että yksittäisen toimilaitteen itsenäinen toiminta ei ole ristiriidassa koko järjestelmän tavoitteiden kanssa ja siten aiheuta vaaratilannetta? Järjestelmä on hajautettu, kuka päättää mitä muut tekee? Päätöksen tekemiseen saatetaan tarvita tietoa useammalta solmulta Koneenohjauksella tulisi olla lyhyt vasteaika, turvallisen toiminnan takaamiseksi.

Permission request

Watchdog HB HB Puomin Moottorin Vaihteiston SQ RQ SQ RQ SQ RQ Abstraction Abstraction Abstraction Abstraction SQ RQ Abstraction SQ RQ Abstraction SQ RQ Authority node SQ RQ Abstraction Väylä, esim. CAN SQ RQ SQ RQ SQ RQ SQ RQ Abstraction Abstraction Abstraction Abstraction abstraction SQ RQ abstraction SQ RQ abstraction SQ RQ abstraction SQ RQ Poran Runkon HMI HB PC

Ongelma: Tiedon välittäminen Kuinka voidaan tehokkaasti jakaa järjestelmän tila hajautetussa järjestelmässä? Järjestelmän tilatiedot ovat alati muuttuvia. Viestiliikenne tulisi minimoida. Järjestelmän tulisi olla mahdollista lisätä uusia solmuja muokkaamatta olemassa olevia sovelluksia Uuden toimilaitteen pitäisi päästä helposti käsiksi tilatietoon Authority node tarvitsee koko järjestelmän tilatiedon Haluttu tilatieto pitäisi olla helposti löydettävissä sovelluskehittäjän näkökulmasta

Ratkaisu: Variable Manager High-level node Sovellus 1 Sovellus 2 Variable Manager Väylä, esim. CAN Variable Manager MC sovellus MC node Variable Manager MC sovellus MC node

Variable Manager Sovellus 1 Sovellus 2 High-level node (PC) Variable manager Joystick X-position Node-id: 123, index: 9876 Väylä MC node Var. Manager Joystick x-pos

Watchdog HB HB Puomin Moottorin Moottorin Authority Vaihteiston VM VM VM node VM SQ RQ SQ RQ SQ RQ SQ RQ Abstraction Abstraction Abstraction Abstraction SQ RQ Abstraction SQ RQ Abstraction SQ RQ Abstraction Väylä, esim. CAN SQ RQ SQ RQ SQ RQ SQ RQ Abstraction Abstraction Abstraction Abstraction abstraction SQ RQ abstraction SQ RQ abstraction SQ RQ abstraction SQ RQ Poran VM Runkon VM VM HMI VM HB PC