AU Automaatiotekniikka. Funktio FC

Samankaltaiset tiedostot
AU Automaatiotekniikka. Toimilohko FB

Ohjeita Siemens Step7, Omron CX Programmer käyttöön

SIMULOINTIYMPÄRISTÖJEN SOVELTAMINEN OPETUKSESSA SIMULOINNILLA TUOTANTOA KEHITTÄMÄÄN-SEMINAARI TIMO SUVELA

Autotallin ovi - Tehtävänanto

Opas toimilohko-ohjelmointiin

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

Hammastankohissin modernisointi. Heikki Laitasalmi

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

Osoitin ja viittaus C++:ssa

Aloita uusi kartoitus -painikkeesta käynnistyy uuden kartoituksen tekeminen

Sekvenssipiirin tilat

12 Mallit (Templates)

13/20: Kierrätys kannattaa koodaamisessakin

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Näppäimistö CT Käyttäjäopas. Global Safety & Security Solutions Oy info@globalsafety.fi. CT1000v.5

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Java-kielen perusteet

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

FB10 - <offline> "MOTCON" Name: MOTCON Family: Author: JUN Version: 0.1 Block version: 1 Time stamp Code: :48:45

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.)

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Kuutioiden pakkaus - Teoria

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

Suvi Junes Tampereen yliopisto / tietohallinto 2013

Teollisuusautomaation standardit Osio 9

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

PlanMan Project projektihallintaohjelmisto koulutusohjeistus

STS Uuden Tapahtuma-dokumentin teko

Joustava tapa integroida järjestelmiä node-red:llä visuaalisesti - Internet of Things & Industrial Internet

TAULUKON TEKEMINEN. Sisällysluettelo

Suvi Junes/Pauliina Munter Tampereen yliopisto / tietohallinto 2014

KAAVAT. Sisällysluettelo

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

ARVI-järjestelmän ohje arvioinnin syöttäjälle

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Opettajan ohje kypsyysnäytteen toteuttamiseen ja arvioimiseen sähköisenä Exam-tenttinä

Java-kielen perusteet

TÄMÄ OPAS ESITTELEE ASKEL ASKELEELTA UUDEN TAHOMAN KÄYTTÖLIITTYMÄN: UUSI TAHOMA 2.0 VERRATTUNA VANHAAN TAHOMAAN

PM10OUT2A-kortti. Ohje

Esimerkkitentin ratkaisut ja arvostelu

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

SIEMENS S7-300, KYTKENTÄHARJOITUKSIA, KESKEYTYSTULO

Älä vielä sulje vanhoja

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

Suomen Tuuliatlaksen karttaliittymän hyödyntäminen E-farm Pro ja Basic ohjelmien tuulienergialaskennassa

Aditro Tikon versio 6.2.0

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Keskustelualue. Tampereen yliopisto/ tietohallinto 2017 Suvi Junes/Pauliina Munter

2013 -merkistä tunnistat uudet ominaisuudet

Ohjelmoitava päävahvistin WWK-951LTE

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

UpdateIT 2010: Editorin käyttöohje

TAMPEREEN AMMATTIKORKEAKOULU (21) Kone- ja laiteautomaatio Seppo Mäkelä. SIMATIC STEP S7 Ohjelmointiohjelma.

Tietueet. Tietueiden määrittely

Tentti erilaiset kysymystyypit

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

ARVI-järjestelmän ohje arvioinnin syöttäjälle

Ohjelmoinnin peruskurssi Y1

Johdatus Ohjelmointiin

MICROSOFT EXCEL 2010

Väitöskirja -mallipohja

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Jypelin käyttöohjeet» Ruutukentän luominen

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Ohjelmoitava päävahvistin WWK-951. Anvia TV Oy Rengastie Seinäjoki

Etälukija PR Käyttäjäopas. Global Safety & Security Solutions Oy info@globalsafety.fi. PR1000v.2

BL40A1810 Mikroprosessorit, harjoitus 1

Käännös, linkitys ja lataus

HYVÄKSILUETTUJEN SUORITUSTEN REKISTERÖIMINEN

HRSuunti Net ja sen HRMobi työntekijäliittymä tarjoaa tehokkaan töihinkutsujärjestelmän extraajien löytämiseksi työvuoroille.

TAULUKKORYHMÄT. Sisällysluettelo

Ajoneuvotietopalvelun käyttöohje Päivitetty

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sähköposti ja uutisryhmät

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

Taulukot, taulukkoryhmät Sisällysluettelo

Taulukkolaskennan perusteet Taulukkolaskentaohjelmat

14. Poikkeukset 14.1

NAVITA BUDJETTIJÄRJESTELMÄN ENSIASENNUS PALVELIMELLE

ITKP102 Ohjelmointi 1 (6 op)

1 PIKAOHJE SELAA AIKOJA PALAUTE AJANVARAUS VARAUKSEN TARKASTELU VAHVISTA LÄHTÖÖN OSALLISTUMINEN...

Ulkoiset mediakortit. Käyttöopas

Siemens TIA Portal V11

Luento 4 Aliohjelmien toteutus

Mikro-ohjain µc harjoitukset - yleisohje

Johdatus ohjelmointiin

Synco TM 700 säätimen peruskäyttöohjeet

1 Tivax siirto uuteen koneeseen

Uutiskirjesovelluksen käyttöohje

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

Ohjelmoinnin perusteet Y Python

Transkriptio:

AU080401 Automaatiotekniikka Funktio FC

Tarkoitus Dokumentissa kuvataan, mikä on funktio miksi funktioita kannattaa käyttää milloin funktioita kannattaa käyttää mitä asioita on huomioitava funktiota luotaessa miten funktio muodostetaan ja miten sitä sovelletaan S7 ohjelmointiympäristössä (STEP7) 2

Ohjelmakomponentit Ohjelmassa usein toistuvasta ohjelmaosuudesta kannattaa luoda ohjelmakomponentti, koska se on helposti käytettävissä uudelleen muualla ohjelmassa. Siemens ohjelmointiympäristössä voidaan ohjelmakomponentiksi luoda ohjelma, joka on toteutettu joko FC:hen (funktioon) tai FB:hen (toimilohkoon). Tämä dokumentti kuvaa, mikä on funktio ja miten sitä sovelletaan S7 ympäristössä. Toimilohko on kuvattu tarkemmin dokumentissa AU080401_Toimilohko.pdf 3

Funktio Ohjelmistoelementti, johon voidaan ohjelmoida tiettyä toiminnallista kokonaisuutta ohjaava ohjausalgoritmi. Funktio on uudelleenkäytettävä ohjelmakomponentti, jota voidaan kutsua ohjelmassa rajattomasti. Funktiolla ei ole sisäistä muistia, joten funktioon syötetyt arvot (tulot) vaikuttavat suoraan funktiosta lähteviin arvoihin. Koska funktiolla ei ole sisäistä muistia, se soveltuu huonosti monimutkaisten toimintojen toteuttamiseen, Funktio sisältää ohjelmakoodin ja tulo- ja lähtöparametrien määrittelyn. Funktiota kutsuvan sovelluksen ja funktion välinen tiedonvaihto suoritetaan tulo- ja lähtöparametrien kautta. 4

Funktio Funktion etuja eräästä C-kielen opetusmateriaalista: Funktiot ovat esimerkki luovasta laiskuudesta. Toistuvista toiminnoista kannattaa tehdä funktoita, jolloin samaa koodia ei tarvitse kirjoittaa joka paikkaan. Miksi sitten ei kannata kopioida jo toimivaa koodia sellaisenaan useampiin kohtiin? Vastaus: jos ja kun ohjemaa täytyy muuttaa toistuvan koodin kohdalta, on paljon selkeämpää ja helpompaa muuttaa koodia yhden funktion sisällä kuin kopioiduista koodilohkoista. Lisäksi funktioiden tekeminen pakottaa tekemään yhden asian kerrallaan, mikä pienentää vikoje etsimisen vaivaa ja koodin kirjoittamista, kun ohjelma kasvaa isommaksi. 5

Funktio lisää etuja: Ei ole olemassa ohjelmoijaa, jonka koodit eivät olisi jossain vaiheessa ylittäneet ohjelmoijan käsityskykyä. Pitämällä koodin selkeänä ja rakenteisena, pystyt tekemään ohjelmasta paljon paremman ominaisuuksien määrässä sekä virheiden vähyydessä, koska tajuat ohjelman toiminnan. Edellä mainitut edut pätevät myös ohjelmoitavilla logiikoilla tehtävään ohjelmistokehitykseen. 6

Funktio, Siemens S7 Siemens S7 ohjelmointiympäristössä funktiota vastaa ohjelmalohko Function (FC), johon olemme tutustuneet automaatiotekniikan laboraatioissa 7

Siemens S7, Funktion soveltaminen keino 1 Funktiosta (FC) on mahdollista tehdä projektikohtainen moduuli, jolloin funktioon ohjelmoidaan tietyn toiminnallisuuden toteuttava ohjelma, joka hakee tulotietonsa ja päivittää lähtötietonsa (tieto = signaali) suoraan ohjattavan sovelluksen (laitteen) tulo- ja lähtökorteilta. (Tällä tavalla sovelsimme funktiota automaatio laboraatioissa) Seuraavalla sivulla on esimerkki, projektikohtaisesta funktiosta, johon on ohjelmoitu ohjelma, joka asettaa lähdön päälle, kun tietyt tulotiedot ovat asettuneet. 8

Siemens S7, Funktion soveltaminen keino 1 FC:hen kirjoitettu ohjausohjelma Viittaa suoraan luettavaan tuloon Viittaa suoraan ohjattavaan lähtöön Viittaa suoraan luettavaan lähtöön FC:n kutsu OB1:ssä 9

Siemens S7, Funktion soveltaminen keino 2 Funktiosta (FC) on mahdollista tehdä yleiskäyttöinen moduuli, jolloin funktioon ohjelmoidaan tietyn toiminnallisuuden toteuttava ohjelma, esimerkiksi edellisellä sivulla esitetty lähdön ohjaus. Tavan 1 ja 2 erona on, että tavassa 2 sovelluksen ja funktion välinen tiedonvaihto suoritetaan suorien muistiviittausten sijaan tulo(in) - ja lähtö(out) -parametrien kautta, jolloin samaa funktiota voidaan käyttää (kutsua) ohjelmassa muuallakin. Ohjauskohtaiset muistiviittaukset kirjataan tulo(in) - ja lähtö(out) parametrien funktion kutsussa. Seuraavalla sivulla on esimerkki funktiosta, joka toteuttaa saman toiminnallisuuden, kuin edellisellä sivulla kuvattu ohjelma, mutta funktiosta on tehty yleiskäyttöinen määrittelemällä funktion Interfaceosioon tarvittavat tulo- ja lähtöparametrit ja käyttämällä niitä ohjelmassa suorien tulo- ja lähtökorttiviittausten sijasta. 10

Siemens S7, Funktion soveltaminen keino 2 FC:hen kirjoitettu ohjausohjelma FC:n kutsu OB1:ssä 11

Siemens S7, Funktion soveltaminen keinot 1 & 2 Ohjelmat ovat samanlaiset paitsi, että yleiskäyttöisessä funktiossa tulo- ja lähtösignaalit siirretään sovelluksesta funktioon/sta IN-, INOUT ja OUT-parametrien kautta 12

Siemens S7, Funktion soveltaminen keino 3 Funktiota (FC) on mahdollista käyttää myös ohjelman jakamisessa pienempiin osakokonaisuuksiin (ks. Jaoteltu ohjelmointi), jolloin ohjelmien rakenne ja sitä kautta myös luettavuus paranevat. Laiteohjauksen arkkitehtuurista johtuen, tämä tapa on yleisesti käytetty. Jokaisen laitteen ohjaus sijoitetaan omiin ohjelmalohkoihinsa, jotka ryhmitellään fyysisen sijainnin perusteella omiksi kokonaisuuksikseen. Esim. Funktiosta tehdään projektikohtainen moduuli, johon kerätään tiettyä osakokonaisuutta (esim. kaikki solun laitteet) ohjaavien laitteiden ohjelmat ts. funktioon ohjelmoidaan kutsut ko. laitteita ohjaaviin funktioihin ja toimilohkoihin. Seuraavilla sivuilla on esimerkki laitteita ohjaavan ohjelmiston jakamisesta pienempiin osakokonaisuuksiin. 13

Siemens S7, Funktion soveltaminen keino 3 14 Kuvan järjestelmä koostuu usei osakokonaisuuksista,mm: Pallettikuljettimet Tarkastusasemat Varastokuljetin Pakkaussolut Siirtovaunu..

Siemens S7, Funktion soveltaminen keino 3 Kuvassa on tarkempi kuvaus pakkaussolusta 15

Siemens S7, Funktion soveltaminen keino 3 Kuvassa on esitetty, miten funktioita soveltamalla jaetaan edellisillä sivuilla kuvattu järjestelmä toiminnallisuuden perusteella muodostettaviin osakokonaisuuksiin. Esim. funktioon FC100 on sijoitettu solua 1 ohjaava kokonaisuus (Käyttötaparyhmän ja laitteiden ohjaus) FC101 ohjaa solua 2, jne OB1 FC100 Solu 1" FC101 Solu 2... FB100 CNV100 DB100 FB100 CNV101 DB101 FB100 CNV102 DB102 FB101, CNV110 DB110 FB101, CNV111 DB111... FB110, R1 DB120 FC104 Solu 4 16

Siemens S7 Function (FC) ominaisuuksia: Ohjelmoidaan kuten FB:t ja OB:t Kaikki ohjelmassa käytettävät muuttuja määritellään lohkossa: (IN) Tuloparametrit (OUT) Lähtäparametrit (IN_OUT) Tulo lähtöparametrit (TEMP) Lohkon sisäiset, väliaikaiset muuttujat, jotka nollautuvat, kun funktion käsittely loppuu Funktiossa käsiteltävät arvot siirretään kutsuvasta ohjelmasta funktioon IN- ja IN_OUT- parametrien kautta Funktio palauttaa päivittämänsä arvot kutsuvaan ohjelmaan OUT ja IN_OUT parametrien kautta Funktiota voidaan rajattomasti kutsua ohjelmassa. 17

Siemens S7 Funktion kutsussa esitettävät tulo- ja lähtöparametrit määritellään funktion Interface osion kohtiin IN, OUT ja IN_OUT. Parametrit määritellään kuten tiedostoissa, ts. muuttujalle annetaan nimi ja tyyppi (BOOL, INT, Timer, S5Time,...). 18

Siemens S7 IN - kohtaan määritellään tuloparametrit, eli ne muuttujat, joiden alkuarvo halutaan määritellä kutsuvassa ohjelmassa. Huom! Funktion sisällä ei ole mahdollista muuttaa tuloparametreihin määriteltyjä arvoja. OUT - kohtaan määritellään lähtöparametrit, eli ne muuttujat, joiden arvo halutaan palauttaa kutsuvaan ohjelmaan. IN_OUT - kohtaan määritellään parametrit, joissa tieto siirtyy molempiin suuntiin. Tällaisten muuttujien arvoja voidaan päivittää sekä funktiossa, että funktion ulkopuolella sovelluksessa. 19

Siemens S7, esimerkki 1 Luodaan funktio CLOCK_PULSE (FC30) ja ohjelmoidaan siihen ohjelma, joka muodostaa kellopulssin, jonka ylhäällä ja alhaalla oloaika voidaan määritellä erikseen. Alla aikakaavio, jossa on kuvattu funktion lähdön suhde funktion tuloon Tulo Lähtö Toiminnallisuus toteutetaan ensin projektikohtaisessa funktiossa ja sen jälkeen funktio muutetaan yleiskäyttöiseksi ohjelmakomponentiksi. 20

Siemens S7, esimerkki 1 Funktioon kirjoitettu ohjausohjelma Funktion kutsu OB1:ssä 21

Siemens S7, esimerkki 1 Funktiosta muokataan yleiskäyttöinen ohjelmakomponentti seuraavasti: Siirretään funktion tulo- ja lähtöparametreiksi kaikki funktioon menevät ja sieltä tulevat signaalit 22

Siemens S7, esimerkki 1 Seuraavaksi siirretään funktion tulo (IN) parametreihin ohjelmassa käytettyjen ajastimien osoitteet (T100, T101) Yleiskäyttöistä funktiota voidaan kutsua ohjelmassa useammin kuin kerran, joten funktion sisällä ei voi olla viittausta tiettyyn osoitteeseen logiikan muistissa 23

Siemens S7, esimerkki 1 Seuraavaksi siirretään funktion tulolähtö (INOUT) parametreihin ohjelmassa käytetyt osoitteet, joita funktion sisällä sekä luetaan, että päivitetään. Tässä ohjelmassa sellainen tieto on nousevan reunan toteuttavan lohkon P apubitti M100.0. Yleiskäyttöistä funktiota voidaan kutsua ohjelmassa useammin kuin kerran, joten funktion sisällä ei voi olla viittausta tiettyyn osoitteeseen logiikan muistissa 24

Siemens S7, esimerkki 1 Lopuksi siirretään funktion tuloparametreihin ajastimien asetusarvot, jolloin pulssin muoto voidaan määritellä funktion kutsussa 25

Siemens S7, esimerkki 1 Muutettu funktio lopullisessa muodossa 26

Siemens S7, esimerkki 1 Funktiokutsu täytyy päivittää, aina sen jälkeen kun funktion IN-, INOUT tai OUT-parametrien määrää on muutettu. Alla oleva ilmoitus ilmestyy näytölle, kun funktiota kutsuva ohjelma avataan (tässä tapauksessa OB1). Valitaan OK Ohjelma esittää muuttuneen funktion punaisella. 27

Siemens S7, esimerkki 1 Valitaan funktio ja painetaan hiiren oikeanpuoleista painiketta... valitaan Update Block Call 28

Siemens S7, esimerkki 1.. valitaan OK 29

Siemens S7, esimerkki 1 ja funktio tulostuu päivitettynä virtapiiriin Sama toimenpide on toistettava kaikissa niissä virtapiireissä, joissa ko. funktiota kutsutaan. Tässä esimerkissä ei ole muita virtapiirejä. 30

Siemens S7, esimerkki 1 Lopuksi funktiokutsuun päivitetään tarvittavat osoitteet ja alkuarvot. 31

Siemens S7, esimerkki 1 Lisätään kutsu FC30:neen myös seuraavaan virtapiriin Mieti miksi ajastimien ja nousevan reunan apubitin ja lähdön osoitteiksi pitää antaa ositteet (muistipaikat), joita ei ole käytetty muualla ohjelmassa. 32

Siemens S7, esimerkki 2 Luodaan funktio Motor_Control FC10 ja ohjelmoidaan siihen ohjelma, joka ohjaa 2-suuntaista moottoria. Toiminnallisuus toteutetaan ensin projektikohtaisessa funktiossa ja sen jälkeen funktio muutetaan yleiskäyttöiseksi ohjelmakomponentiksi. 33

Siemens S7, esimerkki 2 Moottorin ohjaus, toteutettuna projektikohtaisena funktiona Ohjelmassa viitataan suoraan logiikan muistiosoitteisiin, kuten esim. tulo- ja lähtösignaaleihin. 34

Siemens S7, esimerkki 2 Moottorin ohjaus, toteutettuna projektikohtaisena funktiona Ohjelmassa viitataan suoraan logiikan muistiosoitteisiin, kuten esim. sisäisestä muistista varattuihin sanoihin. 35

Siemens S7, esimerkki 2 Moottorin ohjaus, toteutettuna yleiskäyttöisenä funktiona I2.0 I2.1 I2.2 T10 T11 I2.3 S5T#3s S5T#3s Vaihdetaan suoraan tulokortteihin tehtävät viittaukset ja ajastimien osoitteet tuloparametreiksi 36

Siemens S7, esimerkki 2 Moottorin ohjaus, toteutettuna yleiskäyttöisenä funktiona M12.0 M12.1 M12.2 M12.3 MW80 Vaihdetaan tiedot, joita sekä luetaan että päivitetään funktiossa tulo- ja lähtöparametreiksi, jotka edelleen määritellään Interface-osion IN_OUT - kohtaan 37

Siemens S7, esimerkki 2 Moottorin ohjaus, toteutettuna yleiskäyttöisenä funktiona Q4.3 Q4.4 Vaihdetaan suoraan lähtökortteihin tehtävät viittaukset tulolähtöparametreiksi, jotka edelleen määritellään Interface-osion OUT - kohtaan 38

Siemens S7, esimerkki 2 Moottorin ohjaus, toteutettuna yleiskäyttöisenä funktiona Vaihdetaan ohjelmassa jokaisen suoran osoiteviittauksen tilalle vastaava tulo- tai lähtöparametri. 39

Siemens S7, esimerkki 2 Moottorin ohjaus, toteutettuna yleiskäyttöisenä funktiona Vaihdetaan ohjelmassa jokaisen suoran osoiteviittauksen tilalle vastaava tulotai lähtöparametri. Talletetaan ohjelma 40

Siemens S7, esimerkki 2 Moottorin ohjaus, toteutettuna yleiskäyttöisenä funktiona Lopuksi lisätään tehdyn funktion kutsu OB1:een ja päivitetään käytettävät osoitteet ja alkuarvot funktion tulo- ja lähtöparametreihin 41